
    wg"4                         d dl Z d dlZd dlmZmZmZ  e j                  d      Z e j                  d      Z	 G d d      Z
d Zd Zd	 Zy)
    N)edges_equalgraphs_equalnodes_equalnumpypandasc                   :   e 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ej&                  j)                  dej,                  ej.                  g      d        Zd Zej&                  j)                  dddgdg      d        Zd Zd Zd Zy)TestConvertPandasc                 ^   t         j                  j                  d      | _        | j                  j	                  ddd      }g d}g d}t
        j                  |d	d
g      }||d<   ||d<   || _        t
        j                  g dgg d      }t
        j                  ||g      | _	        y )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         g/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/networkx/tests/test_convert_pandas.pysetup_methodzTestConvertPandas.setup_method   s    99((a(0xx2F3\\$6(:\;13ll-.8RlS99b#Y'    c                    t         j                  dg      }t        j                  t        j
                  t        j                  |       t         j                  ddg      }t        j                  t        j
                  t        j                  |       t         j                  ddgddggt        ddgddg      }t        j                  t        j
                  t        j                  |       y )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_exceptionsz!TestConvertPandas.test_exceptions   s    LL#b&&(<(<a@LL#s$b&&(<(<a@\\Aq6Aq6*#aVcSVZ\Xb&&(@(@"Er.   c           	         t        j                  dddddfdddd	dfdd
d	ddfg      }t        j                  | j                  ddd      }t	        ||      sJ t        j
                  |      }|j                  dd
dd       t        j                  | j                  dddt        j
                               }t	        ||      sJ y )Nr   r   	   
   r   r   r   r   r      r   r   r   r   Tr   )r5   Graphfrom_pandas_edgelistr&   r   
MultiGraphadd_edger(   )r)   Gtruer:   MGtrueMGs        r,   test_from_edgelist_all_attrz-TestConvertPandas.test_from_edgelist_all_attr    s    cA45cA34cA34
 ##DGGQT:Au%%%u%Sr!4$$TXXq#tR]]_MB'''r.   c           	          t        j                  dddddfdddd	dfdd
d	ddfg      }t        j                  | j                  ddddg      }t	        ||      sJ y )Nr   r   r=   r>   r?   r   r   r   r@   r   r   r   r   r   r   r5   rA   rB   r&   r   r)   rE   r:   s      r,   test_from_edgelist_multi_attrz/TestConvertPandas.test_from_edgelist_multi_attr0   ss    cA45cA34cA34
 ##DGGQh5GHAu%%%r.   c           
          t        j                  ddddddfddddddfddddd	dfg      }t        j                  | j                  d
dg d      }t	        ||      sJ y )Nr   r   r>   )r   r   r   r   r   r@   r   r   r   r   rJ   rK   s      r,   )test_from_edgelist_multi_attr_incl_targetz;TestConvertPandas.test_from_edgelist_multi_attr_incl_target;   su    cs;<cs:;cs:;
 ##DGGQ5GHAu%%%r.   c                    ddddddfddddddfdddd	d
dfddddddfddddddfddddddfddddddfddddddfddddddfddddd
dfg
}t        j                  |      }g dg dg dg dg dd}t        j                  j	                  |      }t        j
                  |dddt         j                         }t        j
                  |ddg d!t         j                         }t        ||      sJ t        ||      sJ y )"NX1X4zAr   )CoMiStzB6   X21   X3,   Y1Y3zC"   Y2      Z1Z3zD   )
