
    h1              	           S SK r S SKrS SKJrJrJrJrJr  S SK	J
r
Jr  S SKJrJrJr   " S S5      r\ R"                  R%                  SSS	/S S
SS04S
SSS04/45      S 5       rS rS rS rg)    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                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestConvert   c                 L    [        S U 5       5      [        S U 5       5      :H  $ )Nc              3   8   #    U  H  n[        U5      v   M     g 7fNsorted.0es     M/var/www/html/env/lib/python3.13/site-packages/networkx/tests/test_convert.py	<genexpr>.TestConvert.edgelists_equal.<locals>.<genexpr>   s     ,AfQii   c              3   8   #    U  H  n[        U5      v   M     g 7fr   r   r   s     r   r   r      s     6M"Qvayy"r   r   )selfe1e2s      r   edgelists_equalTestConvert.edgelists_equal   s#    ,,,6M"6M0MMM    c                    [         [        4[        [        44 H  u  p[	        SS5      n0 Ul        U" U5      nU" U5      n[        X55      (       d   e[        U5      n[        X65      (       d   e[        R                  " U5      n[        X75      (       d   e[        R                  " S5      n[        R                  " S5      n	0 Ul        0 U	l        U" U/ SQS9n[        R                  " U5      n
[        X5      (       a  M   e   g )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_graphsTestConvert.test_simple_graphs   s    1212
LD b!$AAGq'C B&&&&"3'B&&&&#B&&&& q!Bq!BBHBHrI.C88C=D))))/
r"   c                     " S S5      n[         R                  " [        R                  [        U5         " S S5      n[         R                  " [        R                  [        U5        SS0n[         R                  " [
        [        U5         " S S5      n[         R                  " [        R                  [        U5        [         R                  " [        R                  [        S5        g )Nc                       \ rS rSrSrSrg)&TestConvert.test_exceptions.<locals>.G/   N )__name__
__module____qualname____firstlineno__adj__static_attributes__r@   r"   r   r2   r>   /   s    Cr"   r2   c                       \ rS rSrSrSrg)r>   5   Nr@   )rA   rB   rC   rD   	is_strictrF   r@   r"   r   r2   r>   5   s    Ir"   ar   c                       \ rS rSrSrSrg)r>   ?   Nr@   )rA   rB   rC   rD   nextrF   r@   r"   r   r2   r>   ?   s    Dr"   )pytestraisesr-   NetworkXErrorr   	TypeError)r   r2   s     r   test_exceptionsTestConvert.test_exceptions-   s    	 	 	b&&(91=	 	 	b&&(91= !Hi!2A6	 	 	b&&(91= 	b&&(93?r"   c                    [         [        4[        [        44 GHo  u  p[	        S5      nU" U5      nU" U5      n[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        U5      n[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        R                  " U5      n[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[	        S[        R                  S9nU" U5      nU" U[        R                  S9n[        UR                  5       5      [        UR                  5       5      :X  d   e[        UR                  5       5      [        UR                  5       5      :X  d   e[        U[        R                  S9n[        UR                  5       5      [        UR                  5       5      :X  d   e[        UR                  5       5      [        UR                  5       5      :X  d   e[        R                  " U5      n[        UR                  5       5      [        UR                  5       5      :X  d   e[        UR                  5       5      [        UR                  5       5      :X  a  GMp   e   g )Nr$   create_using)r   r   r   r   r	   r   r   nodesr
   edgesr   r-   r.   DiGraph)r   r0   r1   r2   r3   r4   r5   r6   s           r   test_digraphsTestConvert.test_digraphsG   sl   1212
LD BA q'CBvaggi0&2DEEEEvaggi0&2DEEEE"3'Bvaggi0&2DEEEEvaggi0&2DEEEE#Bvaggi0&2DEEEEvaggi0&2DEEEEBRZZ8Aq'C"**5B!'')$rxxz(::::!'')$rxxz(::::"3RZZ@B!'')$rxxz(::::!'')$rxxz(::::CB!'')$rxxz(::::!'')$rxxz(::::9
r"   c           	         [         R                  " S5      n[         R                  " 5       nUR                  U5        UR	                  S UR                  5        5       5        [        U5      n[        U[         R                  S9n[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        U[         R                  S9n[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[         R                  " U5      n[        UR                  5       5      [        UR                  5       5      :X  d   e[        UR                  5       5      [        UR                  5       5      :X  d   e[        U5      n[        U[         R                  S9nUR                  SS9 VV	V
s/ s H
  u  poU	0 4PM     nn	nn
[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        U[        UR                  SS95      5      (       d   e[        U[         R                  S9n[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        U[        UR                  SS95      5      (       d   e[         R                  " U5      n[        [        UR                  5       5      [        UR                  5       5      5      (       d   e[        U[        UR                  SS95      5      (       d   eg s  sn
n	nf )Nr$   c              3   .   #    U  H  u  pXU4v   M     g 7fr   r@   r   uvs      r   r   )TestConvert.test_graph.<locals>.<genexpr>j   s     !B	1)	   rU   Tdata)r-   r	   r.   add_nodes_fromadd_weighted_edges_fromrX   r   r   r   r   rW   r
   r   r   r   )r   gr2   r3   r4   r5   r6   dolr_   r`   denones               r   
test_graphTestConvert.test_graphf   s   NN2HHJ		!!!B	!BB q!"((;6!''),fRXXZ.@AAAA6!''),fRXXZ.@AAAAs:6!''),fRXXZ.@AAAA6!''),fRXXZ.@AAAAXXc]aggi F288:$6666aggi F288:$6666 q!"((;-.WW$W-?@-?	qQ-?@6!''),fRXXZ.@AAAA5&t)<"=>>>>s:6!''),fRXXZ.@AAAA5&t)<"=>>>>XXc]6!''),fRXXZ.@AAAA5&t)<"=>>>> As   Oc           	      B   [        S5      n[        R                  " 5       nUR                  U5        UR	                  S UR                  5        5       5        [        R                  " 5       nUR                  U5        UR	                  S UR                  5        5       5        UR                  SSSS9  [        R                  " 5       nUR                  U5        UR	                  S UR                  5        5       5        UR                  SSS	S9  [        U5      n[        U[        R                  S
9n[        UR                  5       UR                  5       5      (       d   e[        UR                  5       UR                  5       5      (       d   e[        U[        R                  S
9n[        UR                  5       UR                  5       5      (       d   e[        UR                  5       UR                  5       5      (       d   e[        R                  " U5      n[        UR                  5       UR                  5       5      (       d   e[        UR                  5       UR                  5       5      (       d   e[        U5      n	[        U	[        R                  S
9nUR                  SS9 V
VVs/ s H
  u  poU0 4PM     nnn
n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        U[!        UR                  SS95      5      (       d   e[        U	[        R                  S
9n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        U[!        UR                  SS95      5      (       d   e[        R                  " U	5      n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        U[!        UR                  SS95      5      (       d   e[        U5      n[        U[        R                  SS9n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        U[        R                  SS9n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        R                  " U5      n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[!        UR                  5       5      [!        UR                  5       5      :X  d   e[        U[        R                  SS9n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[!        UR                  5       5      [!        UR                  5       5      :w  d   e[        R                  " U5      n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        R                  " U5      n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        U5      n	[        U	[        R                  S
9n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        U	[        R                  S
9n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        R                  " U	5      n[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   e[        [!        UR                  5       5      [!        UR                  5       5      5      (       d   eg s  snnn
f )Nr$   c              3   .   #    U  H  u  pXU4v   M     g 7fr   r@   r^   s      r   r   >TestConvert.test_with_multiedges_self_loops.<locals>.<genexpr>   s     "CA!9rb   c              3   .   #    U  H  u  pXU4v   M     g 7fr   r@   r^   s      r   r   ro           #D)$!Q1I)rb   r   r(   r)   weightc              3   .   #    U  H  u  pXU4v   M     g 7fr   r@   r^   s      r   r   ro      rq   rb   d   rU   Trc   )rV   multigraph_inputF)r	   r-   r.   re   rf   rX   
MultiGraphadd_edger   r   r   rW   r
   r   r   r   r   )r   r2   XGXGMXGSr3   r4   r5   r6   rh   r_   r`   ri   rj   GEGMs                   r   test_with_multiedges_self_loops+TestConvert.test_with_multiedges_self_loops   s   OXXZ
!
"""C"CCmmo1###D!'')#DDQ!$hhj1###D!'')#DDQ#& s#"((;399;
3333399;
3333s:399;
3333399;
3333XXc]399;
3333399;
3333 s#"((;-0YYDY-AB-A	qQ-AB6#))+.rxxz0BCCCC5&t)<"=>>>>s:6#))+.rxxz0BCCCC5&t)<"=>>>>XXc]6#))+.rxxz0BCCCC5&t)<"=>>>> s#"--RVW6#))+.rxxz0BCCCC6#))+.rxxz0BCCCCsQUV6#))+.rxxz0BCCCC6#))+.rxxz0BCCCC]]36#))+.rxxz0BCCCCciik"fRXXZ&8888"--RWX6#))+.rxxz0BCCCCciik"fRXXZ&8888]]36#))+.rxxz0BCCCC6#))+.rxxz0BCCCC]]16"((*-vaggi/@AAAA6"((*-vaggi/@AAAA
 q!"--@6!''),fRXXZ.@AAAA6!''),fRXXZ.@AAAAs?6!''),fRXXZ.@AAAA6!''),fRXXZ.@AAAA]]36!''),fRXXZ.@AAAA6!''),fRXXZ.@AAAAY Cs   3fc           	         [         R                  " S5      n/ SQn[         R                  " U5      n[        [	        UR                  5       5      [	        UR                  5       5      5      (       d   e[        [	        UR                  5       5      [	        UR                  5       5      5      (       d   e[        [	        UR                  SS95      [	        UR                  SS95      5      (       d   eSS0 4SS0 4SS0 4/n[         R                  " U5      n[        [	        UR                  5       5      [	        UR                  5       5      5      (       d   e[        [	        UR                  5       5      [	        UR                  5       5      5      (       d   e[        [	        UR                  SS95      [	        UR                  SS95      5      (       d   eS	 [        S5       5       n[         R                  " U5      n[        [	        UR                  5       5      [	        UR                  5       5      5      (       d   e[        [	        UR                  5       5      [	        UR                  5       5      5      (       d   e[        [	        UR                  SS95      [	        UR                  SS95      5      (       d   eg )
Nr&   )r   r(   r(   r)   )r)   r%   Trc   r   r(   r)   r%   c              3   .   #    U  H  oUS -   4v   M     g7f)r(   Nr@   )r   ns     r   r   -TestConvert.test_edgelists.<locals>.<genexpr>   s     *AQZrb   )	r-   r/   r.   r   r   rW   r
   rX   range)r   Pr   r2   s       r   test_edgelistsTestConvert.test_edgelists   s   MM!$HHQK6!''),fQWWY.?@@@@6!''),fQWWY.?@@@@6!''t'"45vagg4g>P7QRRRRBZ!QaBZ0HHQK6!''),fQWWY.?@@@@6!''),fQWWY.?@@@@6!''t'"45vagg4g>P7QRRRR*q*HHQK6!''),fQWWY.?@@@@6!''),fQWWY.?@@@@6!''t'"45vagg4g>P7QRRRRr"   c                    / SQn/ SQnU R                  [        R                  " [        R                  " U5      5      R	                  5       U5      (       d   eU R                  [        R                  " [        R                  " U5      5      R	                  5       U5      (       d   eU R                  [        R
                  " [        R                  " U5      5      R	                  5       U5      (       d   eU R                  [        R
                  " [        R                  " U5      5      R	                  5       U5      (       d   eU R                  [        R
                  " [        R                  " U5      5      R	                  5       U5      (       d   eU R                  [        R
                  " [        R                  " U5      5      R	                  5       U5      (       d   eU R                  [        R                  " [        R                  " U5      5      R	                  5       U5      (       d   eU R                  [        R                  " [        R                  " U5      5      R	                  5       U5      (       d   eg )N)r   r   )r)   r   )r   r   r   r)   )r    r-   r.   rY   rX   rw   MultiDiGraph)r   edges1edges2s      r   test_directed_to_undirected'TestConvert.test_directed_to_undirected   s   ))##BHHRZZ-?$@$F$F$H&QQQQ##BHHRZZ-?$@$F$F$H&QQQQ##BMM"**V2D$E$K$K$MvVVVV##BMM"**V2D$E$K$K$MvV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V##BHHR__V-D$E$K$K$MvVVVVr"   c                 d   [         R                  " 5       nUR                  S5        [        U[         R                  S9n[	        UR
                  5      [	        UR
                  5      :X  d   e[         R                  " U5      n[	        UR
                  5      [	        UR
                  5      :X  d   eg )NabcrU   )r-   r.   re   r   listrW   rY   )r   r2   Hs      r   test_attribute_dict_integrity)TestConvert.test_attribute_dict_integrity   st    HHJ	abhh7AGG}QWW---JJqMAGG}QWW---r"   c                     [         R                  " S/5      n[         R                  " U[        U5      S9n[	        UR                  SS9U5      (       d   eg )N)r(   r(   r*   Trc   )r-   r.   to_edgelistr   r
   rX   )r   r2   elists      r   test_to_edgelistTestConvert.test_to_edgelist  sD    HHfXq4731777-u5555r"   c                 >  ^  " S S[         5      m " U4S jS[        R                  5      n[        R                  " 5       nUR                  SSS9  U" U5      n[	        UR
                  S   [         5      (       d   e[	        UR
                  S   T5      (       d   eg )Nc                       \ rS rSrSrg)GTestConvert.test_custom_node_attr_dict_safekeeping.<locals>.custom_dicti	  r@   N)rA   rB   rC   rD   rF   r@   r"   r   custom_dictr   	  s    r"   r   c                      > \ rS rSr Y rSrg)BTestConvert.test_custom_node_attr_dict_safekeeping.<locals>.Customi  r@   N)rA   rB   rC   rD   node_attr_dict_factoryrF   )r   s   r   Customr     s	    %0"r"   r   r(   rr   )dictr-   r.   add_node
isinstance_node)r   r   rg   hr   s       @r   &test_custom_node_attr_dict_safekeeping2TestConvert.test_custom_node_attr_dict_safekeeping  s{    	$ 		1RXX 	1 HHJ	

1Q
1I!''!*d++++!''!*k2222r"   r@   N)rA   rB   rC   rD   r    r:   rR   rZ   rk   r~   r   r   r   r   r   rF   r@   r"   r   r   r      sA    N*4@4;>?@LB\S(W$.6
3r"   r   edgelistr   r   r(   rs   g      ?r)   g       @c                     [         R                  " 5       nUR                  U 5        SS0SSS.SS0S.n[         R                  " USS9U:X  d   eg )Nr(   r$   r   r'   	edge_data)r-   r.   add_edges_fromr   )r   r2   expecteds      r   )test_to_dict_of_dicts_with_edgedata_paramr     sR     	
AX r72"~1b':HqB/8;;;r"   c                      [         R                  " S5      n / SQnSS0SSS.SS0S.n[         R                  " XSS9U:X  d   eg )N   )r)   r%   r&   r%   r$   )r)   r&   )r+   r   )r-   r/   r   )r2   r+   r   s      r   0test_to_dict_of_dicts_with_edgedata_and_nodelistr   -  sH    
aAHr72"~1b':HqrBhNNNr"   c                      [         R                  " 5       n U R                  SSSS9  U R                  SSSS9  SS0SS0S.n[         R                  " U SS9U:X  d   eg	)
z2Multi edge data overwritten when edge_data != Noner   r(   rJ   )keybr$   r   r   N)r-   rw   rx   r   )r2   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                      / SQn [         R                  " [        R                  SS9   [        R                  " U 5        S S S 5        g ! , (       d  f       g = f)N)r(   r)   r%   zInput is not a valid edge list)match)rN   rO   r-   rP   r   )invalid_edgelists    r   #test_to_networkx_graph_non_edgelistr   >  s9     	r''/O	P
-. 
Q	P	Ps   A
A)rN   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"   