a
    º”h»1  ã                	   @   s°   d dl Z d dlZd dlmZmZmZmZmZ d dl	m
Z
mZ d dlmZmZmZ G dd„ dƒZe j ddd	gd d
ddifd
dddifgf¡dd„ ƒZdd„ Zdd„ Zdd„ ZdS )é    N)Úfrom_dict_of_dictsÚfrom_dict_of_listsÚto_dict_of_dictsÚto_dict_of_listsÚto_networkx_graph)Úbarbell_graphÚcycle_graph)Úedges_equalÚgraphs_equalÚnodes_equalc                   @   sd   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S )ÚTestConvertc                 C   s$   t dd„ |D ƒƒt dd„ |D ƒƒkS )Nc                 s   s   | ]}t |ƒV  qd S ©N©Úsorted)Ú.0Úe© r   úI/var/www/auris/lib/python3.9/site-packages/networkx/tests/test_convert.pyÚ	<genexpr>   ó    z.TestConvert.edgelists_equal.<locals>.<genexpr>r   )ÚselfÚe1Úe2r   r   r   Úedgelists_equal   s    zTestConvert.edgelists_equalc                 C   sÂ   t tfttffD ]¬\}}tddƒ}i |_||ƒ}||ƒ}t||ƒsFJ ‚t|ƒ}t||ƒs\J ‚t 	|¡}t||ƒstJ ‚t 
d¡}t 
d¡}	i |_i |	_||g d¢d}t 	|¡}
t|
|	ƒsJ ‚qd S )Né
   é   é   ©r   é   é   ©Únodelist)r   r   r   r   r   Úgraphr
   r   ÚnxÚGraphÚ
path_graph)r   ÚdestÚsourceÚGÚdodÚGGÚGWÚGIZP4ZP3ZGdodr   r   r   Útest_simple_graphs   s&    þ




zTestConvert.test_simple_graphsc                 C   s„   G dd„ dƒ}t  tjt|¡ G dd„ dƒ}t  tjt|¡ ddi}t  tt|¡ G dd„ dƒ}t  tjt|¡ t  tjtd¡ d S )Nc                   @   s   e Zd ZdZdS ©z&TestConvert.test_exceptions.<locals>.GN)Ú__name__Ú
__module__Ú__qualname__Zadjr   r   r   r   r(   /   s   r(   c                   @   s   e Zd ZdZdS r.   )r/   r0   r1   Z	is_strictr   r   r   r   r(   5   s   Úar   c                   @   s   e Zd ZdZdS r.   )r/   r0   r1   Únextr   r   r   r   r(   ?   s   )ÚpytestÚraisesr#   ÚNetworkXErrorr   Ú	TypeError)r   r(   r   r   r   Útest_exceptions-   s    zTestConvert.test_exceptionsc                 C   sì  t tfttffD ]Ô\}}tdƒ}||ƒ}||ƒ}tt| ¡ ƒt| ¡ ƒƒsPJ ‚tt| 	¡ ƒt| 	¡ ƒƒsnJ ‚t
|ƒ}tt| ¡ ƒt| ¡ ƒƒs”J ‚tt| 	¡ ƒt| 	¡ ƒƒs²J ‚t |¡}tt| ¡ ƒt| ¡ ƒƒsÚJ ‚tt| 	¡ ƒt| 	¡ ƒƒsøJ ‚tdtjd}||ƒ}||tjd}t| ¡ ƒt| ¡ ƒks:J ‚t| 	¡ ƒt| 	¡ ƒksXJ ‚t
|tjd}t| ¡ ƒt| ¡ ƒks„J ‚t| 	¡ ƒt| 	¡ ƒks¢J ‚t |¡}t| ¡ ƒt| ¡ ƒksÊJ ‚t| 	¡ ƒt| 	¡ ƒksJ ‚qd S )Nr   ©Úcreate_using)r   r   r   r   r   r   r   Únodesr	   Úedgesr   r#   r$   ÚDiGraph)r   r&   r'   r(   r)   r*   r+   r,   r   r   r   Útest_digraphsG   s2    þ

