
    ިsg                        d dl Z d dlZd dlZd dlmZmZ d Z G d d      Z G d d      Z	ej                  j                  dej                  ej                  ej                  ej                  f      d	        Zej                  j                  d
ddddfddiddiddff      d        Zej                  j                  dej                  ej                  f      d        Zej                  j                  d
ddddfddiddiddff      d        Zej                  j                  dej                  ej                  f      d        Zej                  j                  d
ddddfddiddiddff      d        Zd Zd Zej                  j                  dej                  ej                  ej                  ej                  f      d        Zej                  j                  dej                  ej                  f      d        Zej                  j                  dej                  ej                  f      d        Zd Zej                  j                  dej                  ej                  ej                  ej                  g      d        Zej                  j                  dej                  ej                  ej                  ej                  g      d         Zd! Zej                  j                  dej                  ej                  g      d"        Zej                  j                  dej                  ej                  g      d#        Z d$ Z!ej                  j                  d% ej                          ej                          ej                          ej                         f      d&        Z"ej                  j                  d% ej                          ej                         f      d'        Z#ej                  j                  d% ej                          ej                         f      d(        Z$y))    N)edges_equalnodes_equalc                  `    t        j                         } t        j                  |       g k(  sJ y N)nxGraphdegree_histogramGs    W/var/www/html/venv/lib/python3.12/site-packages/networkx/classes/tests/test_function.pytest_degree_histogram_emptyr   	   s&    

