
    \Mh1              	           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                            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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                   P    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dS )TestConvertc                 j    t          d |D                       t          d |D                       k    S )Nc              3   4   K   | ]}t          |          V  d S Nsorted.0es     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/tests/test_convert.py	<genexpr>z.TestConvert.edgelists_equal.<locals>.<genexpr>   s(      ,,AfQii,,,,,,    c              3   4   K   | ]}t          |          V  d S r   r   r   s     r   r   z.TestConvert.edgelists_equal.<locals>.<genexpr>   s(      6M6MQvayy6M6M6M6M6M6Mr   r   )selfe1e2s      r   edgelists_equalzTestConvert.edgelists_equal   s;    ,,,,,,,6M6M"6M6M6M0M0MMMr   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          |
|	          sJ d S )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$rIII...C8C==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           d S )Nc                       e Zd ZdZdS &TestConvert.test_exceptions.<locals>.GN)__name__
__module____qualname__adj r   r   r.   r:   /   s        CCCr   r.   c                       e Zd ZdZdS r9   )r;   r<   r=   	is_strictr?   r   r   r.   z&TestConvert.test_exceptions.<locals>.G5   s        IIIr   ar   c                       e Zd ZdZdS r9   )r;   r<   r=   nextr?   r   r   r.   z&TestConvert.test_exceptions.<locals>.G?   s        DDDr   )pytestraisesr)   NetworkXErrorr   	TypeError)r   r.   s     r   test_exceptionszTestConvert.test_exceptions-   s   	 	 	 	 	 	 	 	 	b&(91===	 	 	 	 	 	 	 	 	b&(91=== !Hi!2A666	 	 	 	 	 	 	 	 	b&(91=== 	b&(93?????r   c                    t           t          ft          t          ffD ]>\  }}t	          d          } ||          } ||          }t          t          |                                          t          |                                                    sJ t          t          |	                                          t          |	                                                    sJ t          |          }t          t          |                                          t          |                                                    sJ t          t          |	                                          t          |	                                                    sJ t          j        |          }t          t          |                                          t          |                                                    sJ t          t          |	                                          t          |	                                                    sJ t	          dt          j                  } ||          } ||t          j                  }t          |                                          t          |                                          k    sJ t          |	                                          t          |	                                          k    sJ t          |t          j                  }t          |                                          t          |                                          k    sJ t          |	                                          t          |	                                          k    sJ t          j        |          }t          |                                          t          |                                          k    sJ t          |	                                          t          |	                                          k    sJ @d S )Nr    create_using)r   r   r   r   r	   r   r   nodesr
   edgesr   r)   r*   DiGraph)r   r,   r-   r.   r/   r0   r1   r2   s           r   test_digraphszTestConvert.test_digraphsG   s;   1212
 	; 	;LD& BA $q''CBvaggii00&2D2DEEEEEvaggii00&2D2DEEEEE"3''Bvaggii00&2D2DEEEEEvaggii00&2D2DEEEEE#Bvaggii00&2D2DEEEEEvaggii00&2D2DEEEEEBRZ888A$q''C"*555B!''))$$rxxzz(:(:::::!''))$$rxxzz(:(:::::"3RZ@@@B!''))$$rxxzz(:(:::::!''))$$rxxzz(:(:::::CB!''))$$rxxzz(:(:::::!''))$$rxxzz(:(::::::9	; 	;r   c                 .	   t          j        d          }t          j                    }|                    |           |                    d |                                D                        t          |          }t          |t           j                  }t          t          |
                                          t          |
                                                    sJ t          t          |                                          t          |                                                    sJ t          |t           j                  }t          t          |
                                          t          |
                                                    sJ t          t          |                                          t          |                                                    sJ t          j        |          }t          |
                                          t          |
                                          k    sJ t          |                                          t          |                                          k    sJ t          |          }t          |t           j                  }d |                    d          D             }t          t          |
                                          t          |
                                                    sJ t          |t          |                    d                              sJ t          |t           j                  }t          t          |
                                          t          |
                                                    sJ t          |t          |                    d                              sJ t          j        |          }t          t          |
                                          t          |
                                                    sJ t          |t          |                    d                              sJ d S )Nr    c              3   &   K   | ]\  }}|||fV  d S r   r?   r   uvs      r   r   z)TestConvert.test_graph.<locals>.<genexpr>j   s,      !B!B11a)!B!B!B!B!B!Br   rK   c                      g | ]\  }}}||i fS r?   r?   r   rT   rU   ds       r   
