o
    ]ZŽ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   úJ/var/www/auris/lib/python3.10/site-packages/networkx/tests/test_convert.pyÚ	<genexpr>   s   € 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 ]V\}}tddƒ}i |_||ƒ}||ƒ}t||ƒs#J ‚t|ƒ}t||ƒs.J ‚t 	|¡}t||ƒs:J ‚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                   @   ó   e Zd ZdZdS ©z&TestConvert.test_exceptions.<locals>.GN)Ú__name__Ú
__module__Ú__qualname__Zadjr   r   r   r   r'   /   ó    r'   c                   @   r-   r.   )r/   r0   r1   Z	is_strictr   r   r   r   r'   5   r2   Úar   c                   @   r-   r.   )r/   r0   r1   Únextr   r   r   r   r'   ?   r2   )Ú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| ¡ ƒƒs'J ‚tt| 	¡ ƒt| 	¡ ƒƒs6J ‚t
|ƒ}tt| ¡ ƒt| ¡ ƒƒsIJ ‚tt| 	¡ ƒt| 	¡ ƒƒsXJ ‚t |¡}tt| ¡ ƒt| ¡ ƒƒslJ ‚tt| 	¡ ƒt| 	¡ ƒƒs{J ‚tdtjd}||ƒ}||tjd}t| ¡ ƒt| ¡ ƒks›J ‚t| 	¡ ƒt| 	¡ ƒks©J ‚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   s4   þ