Aq!R'''    c                       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 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 Zd Zy)TestFunctionc                 f   t        j                  g dg dg dd      | _        ddddd	d
| _        t	        t        d            | _        g d| _        t        j                  g dg dg d      | _	        ddddd	d
| _
        ddd	d	d	d
| _        t	        t        d            | _        g d| _        y )N         r   r   r   r   r      Test)namer   r   r   r   )r   r   r   r   r      r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   GdegreelistrangeGnodesGedgesDiGraphDGDGin_degreeDGout_degreeDGnodesDGedgesselfs    r   setup_methodzTestFunction.setup_method   s    iI"=FKqQ1558nF**yR@A Q1q9 !aA!:E!H~Gr   c                 4   t        | j                  j                         t        t	        j                  | j                                    sJ t        | j
                  j                         t        t	        j                  | j
                                    sJ y r   )r   r   nodesr$   r   r)   r.   s    r   
test_nodeszTestFunction.test_nodes   sZ    466<<>40@+ABBB477==?D$''1B,CDDDr   c           
         t        | j                  j                         t        t	        j                  | j                                    sJ t        | j                  j                               t        t	        j                  | j                              k(  sJ t        | j                  j                  g d      t        t	        j                  | j                  g d                  sJ t        | j                  j                  g d            t        t	        j                  | j                  g d            k(  sJ y )N)r   r   r   nbunch)r   r   edgesr$   r   sortedr)   r.   s    r   
test_edgeszTestFunction.test_edges   s    466<<>40@+ABBBdggmmo&&$''1B*CCCCFFLL	L*D$&&1S,T
 	
 
 dggmm9m56&HHTWWY/;
 
 	
 
r   c           
         t        | j                  j                         t        t	        j                  | j                                    sJ t        | j                  j                               t        t	        j                  | j                              k(  sJ t        | j                  j                  ddg      t        t	        j                  | j                  ddg                  sJ t        | j                  j                  ddg            t        t	        j                  | j                  ddg            k(  sJ t        | j                  j                  d      t        t	        j                  | j                  d                  sJ t        | j                  j                  d            t        t	        j                  | j                  d            k(  sJ y )Nr   r   r5   weightr;   )r   r   degreer$   r   r8   r)   r.   s    r   test_degreezTestFunction.test_degree(   sf   466==?D4661B,CDDDdggnn&'6"))DGG2D+EEEEFFMM!QM($ryyA/O*P
 	
 
 dggnnQFn34IIdggq!f-9
 
 	
 
 FFMMM*D466(1S,T
 	
 
 dggnnHn56&IIdggh/;
 
 	
 
r   c                 D   t        | j                  j                  d            t        t        j                  | j                  d            k(  sJ t        | j                  j                  d            t        t        j                  | j                  d            k(  sJ y )Nr   )r$   r   	neighborsr   r)   r.   s    r   test_neighborszTestFunction.test_neighbors8   sn    DFF$$Q'(Ddffa1H,IIIIDGG%%a()T",,tww2J-KKKKr   c                     | j                   j                         t        j                  | j                         k(  sJ | j                  j                         t        j                  | j                        k(  sJ y r   )r   number_of_nodesr   r)   r.   s    r   test_number_of_nodesz!TestFunction.test_number_of_nodes<   V    vv%%'2+=+=dff+EEEEww&&(B,>,>tww,GGGGr   c                     | j                   j                         t        j                  | j                         k(  sJ | j                  j                         t        j                  | j                        k(  sJ y r   )r   number_of_edgesr   r)   r.   s    r   test_number_of_edgesz!TestFunction.test_number_of_edges@   rE   r   c                     | j                   j                         t        j                  | j                         k(  sJ | j                  j                         t        j                  | j                        k(  sJ y r   )r   is_directedr   r)   r.   s    r   test_is_directedzTestFunction.test_is_directedD   sR    vv!!#r~~dff'====ww""$tww(????r   c           	         | j                   j                         }g d}t        j                  ||       t	        |j                  |      g d      sJ | j                   j                         }t        j                  ||d       t	        |j                  |d      ddd	difdd
d	difddd	difg      sJ | j                   j                         }dg}t        j                  ||       t        |t        | j                         |z         sJ | j                   j                         }g }t        j                  ||       t        |j                  | j                        sJ t	        |j
                  | j                   j
                        sJ y )N            )rN   rO   )rN   rP   rN   rQ          @r<   TdatarN   rO   r;   rP   rQ   )
r   copyr   add_starr   r7   r   r$   r2   r&   r/   r   nlists      r   test_add_starzTestFunction.test_add_starH   sF   FFKKM 
Au1775>+IJJJFFKKM
AuS)GGEG%R(C)R(C)R(C)
 	
 
 FFKKM
Au1d466lU2333FFKKM
Au177DKK000177DFFLL111r   c           	      N   | j                   j                         }g d}t        j                  ||       t	        |j                  |      g d      sJ | j                   j                         }t        j                  ||d       t	        |j                  |d      ddd	difdd
d	difd
dd	difg      sJ | j                   j                         }dg}t        j                  ||       t	        |j                  |      g       sJ t        |t        | j                         dgz         sJ | j                   j                         }t        dg      }t        j                  ||       t	        |j                  dg      g       sJ t        |t        | j                         dgz         sJ | j                   j                         }dg}t        j                  ||       t	        |j                  |      g       sJ t        |t        | j                         dgz         sJ | j                   j                         }t        dg      }t        j                  ||       t	        |j                  dg      g       sJ t        |t        | j                         dgz         sJ | j                   j                         }g }t        j                  ||       t	        |j
                  | j                   j
                        sJ t        |t        | j                               sJ | j                   j                         }t        g       }t        j                  ||       t	        |j
                  | j                   j
                        sJ t        |t        | j                               sJ y )NrM   )rR   rO   rP   rP   rQ   rT   r<   TrU   rN   rO   r;   rP   rQ   node)	r   rW   r   add_pathr   r7   r   r$   iterrY   s      r   test_add_pathzTestFunction.test_add_pathd   s   FFKKM 
Au1775>+IJJJFFKKM
AuS)GGEG%R(C)R(C)R(C)
 	
 
 FFKKM
Au1775>2...1d466lfX5666FFKKMfX
Au177F8,b1111d466lfX5666FFKKM
Au1775>2...1d466lbT1222FFKKMbT

Au177B4="---1d466lbT1222FFKKM
Au177DFFLL1111d466l+++FFKKMR
Au177DFFLL1111d466l+++r   c                 r   | j                   j                         }g d}g dg dg}t        j                  ||       t	        |j                  |            |v sJ | j                   j                         }ddddifddddifdd	ddifd	dddifgddddifdd	ddifd	dddifddddifgg}t        j                  ||d
       t	        |j                  |d            |v sJ | j                   j                         }dg}t        j                  ||       t        |t        | j                         |z         sJ | j                   j                         }g }t        j                  ||       t        |j                  | j                        sJ t        |j
                  | j                   j
                        sJ y )NrM   )rR   rS   r]   r^   )rR   r]   r^   )rQ   rN   rN   rO   r;         ?rQ   rP   r<   TrU   )r   rW   r   	add_cycler8   r7   r   r$   r2   r&   r   )r/   r   rZ   oklistss       r   test_add_cyclezTestFunction.test_add_cycle   s   FFKKM 44
 	Qaggen%000FFKKM R(C)R(C)R(C)R(C)	 R(C)R(C)R(C)R(C)	
 	Qc*agge$g/0G;;;FFKKM
Q1d466lU2333FFKKM
Q177DKK000177DFFLL111r   c                    | j                   j                  g d      j                  t        j                  | j                   g d      j                  k(  sJ | j                  j                  g d      j                  t        j                  | j                  g d      j                  k(  sJ | j                   j                  g d      j                  t        j
                  | j                   g d      j                  k(  sJ | j                  j                  g d      j                  t        j
                  | j                  g d      j                  k(  sJ t        j
                  | j                   j                  g d      g d      }|j                  | j                   usJ |j                  | j                   j                  g d      j                  k(  sJ y )N)r   r   r   r   r   )r   subgraphadjr   r)   induced_subgraph_graph)r/   Hs     r   test_subgraphzTestFunction.test_subgraph   sV   FFOOL)--TVV\1R1V1VV	
V GG\*.."++dgg|2T2X2XX	
X FFOOL)--""466<8<<=	
= GG\*..""477L9==>	
>  =yIxxtvv%%%uu	266666r   c                 \   | j                   j                  ddg      j                  t        j                  | j                   ddg      j                  k(  sJ | j                  j                  ddg      j                  t        j                  | j                  ddg      j                  k(  sJ y )Nr"   r   )r   edge_subgraphrj   r   r)   r.   s    r   test_edge_subgraphzTestFunction.test_edge_subgraph   s    FF  &&!1266(89==>	
> GG!!66"2377&&)9:>>?	
?r   c                    t        j                  | j                  d      }t        |t	        | j                              sJ |j
                  i k(  sJ |j                  i j                  | j                  j                         i       k(  sJ |j                  i j                  | j                  j                         i       k(  sJ t        j                  | j                        }t        |t	        | j                              sJ |j
                  | j                  j
                  k(  sJ |j                  | j                  j                  k(  sJ |j                  i j                  | j                  j                         i       k(  sJ y )NF)	with_data)
r   create_empty_copyr   r   r$   graph_nodefromkeysr2   _adjr/   r   s     r   test_create_empty_copyz#TestFunction.test_create_empty_copy   s     591d466l+++ww"}}ww"++dffllnb9999vvTVV\\^R8888  (1d466l+++ww$&&,,&&&ww$&&,,&&&vvTVV\\^R8888r   c                 P    t        j                  | j                        g dk(  sJ y )N)r   r   r   r   r   )r   r	   r   r.   s    r   test_degree_histogramz"TestFunction.test_degree_histogram   s    ""466*o===r   c                    t        j                  | j                        dk(  sJ t        j                  | j                        dk(  sJ t        j                         }|j                  d       t        j                  |      dk(  sJ y )Ng      ?g333333?r           )r   densityr   r)   r   add_nodery   s     r   test_densityzTestFunction.test_density   sd    zz$&&!S(((zz$''"c)))HHJ	

1zz!}###r   c                     t        j                         }|j                  dd       t        j                  |      dk(  sJ |j                  dd       t        j                  |      dk(  sJ y )Nr   r~   r   rT   )r   r   add_edger   ry   s     r   test_density_selfloopz"TestFunction.test_density_selfloop   sU    HHJ	

1azz!}###	

1azz!}###r   c                    t        j                  | j                        }|j                  sJ t	        j
                  t         j                  |j                  d       t	        j
                  t         j                  |j                  dg       t	        j
                  t         j                  |j                  d       t	        j
                  t         j                  |j                  dg       t	        j
                  t         j                  |j                  dd       t	        j
                  t         j                  |j                  dg       t	        j
                  t         j                  |j                  dd       t	        j
                  t         j                  |j                  dg       t	        j
                  t         j                  |j                         t	        j
                  t         j                  |j                          y )Nr   r   r"   )r   freezer   frozenpytestraisesNetworkXErrorr   add_nodes_fromremove_noderemove_nodes_fromr   add_edges_fromremove_edgeremove_edges_fromclear_edgesclearry   s     r   test_freezezTestFunction.test_freeze   s3   IIdffxxxb&&

A6b&&(8(81#>b&&q9b&&(;(;aSAb&&

Aq9b&&(8(86(Cb&&q!<b&&(;(;fXFb&&6b&&0r   c                     t        j                  | j                        rJ t        j                  | j                        }|j                  t        j                  | j                        k(  sJ |j                  sJ y r   )r   	is_frozenr   r   r   ry   s     r   test_is_frozenzTestFunction.test_is_frozen  sT    <<'''IIdffxx2<<////xxxr   c                     t        j                  t        j                  d            }|j                  d   }d|d<   |d   dk(  sJ y )Nr   r   Tnode_attribute)r   r   
path_graphr2   )r/   r   r_   s      r   6test_node_attributes_are_still_mutable_on_frozen_graphzCTestFunction.test_node_attributes_are_still_mutable_on_frozen_graph  sE    IIbmmA&'wwqz!%$%---r   c                     t        j                  t        j                  d            }|j                  d   }d|d<   |d   dk(  sJ y )Nr   r   Tedge_attribute)r   r   r   r7   )r/   r   edges      r   6test_edge_attributes_are_still_mutable_on_frozen_graphzCTestFunction.test_edge_attributes_are_still_mutable_on_frozen_graph  sE    IIbmmA&'wwv!%$%---r   c                 p   t        j                  d      }t        j                  t	        |      d      }t	        t        j
                  ||d               }t        |      t        |      dz
  k(  sJ t        j                  d      }t        j                  t	        |      d      d   }t	        t        j
                  ||            }|dk7  r|dk7  rt        |      dk(  sJ t        |      dk(  sJ t        j                  d      }t	        t        j
                  |d            }t        |      dk(  sJ y )Nd   r   r   c   r   )	r   complete_graphrandomsampler$   r@   lenr   
