
    Vh~                     H   d Z ddlZddlZddlmZmZ ddlmZm	Z	m
Z
mZmZmZmZmZ 	 ddlZdZ G d d      Zd	 Zd
 Zej.                  j1                  d ej
                          ej2                  dg      f      d        Z G d d      Z G d d      Zy# e$ r dZY rw xY w)z:Generators - Directed Graphs
----------------------------
    N)GraphMultiDiGraph)_random_k_out_graph_numpy_random_k_out_graph_pythongn_graph	gnc_graph	gnr_graphrandom_k_out_graphrandom_uniform_k_out_graphscale_free_graphTFc                       e Zd Zd Zd Zd Zy)TestGeneratorsDirectedc                     t        d       t        dd       t        d       t        d       t        dd       t        ddd       t        dd       t        dd       y )Nd         ?*   seed)r   r	   r   r   selfs    W/home/dcms/DCMS/lib/python3.12/site-packages/networkx/generators/tests/test_directed.pytest_smoke_test_random_graphsz4TestGeneratorsDirected.test_smoke_test_random_graphs   sL    #s#2#s$#B2&    c                    t        j                  t        j                  t        dt                      t        j                  t        j                  t        ddt                      t        j                  t        j                  t        dt                      t	        dd      }t	        dt               d      }t        |j                               t        |j                               k(  sJ t        ddd      }t        ddt               d      }t        |j                               t        |j                               k(  sJ t        dd      }t        dt               d      }t        |j                               t        |j                               k(  sJ t        dddddd	t        j                  d
t              d      }t        j                  t        t        dddd       t        j                  t        t        dd       t        j                  t        t        dd       t        j                  t        t        dd       y )Nr   )create_usingr      r   )r   r   g333333?g?g?   )alphabetagammadelta_in	delta_outinitial_graphr   g333333ӿ)r   )r   )r    )pytestraisesnxNetworkXErrorr   r   r	   r   r   sortededgesr   cycle_graph
ValueError)r   GMGs      r   #test_create_using_keyword_argumentsz:TestGeneratorsDirected.test_create_using_keyword_arguments(   s   b&&#EGLb&&	3%'Rb&&	3UWMSq!cQ?aggi F288:$6666c3Q'sCln1Eaggi F288:$6666c"sa@aggi F288:$6666..F	
 	j"2Cc3Gj"2CtDj"2CdCj"2CtDr   c                 b   t        j                         }|j                  d       d }t        j                  t	        d      |      sJ t        j                  t	        d|      |      sJ t        j                  t        d      |      sJ t        j                  t        dd      |      sJ y )Nr   c                     | S N )xs    r   kernelz6TestGeneratorsDirected.test_parameters.<locals>.kernelI   s    Hr   r   )r4   r   )r&   DiGraphadd_nodeis_isomorphicr   r   r	   )r   r,   r4   s      r   test_parametersz&TestGeneratorsDirected.test_parametersE   s    JJL	

1	 Q///6 :A>>>	!a000	!S 11555r   N)__name__
__module____qualname__r   r.   r8   r2   r   r   r   r      s    	'E:
6r   r   c                      t        j                  t        d      5  t        dd       d d d        t        j                  t        d      5  t        dd       d d d        y # 1 sw Y   ;xY w# 1 sw Y   y xY w)Nzdelta_in must be >= 0.match
   )r!   zdelta_out must be >= 0.)r"   )r$   r%   r+   r   r2   r   r   $test_scale_free_graph_negative_deltarA   R   sc    	z)A	B *b)*	z)B	C +r*+ +* *+ +s   A$A0$A-0A9c                      t        g d      } t        d|       }t        |      dk(  sJ t        |j                        dk(  sJ y )N))ab)rD   c)rE   rC      r#   )r   r   lenr)   )r,   ss     r   test_non_numeric_orderingrJ   Y   s?    9:A!,Aq6Q;;qww<1r   ig)r   r   c                     t        j                  t        j                        5  t	        d|        d d d        y # 1 sw Y   y xY w)Nr   rG   )r$   r%   r&   r'   r   )rK   s    r   )test_scale_free_graph_initial_graph_kwargrM   `   s3    	r''	( 0B/0 0 0s	   ;Ac                       e Zd ZdZej
                  j                  deef      d        Z	ej
                  j                  deef      d        Z
