o
    ˷e/                     @   sZ   d dl Z d dlZd dlmZmZmZ e dZe dZ	G dd dZ
dd Zd	d
 ZdS )    N)edges_equalgraphs_equalnodes_equalnumpypandasc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zejdejejgd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*S )+TestConvertPandasc                 C   s   t jjdd| _| jjdddd}g d}g d}tj|d	d
gd}||d< ||d< || _tjg dgg d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%    r)   Y/var/www/ideatree/venv/lib/python3.10/site-packages/networkx/tests/test_convert_pandas.pysetup_method   s   zTestConvertPandas.setup_methodc                 C   sz   t dg}ttjtj| t ddg}ttjtj| t jddgddggtddgddgd}t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#   r)   r)   r*   test_exceptions   s   &z!TestConvertPandas.test_exceptionsc              	   C   s   t dddddfdddd	dfdd
d	ddfg}t | jddd}t||s*J t |}|jdd
ddd t | jdddt  }t||sKJ d S )Nr   r   	   
   r   r   r   r   r
      r   r   r   r   Tr   )r1   Graphfrom_pandas_edgelistr#   r   
MultiGraphadd_edger%   )r&   Gtruer6   MGtrueMGr)   r)   r*   test_from_edgelist_all_attr    s   
z-TestConvertPandas.test_from_edgelist_all_attrc              	   C   s\   t dddddfdddd	dfdd
d	ddfg}t | jddddg}t||s,J d S )Nr   r   r8   r9   r:   r   r   r
   r;   r   r   r   r   r   r   r1   r<   r=   r#   r   r&   r@   r6   r)   r)   r*   test_from_edgelist_multi_attr0      z/TestConvertPandas.test_from_edgelist_multi_attrc              
   C   sb   t 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g d}t||s/J d S )Nr   r   r9   )r   r   r   r   r   r;   r   r   r   r   rD   rE   r)   r)   r*   )test_from_edgelist_multi_attr_incl_target;   s   z;TestConvertPandas.test_from_edgelist_multi_attr_incl_targetc                 C   s.  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 |}g dg dg dg dg dd}tj|}t j|dddt jd }t j|ddg d!t jd }t||sJ t||sJ d S )"NX1X4zAr   )CoMiStzB6   X21   X3,   Y1Y3zC"   Y2      Z1Z3zD   )