star_graphr/   ru   popnborsr_   s        r   test_neighbors_complete_graphz*TestFunction.test_neighbors_complete_graph  s    !!#&mmDK+R\\%Q015zSZ!^+++c"}}T%[!,Q/R\\%./19u:?"?u:?"? b!R\\%+,5zRr   c                    t        j                  d      }t        j                  t	        |      d      }t        j
                  ||d         }t        |      dk(  sJ t        j                  d      }t        j                  t	        |      d      d   }t        j
                  ||      }|dk7  r|dk7  rt        |      dk(  sJ t        |      dk(  sJ t        j                  d      }t        j
                  |d      }t        |      dk(  sJ t        j                         }|j                  t        d             t        j
                  |d      }t        |      dk(  sJ y )	Nr   r   r   r   a   b   
   	   )r   r   r   r   r$   non_neighborsr   r   r   r   r   r%   r   s        r   test_non_neighborszTestFunction.test_non_neighbors.  s)   !!#&mmDK+  A/5zQc"}}T%[!,Q/  -19u:###u:### b!  *5zQ 
U2Y'  *5zQr   c                 v   t        j                  d      }t        t        j                  |            }t	        |      dk(  sJ t        j
                  d      }g d}t        t        j                  |            }|D ]  \  }}||f|v r||f|v rJ  t        j                  d      }g d}t        t        j                  |            }|D ]  \  }}||f|v r||f|v rJ  t        j                         }|j                  g d       g d}t        t        j                  |            }|D ]  }||v rJ  y )Nr   r   r   )r   r   r   r   )r"   r   r   r   r   r   r   r   r   r   )r   )r   r   )r   r   )r   r    r"   )	r   r   r$   	non_edgesr   r   r   r(   r   )r/   ru   nedgesexpecteduves          r   test_non_edgeszTestFunction.test_non_edgesI  s4   !!!$bll5)*6{aa +bll5)* 	8DAqq6V#1v'777	8 a Cbll5)* 	8DAqq6V#1v'777	8 

