
    h1              	           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      Ze j"                  j%                  ddd	gd d
ddifd
dddifgf      d        Zd Zd Zd Zy)    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                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestConvertc                 L    t        d |D              t        d |D              k(  S )Nc              3   2   K   | ]  }t        |        y wNsorted.0es     X/var/www/django_project/virt/lib/python3.12/site-packages/networkx/tests/test_convert.py	<genexpr>z.TestConvert.edgelists_equal.<locals>.<genexpr>   s     ,AfQi,   c              3   2   K   | ]  }t        |        y wr   r   r   s     r   r   z.TestConvert.edgelists_equal.<locals>.<genexpr>   s     6MQvay6Mr   r   )selfe1e2s      r   edgelists_equalzTestConvert.edgelists_equal   s#    ,,,6M"6M0MMM    c                    t         t        ft        t        ffD ]  \  }}t	        dd      }i |_         ||      } ||      }t        ||      sJ t        |      }t        ||      sJ t        j                  |      }t        ||      sJ t        j                  d      }t        j                  d      }	i |_        i |	_         ||g d      }t        j                  |      }
t        |
|	      rJ  y )N
         r         nodelist)r   r   r   r   r   graphr   r   nxGraph
path_graph)r   destsourceGdodGGGWGIP4P3Gdods              r   test_simple_graphszTestConvert.test_simple_graphs   s    1212
 	*LD& b!$AAGq'C B2&&&"3'B2&&&#B2&&& q!Bq!BBHBHrI.C88C=Db)))/	*r   c                     G d d      }t        j                  t        j                  t        |        G d d      }t        j                  t        j                  t        |       ddi}t        j                  t
        t        |        G d d      }t        j                  t        j                  t        |       t        j                  t        j                  t        d       y )Nc                       e Zd ZdZy&TestConvert.test_exceptions.<locals>.GN)__name__
__module____qualname__adj r   r   r/   r;   /   s    Cr   r/   c                       e Zd ZdZyr:   )r<   r=   r>   	is_strictr@   r   r   r/   z&TestConvert.test_exceptions.<locals>.G5   s    Ir   ar   c                       e Zd ZdZyr:   )r<   r=   r>   nextr@   r   r   r/   z&TestConvert.test_exceptions.<locals>.G?   s    Dr   )pytestraisesr*   NetworkXErrorr   	TypeError)r   r/   s     r   test_exceptionszTestConvert.test_exceptions-   s    	 	 	b&&(91=	 	 	b&&(91= !Hi!2A6	 	 	b&&(91= 	b&&(93?r   c                    t         t        ft        t        ffD ]R  \  }}t	        d      } ||      } ||      }t        t        |j                               t        |j                                     sJ t        t        |j                               t        |j                                     sJ t        |      }t        t        |j                               t        |j                                     sJ t        t        |j                               t        |j                                     sJ t        j                  |      }t        t        |j                               t        |j                                     sJ t        t        |j                               t        |j                                     sJ t	        dt        j                        } ||      } ||t        j                        }t        |j                               t        |j                               k(  sJ t        |j                               t        |j                               k(  sJ t        |t        j                        }t        |j                               t        |j                               k(  sJ t        |j                               t        |j                               k(  sJ t        j                  |      }t        |j                               t        |j                               k(  sJ t        |j                               t        |j                               k(  rSJ  y )Nr!   create_using)r   r   r   r   r	   r   r   nodesr
   edgesr   r*   r+   DiGraph)r   r-   r.   r/   r0   r1   r2   r3   s           r   test_digraphszTestConvert.test_digraphsG   sa   1212
 	;LD& BA q'CBvaggi0&2DEEEvaggi0&2DEEE"3'Bvaggi0&2DEEEvaggi0&2DEEE#Bvaggi0&2DEEEvaggi0&2DEEEBRZZ8Aq'C"**5B!'')$rxxz(::::!'')$rxxz(::::"3RZZ@B!'')$rxxz(::::!'')$rxxz(::::CB!'')$rxxz(::::!'')$rxxz(::::9	;r   c                    t        j                  d      }t        j                         }|j                  |       |j	                  d |j                         D               t        |      }t        |t         j                        }t        t        |j                               t        |j                                     sJ t        t        |j                               t        |j                                     sJ t        |t         j                        }t        t        |j                               t        |j                                     sJ t        t        |j                               t        |j                                     sJ t        j                  |      }t        |j                               t        |j                               k(  sJ t        |j                               t        |j                               k(  sJ t        |      }t        |t         j                        }|j                  d      D 	
cg c]  \  }}	}
||	i f }}	}}
t        t        |j                               t        |j                                     sJ t        |t        |j                  d                  sJ t        |t         j                        }t        t        |j                               t        |j                                     sJ t        |t        |j                  d                  sJ t        j                  |      }t        t        |j                               t        |j                                     sJ t        |t        |j                  d                  sJ y c c}
}	}w )Nr!   c              3   ,   K   | ]  \  }}|||f  y wr   r@   r   uvs      r   r   z)TestConvert.test_graph.<locals>.<genexpr>j   s     !B11a)!B   rL   Tdata)r*   r	   r+   add_nodes_fromadd_weighted_edges_fromrO   r   r   r   r   rN   r
   r   r   r   )r   gr/   r0   r1   r2   r3   dolrU   rV   denones               r   