zTestConvert.test_digraphsc           	      C   s  t  d¡}t  ¡ }| |¡ | dd„ | ¡ D ƒ¡ t|ƒ}t|t jd}tt	| 
¡ ƒt	| 
¡ ƒƒshJ ‚tt	| ¡ ƒt	| ¡ ƒƒs†J ‚t|t jd}tt	| 
¡ ƒt	| 
¡ ƒƒs²J ‚tt	| ¡ ƒt	| ¡ ƒƒsÐJ ‚t  |¡}t	| 
¡ ƒt	| 
¡ ƒksöJ ‚t	| ¡ ƒt	| ¡ ƒksJ ‚t|ƒ}t|t jd}dd„ |jddD ƒ}tt	| 
¡ ƒt	| 
¡ ƒƒs`J ‚t|t	|jddƒƒs|J ‚t|t jd}tt	| 
¡ ƒt	| 
¡ ƒƒsªJ ‚t|t	|jddƒƒsÆJ ‚t  |¡}tt	| 
¡ ƒt	| 
¡ ƒƒsðJ ‚t|t	|jddƒƒsJ ‚d S )	Nr   c                 s   s   | ]\}}|||fV  qd S r   r   ©r   ÚuÚvr   r   r   r   j   r   z)TestConvert.test_graph.<locals>.<genexpr>r9   c                 S   s   g | ]\}}}||i f‘qS r   r   ©r   r@   rA   Údr   r   r   Ú
<listcomp>|   r   z*TestConvert.test_graph.<locals>.<listcomp>T©Údata)r#   r   r$   Úadd_nodes_fromÚadd_weighted_edges_fromr<   r   r   r   r   r;   r	   r   r   r   )	r   Úgr(   r)   r*   r+   r,   ÚdolÚenoner   r   r   Ú
test_graphf   s2    


  
 zTestConvert.test_graphc                 C   s  t dƒ}t ¡ }| |¡ | dd„ | ¡ D ƒ¡ t ¡ }| |¡ | dd„ | ¡ D ƒ¡ |jdddd t ¡ }| |¡ | d	d„ | ¡ D ƒ¡ |jddd
d t|ƒ}t	|tjd}t
| ¡ | ¡ ƒsÒJ ‚t| ¡ | ¡ ƒsèJ ‚t|tjd}t
| ¡ | ¡ ƒsJ ‚t| ¡ | ¡ ƒs&J ‚t |¡}t
| ¡ | ¡ ƒsHJ ‚t| ¡ | ¡ ƒs`J ‚t|ƒ}	t|	tjd}dd„ |jddD ƒ}
t
t| ¡ ƒt| ¡ ƒƒs¬J ‚t|
t|jddƒƒsÈJ ‚t|	tjd}t
t| ¡ ƒt| ¡ ƒƒsöJ ‚t|
t|jddƒƒsJ ‚t |	¡}t
t| ¡ ƒt| ¡ ƒƒs<J ‚t|
t|jddƒƒsXJ ‚t|ƒ}t	|tjdd}t
t| ¡ ƒt| ¡ ƒƒsJ ‚tt| ¡ ƒt| ¡ ƒƒs°J ‚t|tjdd}t
t| ¡ ƒt| ¡ ƒƒsàJ ‚tt| ¡ ƒt| ¡ ƒƒs J ‚t |¡}t
t| ¡ ƒt| ¡ ƒƒs*J ‚t| ¡ ƒt| ¡ ƒksHJ ‚t	|tjdd}t
t| ¡ ƒt| ¡ ƒƒsxJ ‚t| ¡ ƒt| ¡ ƒks–J ‚t |¡}t
t| ¡ ƒt| ¡ ƒƒsÀJ ‚tt| ¡ ƒt| ¡ ƒƒsàJ ‚t |¡}t
t| ¡ ƒt| ¡ ƒƒs
J ‚tt| ¡ ƒt| ¡ ƒƒs*J ‚t|ƒ}	t|	tjd}t
t| ¡ ƒt| ¡ ƒƒs`J ‚tt| ¡ ƒt| ¡ ƒƒs€J ‚t|	tjd}t
t| ¡ ƒt| ¡ ƒƒs®J ‚tt| ¡ ƒt| ¡ ƒƒsÎJ ‚t |	¡}t
t| ¡ ƒt| ¡ ƒƒsøJ ‚tt| ¡ ƒt| ¡ ƒƒsJ ‚d S )Nr   c                 s   s   | ]\}}|||fV  qd S r   r   r?   r   r   r   r   Š   r   z>TestConvert.test_with_multiedges_self_loops.<locals>.<genexpr>c                 s   s   | ]\}}|||fV  qd S r   r   r?   r   r   r   r      r   r   r   r   ©Úweightc                 s   s   | ]\}}|||fV  qd S r   r   r?   r   r   r   r   ‘   r   éd   r9   c                 S   s   g | ]\}}}||i f‘qS r   r   rB   r   r   r   rD   ¦   r   z?TestConvert.test_with_multiedges_self_loops.<locals>.<listcomp>TrE   )r:   Zmultigraph_inputF)r   r#   r$   rG   rH   r<   Ú
MultiGraphÚadd_edger   r   r   r;   r	   r   r   r   r   )r   r(   ZXGZXGMZXGSr)   r*   r+   r,   rJ   rK   ZGEZGMr   r   r   Útest_with_multiedges_self_loops†   s|    



  
     
  
  
      
 z+TestConvert.test_with_multiedges_self_loopsc                 C   s  t  d¡}g d¢}t  |¡}tt| ¡ ƒt| ¡ ƒƒs:J ‚tt| ¡ ƒt| ¡ ƒƒsXJ ‚tt|jddƒt|jddƒƒs~J ‚ddi fddi fddi fg}t  |¡}tt| ¡ ƒt| ¡ ƒƒsÂJ ‚tt| ¡ ƒt| ¡ ƒƒsàJ ‚tt|jddƒt|jddƒƒsJ ‚d	d
„ tdƒD ƒ}t  |¡}tt| ¡ ƒt| ¡ ƒƒsDJ ‚tt| ¡ ƒt| ¡ ƒƒsdJ ‚tt|jddƒt|jddƒƒsŒJ ‚d S )Nr   )©r   r   ©r   r   )r   r   TrE   r   r   r   r   c                 s   s   | ]}||d  fV  qdS )r   Nr   )r   Únr   r   r   r   â   r   z-TestConvert.test_edgelists.<locals>.<genexpr>)	r#   r%   r$   r   r   r;   r	   r<   Úrange)r   ÚPr   r(   r   r   r   Útest_edgelistsÔ   s     

&
(
  zTestConvert.test_edgelistsc                 C   s  g d¢}g d¢}|   t t |¡¡ ¡ |¡s0J ‚|   t t |¡¡ ¡ |¡sPJ ‚|   t t |¡¡ ¡ |¡spJ ‚|   t t |¡¡ ¡ |¡sJ ‚|   t t |¡¡ ¡ |¡s°J ‚|   t t |¡¡ ¡ |¡sÐJ ‚|   t t |¡¡ ¡ |¡sðJ ‚|   t t |¡¡ ¡ |¡sJ ‚d S )N)rS   rT   )r   r   )rS   rT   ©r   r   )r   r#   r$   r=   r<   rP   ZMultiDiGraph)r   Zedges1Zedges2r   r   r   Útest_directed_to_undirectedè   s        ÿÿ z'TestConvert.test_directed_to_undirectedc                 C   s^   t  ¡ }| d¡ t|t jd}t|jƒt|jƒks8J ‚t  |¡}t|jƒt|jƒksZJ ‚d S )NÚabcr9   )r#   r$   rG   r   Úlistr;   r=   )r   r(   ÚHr   r   r   Útest_attribute_dict_integrityú   s    

z)TestConvert.test_attribute_dict_integrityc                 C   s8   t  dg¡}t j|t|ƒd}t|jdd|ƒs4J ‚d S )N)r   r   r    TrE   )r#   r$   Zto_edgelistr\   r	   r<   )r   r(   Zelistr   r   r   Útest_to_edgelist  s    zTestConvert.test_to_edgelistc                    sp   G dd„ dt ƒ‰ G ‡ fdd„dtjƒ}t ¡ }|jddd ||ƒ}t|jd t ƒsXJ ‚t|jd ˆ ƒslJ ‚d S )Nc                   @   s   e Zd ZdS )zGTestConvert.test_custom_node_attr_dict_safekeeping.<locals>.custom_dictN)r/   r0   r1   r   r   r   r   Úcustom_dict	  s   r`   c                       s   e Zd Z” ZdS )zBTestConvert.test_custom_node_attr_dict_safekeeping.<locals>.CustomN)r/   r0   r1   Znode_attr_dict_factoryr   ©r`   r   r   ÚCustom  s   rb   r   rM   )Údictr#   r$   Úadd_nodeÚ
isinstanceÚ_node)r   rb   rI   Úhr   ra   r   Ú&test_custom_node_attr_dict_safekeeping  s    z2TestConvert.test_custom_node_attr_dict_safekeepingN)r/   r0   r1   r   r-   r8   r>   rL   rR   rX   rZ   r^   r_   rh   r   r   r   r   r      s    N	r   ÚedgelistrS   rT   r   rN   g      ð?r   g       @c                 C   sF   t  ¡ }| | ¡ ddidddœddidœ}t j|dd|ksBJ ‚d S )Nr   r   rY   r   ©Ú	edge_data)r#   r$   Zadd_edges_fromr   )ri   r(   Úexpectedr   r   r   Ú)test_to_dict_of_dicts_with_edgedata_param  s    

rm   c                  C   sH   t  d¡} g d¢}ddidddœddidœ}t j| |dd|ksDJ ‚d S )Né   )r   r   r   r   r   )r   r   )r!   rk   )r#   r%   r   )r(   r!   rl   r   r   r   Ú0test_to_dict_of_dicts_with_edgedata_and_nodelist-  s    
ro   c                  C   sT   t  ¡ } | jdddd | jdddd ddiddidœ}t j| dd|ksPJ ‚d	S )
z2Multi edge data overwritten when edge_data != Noner   r   r2   )ÚkeyÚbr   rS   rj   N)r#   rP   rQ   r   )r(   rl   r   r   r   Ú.test_to_dict_of_dicts_with_edgedata_multigraph4  s
    rr   c                  C   sF   g d¢} t jtjdd t | ¡ W d   ƒ n1 s80    Y  d S )N)r   r   r   zInput is not a valid edge list)Úmatch)r4   r5   r#   r6   r   )Zinvalid_edgelistr   r   r   Ú#test_to_networkx_graph_non_edgelist>  s    rt   )r4   Znetworkxr#   Znetworkx.convertr   r   r   r   r   Znetworkx.generators.classicr   r   Znetworkx.utilsr	   r
   r   r   ÚmarkZparametrizerm   ro   rr   rt   r   r   r   r   Ú<module>   s"     üþ	
	