56+bll5)* 	A;;	r   c                    t        j                         }t        j                  |      rJ t        j                  d      }t        j                  |      rJ t        j                  |d      rJ |j	                  d       |j                  ddd       t        j                  |      rJ t        j                  |d      sJ t        j                         }|j                  g d       t        j                  |      sJ t        j                  |d      sJ |j                         }t        j                  |      sJ t        j                  |d      sJ t        j                  t         j                  t         j                  |d       y )	Nr   r   r   r<   r   )03r   r   1)r   r   r   r   2r   )r   r   r   r   r   r   r   r   r"   )r   r   is_weightedr   r   r   r(   add_weighted_edges_fromto_undirectedr   r   r   ry   s     r   test_is_weightedzTestFunction.test_is_weightedc  s*   HHJ>>!$$$MM!>>!$$$>>!V,,,	

1	

1a
">>!$$$~~a(((JJL	!!		
 ~~a   ~~a,,,OO~~a   ~~a,,,b&&6Br   c                 z   t        j                         }t        j                  |      rJ |j                  d       |j	                  g d       t        j                  |      rJ |j                  ddd       t        j                  |d      rJ |j                  g d       d|d   d	   d
<   t        j                  |      rJ t        j                  |d      rJ d|d   d   d<   t        j                  |d      sJ t        j                  |      sJ t        j                         }|j                  g d       t        j                  |      sJ t        j                  |d      rJ t        j                  |d      sJ t        j                  t         j                  t         j                  |d       y )Nr   )r   r   r   r   r   r   r<   r"   )r   r   )r      bluer   colorr   r;   r   )r   r   )r   r   r   r   )r   r   r   )r   r   r   r   )r   r   is_negatively_weightedr   r   r   r   r(   r   r   r   r   ry   s     r   test_is_negatively_weightedz(TestFunction.test_is_negatively_weighted  s{   HHJ,,Q///	

1	&,,Q///	