rP   rP   rP   rP   r\   r\   r\   r\   rc   rc   )
rQ   rQ   rQ   rQ   r]   r]   r]   r]   rd   rd   )
rP   rX   rZ   rQ   r\   r`   rX   r]   rc   rZ   )
rR   rV   rV   rV   r^   r^   r^   r^   re   re   )
r   rW   rY   r[   r   r_   ra   rb   r   rf   )Or   rU   rS   rT   rg   r   T)sourcetarget	edge_attrcreate_using)rU   rS   rT   )r5   MultiDiGraphr$   r%   	from_dictrB   r   )r)   edgesrE   datar&   G1G2s          r,   -test_from_edgelist_multidigraph_and_edge_attrz?TestConvertPandas.test_from_edgelist_multidigraph_and_edge_attrF   sW    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&&&r.   c                     t        j                  ddddifddddifdddd	ifg      }t        j                  | j                  d
dd      }t	        ||      sJ y )Nr   r   r   r>   r   r   r@   r   r   r   r   rJ   rK   s      r,   test_from_edgelist_one_attrz-TestConvertPandas.test_from_edgelist_one_attrj   sk    cHb>*cHa=)cHa=)
 ##DGGQX>Au%%%r.   c                     t        j                  ddddifddddifddddifg      }t        j                  | j                  ddd      }t	        ||      sJ y )Nr   r   r   r   r   r   r   rJ   rK   s      r,    test_from_edgelist_int_attr_namez2TestConvertPandas.test_from_edgelist_int_attr_nameu   sg    3C!Cq#h#7#sQH9MN
 ##DGGQQ7Au%%%r.   c           	         t        j                  t        j                  t        j                  | j
                  ddd       t        j                  t        j                  t        j                  | j
                  ddd       t        j                  ddgddgddggddg      }t        j                  t        j                  t        j                  |ddd	       t        j                  t        j                  t        j                  |ddd
       t        j                  t        j                  t        j                  |ddd
dg       y )Nr   r   misspellr   r   str   Tr   r   )r3   r4   r5   r6   rB   r&   r$   r%   )r)   	edgeframes     r,   test_from_edgelist_invalid_attrz1TestConvertPandas.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	
r.   c                     t        j                  ddi fddi fddi fg      }t        j                  | j                  dd      }t	        ||      sJ y )Nr   r   r   r   r   r   r   rJ   rK   s      r,   test_from_edgelist_no_attrz,TestConvertPandas.test_from_edgelist_no_attr   sQ    3R.3R.3R.IJ##DGGQ4Au%%%r.   c                 b   t        j                  d      }|j                  d t        |j                        D               t        j
                  |      }|D cg c]  \  }}}|
 }}}}|D cg c]  \  }}}|
 }}}}|D cg c]  \  }}}|d    }}}}t        j                  |||d      }	t        j                  |	d      }
t        |j                         |
j                               sJ t        |j	                         |
j	                               sJ t        j                  |	t         j                        }t        |j                         |j                               sJ t        |j	                         |j	                               sJ y c c}}}w c c}}}w c c}}}w )Nr>   c              3   ,   K   | ]  \  }}|||f  y wN .0uvs      r,   	<genexpr>z7TestConvertPandas.test_from_edgelist.<locals>.<genexpr>        !F11a)!F   r   )rh   ri   r   )rj   rk   )r5   cycle_graphadd_weighted_edges_fromlistrn   to_edgelistr$   r%   rB   r   nodesr   r7   rA   )r)   r:   edgelistry   rz   drh   ri   r   rn   GGGWs               r,   test_from_edgelistz$TestConvertPandas.test_from_edgelist   sJ   NN2	!!!FQWW!FF>>!$#+,,1a!,,#+,,1a!,,-566'!Q!H+66&FST$$Uh?1779bhhj1111779bhhj111!!%bhh?1779bhhj1111779bhhj111 -,6s   F3F#
F*c                 
   t        j                  d      }|j                  d t        |j                        D               t        j
                  |dd       t        j                  t         j                  t         j                  |       |j	                  d      D ]  \  }}}|j                  dd         t        j
                  |dd       t        j                  t         j                  t         j                  |       y )	Nr>   c              3   ,   K   | ]  \  }}|||f  y wr   r   r   s      r,   r   zYTestConvertPandas.test_to_edgelist_default_source_or_target_col_exists.<locals>.<genexpr>   r   r   r   rh   nameTro   ri   r5   
path_graphr   r   rn   set_edge_attributesr3   r4   r6   to_pandas_edgelistpopr)   r:   r   r   r   s        r,   4test_to_edgelist_default_source_or_target_col_existszFTestConvertPandas.test_to_edgelist_default_source_or_target_col_exists   s    MM"	!!!FQWW!FF
q!(3b&&(=(=qA wwDw) 	"GAq!EE(D!	" 	q!(3b&&(=(=qAr.   c                    t        j                  d      }|j                  d t        |j                        D               t        j
                  |dd       t        j                  t         j                  t         j                  |d       |j	                  d      D ]  \  }}}|j                  dd         t        j
                  |dd	       t        j                  t         j                  t         j                  |d	
       y )Nr>   c              3   ,   K   | ]  \  }}|||f  y wr   r   r   s      r,   r   zXTestConvertPandas.test_to_edgelist_custom_source_or_target_col_exists.<locals>.<genexpr>   r   r   r   source_col_namer   )rh   Tr   target_col_name)ri   r   r   s        r,   3test_to_edgelist_custom_source_or_target_col_existszETestConvertPandas.test_to_edgelist_custom_source_or_target_col_exists   s    MM"	!!!FQWW!FF
q!*;<b33Q?P	

 wwDw) 	+GAq!EE#T*	+ 	q!*;<b33Q?P	
r.   c                 F   t        j                  dt         j                        }|j                  d t	        |j                               D               t        j                  |dd       t        j                  t         j                  t         j                  |d       y )Nr>   r   c              3   ,   K   | ]  \  }}|||f  y wr   r   r   s      r,   r   zITestConvertPandas.test_to_edgelist_edge_key_col_exists.<locals>.<genexpr>   s     !H11a)!Hr   r   edge_key_namer   edge_key)r5   r   rC   r   r   rn   r   r3   r4   r6   r   )r)   r:   s     r,   $test_to_edgelist_edge_key_col_existsz6TestConvertPandas.test_to_edgelist_edge_key_col_exists   sg    MM"2==9	!!!HQWWY!HH
q!/:b33Q	
r.   c                     ddg}t         j                  ddgddggt        ||      }t        j                  ddg      }t        j
                  |t              }t         j                  j                  ||       y )Nr   r   r   r0   r   r   r   r   r1   )r$   r%   r8   r5   rA   to_pandas_adjacencytestingassert_frame_equal)r)   nodelistdftruer:   r&   s        r,   test_from_adjacencyz%TestConvertPandas.test_from_adjacency   so    q6VaVCx  
 HHff%&##AS1


%%b&1r.   graphc                 <    |ddg      }t        j                  |      }t        j                  ||      }t        ||      sJ ddiddiddddiid} ||      }t        j                  |t
              }t        j                  ||      }t        ||      sJ y )Nr   r   r   r   r   r   )r5   r   rB   r   r   r8   r9   )r)   r   rE   r&   r:   adjs         r,   test_roundtripz TestConvertPandas.test_roundtrip   s     vv&'""5)##BU;E1%%%m16A!};MNc
##E5$$Re<E1%%%r.   c                 \   ddddddddddddd}t         j                  |t        j                        }|g d   }t	        j
                  |t	        j                               }t	        j                  |t        j                        }t         j                  j                  ||       y )Nr   r   r   r   )r   r   r   r   )
r$   r%   r   intpr5   r9   DiGraphr   r   r   )r)   ro   r   r&   r:   s        r,   test_from_adjacency_namedz+TestConvertPandas.test_from_adjacency_named   s     qq)qq)qq)

 d"''2O$$$RbjjlC##ARWW5


%%b&1r.   rj   attr2attr3Tc                    t         j                  dddddddddddddddd	d
d
d
dd
d	d
d	dd      }t        j                  dddd	d
dfdddd
d	dfdddd
d
dfdddd
d	dfg      }t        j                  |dd|dt        j                               }t        ||      sJ t        j                  |d      }|j                  d      }g d|_        t         j                  j                  ||g d          y )NN1N2)r   r   r   r   N3F1F2F3F4r   r   )rh   ri   attr1r   r   )r   r   rh   ri   r   )rh   ri   rj   r   rk   r   )r$   r%   r5   rC   rB   r   r   sort_valuesr2   r   r   )r)   rj   r&   rE   r:   df_roundtrips         r,   test_edgekey_with_multigraphz.TestConvertPandas.test_edgekey_with_multigraph   s-   \\ $4dF $4dF#$TE qqq9 qqq9
 tTQ#;<tTQ#;<tTQ#;<tTQ#;<	
 ##
 Au%%%,,QA#//81


%%LM	
r.   c           	          t        j                  dddddfdddd	dfdd
d	ddfg      }t        j                  | j                  dddd      }t	        ||      sJ y )Nr   r   r=   r>   r?   r   r   r   r@   r   r   r   r   Tr   r   rJ   rK   s      r,   (test_edgekey_with_normal_graph_no_actionz:TestConvertPandas.test_edgekey_with_normal_graph_no_action  sp    cA45cA34cA34
 ##DGGQTHMAu%%%r.   c           
          t        j                  t        j                  j                        5  t        j
                  | j                  ddddt        j                                d d d        y # 1 sw Y   y xY w)Nrh   ri   Not_realT)rh   ri   r   rj   rk   )r3   r4   r5   	exceptionr6   rB   r&   rC   )r)   s    r,   test_nonexisting_edgekey_raisesz1TestConvertPandas.test_nonexisting_edgekey_raises$  sW    ]]2<<556 	###]]_	 	 	s   8A//A8c                    t        j                         }|j                  ddd       |j                  ddd       t        j                  |d      }t        j                  ddgddgddgd      }t        j                  j                  ||       t        j                  |dt         j                        }t        ||      sJ y )	Nr   r   )keyr   r   r   )rh   ri   r   )r   rk   )
r5   rC   rD   r   r$   r%   r   r   rB   r   )r)   rE   r&   expectedr:   s        r,   )test_multigraph_with_edgekey_no_edgeattrsz;TestConvertPandas.test_multigraph_with_edgekey_no_edgeattrs/  s    q!#q!#""559<<Aq6aVQPQF ST


%%h3##BR]]SE1%%%r.   N)__name__
__module____qualname__r-   r;   rH   rL   rN   rr   rt   rv   r|   r~   r   r   r   r   r   r3   markparametrizer5   rA   rC   r   r   r   r   r   r   r   r.   r,   r	   r	   
   s    (F( 	&	&"'H	&&
,&
2$B
"
2 [[Wrxx&?@& A&2 [[[GW+=t*DE"
 F"
H	&	&r.   r	   c                      t        j                  d      } ddg}t        j                  ddgddggt        ||      }t        j
                  j                  |t        j                  | |t                     y )Nr   r   r   r   r0   r   )r5   complete_graphr$   r%   r8   r   r   r   )r:   r   r   s      r,   &test_to_pandas_adjacency_with_nodelistr   :  sl    
!A1vH||
Q!Q8X  H JJ!!"((HC@r.   c                     t        j                         } | j                  g dd       | j                  ddd       t        j                  | ddg	      }d|d
   j                         vsJ d|d   j                         vsJ y )N))r   r   r   )r   r   g       @)r   r   r   d   r   r   )r   rh   r   )r5   rA   add_edges_fromrD   r   to_numpy)r:   r&   s     r,   %test_to_pandas_edgelist_with_nodelistr   E  s    

A-c:JJq!CJ 			qAq6	2BBxL))++++bl++----r.   c                  T   t         j                  g dg dg dg dgg dg d      } t        j                  | t        j                        }t        j                  g d      }t        |j                  |j                        sJ t        |j                  |j                        sJ y	)
zSee gh-7407)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )Qi r   r   Ri )r2   r   r   ))r   r   )r   r   )r   r   N)	r$   r%   r5   r9   r   r   r   r   rn   )r&   r:   r   s      r,   0test_from_pandas_adjacency_with_index_collisionsr   N  s    			
 '( 
 	
B 	  "**=Azz>?Hqww///qww///r.   )r3   networkxr5   networkx.utilsr   r   r   importorskipr   r$   r	   r   r   r   r   r.   r,   <module>r      sQ      A AV!V"m& m&`	.0r.   