test_graphzTestConvert.test_graphf   s   NN2HHJ		!!!B	!BB q!"((;6!''),fRXXZ.@AAA6!''),fRXXZ.@AAAs:6!''),fRXXZ.@AAA6!''),fRXXZ.@AAAXXc]aggi F288:$6666aggi F288:$6666 q!"((;-.WW$W-?@@	Aq!Q@@6!''),fRXXZ.@AAA5&t)<"=>>>s:6!''),fRXXZ.@AAA5&t)<"=>>>XXc]6!''),fRXXZ.@AAA5&t)<"=>>> As   N;c                 l   t        d      }t        j                         }|j                  |       |j	                  d |j                         D               t        j                         }|j                  |       |j	                  d |j                         D               |j                  ddd       t        j                         }|j                  |       |j	                  d |j                         D               |j                  ddd	       t        |      }t        |t        j                  
      }t        |j                         |j                               sJ t        |j                         |j                               sJ t        |t        j                  
      }t        |j                         |j                               sJ t        |j                         |j                               sJ t        j                  |      }t        |j                         |j                               sJ t        |j                         |j                               sJ t        |      }	t        |	t        j                  
      }|j                  d      D 
cg c]  \  }
}}|
|i f }}}
}t        t!        |j                               t!        |j                                     sJ t        |t!        |j                  d                  sJ t        |	t        j                  
      }t        t!        |j                               t!        |j                                     sJ t        |t!        |j                  d                  sJ t        j                  |	      }t        t!        |j                               t!        |j                                     sJ t        |t!        |j                  d                  sJ t        |      }t        |t        j                  d      }t        t!        |j                               t!        |j                                     sJ t        t!        |j                               t!        |j                                     sJ t        |t        j                  d      }t        t!        |j                               t!        |j                                     sJ t        t!        |j                               t!        |j                                     sJ t        j                  |      }t        t!        |j                               t!        |j                                     sJ t!        |j                               t!        |j                               k(  sJ t        |t        j                  d      }t        t!        |j                               t!        |j                                     sJ t!        |j                               t!        |j                               k7  sJ t        j                  |      }t        t!        |j                               t!        |j                                     sJ t        t!        |j                               t!        |j                                     sJ t        j                  |      }t        t!        |j                               t!        |j                                     sJ t        t!        |j                               t!        |j                                     sJ t        |      }	t        |	t        j                  
      }t        t!        |j                               t!        |j                                     sJ t        t!        |j                               t!        |j                                     sJ t        |	t        j                  
      }t        t!        |j                               t!        |j                                     sJ t        t!        |j                               t!        |j                                     sJ t        j                  |	      }t        t!        |j                               t!        |j                                     sJ t        t!        |j                               t!        |j                                     sJ y c c}}}
