
    h"4                         S SK r S SKrS SKJrJrJr  \ R                  " S5      r\ R                  " S5      r	 " S S5      r
S rS rS	 rg)
    N)edges_equalgraphs_equalnodes_equalnumpypandasc                   B   \ 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\R(                  R+                  S\R.                  \R0                  /5      S 5       rS r\R(                  R+                  SSS/S/5      S 5       rS rS rS rSrg)TestConvertPandas
   c                 >   [         R                  R                  SS9U l        U R                  R	                  SSSS9n/ SQn/ SQn[
        R                  US	S
/S9nX$S'   X4S'   X@l        [
        R                  / SQ// SQS9n[
        R                  XE/5      U l	        g )N   )seed      )      )sizeABC)Dr   Eweightcostcolumnsr   b)      r   r   )r   r   r   r   )
nprandomRandomStaterngrandintpd	DataFramedfconcatmdf)selfintsar   r'   r)   s         T/var/www/html/env/lib/python3.13/site-packages/networkx/tests/test_convert_pandas.pysetup_methodTestConvertPandas.setup_method   s    99((a(0xx2F3\\$6(:\;13ll-.8RlS99bY'    c                    [         R                  S/5      n[        R                  " [        R
                  [        R                  U5        [         R                  SS/5      n[        R                  " [        R
                  [        R                  U5        [         R                  SS/SS//[        SS/SS/S9n[        R                  " [        R
                  [        R                  U5        g )Nr,   g        r   r   r   r   dtypeindexr   )	r%   r&   pytestraisesnxNetworkXErrorto_networkx_graphintfrom_pandas_adjacency)r*   Gr'   s      r-   test_exceptions!TestConvertPandas.test_exceptions   s    LL#b&&(<(<a@LL#s$b&&(<(<a@\\Aq6Aq6*#aVcSVZ\Xb&&(@(@"Er0   c           	         [         R                  " SSSSS.4SSSS	S.4SS
S	SS.4/5      n[         R                  " U R                  SSS5      n[	        X!5      (       d   e[         R
                  " U5      nUR                  SS
SSS9  [         R                  " U R                  SSS[         R
                  " 5       5      n[	        XC5      (       d   eg )Nr   r   	   r
   r   r   r   r   r      r   r   r   r   Tr   )r7   Graphfrom_pandas_edgelistr'   r   
MultiGraphadd_edger)   )r*   Gtruer<   MGtrueMGs        r-   test_from_edgelist_all_attr-TestConvertPandas.test_from_edgelist_all_attr    s    cA45cA34cA34
 ##DGGQT:A%%%%u%Sr!4$$TXXq#tR]]_MB''''r0   c           	          [         R                  " SSSSS.4SSSS	S.4SS
S	SS.4/5      n[         R                  " U R                  SSSS/5      n[	        X!5      (       d   eg )Nr   r   r@   r
   rA   r   r   r   rB   r   r   r   r   r   r   r7   rC   rD   r'   r   r*   rG   r<   s      r-   test_from_edgelist_multi_attr/TestConvertPandas.test_from_edgelist_multi_attr0   st    cA45cA34cA34
 ##DGGQh5GHA%%%%r0   c           
          [         R                  " SSSSSS.4SSSSSS.4SSSSS	S.4/5      n[         R                  " U R                  S
S/ SQ5      n[	        X!5      (       d   eg )Nr   r   r
   )r   r   r   r   r   rB   r   r   r   r   rM   rN   s      r-   )test_from_edgelist_multi_attr_incl_target;TestConvertPandas.test_from_edgelist_multi_attr_incl_target;   sv    cs;<cs:;cs:;
 ##DGGQ5GHA%%%%r0   c                    SSSSSS.4SSSSSS.4SSSS	S
S.4SSSSSS.4SSSSSS.4SSSSSS.4SSSSSS.4SSSSSS.4SSSSSS.4SSSSS
S.4/
n[         R                  " U5      n/ SQ/ SQ/ SQ/ SQ/ SQS.n[        R                  R	                  U5      n[         R
                  " USSS[         R                  S 9n[         R
                  " USS/ S!Q[         R                  S 9n[        XR5      (       d   e[        Xb5      (       d   eg )"NX1X4zAr   )CoMiStzB6   X21   X3,   Y1Y3zC"   Y2      Z1Z3zD   )
rU   rU   rU   rU   ra   ra   ra   ra   rh   rh   )
rV   rV   rV   rV   rb   rb   rb   rb   ri   ri   )
rU   r]   r_   rV   ra   re   r]   rb   rh   r_   )
rW   r[   r[   r[   rc   rc   rc   rc   rj   rj   )
r   r\   r^   r`   r   rd   rf   rg   r   rk   )Or   rZ   rX   rY   rl   r   T)sourcetarget	edge_attrcreate_using)rZ   rX   rY   )r7   MultiDiGraphr%   r&   	from_dictrD   r   )r*   edgesrG   datar'   G1G2s          r-   -test_from_edgelist_multidigraph_and_edge_attr?TestConvertPandas.test_from_edgelist_multidigraph_and_edge_attrF   sY    4AT:;4Bd;<4Bd;<4Bd;<4AT:;4Bd;<4Bd;<4Bd;<4AT:;4Bd;<
 &MMNN7
 \\##D)$$s3$R__
 $$(
 B&&&&B&&&&r0   c                     [         R                  " SSSS04SSSS04SSSS	04/5      n[         R                  " U R                  S
SS5      n[	        X!5      (       d   eg )Nr   r   r   r
   r   r   rB   r   r   r   r   rM   rN   s      r-   test_from_edgelist_one_attr-TestConvertPandas.test_from_edgelist_one_attrj   sl    cHb>*cHa=)cHa=)
 ##DGGQX>A%%%%r0   c                     [         R                  " SSSS04SSSS04SSSS04/5      n[         R                  " U R                  SSS5      n[	        X!5      (       d   eg )Nr   r   r   r   r   r   r   rM   rN   s      r-    test_from_edgelist_int_attr_name2TestConvertPandas.test_from_edgelist_int_attr_nameu   sh    3C!Cq#h#7#sQH9MN
 ##DGGQQ7A%%%%r0   c           	         [         R                  " [        R                  [        R                  U R
                  SSS5        [         R                  " [        R                  [        R                  U R
                  SSS5        [        R                  SS/SS/SS//SS/S9n[         R                  " [        R                  [        R                  USSS	5        [         R                  " [        R                  [        R                  USSS
5        [         R                  " [        R                  [        R                  USSS
S/5        g )Nr   r   misspellr   r   str   Tr   r   )r5   r6   r7   r8   rD   r'   r%   r&   )r*   	edgeframes     r-   test_from_edgelist_invalid_attr1TestConvertPandas.test_from_edgelist_invalid_attr}   s    b55tww3
	
 	b&&(?(?!SRSTLL1a&1a&1a&!9C:LN	b55y#sD	
 	b55y#sH	
 	##v	
r0   c                     [         R                  " SS0 4SS0 4SS0 4/5      n[         R                  " U R                  SS5      n[	        X!5      (       d   eg )Nr   r   r   r   r   r   r   rM   rN   s      r-   test_from_edgelist_no_attr,TestConvertPandas.test_from_edgelist_no_attr   sR    3R.3R.3R.IJ##DGGQ4A%%%%r0   c                    [         R                  " S5      nUR                  S [        UR                  5       5       5        [         R
                  " U5      nU VVVs/ s H  u  p4oSPM	     nnnnU VVVs/ s H  u  p4oTPM	     nnnnU VVVs/ s H
  u  p4oUS   PM     nnnn[        R                  XgUS.5      n	[         R                  " U	SS9n
[        UR                  5       U
R                  5       5      (       d   e[        UR	                  5       U
R	                  5       5      (       d   e[         R                  " U	[         R                  S9n[        UR                  5       UR                  5       5      (       d   e[        UR	                  5       UR	                  5       5      (       d   eg s  snnnf s  snnnf s  snnnf )Nr
   c              3   .   #    U  H  u  pXU4v   M     g 7fN .0uvs      r-   	<genexpr>7TestConvertPandas.test_from_edgelist.<locals>.<genexpr>        !F1)   r   )rm   rn   r   )ro   rp   )r7   cycle_graphadd_weighted_edges_fromlistrs   to_edgelistr%   r&   rD   r   nodesr   r9   rC   )r*   r<   edgelistr   r   drm   rn   r   rs   GGGWs               r-   test_from_edgelist$TestConvertPandas.test_from_edgelist   sF   NN2	!!!FQWW!FF>>!$#+,8a!8,#+,8a!8,-56X'!H+X6FST$$Uh?1779bhhj11111779bhhj1111!!%bhh?1779bhhj11111779bhhj1111 -,6s   F06F7F>c                    [         R                  " S5      nUR                  S [        UR                  5       5       5        [         R
                  " USSS9  [        R                  " [         R                  [         R                  U5        UR	                  SS9 H  u  p#nUR                  SS 5        M     [         R
                  " USSS9  [        R                  " [         R                  [         R                  U5        g )	Nr
   c              3   .   #    U  H  u  pXU4v   M     g 7fr   r   r   s      r-   r   YTestConvertPandas.test_to_edgelist_default_source_or_target_col_exists.<locals>.<genexpr>   r   r   r   rm   nameTrt   rn   r7   
path_graphr   r   rs   set_edge_attributesr5   r6   r8   to_pandas_edgelistpopr*   r<   r   r   r   s        r-   4test_to_edgelist_default_source_or_target_col_existsFTestConvertPandas.test_to_edgelist_default_source_or_target_col_exists   s    MM"	!!!FQWW!FF
q!(3b&&(=(=qA wwDw)GA!EE(D! * 	q!(3b&&(=(=qAr0   c                     [         R                  " S5      nUR                  S [        UR                  5       5       5        [         R
                  " USSS9  [        R                  " [         R                  [         R                  USS9  UR	                  SS9 H  u  p#nUR                  SS 5        M     [         R
                  " USS	S9  [        R                  " [         R                  [         R                  US	S
9  g )Nr
   c              3   .   #    U  H  u  pXU4v   M     g 7fr   r   r   s      r-   r   XTestConvertPandas.test_to_edgelist_custom_source_or_target_col_exists.<locals>.<genexpr>   r   r   r   source_col_namer   )rm   Tr   target_col_name)rn   r   r   s        r-   3test_to_edgelist_custom_source_or_target_col_existsETestConvertPandas.test_to_edgelist_custom_source_or_target_col_exists   s    MM"	!!!FQWW!FF
q!*;<b33Q?P	

 wwDw)GA!EE#T* * 	q!*;<b33Q?P	
r0   c                 :   [         R                  " S[         R                  S9nUR                  S [	        UR                  5       5       5       5        [         R                  " USSS9  [        R                  " [         R                  [         R                  USS9  g )Nr
   r   c              3   .   #    U  H  u  pXU4v   M     g 7fr   r   r   s      r-   r   ITestConvertPandas.test_to_edgelist_edge_key_col_exists.<locals>.<genexpr>   s     !H1)r   r   edge_key_namer   edge_key)r7   r   rE   r   r   rs   r   r5   r6   r8   r   )r*   r<   s     r-   $test_to_edgelist_edge_key_col_exists6TestConvertPandas.test_to_edgelist_edge_key_col_exists   sg    MM"2==9	!!!HQWWY!HH
q!/:b33Q	
r0   c                     SS/n[         R                  SS/SS//[        XS9n[        R                  " SS/5      n[        R
                  " U[        S9n[         R                  R                  XB5        g )Nr   r   r   r2   r   r   r   r   r3   )r%   r&   r:   r7   rC   to_pandas_adjacencytestingassert_frame_equal)r*   nodelistdftruer<   r'   s        r-   test_from_adjacency%TestConvertPandas.test_from_adjacency   sk    q6VaVCx  
 HHff%&##AS1


%%b1r0   graphc                 >   U" SS/5      n[         R                  " U5      n[         R                  " X1S9n[        X$5      (       d   eSS0SS0S.SSS00S.nU" U5      n[         R                  " U[
        S9n[         R                  " X1S9n[        X$5      (       d   eg )Nr   r   r   r   r   r   )r7   r   rD   r   r   r:   r;   )r*   r   rG   r'   r<   adjs         r-   test_roundtrip TestConvertPandas.test_roundtrip   s     vv&'""5)##B;E%%%%m16A!};MNc
##E5$$R<E%%%%r0   c                 N   SSSS.SSSS.SSSS.S.n[         R                  U[        R                  S9nU/ SQ   n[        R
                  " U[        R                  " 5       S9n[        R                  " U[        R                  S9n[         R                  R                  X25        g )Nr   r   r   r   )r   r   r   r   )
r%   r&   r    intpr7   r;   DiGraphr   r   r   )r*   rt   r   r'   r<   s        r-   test_from_adjacency_named+TestConvertPandas.test_from_adjacency_named   s     qq)qq)qq)

 d"''2O$$$RbjjlC##ARWW5


%%b1r0   ro   attr2attr3Tc                    [         R                  SSSSS.SSSSS.SSSSS.S	S
S
S
S.S
S	S
S	S.S.5      n[        R                  " SSSS	S
S.4SSSS
S	S.4SSSS
S
S.4SSSS
S	S.4/5      n[        R                  " USSUS[        R                  " 5       S9n[        XC5      (       d   e[        R                  " USS9nUR                  S5      n/ SQUl        [         R                  R                  X%/ SQ   5        g )NN1N2)r   r   r   r   N3F1F2F3F4r   r   )rm   rn   attr1r   r   )r   r   rm   rn   r   )rm   rn   ro   r   rp   r   )r%   r&   r7   rE   rD   r   r   sort_valuesr4   r   r   )r*   ro   r'   rG   r<   df_roundtrips         r-   test_edgekey_with_multigraph.TestConvertPandas.test_edgekey_with_multigraph   s,   \\ $4dF $4dF#$TE qqq9 qqq9
 tTQ#;<tTQ#;<tTQ#;<tTQ#;<	
 ##
 A%%%%,,QA#//81


%%LM	
r0   c           	          [         R                  " SSSSS.4SSSS	S.4SS
S	SS.4/5      n[         R                  " U R                  SSSSS9n[	        X!5      (       d   eg )Nr   r   r@   r
   rA   r   r   r   rB   r   r   r   r   Tr   r   rM   rN   s      r-   (test_edgekey_with_normal_graph_no_action:TestConvertPandas.test_edgekey_with_normal_graph_no_action  sq    cA45cA34cA34
 ##DGGQTHMA%%%%r0   c           
          [         R                  " [        R                  R                  5         [        R
                  " U R                  SSSS[        R                  " 5       S9  S S S 5        g ! , (       d  f       g = f)Nrm   rn   Not_realT)rm   rn   r   ro   rp   )r5   r6   r7   	exceptionr8   rD   r'   rE   )r*   s    r-   test_nonexisting_edgekey_raises1TestConvertPandas.test_nonexisting_edgekey_raises$  sN    ]]2<<556###]]_ 766s   7A//
A=c                    [         R                  " 5       nUR                  SSSS9  UR                  SSSS9  [         R                  " USS9n[        R                  SS/SS/SS/S.5      n[        R                  R                  X25        [         R                  " US[         R                  S9n[        X5      (       d   eg )	Nr   r   )keyr   r   r   )rm   rn   r   )r   rp   )
r7   rE   rF   r   r%   r&   r   r   rD   r   )r*   rG   r'   expectedr<   s        r-   )test_multigraph_with_edgekey_no_edgeattrs;TestConvertPandas.test_multigraph_with_edgekey_no_edgeattrs/  s    q!#q!#""559<<Aq6aVQPQF ST


%%h3##BR]]SE%%%%r0   )r'   r)   r#   N) __name__
__module____qualname____firstlineno__r.   r=   rJ   rO   rR   rw   rz   r}   r   r   r   r   r   r   r   r5   markparametrizer7   rC   rE   r   r   r   r   r   r   __static_attributes__r   r0   r-   r	   r	   
   s    (F( 	&	&"'H	&&
,&
2$B
"
2 [[Wrxx&?@& A&2 [[[GW+=t*DE"
 F"
H	&	&r0   r	   c            	          [         R                  " S5      n SS/n[        R                  SS/SS//[        XS9n[        R
                  R                  U[         R                  " X[        S95        g )Nr   r   r   r   r2   r   )r7   complete_graphr%   r&   r:   r   r   r   )r<   r   r   s      r-   &test_to_pandas_adjacency_with_nodelistr   :  sh    
!A1vH||
Q!Q8  H JJ!!"((C@r0   c                     [         R                  " 5       n U R                  / SQSS9  U R                  SSSS9  [         R                  " U SS/S	9nSUS
   R                  5       ;  d   eSUS   R                  5       ;  d   eg )N))r   r   r   )r   r   g       @)r   r   r   d   r   r   )r   rm   r   )r7   rC   add_edges_fromrF   r   to_numpy)r<   r'   s     r-   %test_to_pandas_edgelist_with_nodelistr   E  s    

A-c:JJq!CJ 			qAq6	2BBxL))++++bl++----r0   c                  `   [         R                  / SQ/ SQ/ SQ/ SQ// SQ/ SQS9n [        R                  " U [        R                  S9n[        R                  " / SQ5      n[        UR                  UR                  5      (       d   e[        UR                  UR                  5      (       d   eg	)
zSee gh-7407)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )Qi r   r   Ri )r4   r   r   ))r   r   )r   r   )r   r   N)	r%   r&   r7   r;   r   r   r   r   rs   )r'   r<   r   s      r-   0test_from_pandas_adjacency_with_index_collisionsr  N  s    			
 '( 
 	
B 	  "**=Azz>?Hqww////qww////r0   )r5   networkxr7   networkx.utilsr   r   r   importorskipr    r%   r	   r   r   r  r   r0   r-   <module>r     sM      A A!"m& m&`	.0r0   