1a
",,Q777	12!!Q,,Q///,,Q777!Q((F333((+++JJL	!!		
 ((+++,,Q
;;;((J777b&&(A(A1fMr   N)__name__
__module____qualname__r0   r3   r9   r>   rA   rD   rH   rK   r[   rb   rg   rn   rq   rz   r|   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r      s    	HE

 LHH@282,h$2L7(

9>$$1.. *64CB#Nr   r   c                   F    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zy	)
TestCommonNeighborsc                 l     t        t        j                         _         fd}t        |       _        y )Nc                 L    t        j                  | ||            }||k(  sJ y r   )r8   func)r   r   r   r   resultclss        r   	test_funcz2TestCommonNeighbors.setup_class.<locals>.test_func  s(    CHHQ1-.FX%%%r   )staticmethodr   common_neighborsr   test)r   r   s   ` r   setup_classzTestCommonNeighbors.setup_class  s(     3 34	&  	*r   c                 Z    t        j                  d      }| j                  |ddg d       y )Nr   r   r   )r   r   r   r   r   r   ry   s     r   test_K5zTestCommonNeighbors.test_K5  s$    a 		!Q9%r   c                 X    t        j                  d      }| j                  |dddg       y )Nr   r   r   r   )r   r   r   ry   s     r   test_P3zTestCommonNeighbors.test_P3  $    MM!		!QA3r   c                 X    t        j                  d      }| j                  |dddg       y )Nr   r   r   r   )r   r   r   ry   s     r   test_S4zTestCommonNeighbors.test_S4  r   r   c                     t        j                  t        j                        5  t        j                         }|j                  ddg       | j                  |dd       d d d        y # 1 sw Y   y xY w)Nr   r"   r   r   )r   r   r   NetworkXNotImplementedr(   r   r   ry   s     r   test_digraphz TestCommonNeighbors.test_digraph  sW    ]]2445 	

Aff-.IIaA	 	 	s   ;A((A1c                 l   t        j                  d      }t        j                  t         j                  t         j
                  |dd       t        j                  t         j                  t         j
                  |dd       t        j                  t         j                  t         j
                  |dd       y )Nr   r   r   )r   r   r   r   r   r   ry   s     r   test_nonexistent_nodesz*TestCommonNeighbors.test_nonexistent_nodes  sr    a b&&(;(;Q1Eb&&(;(;Q1Eb&&(;(;Q1Er   c                 z    t        j                         }|j                  ddg       | j                  |ddg        y)zCase of no common neighbors.r   r   N)r   r   r   r   ry   s     r   test_custom1z TestCommonNeighbors.test_custom1  s1    HHJ	!Q 		!Q2r   c                 Z    t        j                  d      }| j                  |ddg d       y)zCase of equal nodes.r   r   r   Nr   ry   s     r   test_custom2z TestCommonNeighbors.test_custom2  s$    a 		!Q9%r   N)r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r   r   r     s8    + +&  F&r   r   
graph_typec           
         t        j                  d|       }d}d}t        j                  |||       |j                  d   |   |k(  sJ |j                  d   |   |k(  sJ |j                  d   |   |k(  sJ t        j                  d|       }t	        t        t        |j                               t        t        |                        }d}t        j                  |||       |j                  d   |   dk(  sJ |j                  d   |   dk(  sJ |j                  d   |   dk(  sJ t        j                  d|       }dd	d
}t        j                  |j                         |      }|j                  d       t        j                  ||       |j                  d   i k(  sJ |j                  d   d   dk(  sJ |j                  d   d   d	k(  sJ y )Nr   create_usingr   hellor   r   r   hi   r   r   )r   r   set_node_attributesr2   dictzipr8   r%   r   rw   r   )r   r   valsattrds        r   test_set_node_attributesr    s   
 	aj1ADD1dD)771:dt###771:dt###771:dt### 	aj1AF1779%uSV}56DD1dD)771:dq   771:dq   771:dq    	aj1A3A==A&DHHQK1d#771:771:dq   771:g#%%%r   )valuesr   redr   r   r   c                     t        j                         }|j                  d       t        j                  || |       |j                  d   d   dk(  sJ d|j                  vsJ y)z
    When `values` is a dict or dict-of-dict keyed by nodes, ensure that keys
    that correspond to nodes not in G are ignored.
    r   r   r  r   N)r   r   r   r   r2   r  r   r   s      r   ,test_set_node_attributes_ignores_extra_nodesr    sY     	
AJJqM1fd+771:g%'''AGGr   c           
         t        j                  d|       }d}d}t        j                  |||       |d   d   |   |k(  sJ |d   d   |   |k(  sJ t        j                  d|       }d}dd	g}t        t	        |t        t        |                        }t        j                  |||       |d   d   |   dk(  sJ |d   d   |   dk(  sJ t        j                  d|       }dd
d}dg}t        j                  ||      }t        j                  ||       |d   d   d   dk(  sJ |d   d   d   d
k(  sJ |d   d   i k(  sJ y )Nr   r   r   r   r   r   r   r   r"   r   r   r   r   set_edge_attributesr  r  r%   r   rw   r   r   r  r  r7   r  s         r   test_set_edge_attributesr    sq    	aj1ADD1dD)Q474=D   Q474=D    	aj1ADVEE5U,-.D1dD)Q474=AQ474=A 	aj1A3AHE=="D1d#Q474=AQ477s"""Q47b==r   rd   rT   )r   r   r;   c                     t        j                  dg      }t        j                  || |       |d   d   d   dk(  sJ d|j                  vsJ y)If `values` is a dict or dict-of-dicts containing edges that are not in
    G, data associate with these edges should be ignored.
    r   r   r   r;   rd   r   N)r   r   r  r7   r
  s      r   ,test_set_edge_attributes_ignores_extra_edgesr  +  sS     	&A1fd+Q478###   r   c           
         t        j                  d|       }d}d}t        j                  |||       |d   d   d   |   |k(  sJ |d   d   d   |   |k(  sJ t        j                  d|       }d}dd	g}t        t	        |t        t        |                        }t        j                  |||       |d   d   d   |   dk(  sJ |d   d   d   |   dk(  sJ t        j                  d|       }dd
d}dg}t        j                  ||      }t        j                  ||       |d   d   d   d   dk(  sJ |d   d   d   d   d
k(  sJ |d   d   d   i k(  sJ y )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r  r  s         r   test_set_edge_attributes_multir  <  s    	aj1ADD1dD)Q471:dt###Q471:dt### 	aj1AD	"EE5U,-.D1dD)Q471:dq   Q471:dq    	aj1A3AKE=="D1d#Q471:dq   Q471:g#%%%Q471:r   )r  r   r   r   c                     t        j                  ddg      }t        j                  || |       |d   d   d   d   dk(  sJ |d   d   d   i k(  sJ d|j                         vsJ y)	r  r  r   r   r   r   r   r;   rd   r   N)r   
MultiGraphr  r7   r
  s      r   2test_set_edge_attributes_multi_ignores_extra_edgesr  Z  sv     	y),-A1fd+Q471:h3&&&Q471:"""r   c                     t        j                         t        j                         t        j                         t        j                         g} | D ]  }t        j
                  d|      }d}d}t        j                  |||       t        j                  ||      }|d   |k(  sJ |d   |k(  sJ |d   |k(  sJ d}|j                  d       t        j                  |||	      }|d   |k(  rJ  y )
Nr   r   r   r   r   r   r   r   default)	r   r   r(   r  MultiDiGraphr   r   get_node_attributesr   )graphsr   r  r  attrsdefault_vals         r   test_get_node_attributesr$  l  s    hhj"**,9JKF 'MM!!,
q$-&&q$/Qx4Qx4Qx4	

1&&q$DQx;&&&'r   c                  B   t        j                         t        j                         t        j                         t        j                         g} | D ]  }t        j
                  d|      }d}d}t        j                  |||       t        j                  ||      }t        |      dk(  sJ |j                  D ]  }||   |k(  rJ  |}|j                  dd       t        j                  |||      }t        |      dk(  sJ |j                  D ]  }||   |k(  rJ   y )	Nr   r   r   r   r   r   r   r  )r   r   r(   r  r  r   r  get_edge_attributesr   r7   r   )r!  r   r  r  r"  r   r#  deafult_attrss           r   test_get_edge_attributesr(  }  s   hhj"**,9JKF /MM!!,
q$-&&q$/5zQGG 	'D;$&&&	' 	

1a..q$L=!Q&&&GG 	/D &$...	/!/r   c                 T
   t        j                  d|       }d}d}t        j                  |||       t        j                  ||       ||j                  d   vsJ ||j                  d   vsJ ||j                  d   vsJ t        j                  d|       }d}d	}t        j                  |||       t        j                  |||       t        j                  ||       ||j                  d   vsJ |j                  d   |   |k(  sJ ||j                  d   vsJ |j                  d   |   |k(  sJ ||j                  d   vsJ |j                  d   |   |k(  sJ t        j                  d|       }t        j                  |||       t        j                  |||       t        j                  |||       ||j                  d   vr||j                  d   vsJ ||j                  d   vr||j                  d   vsJ ||j                  d   vr||j                  d   vsJ t        j                  d|       }d
}d}t        j                  ||j	                         D ci c]  }|||||||i c}       t        j                  |||       ||j                  d   vr||j                  d   vsJ ||j                  d   vr||j                  d   vsJ ||j                  d   vr||j                  d   vsJ |j                  d   |   |k(  sJ |j                  d   |   |k(  sJ |j                  d   |   |k(  sJ t        j                  d|       }t        j                  |||||i||||id       t        j                  ||       ||j                  d   vsJ ||j                  d   vsJ ||j                  d   vsJ |j                  d   |   |k(  sJ |j                  d   |   |k(  sJ t        j                  d|       }t        j                  ||j	                         D ci c]  }|||||||i c}       t        j                  |||ddg       ||j                  d   vr||j                  d   vsJ ||j                  d   vr||j                  d   vsJ ||j                  d   v r||j                  d   v sJ ||j                  d   v r|j                  d   |   |k(  sJ ||j                  d   v r|j                  d   |   |k(  sJ y c c}w c c}w )Nr   r   r   r   r   r   r   r   other,  threer"   r5   )r   r   r   remove_node_attributesr2   )	r   r   r  r  
other_vals
other_attr
third_vals
third_attrns	            r   test_remove_node_attributesr3    sV   
 	aj1ADD1dD)a&qwwqz!!!qwwqz!!!qwwqz!!! 	aj1AJJ1dD)1j*5a&qwwqz!!!771:j!Z///qwwqz!!!771:j!Z///qwwqz!!!771:j!Z/// 	aj1A1dD)1j*5az2qwwqz!j
&BBBqwwqz!j
&BBBqwwqz!j
&BBB 	aj1AJJ	 WWY	
 dJ
J
KK	
 aZ8QWWQZ'Jaggaj,HHHQWWQZ'Jaggaj,HHHQWWQZ'Jaggaj,HHH771:dt###771:dt###771:dt### 	aj1A	dJ
3dJ
3	
 a&qwwqz!!!qwwqz!!!qwwqz!!!771:j!Z///771:j!Z/// 	aj1A	 WWY	
 dJ
J
KK	
 az1a&Aqwwqz!j
&BBBqwwqz!j
&BBB1771:*
":::#
:(>*(LLL#
:(>*(LLL(LW	
B	
s   $T 
1T%
c                    t        j                  d|       }d}d}t        j                  |||       t        j                  ||       t	        t        j
                  ||            dk(  sJ t        j                  d|       }d}d}t        j                  |||       t        j                  |||       t        j                  ||       ||d   d   vsJ ||d   d	   vsJ |d   d   |   dk(  sJ |d   d	   |   dk(  sJ t        j                  d|       }t        j                  |||       t        j                  |||       t        j                  |||       ||d   d   vr
||d   d   vsJ ||d   d	   vr
||d   d	   vsJ t        j                  d|       }d
}d}t        j                  ||j                         D 	ci c]  \  }}	||	f||||||i c}	}       t        j                  |||       ||d   d   vr
||d   d   vsJ ||d   d	   vr
||d   d	   vsJ |d   d   |   |k(  sJ |d   d	   |   |k(  sJ t        j                  d|       }t        j                  |d||||ii       t        j                  ||       ||d   d   vr|d   d   |   |k(  sJ ||d   d	   vsJ t        j                  d|       }t        j                  ||j                         D 	ci c]  \  }}	||	f||||||i c}	}       t        j                  |||dg       ||d   d   vr
||d   d   vsJ ||d   d	   v r
||d   d	   v sJ y c c}	}w c c}	}w )Nr   r   r   r   r   r*  r   r   r   thirdr+  r   ebunch)r   r   r  remove_edge_attributesr   r&  r7   )
r   r   r  r  r/  r.  r1  r0  r   r   s
             r   test_remove_edge_attributesr9    s    	aj1ADD1dD)a&r%%a./1444 	aj1AJJ1dD)1j*5a&qtAwqtAwQ47:#%%%Q47:#%%% 	aj1A1dD)1j*5az2qtAw:QqT!W#<<<qtAw:QqT!W#<<< 	aj1AJJ	 		
1 FT4ZZPP	
 aZ8QqT!W$1Q47)BBBQqT!W$1Q47)BBBQ474=D   Q474=D    	aj1A1vdJ
'KLMa,QqT!W$1a$)>>>QqT!W$$$ 	aj1A	 		
1 FT4ZZPP	
 aZIQqT!W$1Q47)BBB1a Z1Q47%:::%:;	
,	
s   
M3Mc                 6	   t        j                  d|       }|j                  dd       d}d}t        j                  |||       t        j                  ||       ||d   d   d   vsJ ||d   d   d   vsJ ||d   d   d   vsJ t        j                  d|       }|j                  dd       d}d	}t        j                  |||       t        j                  |||       t        j                  ||       ||d   d   d   vsJ ||d   d   d   vsJ ||d   d   d   vsJ |d   d   d   |   |k(  sJ |d   d   d   |   |k(  sJ |d   d   d   |   |k(  sJ t        j                  d|       }|j                  dd       t        j                  |||       t        j                  |||       t        j                  |||       ||d   d   d   vr||d   d   d   vsJ ||d   d   d   vr||d   d   d   vsJ ||d   d   d   vr||d   d   d   vsJ t        j                  d|       }|j                  dd       d
}d}t        j                  ||j                  d      D 	
ci c]  \  }}	}
||	|
f||||||i c}
}	}       t        j                  |||       ||d   d   d   vr||d   d   d   vsJ ||d   d   d   vr||d   d   d   vsJ ||d   d   d   vr||d   d   d   vsJ |d   d   d   |   |k(  sJ |d   d   d   |   |k(  sJ |d   d   d   |   |k(  sJ t        j                  d|       }|j                  dd       t        j                  |||||i||||id       t        j                  ||       ||d   d   d   vr|d   d   d   |   |k(  sJ ||d   d   d   vsJ ||d   d   d   vsJ t        j                  d|       }|j                  dd       t        j                  |||||i||||i||||id       t        j                  ||ddg       ||d   d   d   vr||d   d   d   v sJ ||d   d   d   vr||d   d   d   v sJ ||d   d   d   v r||d   d   d   v sJ y c c}
}	}w )Nr   r   r   r   r   r   r   r*  r   r5  r+  Tkeys)r  r   r   r   )r  r   r=  r  r   r6  )r   r   r   r  r8  r7   )r   r   r  r  r/  r.  r1  r0  r   r   ks              r   !test_remove_multi_edge_attributesr?  1  s    	aj1AJJq!DD1dD)a&qtAwqz!!!qtAwqz!!!qtAwqz!!! 	aj1AJJq!JJ1dD)1j*5a&qtAwqz!!!qtAwqz!!!qtAwqz!!!Q471:j!Z///Q471:j!Z///Q471:j!Z/// 	aj1AJJq!1dD)1j*5az2qtAwqz!j!Q
&BBBqtAwqz!j!Q
&BBBqtAwqz!j!Q
&BBB 	aj1AJJq!JJ	 777-	
 	
1a 1IdJ
J
SS	
 aZ8QqT!WQZ'Jad1gaj,HHHQqT!WQZ'Jad1gaj,HHHQqT!WQZ'Jad1gaj,HHHQ471:dt###Q471:dt###Q471:dt### 	aj1AJJq!	dJ
;dJ
;	
 a,QqT!WQZ'AaDGAJt,<,DDDQqT!WQZ'''QqT!WQZ''' 	aj1AJJq!	dJ
;dJ
;dJ
;	
 ay).DEqtAwqz!jAaDGAJ&>>>qtAwqz!jAaDGAJ&>>>1Q471:*!Q
":::":U	
s   4Rc                     t        j                         t        j                         t        j                         t        j                         g} | D ]t  }t        j
                  |      sJ |j                  t        d             t        j
                  |      sJ |j                  ddg       t        j
                  |      stJ  y )Nr   r"   r   )	r   r   r(   r  r  is_emptyr   r%   r   )r!  r   s     r   test_is_emptyrB    s    hhj"**,9JKF "{{1~~	q"{{1~~	&&)*;;q>!!"r   c                 `   t        j                  d|       }|j                  dd       t        t        j                  |      dg      sJ t        t        j                  |      dg      sJ t        t        j                  |d      ddi fg      sJ t        j                  |      dk(  sJ y )Nr   r   r   r   r   TrU   r   )r   r   r   r   nodes_with_selfloopsr   selfloop_edgesnumber_of_selfloopsr   r   s     r   test_selfloopsrI    s     	!*5AJJq!r..q1A3777r((+fX666r((6!QEEE!!!$)))r   c                 "   t        j                  d|       }|j                  dd       |j                  ddd       t        t        j                  |d      ddi fddd	difg      sJ t        t        j                  |d	      d
dg      sJ y )Nr   r   r   r   r   r<   TrU   r;   )r   r   N)r   r   r   )r   r   r   r   rF  rH  s     r   test_selfloop_edges_attrrK    s     	!*5AJJq!JJq!AJ
!$'1a*q!h]6K)L   r((:\9<UVVVr   c                      t        j                  dt         j                        } | j                  ddd       | j                  ddd       t	        t        j
                  | dd	      d
