B
    `Q*                 @   sZ   d dl Z d dlZd dlmZ d dlmZ d dlmZ e dZe dZ	G dd dZ
dS )	    N)assert_nodes_equal)assert_edges_equal)assert_graphs_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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}||| _	d S )N   )seed      )      )sizeABCDEweightcost)columnsr   b      )
nprandomZRandomStaterngrandintpd	DataFramedfappendmdf)selfintsar   r   r!    r%   Q/home/dcms/DCMS/lib/python3.7/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|| t |}|jdd
ddd t | jdddt  }t|| d S )Nr   r   	   
   )r   r   r   r   r	      r   r   r   r   Tr   )r,   Graphfrom_pandas_edgelistr   r   
MultiGraphZadd_edger!   )r"   Gtruer1   ZMGtrueZMGr%   r%   r&   test_from_edgelist_all_attr!   s    

z-TestConvertPandas.test_from_edgelist_all_attrc          	   C   sX   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|| d S )Nr   r   r3   r4   )r   r   r   r   r	   r5   r   r   r   r   r   r   )r,   r6   r7   r   r   )r"   r9   r1   r%   r%   r&   test_from_edgelist_multi_attr1   s    z/TestConvertPandas.test_from_edgelist_multi_attrc          
   C   s`   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|| d S )Nr   r   r4   )r   r   r   r   r   r5   r   r   r   r   r   )r,   r6   r7   r   r   )r"   r9   r1   r%   r%   r&   )test_from_edgelist_multi_attr_incl_target<   s    z;TestConvertPandas.test_from_edgelist_multi_attr_incl_targetc             C   sx  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|| t|| 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   r?   r=   r>   rG   r   T)sourcetarget	edge_attrcreate_usingr?   r=   r>   )r,   ZMultiDiGraphr   r   	from_dictr7   r   )r"   edgesr9   datar   ZG1ZG2r%   r%   r&   -test_from_edgelist_multidigraph_and_edge_attrG   s6    


z?TestConvertPandas.test_from_edgelist_multidigraph_and_edge_attrc             C   sN   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|| d S )Nr   r   r   r4   r   r   r5   r   r   r   r   )r,   r6   r7   r   r   )r"   r9   r1   r%   r%   r&   test_from_edgelist_one_attrk   s    z-TestConvertPandas.test_from_edgelist_one_attrc             C   sN   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|| d S )Nr   r   r   r   r   r   r   )r,   r6   r7   r   r   )r"   r9   r1   r%   r%   r&    test_from_edgelist_int_attr_namev   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t)r   Tr   r   )r*   r+   r,   r-   r7   r   r   r   )r"   Z	edgeframer%   r%   r&   test_from_edgelist_invalid_attr~   s    $z1TestConvertPandas.test_from_edgelist_invalid_attrc             C   s@   t ddi fddi fddi fg}t | jdd}t|| d S )Nr   r   r   r   r   r   r   )r,   r6   r7   r   r   )r"   r9   r1   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	|
 |
  t| |  t j|t jd}t	|
 |
  t| |  d S )Nr4   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%   )rV   rR   rS   dr%   r%   r&   
<listcomp>   s    z8TestConvertPandas.test_from_edgelist.<locals>.<listcomp>c             S   s   g | ]\}}}|qS r%   r%   )rV   rR   rS   rZ   r%   r%   r&   r[      s    c             S   s   g | ]\}}}|d  qS )r   r%   )rV   rR   rS   rZ   r%   r%   r&   r[      s    )rH   rI   r   r   )rJ   )rK   )r,   Zcycle_graphadd_weighted_edges_fromlistrM   Zto_edgelistr   r   r7   r   Znodesr   r.   r6   )	r"   r1   ZedgelistrH   rI   r   rM   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	| x&|jddD ]\}}}|
dd  qTW t j|dd	d tt jt j	| d S )
Nr4   c             s   s   | ]\}}|||fV  qd S )Nr%   )rV   rW   rX   r%   r%   r&   rY      s    zYTestConvertPandas.test_to_edgelist_default_source_or_target_col_exists.<locals>.<genexpr>r   rH   )nameT)rN   rI   )r,   
path_graphr\   r]   rM   set_edge_attributesr*   r+   r-   to_pandas_edgelistpop)r"   r1   rW   rX   rZ   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 x&|jdd	D ]\}}}|
dd  qXW t j|dd
d tjt jt j	|d
d d S )Nr4   c             s   s   | ]\}}|||fV  qd S )Nr%   )rV   rW   rX   r%   r%   r&   rY      s    zXTestConvertPandas.test_to_edgelist_custom_source_or_target_col_exists.<locals>.<genexpr>r   Zsource_col_name)r_   )rH   T)rN   Ztarget_col_name)rI   )r,   r`   r\   r]   rM   ra   r*   r+   r-   rb   rc   )r"   r1   rW   rX   rZ   r%   r%   r&   3test_to_edgelist_custom_source_or_target_col_exists   s    
zETestConvertPandas.test_to_edgelist_custom_source_or_target_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(   )r   r   r/   r,   r6   to_pandas_adjacencytestingassert_frame_equal)r"   Znodelistdftruer1   r   r%   r%   r&   test_from_adjacency   s    z%TestConvertPandas.test_from_adjacencyc             C   s|   t ddg}t |}t |}t|| ddiddiddddiid}t |}t j|td}t |}t|| d S )N)r	   r	   )r	   r   r   r	   )r(   )r,   r6   rb   r7   r   rf   r/   r0   )r"   r9   r   r1   Zadjr%   r%   r&   test_roundtrip   s    


 

z TestConvertPandas.test_roundtripc             C   sp   ddddddddddddd}t |}|dddg }tj|t d}tj|tjd}t j	|| d S )	Nr   )r   r   r   r	   r   r   r   )rK   )r(   )
r   r   r,   r0   ZDiGraphrf   r   Zintprg   rh   )r"   rN   ri   r   r1   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
}tddddddifdd	ddddifddddddifg}tj|ddddgdt d}t|| d S )NZF1ZF2ZF3)r   r   r   r	   r   ZN1ZN2ZN3)attr1attr2attr3rH   rI   )rn   ro   rH   rI   rn   ro   rm   )rH   rI   rJ   edge_keyrK   )r   r   r,   r6   r7   r8   r   )r"   r   r9   r1   r%   r%   r&   test_edgekey_with_multigraph   s$    



z.TestConvertPandas.test_edgekey_with_multigraphc          	   C   sX   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|| d S )Nr   r   r3   r4   )r   r   r   r   r	   r5   r   r   r   r   Tr   )rp   )r,   r6   r7   r   r   )r"   r9   r1   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 d Q R X d S )NrH   rI   ZNot_realT)rH   rI   rp   rJ   rK   )r*   r+   r,   	exceptionr-   r7   r   r8   )r"   r%   r%   r&   test_nonexisting_edgekey_raises  s    z1TestConvertPandas.test_nonexisting_edgekey_raisesN)__name__
__module____qualname__r'   r2   r:   r;   r<   rO   rP   rQ   rT   rU   r^   rd   re   rj   rk   rl   rq   rr   rt   r%   r%   r%   r&   r      s&   $	r   )r*   Znetworkxr,   Znetworkx.testingr   r   r   Zimportorskipr   r   r   r%   r%   r%   r&   <module>   s   

