
    \Mh"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dS )
    N)edges_equalgraphs_equalnodes_equalnumpypandasc                   0   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                            dej        ej        g          d             Zd Zej                            dddgdg          d             Zd Zd Zd ZdS )TestConvertPandasc                 |   t           j                            d          | _        | j                            ddd          }g d}g d}t
                              |d	d
g          }||d<   ||d<   || _        t
                              g dgg d          }t
                              ||g          | _	        d S )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         b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/tests/test_convert_pandas.pysetup_methodzTestConvertPandas.setup_method   s    9((a(00x2F33OOOO\\$6(:\;;13ll---.8R8R8RlSS99b#Y''    c                    t                               dg          }t          j        t          j        t          j        |           t                               ddg          }t          j        t          j        t          j        |           t                               ddgddggt          ddgddg          }t          j        t          j        t          j        |           d S )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Xb&(@"EEEE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        |          }|                    dd
dd           t          j        | j        dddt          j                              }t	          ||          sJ d S )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45cA334cA334
 
 #DGQT::Au%%%%%u%%Sr!444$TXq#tR]__M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 d S )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   s    cA445cA334cA334
 
 #DGQh5GH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 d S )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;   s    cs;;<cs::;cs::;
 
 #DGQ5G5G5GH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                            |          }t          j        |dddt           j                   }t          j        |ddg d!t           j                   }t          ||          sJ t          ||          sJ d S )"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   s    4AT::;4Bd;;<4Bd;;<4Bd;;<4AT::;4Bd;;<4Bd;;<4Bd;;<4AT::;4Bd;;<
 &&MMMMMMNNNNNN77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 d S )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   sx    cHb>*cHa=)cHa=)
 
 #DGQ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 d S )Nr   r   r   r   r   r   r   rJ   rK   s      r,    test_from_edgelist_int_attr_namez2TestConvertPandas.test_from_edgelist_int_attr_nameu   st    3C!Cq#h#7#sQH9MN
 
 #DGQQ7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                              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           d S )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5tw3
	
 	
 	
 	b&(?!SRSTTTLL1a&1a&1a&!9C:LNN	b5y#sD	
 	
 	
 	b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 d S )Nr   r   r   r   r   r   r   rJ   rK   s      r,   test_from_edgelist_no_attrz,TestConvertPandas.test_from_edgelist_no_attr   s\    3R.3R.3R.IJJ#DGQ44Au%%%%%%%r.   c                 X   t          j        d          }|                    d t          |j                  D                        t          j        |          }d |D             }d |D             }d |D             }t                              |||d          }t          j        |d          }t          |
                                |
                                          sJ t          |                                |                                          sJ t          j        |t           j        	          }t          |
                                |
                                          sJ t          |                                |                                          sJ d S )
Nr>   c              3   &   K   | ]\  }}|||fV  d S N .0uvs      r,   	<genexpr>z7TestConvertPandas.test_from_edgelist.<locals>.<genexpr>   ,      !F!F11a)!F!F!F!F!F!Fr.   c                     g | ]\  }}}|	S r   r   r   ry   rz   ds       r,   
<listcomp>z8TestConvertPandas.test_from_edgelist.<locals>.<listcomp>       ,,,1a!,,,r.   c                     g | ]\  }}}|	S r   r   r   s       r,   r   z8TestConvertPandas.test_from_edgelist.<locals>.<listcomp>   r   r.   c                 &    g | ]\  }}}|d          S r   r   r   s       r,   r   z8TestConvertPandas.test_from_edgelist.<locals>.<listcomp>   s"    666'!Q!H+666r.   )rh   ri   r   r   )rj   rk   )r5   cycle_graphadd_weighted_edges_fromlistrn   to_edgelistr$   r%   rB   r   nodesr   r7   rA   )	r)   r:   edgelistrh   ri   r   rn   GGGWs	            r,   test_from_edgelistz$TestConvertPandas.test_from_edgelist   si   N2	!!!F!FQW!F!F!FFFF>!$$,,8,,,,,8,,,66X666&FSSTT$Uh???17799bhhjj1111117799bhhjj11111!%bh???17799bhhjj1111117799bhhjj1111111r.   c                    t          j        d          }|                    d t          |j                  D                        t          j        |dd           t          j        t           j        t           j	        |           |                    d          D ]\  }}}|
                    dd            t          j        |dd           t          j        t           j        t           j	        |           d S )	Nr>   c              3   &   K   | ]\  }}|||fV  d S 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    M"	!!!F!FQW!F!F!FFFF
