U
    9%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numpyZ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}ddd	g}d
ddg}tj|ddgd}||d< ||d< || _tjdddd
ggddddgd}t||g| _	d S )N   )seed      )      )sizeABCDEweightcostcolumnsr   b      )
nprandomZRandomStaterngrandintpd	DataFramedfconcatmdf)selfZintsar   r    r"    r%   a/var/www/html/Darija-Ai-API/env/lib/python3.8/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||sTtt |}|jdd
ddd t | jdddt  }t||std S )Nr   r   	   
   r   r   r   r   r	      r   r   r   r   Tr   )	r-   Graphfrom_pandas_edgelistr    r   AssertionError
MultiGraphadd_edger"   )r#   Gtruer2   ZMGtrueZ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||sXtd S )Nr   r   r4   r5   r6   r   r   r	   r7   r   r   r   r   r   r   r-   r8   r9   r    r   r:   r#   r=   r2   r%   r%   r&   test_from_edgelist_multi_attr0   s    z/TestConvertPandas.test_from_edgelist_multi_attrc              
   C   sd   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d
ddg}t||s`td S )Nr   r   r5   )r   r   r   r   r   r7   r   r   r   r   r   r?   r@   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 |}ddddddddddg
ddddddddddg
ddd
ddddddd
g
ddddddddddg
ddd	dddddddg
d}tj|}t j|dddt jd}t j|dddddgt jd}t||sptt||std S )NZX1ZX4ZzAr   )CoMiStZzB6   ZX21   ZX3,   ZY1ZY3ZzC"   ZY2      ZZ1ZZ3ZzD   )Or   rE   rC   rD   rM   r   T)sourcetarget	edge_attrcreate_usingrE   rC   rD   )r-   ZMultiDiGraphr   r   	from_dictr9   r   r:   )r#   edgesr=   datar    ZG1ZG2r%   r%   r&   -test_from_edgelist_multidigraph_and_edge_attrF   sF    
    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||sNtd S )Nr   r   r   r5   r   r   r7   r   r   r   r   r?   r@   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||sNtd S )Nr   r   r   r   r   r   r   r?   r@   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   Zmisspellr	   r   str   Tr   r   )r+   r,   r-   r.   r9   r    r   r   )r#   Z	edgeframer%   r%   r&   test_from_edgelist_invalid_attr}   sD         $          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@td S )Nr   r   r   r   r   r   r   r?   r@   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	|
 |
 stt| | stt j|t jd}t	|
 |
 stt| | std S )Nr5   c                 s   s   | ]\}}|||fV  qd S Nr%   .0uvr%   r%   r&   	<genexpr>   s     z7TestConvertPandas.test_from_edgelist.<locals>.<genexpr>c                 S   s   g | ]\}}}|qS r%   r%   r^   rX   rY   dr%   r%   r&   
<listcomp>   s     z8TestConvertPandas.test_from_edgelist.<locals>.<listcomp>c                 S   s   g | ]\}}}|qS r%   r%   rb   r%   r%   r&   rd      s     c                 S   s   g | ]\}}}|d  qS r   r%   rb   r%   r%   r&   rd      s     )rN   rO   r   r   )rP   rQ   )r-   Zcycle_graphadd_weighted_edges_fromlistrS   Zto_edgelistr   r   r9   r   Znodesr:   r   r/   r8   )	r#   r2   ZedgelistrN   rO   r   rS   ZGGZ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  qRt j|dd	d tt jt j	| d S )
Nr5   c                 s   s   | ]\}}|||fV  qd S r\   r%   r]   r%   r%   r&   ra      s     zYTestConvertPandas.test_to_edgelist_default_source_or_target_col_exists.<locals>.<genexpr>r   rN   nameTrT   rO   r-   
path_graphrg   rh   rS   set_edge_attributesr+   r,   r.   to_pandas_edgelistpopr#   r2   r_   r`   rc   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  qVt j|dd
d tjt jt j	|d
d d S )Nr5   c                 s   s   | ]\}}|||fV  qd S r\   r%   r]   r%   r%   r&   ra      s     zXTestConvertPandas.test_to_edgelist_custom_source_or_target_col_exists.<locals>.<genexpr>r   Zsource_col_namerj   )rN   Trl   Ztarget_col_name)rO   rm   rr   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 )	Nr5   rf   c                 s   s   | ]\}}|||fV  qd S r\   r%   r]   r%   r%   r&   ra      s     zITestConvertPandas.test_to_edgelist_edge_key_col_exists.<locals>.<genexpr>r   Zedge_key_namerj   edge_key)r-   rn   r;   rg   rh   rS   ro   r+   r,   r.   rp   )r#   r2   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   r0   r-   r8   to_pandas_adjacencytestingassert_frame_equal)r#   nodelistdftruer2   r    r%   r%   r&   test_from_adjacency   s       z%TestConvertPandas.test_from_adjacencygraphc                 C   s   |ddg}t |}t j||d}t||s2tddiddiddddiid}||}t j|td}t j||d}t||std S )Nrx   ry   rf   r   r	   rz   )r-   rp   r9   r   r:   r{   r0   r1   )r#   r   r=   r    r2   Zadjr%   r%   r&   test_roundtrip   s    
 z TestConvertPandas.test_roundtripc                 C   sv   ddddddddddddd}t j|tjd}|dddg }tj|t d}tj|tjd}t j	|| d S )	Nr   )r   r   r   r	   rz   r   r   r   rf   )
r   r   r   Zintpr-   r1   ZDiGraphr{   r|   r}   )r#   rT   r   r    r2   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||sttj|dd}|d}ddddg|_	t j
||dddddg  d S )NZN1ZN2)r   r   r   r   ZN3ZF1ZF2ZF3ZF4r	   r   )rN   rO   attr1attr2attr3)r   r   rN   rO   r   r   r   )rN   rO   rP   rv   rQ   ru   r   r   r   r   )r   r   r-   r;   r9   r   r:   rp   Zsort_valuesr*   r|   r}   )r#   r    r=   r2   Z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||sXtd S )Nr   r   r4   r5   r6   r   r   r	   r7   r   r   r   r   Tr   ru   r?   r@   r%   r%   r&   (test_edgekey_with_normal_graph_no_action  s    z:TestConvertPandas.test_edgekey_with_normal_graph_no_actionc              	   C   s:   t tjj" tj| jddddt d W 5 Q R X d S )NrN   rO   ZNot_realT)rN   rO   rv   rP   rQ   )r+   r,   r-   	exceptionr.   r9   r    r;   )r#   r%   r%   r&   test_nonexisting_edgekey_raises#  s    z1TestConvertPandas.test_nonexisting_edgekey_raisesN)__name__
__module____qualname__r'   r3   r>   rA   rB   rU   rV   rW   rZ   r[   ri   rs   rt   rw   r   r+   markZparametrizer-   r8   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(   rz   )r-   Zcomplete_graphr   r   r0   r|   r}   r{   )r2   r~   expectedr%   r%   r&   &test_to_pandas_adjacency_with_nodelist/  s    
    r   c                  C   sj   t  } | jdddgdd | jdddd t j| d	d
gd}d|d  ksRtd|d  ksftd S )N)r   r	   ry   )r	   r   g       @re   r   r   d   r	   r   )r~   rN   r   )r-   r8   Zadd_edges_fromr<   rp   Zto_numpyr:   )r2   r    r%   r%   r&   %test_to_pandas_edgelist_with_nodelist:  s    r   )r+   Znetworkxr-   Znetworkx.utilsr   r   r   Zimportorskipr   r   r   r   r   r%   r%   r%   r&   <module>   s   

  '