
    Vh:                     \   d dl Z d dlZd dlZd dlmZ d dlmZmZ ej                  ej                  ej                  ej                  ej                  gZd 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 Z%d Z&d Z'd Z( G d d      Z)y)!    N)flow)local_edge_connectivitylocal_node_connectivityc              #      K   d}	 t        j                  ddd      }t        j                  |      rt        j                  |      sd}| n|| k\  rd|  d}t	        |      |dz  }ew)	Nr   d   gq=
ףp?*   seedzTried z times: no suitable Graph.   )nxfast_gnp_random_graphis_connectedis_biconnected	Exception)max_attemptsattemptsGmsgs       h/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/connectivity/tests/test_connectivity.py_generate_no_biconnectedr      st     H
$$S&r:??1b&7&7&:HG<'|n,FGn$A s   A)A+c                     t        j                  d      } | j                  ddg       t        j                  d      }|j                  g d       t        j                         }t        D ]u  }d|i}d|j
                   }t        j                  | fi |dk(  sJ |       t        j                  |fi |dk(  sJ |       t        j                  |fi |d	k(  rpJ |        y )
N   r   r   r      )r   r   )r   r   )r   r   r   r   	flow_funcAssertion failed in function: r   g@r   )r   
path_graphadd_edges_fromGraph
flow_funcs__name__average_node_connectivity)G1G2G3r   kwargserrmsgs         r   test_average_connectivityr*   '   s    
 
q	Bvv&'	q	B>?	B G	y)1)2D2D1EF++B9&9Q>FF>++B9&9S@H&H@++B9&9Q>FF>G    c                      t        j                  g d      } t        D ]0  }d|j                   }t        j                  |       dk(  r+J |        y )N)r   r   r      r   g      ?)r   DiGraphr"   r#   r$   r   r   r)   s      r   "test_average_connectivity_directedr1   9   sQ    


+,A ?	1)2D2D1EF++A.$6>>6?r+   c                      t               } t        D ]M  }t        d      D ]=  }t        |       }d|j                   }t        j                  ||      dk(  r8J |        O y )Nr   r   r   r   )r   r"   rangenextr#   r   node_connectivity)Ggenr   ir   r)   s        r   test_articulation_pointsr9   @   sl    #%D M	q 	MAT
A5i6H6H5IJF''Y?1DLfLD	MMr+   c                     t        j                         } | j                  g d       t        D ]%  }d|i}d|j                   }dt        | ddfi |k(  sJ |       dt        j                  | ddfi |k(  sJ |       dt        | ddfi |k(  sJ |       dt        j                  | ddfi |k(  sJ |       dt        j                  | fi |k(  sJ |       dt        j                  | fi |k(  sJ |       |t        j                  u r%dt        j                  | ddfddi|k(  rJ |       dt        j                  | ddfddi|k(  r!J |        y )	N))r      r   r   r-   )r;   r   )r;      r   )r   r<   )r   r<   )r      )r.   r=   )r<      )r<   	   )r=   r>   )r=   
   )r>      )r?   r@   )r?   rA   )r@   rA   r   r   r   r   rA   r;   cutoff)r   r!   r    r"   r#   r   edge_connectivityr   r6   r   preflow_push)r   r   r(   r)   s       r   test_brandes_erlebachrE   I   s    	
A	
.   S	y)1)2D2D1EF+Aq"???GG?B((Ar<V<<DfD<+Aq"???GG?B((Ar<V<<DfD<B((5f55=v=5B((5f55=v=5))),,Q2JaJ6JJRFRJ,,Q2JaJ6JJRFRJSr+   c                  x   t        j                  t        j                  d      t        j                  d            } | j                  d       t	        dd      D ]  }| j                  d|        t        j                  | t        j                  d            } | j                  | j                         dz
         t	        dd      D ]  }| j                  d|        t        D ]S  }d|j                   }dt        j                  | |      k(  sJ |       dt        j                  | |      k(  rNJ |        y )	Nr   r=   r   r   r@   r   r3   r   )r   disjoint_unioncomplete_graphremove_noder4   add_edgeorderr"   r#   r6   rC   )r   r8   r   r)   s       r   test_white_harary_1rL   s   s   
 	"++A.0A0A!0DEAMM!1a[ 	

