
    fi               	       >   d dl Z d dlZ ej        dej                  Z ej                    Ze                     ej        dd          j	                    ej
        dej                  Z ej        dej                  Z ej        g dg d	          Z ej        d
dej                  Ze j                            deeeeeeg          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d  Z'd! Z(dS )"    N   create_using
   *   seed   )      r   r   r   r   )r
   r   r   r   r   r
   r   Gc                    t          | j                  }t          | j                  }t          | j                  t	          j        | ddd           |t          | j                  k    sJ |t          | j                  k    sJ t          | j                  k    sJ dt          fd| j        D                       k    sJ d S )Nr   d   nswap	max_triesr	   r
   c              3       K   | ]}|vV  	d S N ).0eedgess     {/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/algorithms/tests/test_swap.py	<genexpr>z*test_directed_edge_swap.<locals>.<genexpr>   s'      44qAUN444444    )set	in_degree
out_degreer   nxdirected_edge_swapsum)r   r   r   r   s      @r   test_directed_edge_swapr"      s    AK  IQ\""JLLE!1!<<<<AK((((((Q\******CLL    4444AG44444444444r   c                     t          j        t          j        d          j                  } t	          | j                  }t          j        | dd           |t	          | j                  k    sJ t          j        | ddd           h dt	          | j                  k    sJ t          j        | ddd           |t	          | j                  k    sJ d S )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LLE!14444CLL    !1!<<<<###s17||3333!1!<<<<CLL      r   c                      d} t          j        g d          }t          j        t           j        |           5  t          j        |ddd           d d d            d S # 1 swxY w Y   d S )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_swapr5   &   s    	3  J???@@E	r0	:	:	: D D
e1CCCCD D D D D D D D D D D D D D D D D Ds   AA#&A#c                     t          j        dd          } t          d |                                 D                       }t          j        | d          }|t          d |                                 D                       k    sJ d S )N   r   c              3       K   | ]	\  }}|V  
d S r   r   r   nds      r   r   z(test_double_edge_swap.<locals>.<genexpr>4   &      2241aQ222222r   (   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   z(test_double_edge_swap.<locals>.<genexpr>6   &      ::41aQ::::::r   r   barabasi_albert_graphsorteddegreedouble_edge_swapr4   degreesr   s      r   test_double_edge_swaprG   2   s    $S!,,E225<<>>22222G
E2&&Af::5<<>>:::::::::::r   c                     t          j        dd          } t          d |                                 D                       }t          j        | dd          }|t          d |                                 D                       k    sJ d S )Nr7   r   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   z-test_double_edge_swap_seed.<locals>.<genexpr>;   r<   r   r=   r   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   z-test_double_edge_swap_seed.<locals>.<genexpr>=   r?   r   r@   rE   s      r   test_double_edge_swap_seedrK   9   s    $S!,,E225<<>>22222G
E2A...Af::5<<>>:::::::::::r   c                  B   t          j        dd          } t          d |                                 D                       }t          j        | dd          }t          j        |           sJ |t          d |                                 D                       k    sJ d S )Nr7   r   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   z2test_connected_double_edge_swap.<locals>.<genexpr>B   r<   r   r=   r   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   z2test_connected_double_edge_swap.<locals>.<genexpr>E   r?   r   r   rA   rB   rC   connected_double_edge_swapis_connectedrE   s      r   test_connected_double_edge_swaprR   @   s    $S!,,E225<<>>22222G
%eRa888A?5!!!!!f::5<<>>:::::::::::r   c                  D   t          j        dd          } t          d |                                 D                       }t          j        | ddd          }t          j        |           sJ |t          d |                                 D                       k    sJ d S )Nr7   r   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   zGtest_connected_double_edge_swap_low_window_threshold.<locals>.<genexpr>J   r<   r   r=   r   _window_thresholdr	   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   zGtest_connected_double_edge_swap_low_window_threshold.<locals>.<genexpr>M   r?   r   rO   rE   s      r   4test_connected_double_edge_swap_low_window_thresholdrX   H   s    $S!,,E225<<>>22222G
%eR11MMMA?5!!!!!f::5<<>>:::::::::::r   c                  @   t          j        d          } t          d |                                 D                       }t          j        | dd          }t          j        |           sJ |t          d |                                 D                       k    sJ d S )Nr=   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   z7test_connected_double_edge_swap_star.<locals>.<genexpr>S   r<   r   r   r$   r   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   z7test_connected_double_edge_swap_star.<locals>.<genexpr>V   r?   r   r   
star_graphrB   rC   rP   rQ   rE   s      r   $test_connected_double_edge_swap_starr^   P   s    M"E225<<>>22222G
%eQQ777A?5!!!!!f::5<<>>:::::::::::r   c                  B   t          j        d          } t          d |                                 D                       }t          j        | ddd          }t          j        |           sJ |t          d |                                 D                       k    sJ d S )Nr=   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   zLtest_connected_double_edge_swap_star_low_window_threshold.<locals>.<genexpr>\   r<   r   r   r   r$   rU   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   zLtest_connected_double_edge_swap_star_low_window_threshold.<locals>.<genexpr>_   r?   r   r\   rE   s      r   9test_connected_double_edge_swap_star_low_window_thresholdrb   Y   s    M"E225<<>>22222G
%eQ!!LLLA?5!!!!!f::5<<>>:::::::::::r   c                      t          j        t          j                  5  t          j        t          j        dt          j                            } d d d            d S # 1 swxY w Y   d S )Nr
   r   r1   r2   r   NetworkXErrorr    r*   r)   r   s    r   test_directed_edge_swap_smallrg   b   s    	r'	(	( M M!"-