<listcomp>z*TestConvert.test_graph.<locals>.<listcomp>|   s$    @@@	Aq!Q@@@r   Tdata)r)   r	   r*   add_nodes_fromadd_weighted_edges_fromrN   r   r   r   r   rM   r
   r   r   r   )	r   gr.   r/   r0   r1   r2   dolenones	            r   
test_graphzTestConvert.test_graphf   sj   N2HJJ		!!!B!B		!B!B!BBBB q!!"(;;;6!'')),,fRXXZZ.@.@AAAAA6!'')),,fRXXZZ.@.@AAAAAs:::6!'')),,fRXXZZ.@.@AAAAA6!'')),,fRXXZZ.@.@AAAAAXc]]aggii  F288::$6$66666aggii  F288::$6$66666 q!!"(;;;@@QWW$W-?-?@@@6!'')),,fRXXZZ.@.@AAAAA5&t)<)<"="=>>>>>s:::6!'')),,fRXXZZ.@.@AAAAA5&t)<)<"="=>>>>>Xc]]6!'')),,fRXXZZ.@.@AAAAA5&t)<)<"="=>>>>>>>r   c                    t          d          }t          j                    }|                    |           |                    d |                                D                        t          j                    }|                    |           |                    d |                                D                        |                    ddd           t          j                    }|                    |           |                    d |                                D                        |                    ddd	           t          |          }t          |t          j        
          }t          |                                |                                          sJ t          |                                |                                          sJ t          |t          j        
          }t          |                                |                                          sJ t          |                                |                                          sJ t          j        |          }t          |                                |                                          sJ t          |                                |                                          sJ t          |          }	t          |	t          j        
          }d |                    d          D             }
t          t!          |                                          t!          |                                                    sJ t          |
t!          |                    d                              sJ t          |	t          j        
          }t          t!          |                                          t!          |                                                    sJ t          |
t!          |                    d                              sJ t          j        |	          }t          t!          |                                          t!          |                                                    sJ t          |
t!          |                    d                              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          j        |          }t          t!          |                                          t!          |                                                    sJ t!          |                                          t!          |                                          k    sJ t          |t          j        d          }t          t!          |                                          t!          |                                                    sJ t!          |                                          t!          |                                          k    sJ t          j        |          }t          t!          |                                          t!          |                                                    sJ t          t!          |                                          t!          |                                                    sJ t          j        |          }t          t!          |                                          t!          |                                                    sJ t          t!          |                                          t!          |                                                    sJ t          |          }	t          |	t          j        
          }t          t!          |                                          t!          |                                                    sJ t          t!          |                                          t!          |                                                    sJ t          |	t          j        
          }t          t!          |                                          t!          |                                                    sJ t          t!          |                                          t!          |                                                    sJ t          j        |	          }t          t!          |                                          t!          |                                                    sJ t          t!          |                                          t!          |                                                    sJ d S )Nr    c              3   &   K   | ]\  }}|||fV  d S r   r?   rS   s      r   r   z>TestConvert.test_with_multiedges_self_loops.<locals>.<genexpr>   s,      "C"CAAq!9"C"C"C"C"C"Cr   c              3   &   K   | ]\  }}|||fV  d S r   r?   rS   s      r   r   z>TestConvert.test_with_multiedges_self_loops.<locals>.<genexpr>   ,      #D#D$!QQ1I#D#D#D#D#D#Dr   r   r$   r%   weightc              3   &   K   | ]\  }}|||fV  d S r   r?   rS   s      r   r   z>TestConvert.test_with_multiedges_self_loops.<locals>.<genexpr>   re   r   d   rK   c                      g | ]\  }}}||i fS r?   r?   rW   s       r   rY   z?TestConvert.test_with_multiedges_self_loops.<locals>.<listcomp>   s$    BBB	Aq!QBBBr   TrZ   )rL   multigraph_inputF)r	   r)   r*   r\   r]   rN   