äzTestConvert.test_digraphsc           	      C   s  t  d¡}t  ¡ }| |¡ | dd„ | ¡ D ƒ¡ t|ƒ}t|t jd}tt	| 
¡ ƒt	| 
¡ ƒƒs4J ‚tt	| ¡ ƒt	| ¡ ƒƒsCJ ‚t|t jd}tt	| 
¡ ƒt	| 
¡ ƒƒsYJ ‚tt	| ¡ ƒt	| ¡ ƒƒshJ ‚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   ó    | ]
\}}|||fV  qd S r   r   ©r   ÚuÚvr   r   r   r   j   ó   € z)TestConvert.test_graph.<locals>.<genexpr>r:   c                 S   ó   g | ]
\}}}||i f‘qS r   r   ©r   rB   rC   Údr   r   r   Ú
<listcomp>|   ó    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
| ¡ | ¡ ƒsiJ ‚t| ¡ | ¡ ƒstJ ‚t|tjd}t
| ¡ | ¡ ƒs†J ‚t| ¡ | ¡ ƒs‘J ‚t |¡}t
| ¡ | ¡ ƒs¡J ‚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ƒƒs%J ‚t|ƒ}t	|tjdd}t
t| ¡ ƒt| ¡ ƒƒsAJ ‚tt| ¡ ƒt| ¡ ƒƒsQJ ‚t|tjdd}t
t| ¡ ƒt| ¡ ƒƒsiJ ‚tt| ¡ ƒt| ¡ ƒƒsyJ ‚t |¡}t
t| ¡ ƒt| ¡ ƒƒsŽJ ‚t| ¡ ƒt| ¡ ƒksJ ‚t	|tjdd}t
t| ¡ ƒt| ¡ ƒƒsµJ ‚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| ¡ ƒƒs9J ‚t|	tjd}t
t| ¡ ƒt| ¡ ƒƒsPJ ‚tt| ¡ ƒt| ¡ ƒƒs`J ‚t |	¡}t
t| ¡ ƒt| ¡ ƒƒsuJ ‚tt| ¡ ƒt| ¡ ƒƒs…J ‚d S )Nr   c                 s   r@   r   r   rA   r   r   r   r   Š   rD   z>TestConvert.test_with_multiedges_self_loops.<locals>.<genexpr>c                 s   r@   r   r   rA   r   r   r   r      rD   r   r   r   ©Úweightc                 s   r@   r   r   rA   r   r   r   r   ‘   rD   éd   r:   c                 S   rE   r   r   rF   r   r   r   rH   ¦   rI   z?TestConvert.test_with_multiedges_self_loops.<locals>.<listcomp>TrJ   )r;   Zmultigraph_inputF)r   r"   r#   rL   rM   r=   Ú
MultiGraphÚadd_edger   r   r   r<   r	   r   r   r   r   )r   r'   ZXGZXGMZXGSr(   r)   r*   r+   rO   rP   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| ¡ ƒƒs,J ‚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| ¡ ƒƒsaJ ‚tt| ¡ ƒt| ¡ ƒƒspJ ‚tt|jddƒt|jddƒƒsƒJ ‚d	d
„ tdƒD ƒ}t  |¡}tt| ¡ ƒt| ¡ ƒƒs J ‚tt| ¡ ƒt| ¡ ƒƒs¯J ‚tt|jddƒt|jddƒƒsÂJ ‚d S )Nr   )©r   r   ©r   r   )r   r   TrJ   r   r   r   r   c                 s   s    | ]	}||d  fV  qdS )r   Nr   )r   Únr   r   r   r   â   s   € 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 |¡¡ ¡ |¡sJ ‚|   t t |¡¡ ¡ |¡s(J ‚|   t t |¡¡ ¡ |¡s8J ‚|   t t |¡¡ ¡ |¡sHJ ‚|   t t |¡¡ ¡ |¡sXJ ‚|   t t |¡¡ ¡ |¡shJ ‚|   t t |¡¡ ¡ |¡sxJ ‚|   t t |¡¡ ¡ |¡sˆJ ‚d S )N)rX   rY   )r   r   )rX   rY   ©r   r   )r   r"   r#   r>   r=   rU   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sJ ‚t  |¡}t|jƒt|jƒks-J ‚d S )NÚabcr:   )r"   r#   rL   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|ƒsJ ‚d S )N)r   r   r   TrJ   )r"   r#   Zto_edgelistra   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 ƒs,J ‚t|jd ˆ ƒs6J ‚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    re   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   ©re   r   r   ÚCustom  r2   rg   r   rR   )Údictr"   r#   Úadd_nodeÚ
isinstanceÚ_node)r   rg   rN   Úhr   rf   r   Ú&test_custom_node_attr_dict_safekeeping  s   z2TestConvert.test_custom_node_attr_dict_safekeepingN)r/   r0   r1   r   r,   r9   r?   rQ   rW   r]   r_   rc   rd   rm   r   r   r   r   r      s     N	r   ÚedgelistrX   rY   r   rS   g      ð?r   g       @c                 C   sF   t  ¡ }| | ¡ ddidddœddidœ}t j|dd|ks!J ‚d S )Nr   r   r^   r   ©Ú	edge_data)r"   r#   Zadd_edges_fromr   )rn   r'   Úexpectedr   r   r   Ú)test_to_dict_of_dicts_with_edgedata_param  s   

rr   c                  C   sH   t  d¡} g d¢}ddidddœddidœ}t j| |dd|ks"J ‚d S )Né   )r   r   r   r   r   )r   r   )r    rp   )r"   r$   r   )r'   r    rq   r   r   r   Ú0test_to_dict_of_dicts_with_edgedata_and_nodelist-  s   
rt   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s(J ‚d	S )
z2Multi edge data overwritten when edge_data != Noner   r   r3   )ÚkeyÚbr   rX   ro   N)r"   rU   rV   r   )r'   rq   r   r   r   Ú.test_to_dict_of_dicts_with_edgedata_multigraph4  s
   rw   c                  C   sH   g d¢} t jtjdd t | ¡ W d   ƒ d S 1 sw   Y  d S )N)r   r   r   zInput is not a valid edge list)Úmatch)r5   r6   r"   r7   r   )Zinvalid_edgelistr   r   r   Ú#test_to_networkx_graph_non_edgelist>  s   "ÿry   )r5   Znetworkxr"   Znetworkx.convertr   r   r   r   r   Znetworkx.generators.classicr   r   Znetworkx.utilsr	   r
   r   r   ÚmarkZparametrizerr   rt   rw   ry   r   r   r   r   Ú<module>   s$      üþ
		