1a
!R..q12AMM!'')a- 1b\ 	

1a I	1)2D2D1EFB((i@@H&H@B((i@@H&H@Ir+   c                     t        j                  t        j                  d      t        j                  d            } | j                  dd       dt	        t        j
                  |       j                               k(  sJ t        D ]S  }d|j                   }dt        j                  | |      k(  sJ |       dt        j                  | |      k(  rNJ |        y )Nr   r   r   r   r   r3   )r   rG   rH   rJ   mincore_numbervaluesr"   r#   r6   rC   r0   s      r   test_white_harary_2rQ      s     	"++A.0A0A!0DEAJJq!BNN1%,,.//// I	1)2D2D1EFB((i@@H&H@B((i@@H&H@Ir+   c                     t        ddd      D ]  } t        D ]  }t        j                  |       }d|j                   }| dz
  t        j
                  ||      k(  sJ |       | dz
  t        j
                  |j                         |      k(  sJ |       | dz
  t        j                  ||      k(  sJ |       | dz
  t        j                  |j                         |      k(  rJ |         y )Nr.      r   r   r3   )r4   r"   r   rH   r#   r6   to_directedrC   )nr   r   r)   s       r   test_complete_graphsrV      s   1b!_ # 
	I!!!$A5i6H6H5IJFq5B00iHHP&PHq5B009    q5B00iHHP&PHq5B009   
	r+   c                  
   t        ddd      D ]s  } t        j                  |       }t        D ]S  }d|j                   }dt        j
                  ||      k(  sJ |       dt        j                  ||      k(  rNJ |        u y )Nr.      r   r   r3   )r4   r   empty_graphr"   r#   r6   rC   )kr   r   r)   s       r   test_empty_graphsr[      s    1b!_ MNN1# 	MI5i6H6H5IJF,,Q)DDLfLD,,Q)DDLfLD	MMr+   c                      t        j                         } t        D ]S  }d|j                   }dt        j                  | |      k(  sJ |       dt        j
                  | |      k(  rNJ |        y Nr   r   r3   )r   petersen_graphr"   r#   r6   rC   r0   s      r   test_petersenr_      st    
A I	1)2D2D1EFB((i@@H&H@B((i@@H&H@Ir+   c                      t        j                         } t        D ]S  }d|j                   }dt        j                  | |      k(  sJ |       dt        j
                  | |      k(  rNJ |        y r]   )r   tutte_graphr"   r#   r6   rC   r0   s      r   
test_tutterb      sr    
A I	1)2D2D1EFB((i@@H&H@B((i@@H&H@Ir+   c                      t        j                         } t        D ]S  }d|j                   }dt        j                  | |      k(  sJ |       dt        j
                  | |      k(  rNJ |        y r]   )r   dodecahedral_graphr"   r#   r6   rC   r0   s      r   test_dodecahedralre      st    
A I	1)2D2D1EFB((i@@H&H@B((i@@H&H@Ir+   c                      t        j                         } t        D ]S  }d|j                   }dt        j                  | |      k(  sJ |       dt        j
                  | |      k(  rNJ |        y )Nr   r   r3   )r   octahedral_graphr"   r#   r6   rC   r0   s      r   test_octahedralrh      st    
A I	1)2D2D1EFB((i@@H&H@B((i@@H&H@Ir+   c                      t        j                         } t        D ]S  }d|j                   }dt        j                  | |      k(  sJ |       dt        j
                  | |      k(  rNJ |        y )Nr   r.   r3   )r   icosahedral_graphr"   r#   r6   rC   r0   s      r   test_icosahedralrk      st    
A I	1)2D2D1EFB((i@@H&H@B((i@@H&H@Ir+   c            	          t        j                  d      } t        D ]9  }t        j                  t         j
                  t         j                  | dd|       ; y Nr   r@   r   r3   r   r   r"   pytestraisesNetworkXErrorr6   r   r   s     r   test_missing_sourcers      D    
aA 
	b22Ar1		

r+   c            	          t        j                  d      } t        D ]9  }t        j                  t         j
                  t         j                  | dd|       ; y Nr   r   r@   r3   rn   rr   s     r   test_missing_targetrw      D    
