
    wg               	       ~   d dl Z d dlZ ej                  dej                        Z ej                         Zej                   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"                  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(y)"    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                        k7  sJ dt        fd| j                  D              k(  sJ y )Nr   d   nswap	max_triesr	   r
   c              3   &   K   | ]  }|v 
 y wN ).0eedgess     h/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_swap.py	<genexpr>z*test_directed_edge_swap.<locals>.<genexpr>   s     4qAUN4s   )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                     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 y )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                      d} t        j                  g d      }t        j                  t         j                  |       5  t        j
                  |ddd       d d d        y # 1 sw Y   y xY w)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  JJ?@E	r00	: D
e1CD D Ds   A""A+c                      t        j                  dd      } t        d | j                         D              }t        j                  | d      }|t        d | j                         D              k(  sJ y )N   r   c              3   &   K   | ]	  \  }}|  y wr   r   r   nds      r   r   z(test_double_edge_swap.<locals>.<genexpr>4        241aQ2   (   c              3   &   K   | ]	  \  }}|  y w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_swaprH   2   s[    $$S!,E25<<>22G
E2&Af:5<<>:::::r"   c                      t        j                  dd      } t        d | j                         D              }t        j                  | dd      }|t        d | j                         D              k(  sJ y )Nr7   r   c              3   &   K   | ]	  \  }}|  y wr   r   r9   s      r   r   z-test_double_edge_swap_seed.<locals>.<genexpr>;   r<   r=   r>   r   c              3   &   K   | ]	  \  }}|  y wr   r   r9   s      r   r   z-test_double_edge_swap_seed.<locals>.<genexpr>=   r@   r=   rA   rF   s      r   test_double_edge_swap_seedrL   9   s]    $$S!,E25<<>22G
E2A.Af:5<<>:::::r"   c                     t        j                  dd      } t        d | j                         D              }t        j                  | dd      }t        j
                  |       sJ |t        d | j                         D              k(  sJ y )Nr7   r   c              3   &   K   | ]	  \  }}|  y wr   r   r9   s      r   r   z2test_connected_double_edge_swap.<locals>.<genexpr>B   r<   r=   r>   r   c              3   &   K   | ]	  \  }}|  y wr   r   r9   s      r   r   z2test_connected_double_edge_swap.<locals>.<genexpr>E   r@   r=   r   rB   rC   rD   connected_double_edge_swapis_connectedrF   s      r   test_connected_double_edge_swaprS   @   so    $$S!,E25<<>22G
%%eRa8A??5!!!f:5<<>:::::r"   c                     t        j                  dd      } t        d | j                         D              }t        j                  | ddd      }t        j
                  |       sJ |t        d | j                         D              k(  sJ y )Nr7   r   c              3   &   K   | ]	  \  }}|  y w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   | ]	  \  }}|  y wr   r   r9   s      r   r   zGtest_connected_double_edge_swap_low_window_threshold.<locals>.<genexpr>M   r@   r=   rP   rF   s      r   4test_connected_double_edge_swap_low_window_thresholdrY   H   sq    $$S!,E25<<>22G
%%eR11MA??5!!!f:5<<>:::::r"   c                     t        j                  d      } t        d | j                         D              }t        j                  | dd      }t        j
                  |       sJ |t        d | j                         D              k(  sJ y )Nr>   c              3   &   K   | ]	  \  }}|  y wr   r   r9   s      r   r   z7test_connected_double_edge_swap_star.<locals>.<genexpr>S   r<   r=   r   r$   r   c              3   &   K   | ]	  \  }}|  y wr   r   r9   s      r   r   z7test_connected_double_edge_swap_star.<locals>.<genexpr>V   r@   r=   r   
star_graphrC   rD   rQ   rR   rF   s      r   $test_connected_double_edge_swap_starr_   P   sk    MM"E25<<>22G
%%eQQ7A??5!!!f:5<<>:::::r"   c                     t        j                  d      } t        d | j                         D              }t        j                  | ddd      }t        j
                  |       sJ |t        d | j                         D              k(  sJ y )Nr>   c              3   &   K   | ]	  \  }}|  y wr   r   r9   s      r   r   zLtest_connected_double_edge_swap_star_low_window_threshold.<locals>.<genexpr>\   r<   r=   r   r   r$   rV   c              3   &   K   | ]	  \  }}|  y wr   r   r9   s      r   r   zLtest_connected_double_edge_swap_star_low_window_threshold.<locals>.<genexpr>_   r@   r=   r]   rF   s      r   9test_connected_double_edge_swap_star_low_window_thresholdrc   Y   sm    MM"E25<<>22G