dg      sJ y )Nr   r   r   r   r<   r   r;   TrV   r<  )r   r   r   r   )r   r   r   r   )r   r   r  r   r   rF  r
   s    r   ,test_selfloop_edges_multi_with_data_and_keysrN    sg    
!"--8AJJq!BJJJq!CJ 
!(68W  r   c                    t        j                  d|       }|j                  dd       |j                  t        j                  |d             |j                  dd       |j                  t        j                  |d             |j                  dd       |j                  t        j                  |dd             y )Nr   r   r   Tr;  rU   )r<  rV   )r   r   r   r   rF  rH  s     r   test_selfloops_removalrP    s    
!*5AJJq!))!$78JJq!))!$78JJq!))!$TBCr   c                    t        j                  d|       }|j                  dd       |j                  dd       |j                  t        j                  |             d|j                         vsJ |j                  dd       |j                  dd       t        j                  t              5  |j                  t        j                  |d             ddd       |j                  dd       |j                  dd       t        j                  t              5  |j                  t        j                  |d             ddd       |j                  dd       |j                  dd       t        j                  t              5  |j                  t        j                  |dd	             ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)
z[test removing selfloops behavior vis-a-vis altering a dict while iterating.
    cf. gh-4068r   r   r   rD  Tr;  NrU   rM  )