MultiGraphadd_edger   r   r   rM   r
   r   r   r   r   )r   r.   XGXGMXGSr/   r0   r1   r2   r_   r`   GEGMs                r   test_with_multiedges_self_loopsz+TestConvert.test_with_multiedges_self_loops   s]   OOXZZ
!
"""C"C"C"C"CCCCmoo1###D#D!''))#D#D#DDDDQ!$$$hjj1###D#D!''))#D#D#DDDDQ#&&& s##"(;;;399;;

33333399;;

33333s:::399;;

33333399;;

33333Xc]]399;;

33333399;;

33333 s##"(;;;BBSYYDY-A-ABBB6#))++..rxxzz0B0BCCCCC5&t)<)<"="=>>>>>s:::6#))++..rxxzz0B0BCCCCC5&t)<)<"="=>>>>>Xc]]6#))++..rxxzz0B0BCCCCC5&t)<)<"="=>>>>> s##"-RVWWW6#))++..rxxzz0B0BCCCCC6#))++..rxxzz0B0BCCCCCsQUVVV6#))++..rxxzz0B0BCCCCC6#))++..rxxzz0B0BCCCCC]36#))++..rxxzz0B0BCCCCCciikk""fRXXZZ&8&88888"-RWXXX6#))++..rxxzz0B0BCCCCCciikk""fRXXZZ&8&88888]36#))++..rxxzz0B0BCCCCC6#))++..rxxzz0B0BCCCCC]16"((**--vaggii/@/@AAAAA6"((**--vaggii/@/@AAAAA
 q!!"-@@@6!'')),,fRXXZZ.@.@AAAAA6!'')),,fRXXZZ.@.@AAAAAs???6!'')),,fRXXZZ.@.@AAAAA6!'')),,fRXXZZ.@.@AAAAA]36!'')),,fRXXZZ.@.@AAAAA6!'')),,fRXXZZ.@.@AAAAAAAr   c                    t          j        d          }g d}t          j        |          }t          t	          |                                          t	          |                                                    sJ t          t	          |                                          t	          |                                                    sJ t          t	          |                    d                    t	          |                    d                              sJ ddi fddi fddi fg}t          j        |          }t          t	          |                                          t	          |                                                    sJ t          t	          |                                          t	          |                                                    sJ t          t	          |                    d                    t	          |                    d                              sJ d	 t          d          D             }t          j        |          }t          t	          |                                          t	          |                                                    sJ t          t	          |                                          t	          |                                                    sJ t          t	          |                    d                    t	          |                    d                              sJ d S )
Nr"   )r   r$   r$   r%   )r%   r!   TrZ   r   r$   r%   r!   c              3   $   K   | ]}||d z   fV  dS )r$   Nr?   )r   ns     r   r   z-TestConvert.test_edgelists.<locals>.<genexpr>   s*      **AaQZ******r   )	r)   r+   r*   r   r   rM   r
   rN   range)r   Pr   r.   s       r   test_edgelistszTestConvert.test_edgelists   s   M!$$$HQKK6!'')),,fQWWYY.?.?@@@@@6!'')),,fQWWYY.?.?@@@@@6!''t'"4"455vagg4g>P>P7Q7QRRRRRBZ!QaBZ0HQKK6!'')),,fQWWYY.?.?@@@@@6!'')),,fQWWYY.?.?@@@@@6!''t'"4"455vagg4g>P>P7Q7QRRRRR**q***HQKK6!'')),,fQWWYY.?.?@@@@@6!'')),,fQWWYY.?.?@@@@@6!''t'"4"455vagg4g>P>P7Q7QRRRRRRRr   c                    g d}g d}|                      t          j        t          j        |                                                    |          sJ |                      t          j        t          j        |                                                    |          sJ |                      t          j        t          j        |                                                    |          sJ |                      t          j        t          j        |                                                    |          sJ |                      t          j        t          j        |                                                    |          sJ |                      t          j        t          j        |                                                    |          sJ |                      t          j        t          j        |                                                    |          sJ |                      t          j        t          j        |                                                    |          sJ d S )N)ru   rv   )r%   r   )ru   rv   r   r%   )r   r)   r*   rO   rN   rl   MultiDiGraph)r   edges1edges2s      r   test_directed_to_undirectedz'TestConvert.test_directed_to_undirected   s   ))))))##BHRZ-?-?$@$@$F$F$H$H&QQQQQ##BHRZ-?-?$@$@$F$F$H$H&QQQQQ##BM"*V2D2D$E$E$K$K$M$MvVVVVV##BM"*V2D2D$E$E$K$K$M$MvVVVVV##M"/&112288::F
 
 	
 	
 	
 ##M"/&112288::F
 
 	
 	
 	
 ##BHR_V-D-D$E$E$K$K$M$MvVVVVV##BHR_V-D-D$E$E$K$K$M$MvVVVVVVVr   c                 d   t          j                    }|                    d           t          |t           j                  }t	          |j                  t	          |j                  k    sJ t          j        |          }t	          |j                  t	          |j                  k    sJ d S )NabcrK   )r)   r*   r\   r   listrM   rO   )r   r.   Hs      r   test_attribute_dict_integrityz)TestConvert.test_attribute_dict_integrity   s    HJJ	abh777AG}}QW----JqMMAG}}QW------r   c                     t          j        dg          }t          j        |t          |                    }t	          |                    d          |          sJ d S )N)r$   r$   r&   TrZ   )r)   r*   to_edgelistr   r
   rN   )r   r.   elists      r   test_to_edgelistzTestConvert.test_to_edgelist  sW    HfXq4773331777--u5555555r   c                 J    G d dt                      G fddt          j                  }t          j                    }|                    dd            ||          }t	          |j        d         t                     sJ t	          |j        d                   sJ d S )Nc                       e Zd ZdS )GTestConvert.test_custom_node_attr_dict_safekeeping.<locals>.custom_dictN)r;   r<   r=   r?   r   r   custom_dictr   	  s        Dr   r   c                       e Zd Z ZdS )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$   rf   )dictr)   r*   add_node
isinstance_node)r   r   r^   hr   s       @r   &test_custom_node_attr_dict_safekeepingz2TestConvert.test_custom_node_attr_dict_safekeeping  s    	 	 	 	 	$ 	 	 		1 	1 	1 	1 	1 	1 	1RX 	1 	1 	1 HJJ	

1Q
F1II!'!*d+++++!'!*k2222222r   N)r;   r<   r=   r   r6   rI   rP   ra   rs   r{   r   r   r   r   r?   r   r   r   r      s        N N N* * *4@ @ @4; ; ;>? ? ?@LB LB LB\S S S(W W W$. . .6 6 6
3 3 3 3 3r   r   edgelistru   rv   r$   rg   g      ?r%   g       @c                     t          j                    }|                    |            ddidddddid}t          j        |d          |k    sJ d S )Nr$   r    r}   r#   	edge_data)r)   r*   add_edges_fromr   )r   r.   expecteds      r   )test_to_dict_of_dicts_with_edgedata_paramr     si     	

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 d S )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   -  s`    
aAyyHr72"~~1b'::Hq8rBBBhNNNNNNr   c                      t          j                    } |                     ddd           |                     ddd           ddiddid}t          j        | d          |k    sJ d	S )
z2Multi edge data overwritten when edge_data != Noner   r$   rB   )keybr    ru   r   N)r)   rl   rm   r   )r.   r   s     r   .test_to_dict_of_dicts_with_edgedata_multigraphr   4  sy    
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            d S # 1 swxY w Y   d S )N)r$   r%   r!   zInput is not a valid edge list)match)rE   rF   r)   rG   r   )invalid_edgelists    r   #test_to_networkx_graph_non_edgelistr   >  s     yy	r'/O	P	P	P / /
-.../ / / / / / / / / / / / / / / / / /s   AAA)rE   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      sd                     C B B B B B B B A A A A A A A A A AE3 E3 E3 E3 E3 E3 E3 E3X  

Q3	 1a(C"9:	 < < <O O O< < </ / / / /r   