w )Nr!   c              3   ,   K   | ]  \  }}|||f  y wr   r@   rT   s      r   r   z>TestConvert.test_with_multiedges_self_loops.<locals>.<genexpr>   s     "CAAq!9"CrW   c              3   ,   K   | ]  \  }}|||f  y wr   r@   rT   s      r   r   z>TestConvert.test_with_multiedges_self_loops.<locals>.<genexpr>        #D$!QQ1I#DrW   r   r%   r&   weightc              3   ,   K   | ]  \  }}|||f  y wr   r@   rT   s      r   r   z>TestConvert.test_with_multiedges_self_loops.<locals>.<genexpr>   rd   rW   d   rL   TrX   )rM   multigraph_inputF)r	   r*   r+   rZ   r[   rO   
MultiGraphadd_edger   r   r   rN   r
   r   r   r   r   )r   r/   XGXGMXGSr0   r1   r2   r3   r]   rU   rV   r^   r_   GEGMs                   r   test_with_multiedges_self_loopsz+TestConvert.test_with_multiedges_self_loops   s9   OXXZ
!
"""C"CCmmo1###D!'')#DDQ!$hhj1###D!'')#DDQ#& s#"((;399;
333399;
333s:399;
333399;
333XXc]399;
333399;
333 s#"((;-0YYDY-ABB	Aq!QBB6#))+.rxxz0BCCC5&t)<"=>>>s:6#))+.rxxz0BCCC5&t)<"=>>>XXc]6#))+.rxxz0BCCC5&t)<"=>>> s#"--RVW6#))+.rxxz0BCCC6#))+.rxxz0BCCCsQUV6#))+.rxxz0BCCC6#))+.rxxz0BCCC]]36#))+.rxxz0BCCCciik"fRXXZ&8888"--RWX6#))+.rxxz0BCCCciik"fRXXZ&8888]]36#))+.rxxz0BCCC6#))+.rxxz0BCCC]]16"((*-vaggi/@AAA6"((*-vaggi/@AAA
 q!"--@6!''),fRXXZ.@AAA6!''),fRXXZ.@AAAs?6!''),fRXXZ.@AAA6!''),fRXXZ.@AAA]]36!''),fRXXZ.@AAA6!''),fRXXZ.@AAAY Cs   #d/c                 D   t        j                  d      }g d}t        j                  |      }t        t	        |j                               t	        |j                                     sJ t        t	        |j                               t	        |j                                     sJ t        t	        |j                  d            t	        |j                  d                  sJ ddi fddi fddi fg}t        j                  |      }t        t	        |j                               t	        |j                                     sJ t        t	        |j                               t	        |j                                     sJ t        t	        |j                  d            t	        |j                  d                  sJ d	 t        d      D        }t        j                  |      }t        t	        |j                               t	        |j                                     sJ t        t	        |j                               t	        |j                                     sJ t        t	        |j                  d            t	        |j                  d                  sJ y )
Nr#   )r   r%   r%   r&   )r&   r"   TrX   r   r%   r&   r"   c              3   *   K   | ]  }||d z   f  yw)r%   Nr@   )r   ns     r   r   z-TestConvert.test_edgelists.<locals>.<genexpr>   s     *AaQZ*s   )	r*   r,   r+   r   r   rN   r
   rO   range)r   Pr   r/   s       r   test_edgelistszTestConvert.test_edgelists   s   MM!$HHQK6!''),fQWWY.?@@@6!''),fQWWY.?@@@6!''t'"45vagg4g>P7QRRRBZ!QaBZ0HHQK6!''),fQWWY.?@@@6!''),fQWWY.?@@@6!''t'"45vagg4g>P7QRRR*q*HHQK6!''),fQWWY.?@@@6!''),fQWWY.?@@@6!''t'"45vagg4g>P7QRRRr   c                    g d}g d}| j                  t        j                  t        j                  |            j	                         |      sJ | j                  t        j                  t        j                  |            j	                         |      sJ | j                  t        j
                  t        j                  |            j	                         |      sJ | j                  t        j
                  t        j                  |            j	                         |      sJ | j                  t        j
                  t        j                  |            j	                         |      sJ | j                  t        j
                  t        j                  |            j	                         |      sJ | j                  t        j                  t        j                  |            j	                         |      sJ | j                  t        j                  t        j                  |            j	                         |      sJ y )N)rs   rt   )r&   r   )rs   rt   r   r&   )r   r*   r+   rP   rO   rj   MultiDiGraph)r   edges1edges2s      r   test_directed_to_undirectedz'TestConvert.test_directed_to_undirected   s   ))##BHHRZZ-?$@$F$F$H&QQQ##BHHRZZ-?$@$F$F$H&QQQ##BMM"**V2D$E$K$K$MvVVV##BMM"**V2D$E$K$K$MvVVV##MM"//&1288:F
 	
 
 ##MM"//&1288:F
 	
 
 ##BHHR__V-D$E$K$K$MvVVV##BHHR__V-D$E$K$K$MvVVVr   c                 b   t        j                         }|j                  d       t        |t         j                        }t	        |j
                        t	        |j
                        k(  sJ t        j                  |      }t	        |j
                        t	        |j
                        k(  sJ y )NabcrL   )r*   r+   rZ   r   listrN   rP   )r   r/   Hs      r   test_attribute_dict_integrityz)TestConvert.test_attribute_dict_integrity   st    HHJ	abhh7AGG}QWW---JJqMAGG}QWW---r   c                     t        j                  dg      }t        j                  |t        |            }t	        |j                  d      |      sJ y )N)r%   r%   r'   TrX   )r*   r+   to_edgelistr   r
   rO   )r   r/   elists      r   test_to_edgelistzTestConvert.test_to_edgelist  sA    HHfXq4731777-u555r   c                 ,    G d dt                G fddt        j                        }t        j                         }|j                  dd        ||      }t	        |j
                  d   t               sJ t	        |j
                  d         sJ y )Nc                       e Zd Zy)GTestConvert.test_custom_node_attr_dict_safekeeping.<locals>.custom_dictN)r<   r=   r>   r@   r   r   custom_dictr   	  s    r   r   c                       e Zd ZW  Zy)BTestConvert.test_custom_node_attr_dict_safekeeping.<locals>.CustomN)r<   r=   r>   node_attr_dict_factory)r   s   r   Customr     s	    %0"r   r   r%   re   )dictr*   r+   add_node
isinstance_node)r   r   r\   hr   s       @r   &test_custom_node_attr_dict_safekeepingz2TestConvert.test_custom_node_attr_dict_safekeeping  su    	$ 		1RXX 	1 HHJ	

1Q
1I!''!*d+++!''!*k222r   N)r<   r=   r>   r   r7   rJ   rQ   r`   rq   ry   r   r   r   r   r@   r   r   r   r      sA    N*4@4;>?@LB\S(W$.6
3r   r   edgelistrs   rt   r%   rf   g      ?r&   g       @c                     t        j                         }|j                  |        ddidddddid}t        j                  |d      |k(  sJ y )Nr%   r!   r{   r$   	edge_data)r*   r+   add_edges_fromr   )r   r/   expecteds      r   )test_to_dict_of_dicts_with_edgedata_paramr     sR     	
AX r72"~1b':HqB/8;;;r   c                      t        j                  d      } g d}ddidddddid}t        j                  | |d      |k(  sJ y )N   )r&   r"   r#   r"   r!   )r&   r#   )r(   r   )r*   r,   r   )r/   r(   r   s      r   0test_to_dict_of_dicts_with_edgedata_and_nodelistr   -  sJ    
aAHr72"~1b':Hq8rBhNNNr   c                      t        j                         } | j                  ddd       | j                  ddd       ddiddid}t        j                  | d      |k(  sJ y	)
z2Multi edge data overwritten when edge_data != Noner   r%   rC   )keybr!   rs   r   N)r*   rj   rk   r   )r/   r   s     r   .test_to_dict_of_dicts_with_edgedata_multigraphr   4  s^    
AJJq!JJJq!Jr72w'HqB/8;;;r   c                      g d} t        j                  t        j                  d      5  t        j                  |        d d d        y # 1 sw Y   y xY w)N)r%   r&   r"   zInput is not a valid edge list)match)rF   rG   r*   rH   r   )invalid_edgelists    r   #test_to_networkx_graph_non_edgelistr   >  sA     	r''/O	P /
-./ / /s   A		A)rF   networkxr*   networkx.convertr   r   r   r   r   networkx.generators.classicr   r	   networkx.utilsr
   r   r   r   markparametrizer   r   r   r   r@   r   r   <module>r      s       C A AE3 E3X  

Q3	 1a(C"9:	<<O</r   