q!(3333b&(=qAAA wwDw)) 	" 	"GAq!EE(D!!!!
q!(3333b&(=qAAAAAr.   c                    t          j        d          }|                    d t          |j                  D                        t          j        |dd           t          j        t           j        t           j	        |d           |                    d          D ]\  }}}|
                    dd            t          j        |dd	           t          j        t           j        t           j	        |d	
           d S )Nr>   c              3   &   K   | ]\  }}|||fV  d S 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   M"	!!!F!FQW!F!F!FFFF
q!*;<<<<b3Q?P	
 	
 	
 	

 wwDw)) 	+ 	+GAq!EE#T****
q!*;<<<<b3Q?P	
 	
 	
 	
 	
 	
r.   c                 H   t          j        dt           j                  }|                    d t	          |                                          D                        t          j        |dd           t          j        t           j	        t           j
        |d           d S )Nr>   r   c              3   &   K   | ]\  }}|||fV  d S r   r   r   s      r,   r   zITestConvertPandas.test_to_edgelist_edge_key_col_exists.<locals>.<genexpr>   s,      !H!H11a)!H!H!H!H!H!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   s    M"2=999	!!!H!HQWWYY!H!H!HHHH
q!/::::b3Q	
 	
 	
 	
 	
 	
r.   c                    ddg}t                               ddgddggt          ||          }t          j        ddg          }t          j        |t                    }t           j                            ||           d S )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   s    q6VaVCx  
 
 Hff%&&#AS111

%%b&11111r.   graphc                 T    |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 d S )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66A!};MNNc

#E555$Re<<<E1%%%%%%%r.   c                 X   ddddddddddddd}t                               |t          j                  }|g d         }t	          j        |t	          j                              }t	          j        |t          j                  }t           j        	                    ||           d S )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2OOO$$RbjllCCC#ARW555

%%b&11111r.   rj   attr2attr3Tc                    t                               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          }|                    d          }g d|_        t           j	        
                    ||g d                    d S )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F $4dFF#$TEE qqq99 qqq99 
 
 tTQ#;#;<tTQ#;#;<tTQ#;#;<tTQ#;#;<	
 
 #
 
 
 Au%%%%%,QAAA#//88111

%%LL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 d S )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  s    cA445cA334cA334
 
 #DGQTHMMMAu%%%%%%%r.   c           
          t          j        t          j        j                  5  t          j        | j        ddddt          j                               d d d            d S # 1 swxY w Y   d S )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$  s    ]2<566 	 	##]__   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1A""A&)A&c                    t          j                    }|                    ddd           |                    ddd           t          j        |d          }t                              ddgddgddgd          }t          j                            ||           t          j        |dt           j                  }t          ||          sJ d S )	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99<<Aq6aVQPQF S STT

%%h333#BR]SS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 F F( ( ( 	& 	& 	&	& 	& 	&"' "' "'H	& 	& 	&& & &
 
 
,& & &
2 2 2$B B B
 
 
"
 
 
2 2 2 [Wrx&?@@& & A@&2 2 2 [[GW+=t*DEE"
 "
 FE"
H	& 	& 	&	 	 	& & & & &r.   r	   c                      t          j        d          } ddg}t                              ddgddggt          ||          }t          j                            |t          j        | |t                               d S )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   :  s    
!A1vH||
Q!Q8X   H J!!"(HC@@@    r.   c                  6   t          j                    } |                     g dd           |                     ddd           t          j        | ddg	          }d|d
                                         vsJ d|d                                         vsJ d S )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	2	2	2BBxL))++++++bl++--------r.   c                  <   t                               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 d	S )
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    	LLLLLLLL		
 '&&((( 
 	
 	
B 	 "*===Az>>>??Hqw/////qw///////r.   )r3   networkxr5   networkx.utilsr   r   r   importorskipr   r$   r	   r   r   r   r   r.   r,   <module>r      s         A A A A A A A A A AV!!V""m& m& m& m& m& m& m& m&`	  . . .0 0 0 0 0r.   