U
    tÊ¹já/  ã                   @   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)ÚselfÚintsÚar   r    r"   © r&   úa/var/www/html/bwave/python/venv/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||ƒs–t‚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#   ÚGtruer3   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   r5   r6   r7   r   r   r	   r8   r   r   r   r   r   r   ©r.   r9   r:   r    r   r;   ©r#   r>   r3   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   r6   )r   r   r   r   r   r8   r   r   r   r   r   r@   rA   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||ƒ�s€t‚d S )NZX1ZX4ZzAr   )ÚCoÚMiÚStZzBé6   ZX2é1   ZX3é,   ZY1ZY3ZzCé"   ZY2é   é   ZZ1ZZ3ZzDé   )ÚOr   rF   rD   rE   rN   r   T)ÚsourceÚtargetÚ	edge_attrÚcreate_usingrF   rD   rE   )r.   ZMultiDiGraphr   r   Ú	from_dictr:   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   r6   r   r   r8   r   r   r   r   r@   rA   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@   rA   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/   r:   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@   rA   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	| 
¡ | 
¡ ƒsŽt‚t| ¡ | ¡ ƒs¤t‚t j|t jd�}t	| 
¡ | 
¡ ƒsÊt‚t| ¡ | ¡ ƒsàt‚d S )Nr6   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_   rY   rZ   Údr&   r&   r'   Ú
<listcomp>ž   s     z8TestConvertPandas.test_from_edgelist.<locals>.<listcomp>c                 S   s   g | ]\}}}|‘qS r&   r&   rc   r&   r&   r'   re   Ÿ   s     c                 S   s   g | ]\}}}|d  ‘qS ©r   r&   rc   r&   r&   r'   re       s     )rO   rP   r   r   )rQ   ©rR   )r.   Zcycle_graphÚadd_weighted_edges_fromÚlistrT   Zto_edgelistr   r   r:   r   Znodesr;   r   r0   r9   )	r#   r3   ZedgelistrO   rP   r   rT   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 )
Nr6   c                 s   s   | ]\}}|||fV  qd S r]   r&   r^   r&   r&   r'   rb   ¬   s     zYTestConvertPandas.test_to_edgelist_default_source_or_target_col_exists.<locals>.<genexpr>r   rO   ©ÚnameT©rU   rP   ©r.   Ú
path_graphrh   ri   rT   Úset_edge_attributesr,   r-   r/   Úto_pandas_edgelistÚpop©r#   r3   r`   ra   rd   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 )Nr6   c                 s   s   | ]\}}|||fV  qd S r]   r&   r^   r&   r&   r'   rb   ¹   s     zXTestConvertPandas.test_to_edgelist_custom_source_or_target_col_exists.<locals>.<genexpr>r   Zsource_col_namerk   )rO   Trm   Ztarget_col_name)rP   rn   rs   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 )	Nr6   rg   c                 s   s   | ]\}}|||fV  qd S r]   r&   r^   r&   r&   r'   rb   Ê   s     zITestConvertPandas.test_to_edgelist_edge_key_col_exists.<locals>.<genexpr>r   Zedge_key_namerk   ©Úedge_key)r.   ro   r<   rh   ri   rT   rp   r,   r-   r/   rq   )r#   r3   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   r1   r.   r9   Úto_pandas_adjacencyÚtestingÚassert_frame_equal)r#   ÚnodelistÚdftruer3   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||ƒs„t‚d S )Nry   rz   rg   r   r	   r{   )r.   rq   r:   r   r;   r|   r1   r2   )r#   r‚   r>   r    r3   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	   r{   r   r   r   rg   )
r   r   r   Zintpr.   r2   ZDiGraphr|   r}   r~   )r#   rU   r€   r    r3   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¾t‚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   )rO   rP   Úattr1Úattr2Úattr3)r†   r‡   rO   rP   r†   r‡   r…   )rO   rP   rQ   rw   rR   rv   r   r   r   r   )r   r   r.   r<   r:   r   r;   rq   Zsort_valuesr+   r}   r~   )r#   r    r>   r3   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   r5   r6   r7   r   r   r	   r8   r   r   r   r   Tr   rv   r@   rA   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 )NrO   rP   ZNot_realT)rO   rP   rw   rQ   rR   )r,   r-   r.   Ú	exceptionr/   r:   r    r<   )r#   r&   r&   r'   Útest_nonexisting_edgekey_raises#  s    úz1TestConvertPandas.test_nonexisting_edgekey_raisesN)Ú__name__Ú
__module__Ú__qualname__r(   r4   r?   rB   rC   rV   rW   rX   r[   r\   rj   rt   ru   rx   r�   r,   ÚmarkZparametrizer.   r9   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{   )r.   Zcomplete_graphr   r   r1   r}   r~   r|   )r3   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	   rz   )r	   r   g       @rf   r   r   éd   r	   r   )r   rO   r   )r.   r9   Zadd_edges_fromr=   rq   Zto_numpyr;   )r3   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   

  '