aA 
	b22Aq"		

r+   c            	          t        j                  d      } t        D ]9  }t        j                  t         j
                  t         j                  | dd|       ; y rm   r   r   r"   ro   rp   rq   rC   rr   s     r   test_edge_missing_sourcer{      rt   r+   c            	          t        j                  d      } t        D ]9  }t        j                  t         j
                  t         j                  | dd|       ; y rv   rz   rr   s     r   test_edge_missing_targetr}      rx   r+   c                  <   t        j                         } t        j                  | g d       t        j                  | ddg       t        D ]O  }d|j                   }t        j
                  |       dk(  sJ |       t        j                  |       dk(  rJJ |        y N)r   r;   r   r   r.   r   r   )r   r/   add_pathr"   r#   r6   rC   r0   s      r   test_not_weakly_connectedr      s    


AKK9KKAq6 4	1)2D2D1EF##A&!+3V3+##A&!+3V3+4r+   c                  <   t        j                         } t        j                  | g d       t        j                  | ddg       t        D ]O  }d|j                   }t        j
                  |       dk(  sJ |       t        j                  |       dk(  rJJ |        y r   )r   r!   r   r"   r#   r6   rC   r0   s      r   test_not_connectedr      s    

AKK9KKAq6 4	1)2D2D1EF##A&!+3V3+##A&!+3V3+4r+   c                  D   t        j                  dt        j                               } t        j                  d      j                         }t        D ]  }d|j
                   }dt        j                  | |      k(  sJ |       dt        | dd|      k(  sJ |       dt        j                  | dd|      k(  sJ |       dt        j                  ||      k(  sJ |       dt        |dd|      k(  sJ |       dt        j                  |dd|      k(  rJ |        y )Nr@   create_usingr   r   r3   r   r;   )r   cycle_graphr/   rT   r"   r#   rC   r   )r   Dr   r)   s       r   test_directed_edge_connectivityr     s   
r

5A
r&&(A O	1)2D2D1EFB((i@@H&H@+Aq!yIIQ6QIB((AqIFFNNFB((i@@H&H@+Aq!yIIQ6QIB((AqIFFNNFOr+   c            
          t        j                  d      } t        t        fD ]M  }t        D ]B  }|t
        j                  u rdD ](  } || dd||      }||k(  rJ d|j                           D O y )Nr.   )r   r;   r   r   r   )r   rB   zcutoff error in )r   rH   r   r   r"   r   rD   r#   )r   
local_funcr   rB   results        r   test_cutoffr     s    
!A.0GH Q
# 	QID---# Q#Aq!yP'P+;I<N<N;O)PP'Q		QQr+   c                      t        j                  d      } t        j                  t         j                  t
        | dd|        y )Nr.   r   r   )	auxiliary)r   rH   ro   rp   rq   r   )r   s    r   test_invalid_auxiliaryr      s0    