rI   rI   rI   rI   rU   rU   rU   rU   r\   r\   )
rJ   rJ   rJ   rJ   rV   rV   rV   rV   r]   r]   )
rI   rQ   rS   rJ   rU   rY   rQ   rV   r\   rS   )
rK   rO   rO   rO   rW   rW   rW   rW   r^   r^   )
r   rP   rR   rT   r   rX   rZ   r[   r   r_   )Or   rN   rL   rM   r`   r   T)sourcetarget	edge_attrcreate_using)rN   rL   rM   )r1   MultiDiGraphr!   r"   	from_dictr=   r   )r&   edgesr@   datar#   G1G2r)   r)   r*   -test_from_edgelist_multidigraph_and_edge_attrF   s>   
z?TestConvertPandas.test_from_edgelist_multidigraph_and_edge_attrc                 C   sR   t ddddifddddifdddd	ifg}t | jd
dd}t||s'J d S )Nr   r   r   r9   r   r   r;   r   r   r   r   rD   rE   r)   r)   r*   test_from_edgelist_one_attrj   s   z-TestConvertPandas.test_from_edgelist_one_attrc                 C   sR   t ddddifddddifddddifg}t | jddd}t||s'J d S )Nr   r   r   r   r   r   r   rD   rE   r)   r)   r*    test_from_edgelist_int_attr_nameu   s
   &z2TestConvertPandas.test_from_edgelist_int_attr_namec              	   C   s   t tjtj| jddd t tjtj| jddd tjddgddgddggddgd}t tjtj|ddd	 t tjtj|ddd
 t tjtj|ddd
dg d S )Nr   r   misspellr
   r   str   Tr   r   )r/   r0   r1   r2   r=   r#   r!   r"   )r&   	edgeframer)   r)   r*   test_from_edgelist_invalid_attr}   s&   $z1TestConvertPandas.test_from_edgelist_invalid_attrc                 C   sD   t ddi fddi fddi fg}t | jdd}t||s J d S )Nr   r   r   r   r   r   r   rD   rE   r)   r)   r*   test_from_edgelist_no_attr   s   "z,TestConvertPandas.test_from_edgelist_no_attrc           	      C   s   t d}|dd t|jD  t |}dd |D }dd |D }dd |D }t|||d}t j|d	d
}t	|
 |
 sGJ t| | sRJ t j|t jd}t	|
 |
 seJ t| | spJ d S )Nr9   c                 s       | ]
\}}|||fV  qd S Nr)   .0uvr)   r)   r*   	<genexpr>       z7TestConvertPandas.test_from_edgelist.<locals>.<genexpr>c                 S   s   g | ]\}}}|qS r)   r)   rw   ro   rp   dr)   r)   r*   
<listcomp>       z8TestConvertPandas.test_from_edgelist.<locals>.<listcomp>c                 S   s   g | ]\}}}|qS r)   r)   r|   r)   r)   r*   r~      r   c                 S   s   g | ]	\}}}|d  qS r   r)   r|   r)   r)   r*   r~      s    )ra   rb   r   r   )rc   rd   )r1   cycle_graphadd_weighted_edges_fromlistrg   to_edgelistr!   r"   r=   r   nodesr   r3   r<   )	r&   r6   edgelistra   rb   r   rg   GGGWr)   r)   r*   test_from_edgelist   s   

z$TestConvertPandas.test_from_edgelistc                 C   s   t d}|dd t|jD  t j|ddd tt jt j	| |jddD ]\}}}|
dd  q)t j|dd	d tt jt j	| d S )
Nr9   c                 s   rt   ru   r)   rv   r)   r)   r*   rz      r{   zYTestConvertPandas.test_to_edgelist_default_source_or_target_col_exists.<locals>.<genexpr>r   ra   nameTrh   rb   r1   
path_graphr   r   rg   set_edge_attributesr/   r0   r2   to_pandas_edgelistpopr&   r6   rx   ry   r}   r)   r)   r*   4test_to_edgelist_default_source_or_target_col_exists   s   
zFTestConvertPandas.test_to_edgelist_default_source_or_target_col_existsc                 C   s   t d}|dd t|jD  t j|ddd tjt jt j	|dd |jdd	D ]\}}}|
dd  q+t j|dd
d tjt jt j	|d
d d S )Nr9   c                 s   rt   ru   r)   rv   r)   r)   r*   rz      r{   zXTestConvertPandas.test_to_edgelist_custom_source_or_target_col_exists.<locals>.<genexpr>r   source_col_namer   )ra   Tr   target_col_name)rb   r   r   r)   r)   r*   3test_to_edgelist_custom_source_or_target_col_exists   s   

zETestConvertPandas.test_to_edgelist_custom_source_or_target_col_existsc                 C   sV   t jdt jd}|dd t| D  t j|ddd tjt j	t j
|dd d S )	Nr9   r   c                 s   rt   ru   r)   rv   r)   r)   r*   rz      r{   zITestConvertPandas.test_to_edgelist_edge_key_col_exists.<locals>.<genexpr>r   edge_key_namer   edge_key)r1   r   r>   r   r   rg   r   r/   r0   r2   r   )r&   r6   r)   r)   r*   $test_to_edgelist_edge_key_col_exists   s   
z6TestConvertPandas.test_to_edgelist_edge_key_col_existsc                 C   sT   ddg}t jddgddggt||d}tddg}tj|td}t j|| d S )Nr
   r   r   r,   r
   r
   r
   r   r-   )r!   r"   r4   r1   r<   to_pandas_adjacencytestingassert_frame_equal)r&   nodelistdftruer6   r#   r)   r)   r*   test_from_adjacency   s   z%TestConvertPandas.test_from_adjacencygraphc                 C   s   |ddg}t |}t j||d}t||sJ ddiddiddddiid}||}t j|td}t j||d}t||sBJ d S )Nr   r   r   r   r
   r   )r1   r   r=   r   r   r4   r5   )r&   r   r@   r#   r6   adjr)   r)   r*   test_roundtrip   s   
 z TestConvertPandas.test_roundtripc                 C   st   ddddddddddddd}t j|tjd}|g d }tj|t d}tj|tjd}t j	|| d S )Nr   r   r
   r   )r   r   r   r   )
r!   r"   r   intpr1   r5   DiGraphr   r   r   )r&   rh   r   r#   r6   r)   r)   r*   test_from_adjacency_named   s   


z+TestConvertPandas.test_from_adjacency_namedc                 C   s   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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dgdt d}t||s_J tj|dd}|d}g d|_t j	
||g d  d S )NN1N2)r   r   r   r   N3F1F2F3F4r
   r   )ra   rb   attr1attr2attr3)r   r   ra   rb   r   r   r   )ra   rb   rc   r   rd   r   )r!   r"   r1   r>   r=   r   r   sort_valuesr.   r   r   )r&   r#   r@   r6   df_roundtripr)   r)   r*   test_edgekey_with_multigraph   s<   		

z.TestConvertPandas.test_edgekey_with_multigraphc              	   C   s\   t 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d}t||s,J d S )Nr   r   r8   r9   r:   r   r   r
   r;   r   r   r   r   Tr   r   rD   rE   r)   r)   r*   (test_edgekey_with_normal_graph_no_action  rG   z:TestConvertPandas.test_edgekey_with_normal_graph_no_actionc              	   C   sP   t tjj tj| jddddt d W d    d S 1 s!w   Y  d S )Nra   rb   Not_realT)ra   rb   r   rc   rd   )r/   r0   r1   	exceptionr2   r=   r#   r>   )r&   r)   r)   r*   test_nonexisting_edgekey_raises%  s   "z1TestConvertPandas.test_nonexisting_edgekey_raisesN)__name__
__module____qualname__r+   r7   rC   rF   rH   rk   rl   rm   rr   rs   r   r   r   r   r   r/   markparametrizer1   r<   r>   r   r   r   r   r   r)   r)   r)   r*   r   
   s,    $	
$r   c                  C   sN   t d} ddg}tjddgddggt||d}tj|t j| |td d S )Nr   r
   r   r   r,   r   )r1   complete_graphr!   r"   r4   r   r   r   )r6   r   expectedr)   r)   r*   &test_to_pandas_adjacency_with_nodelist1  s   
r   c                  C   sh   t  } | jg ddd | jdddd t j| ddgd	}d|d
  vs(J d|d  vs2J d S )N))r   r
   r   )r
   r   g       @r   r   r   d   r
   r   )r   ra   r   )r1   r<   add_edges_fromr?   r   to_numpy)r6   r#   r)   r)   r*   %test_to_pandas_edgelist_with_nodelist<  s   r   )r/   networkxr1   networkx.utilsr   r   r   importorskipr   r!   r   r   r   r)   r)   r)   r*   <module>   s    

  )