d Zy)TestRandomKOutGraphz_Unit tests for the
    :func:`~networkx.generators.directed.random_k_out_graph` function.

    fc                    |t         k(  rt        st        j                          d}dd} |||      }t	        fd|j                         D              sJ  |||d      }t	        fd|j                         D              sJ y)	2Tests that the generated graph is `k`-out-regular.r?   rF   r   c              3   .   K   | ]  \  }}|k(    y wr1   r2   .0vdks      r   	<genexpr>z6TestRandomKOutGraph.test_regularity.<locals>.<genexpr>w        5da165   r   r   c              3   .   K   | ]  \  }}|k(    y wr1   r2   rT   s      r   rY   z6TestRandomKOutGraph.test_regularity.<locals>.<genexpr>y   rZ   r[   N)r   	has_numpyr$   skipall
out_degree)r   rP   nr   r,   rX   s        @r   test_regularityz#TestRandomKOutGraph.test_regularityl   sy    
 **IKKMaEN5alln5555aE#5alln5555r   c                     |t         k(  rt        st        j                          d}d}d} ||||d      }t	        j
                  |      dk(  sJ y) Tests for forbidding self-loops.r?   rF   r   F
self_loopsr   N)r   r]   r$   r^   r&   number_of_selfloops)r   rP   ra   rX   r   r,   s         r   test_no_self_loopsz&TestRandomKOutGraph.test_no_self_loops{   sP    
 **IKKMaEe,%%a(A---r   c                 ~    t        j                  t        d      5  t        ddd       d d d        y # 1 sw Y   y xY w)Nzalpha must be positiver=   r?   rF   r@   )r$   r%   r+   r
   r   s    r   test_negative_alphaz'TestRandomKOutGraph.test_negative_alpha   s2    ]]:-EF 	*r1b)	* 	* 	*s   3<N)r9   r:   r;   __doc__r$   markparametrizer   r   rb   rh   rj   r2   r   r   rO   rO   f   sj    
 [[')CD
6
6 [[')CD..*r   rO   c                   (    e Zd ZdZd Zd Zd Zd Zy)TestUniformRandomKOutGraphzkUnit tests for the
    :func:`~networkx.generators.directed.random_uniform_k_out_graph`
    function.

    c                     d}dt        |      }t        fd|j                         D              sJ t        |d      }t        fd|j                         D              sJ y)rR   r?   rF   c              3   .   K   | ]  \  }}|k(    y wr1   r2   rT   s      r   rY   z=TestUniformRandomKOutGraph.test_regularity.<locals>.<genexpr>   rZ   r[   r   r   c              3   .   K   | ]  \  }}|k(    y wr1   r2   rT   s      r   rY   z=TestUniformRandomKOutGraph.test_regularity.<locals>.<genexpr>   rZ   r[   N)r   r_   r`   r   ra   r,   rX   s      @r   rb   z*TestUniformRandomKOutGraph.test_regularity   s[    &q!,5alln5555&q!"55alln5555r   c                     d}dt        |d      }t        j                  |      dk(  sJ t        fd|j	                         D              sJ y)rd   r?   rF   Fre   r   c              3   .   K   | ]  \  }}|k(    y wr1   r2   rT   s      r   rY   z@TestUniformRandomKOutGraph.test_no_self_loops.<locals>.<genexpr>   rZ   r[   N)r   r&   rg   r_   r`   rs   s      @r   rh   z-TestUniformRandomKOutGraph.test_no_self_loops   sN    &q!>%%a(A---5alln5555r   c                 8   d}dt        |d      }|j                         sJ t        fd|j                         D              sJ d}dt        |dd      }t	        j
                  |      d	k(  sJ t        fd
|j                         D              sJ y )Nr?   rF   Twith_replacementc              3   .   K   | ]  \  }}|k(    y wr1   r2   rT   s      r   rY   zCTestUniformRandomKOutGraph.test_with_replacement.<locals>.<genexpr>   rZ   r[   	   F)rx   rf   r   c              3   .   K   | ]  \  }}|k(    y wr1   r2   rT   s      r   rY   zCTestUniformRandomKOutGraph.test_with_replacement.<locals>.<genexpr>   rZ   r[   )r   is_multigraphr_   r`   r&   rg   rs   s      @r   test_with_replacementz0TestUniformRandomKOutGraph.test_with_replacement   s    &q!dC   5alln5555&q!ePUV%%a(A---5alln5555r   c                     d}dt        |d      }|j                         rJ t        fd|j                         D              sJ y )Nr?   rF   Frw   c              3   .   K   | ]  \  }}|k(    y wr1   r2   rT   s      r   rY   zFTestUniformRandomKOutGraph.test_without_replacement.<locals>.<genexpr>   rZ   r[   )r   r|   r_   r`   rs   s      @r   test_without_replacementz3TestUniformRandomKOutGraph.test_without_replacement   sE    &q!eD??$$$5alln5555r   N)r9   r:   r;   rk   rb   rh   r}   r   r2   r   r   ro   ro      s    66
66r   ro   )rk   r$   networkxr&   networkx.classesr   r   networkx.generators.directedr   r   r   r   r	   r
   r   r   numpynpr]   ImportErrorr   rA   rJ   rl   rm   r5   rM   rO   ro   r2   r   r   <module>r      s      0	 	 	I
36 36l+ 
JBJJx,@AB0 C0
$* $*N)6 )6k  Is   B B! B!