"K"K"KLLM M M M M M M M M M M M M M M M M Ms   3AA#&A#c                      t          j        t          j                  5  t          j        t          j        dt          j                  dd          } d d d            d S # 1 swxY w Y   d S )Nr
   r   r   r   r%   rd   rf   s    r   test_directed_edge_swap_triesri   g   s    	r'	(	( 
 
!M!"*555Q!
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   6A""A&)A&c                      t          j        ddg          } t          j        t           j                  5  t          j        |           }d d d            d S # 1 swxY w Y   d S )Nr-   r.   )r   Graphr1   r2   NetworkXNotImplementedr    r4   r   s     r   "test_directed_exception_undirectedrn   n   s    Hff%&&E	r0	1	1 ) )!%(() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   AAAc                      t          j        t          j                  5  t          j        t          j        dt          j                              dd          } d d d            d S # 1 swxY w Y   d S Nr$   r   r   r%   )r1   r2   r   r3   r    complete_graphr)   rf   s    r   test_directed_edge_max_triesrr   t   s    	r0	1	1 
 
!a..a1
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   <A((A,/A,c                      t          j        t          j                  5  t          j        t          j        d                    } d d d            d S # 1 swxY w Y   d S Nr
   r1   r2   r   re   rD   r*   rf   s    r   test_double_edge_swap_smallrv   {   s    	r'	(	( 2 2a 0 0112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2   'AAAc                      t          j        t          j                  5  t          j        t          j        d          dd          } d d d            d S # 1 swxY w Y   d S )Nr   r   r   r%   ru   rf   s    r   test_double_edge_swap_triesry      s    	r'	(	( I Ib 1 1aHHHI I I I I I I I I I I I I I I I I I   *AAAc                      t          j        ddg          } t          j        t           j        d          5  t          j        |           }d d d            d S # 1 swxY w Y   d S )Nr-   r.   z not defined for directed graphs.r/   )r   r)   r1   r2   re   rD   rm   s     r   test_double_edge_directedr|      s    J'((E	r'/Q	R	R	R ' '&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   AA Ac                      t          j        t          j                  5  t          j        t          j        d          dd          } d d d            d S # 1 swxY w Y   d S rp   )r1   r2   r   r3   rD   rq   rf   s    r   test_double_edge_max_triesr~      s    	r0	1	1 L L 1! 4 4AKKKL L L L L L L L L L L L L L L L L Lrz   c                      t          j        t          j                  5  t          j        t          j        d                    } d d d            d S # 1 swxY w Y   d S rt   )r1   r2   r   re   rP   r*   rf   s    r   %test_connected_double_edge_swap_smallr      s    	r'	(	( < <)"-*:*:;;< < < < < < < < < < < < < < < < < <rw   c                      t          j        t          j                  5  t          j        d          } t          j        | g d           t          j        |           } d d d            d S # 1 swxY w Y   d S )Nr
   )r         )r1   r2   r   re   r*   add_pathrP   rf   s    r   -test_connected_double_edge_swap_not_connectedr      s    	r'	(	( - -M!
A|||$$$)!,,- - - - - - - - - - - - - - - - - -s   A A,,A03A0c                     t          j        d          } t          d |                                 D                       }t          j        | dd          } |t          d |                                 D                       k    sJ d S )Nr$   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   z%test_degree_seq_c4.<locals>.<genexpr>   s&      ..41aQ......r   r   r   c              3       K   | ]	\  }}|V  
d S r   r   r9   s      r   r   z%test_degree_seq_c4.<locals>.<genexpr>   s&      6641aQ666666r   )r   cycle_graphrB   rC   rD   )r   rF   s     r   test_degree_seq_c4r      s    
qA..188::.....G
Aq#&&Af66188::66666666666r   c                      t          j                    } |                     g d           t          j        t           j        d          5  t          j        |            d d d            d S # 1 swxY w Y   d S )N)r   r   r   z.*fewer than four nodes.r/   )r   r)   add_nodes_fromr1   r2   re   r    rf   s    r   test_fewer_than_4_nodesr      s    

AYYY	r'/I	J	J	J ! !
a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   A--A14A1c                     t          j        ddg          } |                     ddg           t          j        t           j        d          5  t          j        |            d d d            n# 1 swxY w Y   t          j                    } |                     g d           t          j        t           j        d          5  t          j        |            d d d            d S # 1 swxY w Y   d S )	Nr-   )r   r   r
   r$   z.*fewer than 3 edgesr/   )r   r   r   r
   z.*fewer than 2 edges)	r   r)   r   r1   r2   re   r    rk   rD   rf   s    r   test_less_than_3_edgesr      s`   

FF#$$AaV	r'/E	F	F	F ! !
a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 	

A\\\"""	r'/E	F	F	F  
A                 s$   A//A36A3C&&C*-C*))r1   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+   r5   rG   rK   rR   rX   r^   rb   rg   ri   rn   rr   rv   ry   r|   r~   r   r   r   r   r   r   r   r   <module>r      sd       qrz222rz||   *B*2B777= > > >r}QRZ0002ABJ777#R#$6$6$68J8J8JKK  ABJ??? tXr5$NOO5 5 PO5	! 	! 	!	D 	D 	D; ; ;; ; ;; ; ;; ; ;; ; ;; ; ;M M M

 
 
) ) )
 
 
2 2 2
I I I
' ' 'L L L
< < <
- - -7 7 7! ! !	 	 	 	 	r   