%%eQ!!LA??5!!!f:5<<>:::::r"   c                      t        j                  t        j                        5  t        j                  t        j
                  dt        j                              } d d d        y # 1 sw Y   y xY w)Nr
   r   r1   r2   r   NetworkXErrorr   r*   r)   r   s    r   test_directed_edge_swap_smallrh   b   sL    	r''	( M!!"--

"KLM M Ms   9A&&A/c                      t        j                  t        j                        5  t        j                  t        j
                  dt        j                        dd      } d d d        y # 1 sw Y   y xY w)Nr
   r   r   r   r%   re   rg   s    r   test_directed_edge_swap_triesrj   g   sO    	r''	( 
!!MM!"**5Q!

 
 
s   <A))A2c                      t        j                  ddg      } t        j                  t         j                        5  t        j
                  |       }d d d        y # 1 sw Y   y xY w)Nr-   r.   )r   Graphr1   r2   NetworkXNotImplementedr   r4   r   s     r   "test_directed_exception_undirectedro   n   sL    HHff%&E	r00	1 )!!%() ) )s   AA#c                      t        j                  t        j                        5  t        j                  t        j
                  dt        j                               dd      } d d d        y # 1 sw Y   y xY wNr$   r   r   r%   )r1   r2   r   r3   r   complete_graphr)   rg   s    r   test_directed_edge_max_triesrs   t   sS    	r00	1 
!!a.a1

 
 
s   ?A,,A5c                      t        j                  t        j                        5  t        j                  t        j
                  d            } d d d        y # 1 sw Y   y xY wNr
   r1   r2   r   rf   rE   r*   rg   s    r   test_double_edge_swap_smallrw   {   sB    	r''	( 2a 012 2 2   )AAc                      t        j                  t        j                        5  t        j                  t        j
                  d      dd      } d d d        y # 1 sw Y   y xY w)Nr   r   r   r%   rv   rg   s    r   test_double_edge_swap_triesrz      sJ    	r''	( Ib 1aHI I I   ,AA"c                      t        j                  ddg      } t        j                  t         j                  d      5  t        j
                  |       }d d d        y # 1 sw Y   y xY w)Nr-   r.   z not defined for directed graphs.r/   )r   r)   r1   r2   rf   rE   rn   s     r   test_double_edge_directedr}      sO    JJ'(E	r''/Q	R '&' ' 's   AA%c                      t        j                  t        j                        5  t        j                  t        j
                  d      dd      } d d d        y # 1 sw Y   y xY wrq   )r1   r2   r   r3   rE   rr   rg   s    r   test_double_edge_max_triesr      sL    	r00	1 L 1 1! 4AKL L Lr{   c                      t        j                  t        j                        5  t        j                  t        j
                  d            } d d d        y # 1 sw Y   y xY wru   )r1   r2   r   rf   rQ   r*   rg   s    r   %test_connected_double_edge_swap_smallr      sB    	r''	( <))"--*:;< < <rx   c                      t        j                  t        j                        5  t        j                  d      } t        j
                  | g d       t        j                  |       } d d d        y # 1 sw Y   y xY w)Nr
   )r         )r1   r2   r   rf   r*   add_pathrQ   rg   s    r   -test_connected_double_edge_swap_not_connectedr      sU    	r''	( -MM!
A|$))!,- - -s   AA00A9c                      t        j                  d      } t        d | j                         D              }t        j                  | dd      } |t        d | j                         D              k(  sJ y )Nr$   c              3   &   K   | ]	  \  }}|  y wr   r   r9   s      r   r   z%test_degree_seq_c4.<locals>.<genexpr>   s     .41aQ.r=   r   r   c              3   &   K   | ]	  \  }}|  y wr   r   r9   s      r   r   z%test_degree_seq_c4.<locals>.<genexpr>   s     641aQ6r=   )r   cycle_graphrC   rD   rE   )r   rG   s     r   test_degree_seq_c4r      sY    
qA.188:..G
Aq#&Af6188:66666r"   c                      t        j                         } | j                  g d       t        j                  t         j
                  d      5  t        j                  |        d d d        y # 1 sw Y   y xY w)N)r   r   r   z.*fewer than four nodes.r/   )r   r)   add_nodes_fromr1   r2   rf   r   rg   s    r   test_fewer_than_4_nodesr      sS    


AY	r''/I	J !
a ! ! !s   A,,A5c                     t        j                  ddg      } | j                  ddg       t        j                  t         j
                  d      5  t        j                  |        d d d        t        j                         } | j                  g d       t        j                  t         j
                  d      5  t        j                  |        d d d        y # 1 sw Y   txY w# 1 sw Y   y xY w)	Nr-   )r   r   r
   r$   z.*fewer than 3 edgesr/   )r   r   r   r
   z.*fewer than 2 edges)	r   r)   r   r1   r2   rf   r   rl   rE   rg   s    r   test_less_than_3_edgesr      s    


FF#$AaV	r''/E	F !
a ! 	
A\"	r''/E	F 
A ! !
 s   C: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   rH   rL   rS   rY   r_   rc   rh   rj   ro   rs   rw   rz   r}   r   r   r   r   r   r   r   r"   r   <module>r      sP    qrzz2rzz|   *B**2B7== >r}}QRZZ02ABJJ7#R##$68JK   ABJJ? tXr5$NO5 P5	!	D;;;;;;M

)
2
I
'L
<
-7!	r"   