r   r   r   r   rF  r7   r   r   RuntimeError	TypeErrorrH  s     r   test_selfloops_removal_multirT    sw    	!*5AJJq!JJq!))!,-"""JJq!JJq!	|	$ =	B--ad;<= JJq!JJq!	y	! =	B--ad;<= JJq!JJq!	|	$ H	B--adFGH H= =
= =
H Hs$   1'F:'G	(G:GGGc                     g d} g d}t        j                         t        j                         t        j                         t        j                         g}dddddfdddd	dfdddddfg}|D ]  }|j                  |       t        j                  || d
      d	k(  sJ t        j                  || d      dk(  sJ t        j                  t         j                  t         j                  ||d
        y )Nr   )r   r   r   r   r   r   r   )costdistr   r   rV  rW  )
r   r   r(   r  r  r   path_weightr   r   NetworkXNoPath)
valid_pathinvalid_pathr!  r7   ru   s        r   test_pathweightr\    s    JLhhj"**,9JKF	
A1%&	
A1%&	
A1%&E
  VU#~~eZ8A===~~eZ8A===b''fU	Vr   r   c                     | j                  g d       g d}g d}g d}t        j                  | |      sJ t        j                  | |      rJ t        j                  | |      rJ y )N)r"   r   r"   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   is_path)r   rZ  r[  another_invalid_paths       r   test_ispathr`    sc     56JL*::a$$$zz!\***zz!12222r   c                     | j                  g d       | j                  d       t        j                  | g dddg      }t	        |j                               h dk(  sJ t	        |j                               dhk(  sJ y )Nr   r   r   r   r   r"   r      r   r   r   r!   r   r   r   restricted_viewsetr2   r7   r   rm   s     r   test_restricted_viewrh    sg    EFJJqM
1i&&)9:Aqwwy>Y&&&qwwy>fX%%%r   c                     | j                  g d       | j                  d       t        j                  | g dddg      }t	        |j                               h dk(  sJ t	        |j                               dhk(  sJ y )N)r  r  )r   r   r   r  )r   r   r   )r   r   r   r   r   rb  r   )r   r   r   rc  r!   rd  rg  s     r   test_restricted_view_multirj    sk    U JJqM
1i)Y)?@Aqwwy>Y&&&qwwy>fX%%%r   )%r   r   networkxr   networkx.utilsr   r   r   r   r   markparametrizer   r(   r  r  r  r  r  r  r  r  r$  r(  r3  r9  r?  rB  rI  rK  rN  rP  rT  r\  r`  rh  rj  r   r   r   <module>ro     s?      3(
YN YNx,& ,&^ 288RZZH&&< v	(u7F"3	4d;		 "**'=> ?: s	#X.S/Hc?	;TB!! r'GH I: S	)84_(C	A4H##'"/, 288RZZHSMSMl "**'=>A; ?A;H r'GHV; IV;r" 288RZZH** 288RZZHWW "**'=>D ?D r'GHH IH4V  ("((*jbjjlMBMMO_R__5F	G33 xrxxz:2::<89& :& }r}}0ABC& D&r   