!A
MM"""$;Q1PQRr+   c                      t        j                  d      } t         j                  t         j                  fD ])  }t	        j
                  t         j                  || d       + y )Nr.   r   )sr   rH   r6   rC   ro   rp   rq   r   interface_funcs     r   test_interface_only_sourcer   %  L    
!A//1E1EF @b&&Q?@r+   c                      t        j                  d      } t         j                  t         j                  fD ])  }t	        j
                  t         j                  || d       + y )Nr.   r   )tr   r   s     r   test_interface_only_targetr   +  r   r+   c                      t         j                  t         j                  t         j                  g} | D ]9  } |       }t        j                  |      d   t        j
                  |      k(  r9J  y )Nr   )r   rj   rg   rd   stoer_wagnerrC   )graph_funcs
graph_funcr   s      r   +test_edge_connectivity_flow_vs_stoer_wagnerr   1  s_    '')<)<b>S>STK! @
Lq!!$(<(<Q(????@r+   c                   R    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zy)TestAllPairsNodeConnectivityc           	      
   t        j                  d      | _        t        j                  dt        j                               | _        t        j
                  d      | _        t        j
                  dt        j                               | _        t        j                  ddd      | _	        t        j                  dddd      | _
        t        j                  d	      | _        t        j                  d
      | _        t        j                  d      | _        | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  g	| _        y )Nr=   r      g?r   r	   T)directedr
   rS   r@   r.   )r   r   pathr/   directed_pathr   cycledirected_cyclegnp_random_graphgnpdirected_gnprH   K20K10K5G_list)clss    r   setup_classz(TestAllPairsNodeConnectivity.setup_class9  s   ==#MM!"**,GNN1%	^^ABJJLI%%b#B7..r3BO##B'##B'""1%HHIIGGGGFFGG


r+   c                 $   t        j                  | j                        }|D ]$  }||   j                         D ]  \  }}|dk(  rJ  & t        j                  | j                        }|D ]$  }||   j                         D ]  \  }}|dk(  rJ  & y )Nr;   r   )r   all_pairs_node_connectivityr   itemsr   selfK_undirsourcetargetrZ   K_dirs         r   test_cyclesz(TestAllPairsNodeConnectivity.test_cyclesP  s    00< 	F$V_224 	Avv	 ..t/B/BC 	F"6]002 	Avv	r+   c                     | j                   | j                  | j                  fD ]L  }t        j                  |      }|D ]0  }||   j                         D ]  \  }}|t        |      dz
  k(  rJ  2 N y )Nr   )r   r   r   r   r   r   len)r   r   Kr   r   rZ   s         r   test_completez*TestAllPairsNodeConnectivity.test_completeZ  su    ((DGGTXX. 	+A..q1A +!"6!2 +IFAA
?*?++	+r+   c                 >   t        j                  | j                        }|D ]$  }||   j                         D ]  \  }}|dk(  rJ  & t        j                  | j                        }|D ]1  }||   j                         D ]  \  }}||k  r|dk(  rJ |dk(  rJ  3 y )Nr   r   )r   r   r   r   r   r   s         r   
test_pathsz'TestAllPairsNodeConnectivity.test_pathsa  s    00; 	F$V_224 	Avv	 ..t/A/AB 	"F"6]002 "	F?6M66M6	"	"r+   c                     t        j                  d      }g d}t        j                  ||      }t        |      t        |      k(  sJ y )Nr.   r   r;   r   nbunch)r   rH   r   r   )r   r   r   Cs       r   "test_all_pairs_connectivity_nbunchz?TestAllPairsNodeConnectivity.test_all_pairs_connectivity_nbunchn  s?    a **1V<1vV$$$r+   c                     t        j                         }t        j                  |      t        fdt	        j
                  |d      D              sJ y )Nc              3   :   K   | ]  \  }}d |   |   k(    yw)r.   N ).0uvr   s      r   	<genexpr>zWTestAllPairsNodeConnectivity.test_all_pairs_connectivity_icosahedral.<locals>.<genexpr>w  s!     IDAq1!Q<Is   r;   )r   rj   r   all	itertoolscombinations)r   r   r   s     @r   'test_all_pairs_connectivity_icosahedralzDTestAllPairsNodeConnectivity.test_all_pairs_connectivity_icosahedralt  sB      "**1-II,B,B1a,HIIIIr+   c                    t        j                         }g d}t        j                  ||       |D ci c]  }|i  }}t        j                  |d      D ]*  \  }}t        j
                  |||      x||   |<   ||   |<   , t        j                  |      }t        d |j                         D              t        d |j                         D              k(  sJ y c c}w )Nr   r   r;   r   r;   c              3   <   K   | ]  \  }}|t        |      f  y wNsortedr   rZ   r   s      r   r   zKTestAllPairsNodeConnectivity.test_all_pairs_connectivity.<locals>.<genexpr>       ;Aq&)n;   c              3   <   K   | ]  \  }}|t        |      f  y wr   r   r   s      r   r   zKTestAllPairsNodeConnectivity.test_all_pairs_connectivity.<locals>.<genexpr>  #      F
#q!Qq	NF
r   )	r   r!   r   r   r   r6   r   r   r   r   r   nodesrU   Ar   r   r   s           r   test_all_pairs_connectivityz8TestAllPairsNodeConnectivity.test_all_pairs_connectivityy  s    HHJ
AuqQU**5!4 	>DAq " 4 4Q1 ==AaDGad1g	>**1-;;;v F
'(wwyF
 @
 
 	
 
	 s   
Cc                    t        j                         }g d}t        j                  ||       |D ci c]  }|i  }}t        j                  |d      D ]"  \  }}t        j
                  |||      ||   |<   $ t        j                  |      }t        d |j                         D              t        d |j                         D              k(  sJ y c c}w )Nr   r;   c              3   <   K   | ]  \  }}|t        |      f  y wr   r   r   s      r   r   zTTestAllPairsNodeConnectivity.test_all_pairs_connectivity_directed.<locals>.<genexpr>  r   r   c              3   <   K   | ]  \  }}|t        |      f  y wr   r   r   s      r   r   zTTestAllPairsNodeConnectivity.test_all_pairs_connectivity_directed.<locals>.<genexpr>  r   r   )	r   r/   r   r   permutationsr6   r   r   r   r   s           r   $test_all_pairs_connectivity_directedzATestAllPairsNodeConnectivity.test_all_pairs_connectivity_directed  s    JJL
AuqQU**5!4 	4DAq**1a3AaDG	4**1-;;;v F
'(wwyF
 @
 
 	
 
	 s   
Cc                    t        j                  d      }g d}|D ci c]  }|i  }}t        j                  |d      D ]*  \  }}t        j                  |||      x||   |<   ||   |<   , t        j
                  ||      }t        d |j                         D              t        d |j                         D              k(  sJ y c c}w )Nr.   r   r;   r   c              3   <   K   | ]  \  }}|t        |      f  y wr   r   r   s      r   r   z_TestAllPairsNodeConnectivity.test_all_pairs_connectivity_nbunch_combinations.<locals>.<genexpr>  r   r   c              3   <   K   | ]  \  }}|t        |      f  y wr   r   r   s      r   r   z_TestAllPairsNodeConnectivity.test_all_pairs_connectivity_nbunch_combinations.<locals>.<genexpr>  r   r   )r   rH   r   r   r6   r   r   r   r   r   r   rU   r   r   r   r   s           r   /test_all_pairs_connectivity_nbunch_combinationszLTestAllPairsNodeConnectivity.test_all_pairs_connectivity_nbunch_combinations  s    a "#qQU##**615 	>DAq " 4 4Q1 ==AaDGad1g	>**1V<;;;v F
'(wwyF
 @
 
 	
 
	 $s   
Cc                    t        j                  d      }g d}|D ci c]  }|i  }}t        j                  |d      D ]*  \  }}t        j                  |||      x||   |<   ||   |<   , t        j
                  |t        |            }t        d |j                         D              t        d |j                         D              k(  sJ y c c}w )Nr.   r   r;   r   c              3   <   K   | ]  \  }}|t        |      f  y wr   r   r   s      r   r   zWTestAllPairsNodeConnectivity.test_all_pairs_connectivity_nbunch_iter.<locals>.<genexpr>  r   r   c              3   <   K   | ]  \  }}|t        |      f  y wr   r   r   s      r   r   zWTestAllPairsNodeConnectivity.test_all_pairs_connectivity_nbunch_iter.<locals>.<genexpr>  r   r   )	r   rH   r   r   r6   r   iterr   r   r   s           r   'test_all_pairs_connectivity_nbunch_iterzDTestAllPairsNodeConnectivity.test_all_pairs_connectivity_nbunch_iter  s    a "#qQU##**615 	>DAq " 4 4Q1 ==AaDGad1g	>**1T&\B;;;v F
'(wwyF
 @
 
 	
 
	 $s   
CN)r#   
__module____qualname__classmethodr   r   r   r   r   r   r   r   r   r   r   r+   r   r   r   8  sB    
 
,+"%J




	
	
r+   r   )2   )*r   ro   networkxr   networkx.algorithmsr    networkx.algorithms.connectivityr   r   boykov_kolmogorovdinitzedmonds_karprD   shortest_augmenting_pathr"   r   r*   r1   r9   rE   rL   rQ   rV   r[   r_   rb   re   rh   rk   rs   rw   r{   r}   r   r   r   r   r   r   r   r   r   r   r+   r   <module>r      s       $ 	KK!!
G$?M'STI&
IMIIIII



44
O	QS
@@@m
 m
r+   