
    h               	       `   S SK r S SKr\R                  " S\R                  S9r\R                  " 5       r\R                  \R                  " SSS9R                  5        \R                  " S\R                  S9r\R                  " S\R                  S9r\R                  " / SQ/ S	Q5      r\R                   " S
S\R                  S9r\ R"                  R%                  S\\\\\\/5      S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S  r'S! r(g)"    N   create_using
   *   seed   )      r   r   r   r   )r
   r   r   r   r   r
   r   Gc                   ^ [        U R                  5      n[        U R                  5      n[        U R                  5      m[        R
                  " U SSSS9  U[        U R                  5      :X  d   eU[        U R                  5      :X  d   eT[        U R                  5      :w  d   eS[        U4S jU R                   5       5      :X  d   eg )Nr   d   nswap	max_triesr	   r
   c              3   ,   >#    U  H	  oT;  v   M     g 7fN ).0eedgess     U/var/www/html/env/lib/python3.13/site-packages/networkx/algorithms/tests/test_swap.py	<genexpr>*test_directed_edge_swap.<locals>.<genexpr>   s     4GqUNGs   )set	in_degree
out_degreer   nxdirected_edge_swapsum)r   r   r   r   s      @r   test_directed_edge_swapr"      s    AKK IQ\\"JLE!1!<AKK((((Q\\****CL   4AGG44444    c                     [         R                  " [         R                  " S5      R                  5      n [	        U R                  5      n[         R
                  " U SSS9  U[	        U R                  5      :X  d   e[         R
                  " U SSSS9  1 Sk[	        U R                  5      :X  d   e[         R
                  " U SSSS9  U[	        U R                  5      :X  d   eg )N   r   r   r   r   r   r   >   r   r   r   r
   r   r   )r   DiGraph
path_graphr   r   r    )r   r   s     r   *test_directed_edge_swap_undo_previous_swapr,      s    


2==#))*ALE!14CL   !1!<#s177|333!1!<CL   r#   c                      Sn [         R                  " / SQ5      n[        R                  " [         R                  U S9   [         R
                  " USSSS9  S S S 5        g ! , (       d  f       g = f)NzUMaximum number of swap attempts \(11\) exceeded before desired swaps achieved \(\d\).))r   r   r   r   )r   r   r   r
   )r
   r   matchr   r   r   )r   r*   pytestraisesNetworkXAlgorithmErrorr    )r   graphs     r   "test_edge_cases_directed_edge_swapr6   &   sQ    	3  JJ?@E	r00	:
e1C 
;	:	:s   A
A-c                      [         R                  " SS5      n [        S U R                  5        5       5      n[         R                  " U S5      nU[        S U R                  5        5       5      :X  d   eg )N   r   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r   nds      r   r   (test_double_edge_swap.<locals>.<genexpr>4        2>41Q>   (   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   r=   6        :>41Q>r?   r   barabasi_albert_graphsorteddegreedouble_edge_swapr5   degreesr   s      r   test_double_edge_swaprJ   2   s[    $$S!,E25<<>22G
E2&Af:5<<>:::::r#   c                      [         R                  " SS5      n [        S U R                  5        5       5      n[         R                  " U SSS9nU[        S U R                  5        5       5      :X  d   eg )Nr8   r   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   -test_double_edge_swap_seed.<locals>.<genexpr>;   r>   r?   r@   r   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   rM   =   rB   r?   rC   rH   s      r   test_double_edge_swap_seedrO   9   s]    $$S!,E25<<>22G
E2A.Af:5<<>:::::r#   c                  $   [         R                  " SS5      n [        S U R                  5        5       5      n[         R                  " U SSS9n[         R
                  " U 5      (       d   eU[        S U R                  5        5       5      :X  d   eg )Nr8   r   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   2test_connected_double_edge_swap.<locals>.<genexpr>B   r>   r?   r@   r   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   rR   E   rB   r?   r   rD   rE   rF   connected_double_edge_swapis_connectedrH   s      r   test_connected_double_edge_swaprW   @   sr    $$S!,E25<<>22G
%%eRa8A??5!!!!f:5<<>:::::r#   c                  &   [         R                  " SS5      n [        S U R                  5        5       5      n[         R                  " U SSSS9n[         R
                  " U 5      (       d   eU[        S U R                  5        5       5      :X  d   eg )Nr8   r   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   Gtest_connected_double_edge_swap_low_window_threshold.<locals>.<genexpr>J   r>   r?   r@   r   _window_thresholdr	   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   rZ   M   rB   r?   rT   rH   s      r   4test_connected_double_edge_swap_low_window_thresholdr^   H   st    $$S!,E25<<>22G
%%eR11MA??5!!!!f:5<<>:::::r#   c                  "   [         R                  " S5      n [        S U R                  5        5       5      n[         R                  " U SSS9n[         R
                  " U 5      (       d   eU[        S U R                  5        5       5      :X  d   eg )Nr@   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   7test_connected_double_edge_swap_star.<locals>.<genexpr>S   r>   r?   r   r%   r   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   ra   V   rB   r?   r   
star_graphrE   rF   rU   rV   rH   s      r   $test_connected_double_edge_swap_starre   P   sn    MM"E25<<>22G
%%eQQ7A??5!!!!f:5<<>:::::r#   c                  $   [         R                  " S5      n [        S U R                  5        5       5      n[         R                  " U SSSS9n[         R
                  " U 5      (       d   eU[        S U R                  5        5       5      :X  d   eg )Nr@   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   Ltest_connected_double_edge_swap_star_low_window_threshold.<locals>.<genexpr>\   r>   r?   r   r   r%   r[   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   rh   _   rB   r?   rc   rH   s      r   9test_connected_double_edge_swap_star_low_window_thresholdrj   Y   sp    MM"E25<<>22G
%%eQ!!LA??5!!!!f:5<<>:::::r#   c                      [         R                  " [        R                  5         [        R                  " [        R
                  " S[        R                  S95      n S S S 5        g ! , (       d  f       g = f)Nr
   r   r2   r3   r   NetworkXErrorr    r+   r*   r   s    r   test_directed_edge_swap_smallro   b   s?    	r''	(!!"--

"KL 
)	(	(   8A&&
A4c                      [         R                  " [        R                  5         [        R                  " [        R
                  " S[        R                  S9SSS9n S S S 5        g ! , (       d  f       g = f)Nr
   r   r   r   r&   rl   rn   s    r   test_directed_edge_swap_triesrr   g   sF    	r''	(!!MM!"**5Q!
 
)	(	(rp   c                      [         R                  " SS/5      n [        R                  " [         R                  5         [         R
                  " U 5      nS S S 5        g ! , (       d  f       g = f)Nr.   r/   )r   Graphr2   r3   NetworkXNotImplementedr    r5   r   s     r   "test_directed_exception_undirectedrw   n   sC    HHff%&E	r00	1!!%( 
2	1	1s   A
A+c                      [         R                  " [        R                  5         [        R                  " [        R
                  " S[        R                  " 5       5      SSS9n S S S 5        g ! , (       d  f       g = fNr%   r   r   r&   )r2   r3   r   r4   r    complete_graphr*   rn   s    r   test_directed_edge_max_triesr{   t   sJ    	r00	1!!a.a1
 
2	1	1s   ?A--
A;c                      [         R                  " [        R                  5         [        R                  " [        R
                  " S5      5      n S S S 5        g ! , (       d  f       g = fNr
   r2   r3   r   rm   rG   r+   rn   s    r   test_double_edge_swap_smallr   {   s9    	r''	(a 01 
)	(	(   +A
A'c                      [         R                  " [        R                  5         [        R                  " [        R
                  " S5      SSS9n S S S 5        g ! , (       d  f       g = f)Nr   r   r   r&   r~   rn   s    r   test_double_edge_swap_triesr      s=    	r''	(b 1aH 
)	(	(r   c                      [         R                  " SS/5      n [        R                  " [         R                  SS9   [         R
                  " U 5      nS S S 5        g ! , (       d  f       g = f)Nr.   r/   z not defined for directed graphs.r0   )r   r*   r2   r3   rm   rG   rv   s     r   test_double_edge_directedr      sG    JJ'(E	r''/Q	R& 
S	R	Rs   A
A*c                      [         R                  " [        R                  5         [        R                  " [        R
                  " S5      SSS9n S S S 5        g ! , (       d  f       g = fry   )r2   r3   r   r4   rG   rz   rn   s    r   test_double_edge_max_triesr      s?    	r00	1 1 1! 4AK 
2	1	1r   c                      [         R                  " [        R                  5         [        R                  " [        R
                  " S5      5      n S S S 5        g ! , (       d  f       g = fr}   )r2   r3   r   rm   rU   r+   rn   s    r   %test_connected_double_edge_swap_smallr      s9    	r''	())"--*:; 
)	(	(r   c                  
   [         R                  " [        R                  5         [        R                  " S5      n [        R
                  " U / SQ5        [        R                  " U 5      n S S S 5        g ! , (       d  f       g = f)Nr
   )r         )r2   r3   r   rm   r+   add_pathrU   rn   s    r   -test_connected_double_edge_swap_not_connectedr      sL    	r''	(MM!
A|$))!, 
)	(	(s   AA44
Bc                      [         R                  " S5      n [        S U R                  5        5       5      n[         R                  " U SS5      n U[        S U R                  5        5       5      :X  d   eg )Nr%   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   %test_degree_seq_c4.<locals>.<genexpr>   s     .:41Q:r?   r   r   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r:   s      r   r   r      s     6:41Q:r?   )r   cycle_graphrE   rF   rG   )r   rI   s     r   test_degree_seq_c4r      sY    
qA.188:..G
Aq#&Af6188:66666r#   c                      [         R                  " 5       n U R                  / SQ5        [        R                  " [         R
                  SS9   [         R                  " U 5        S S S 5        g ! , (       d  f       g = f)N)r   r   r   z.*fewer than four nodes.r0   )r   r*   add_nodes_fromr2   r3   rm   r    rn   s    r   test_fewer_than_4_nodesr      sK    


AY	r''/I	J
a  
K	J	Js   A,,
A:c                     [         R                  " SS/5      n U R                  SS/5        [        R                  " [         R
                  SS9   [         R                  " U 5        S S S 5        [         R                  " 5       n U R                  / SQ5        [        R                  " [         R
                  SS9   [         R                  " U 5        S S S 5        g ! , (       d  f       Ny= f! , (       d  f       g = f)	Nr.   )r   r   r
   r%   z.*fewer than 3 edgesr0   )r   r   r   r
   z.*fewer than 2 edges)	r   r*   r   r2   r3   rm   r    rt   rG   rn   s    r   test_less_than_3_edgesr      s    


FF#$AaV	r''/E	F
a  
G 	
A\"	r''/E	F
A 
G	F 
G	F
 
G	Fs   C9C*
C'*
C8))r2   networkxr   r   r*   cycletreeadd_edges_fromrandom_labeled_treer   r+   pathbinomial_treebinomialdirected_havel_hakimi_graphHHbalanced_treemarkparametrizer"   r,   r6   rJ   rO   rW   r^   re   rj   ro   rr   rw   r{   r   r   r   r   r   r   r   r   r   r   r#   r   <module>r      sA    
qrzz2	zz|   B**2B7== >	}}QRZZ0ABJJ7##$68JK  ABJJ? tXr5$NO5 P5	!	D;;;;;;M

)
2
I
'L
<
-7!	r#   