
    Gdd                     X   d dl Z d dlZd dlZd dlmZmZ  G d d          Z G d d          Zej	        
                    dej        ej        ej        ej        f          d             Zej	        
                    d	d
dddfdd
iddiddff          d             Zej	        
                    dej        ej        f          d             Zej	        
                    d	ddddfddiddiddff          d             Zej	        
                    dej        ej        f          d             Zej	        
                    d	ddddfddiddiddff          d             Zd Zd Zd Zej	        
                    dej        ej        ej        ej        g          d             Zej	        
                    dej        ej        ej        ej        g          d             Zd Zej	        
                    dej        ej        g          d             Zej	        
                    dej        ej        g          d             Zd  Zej	        
                    d! ej                     ej                     ej                     ej                    f          d"             Zej	        
                    d! ej                     ej                    f          d#             Zej	        
                    d! ej                     ej                    f          d$             Z dS )%    N)edges_equalnodes_equalc                       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dS )TestFunctionc                    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| _        d S )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
   )nxGraphGGdegreelistrangeGnodesGedgesDiGraphDGDGin_degreeDGout_degreeDGnodesDGedgesselfs    Dlib/python3.11/site-packages/networkx/classes/tests/test_function.pysetup_methodzTestFunction.setup_method
   s    iiiIII"==FKKKqQ155588nnFFF*yyyR@@AA Q1q99 !aA!::E!HH~~GGG    c                 :   t          | j                                        t          t	          j        | j                                      sJ t          | j                                        t          t	          j        | j                                      sJ d S N)r   r   nodesr   r   r"   r'   s    r)   
test_nodeszTestFunction.test_nodes   sp    46<<>>40@0@+A+ABBBBB47==??D$'1B1B,C,CDDDDDDDr+   c           
         t          | j                                        t          t	          j        | j                                      sJ t          | j                                                  t          t	          j        | j                            k    sJ t          | j                            g d          t          t	          j        | j        g d                              sJ t          | j                            g d                    t          t	          j        | j        g d                    k    sJ d S )N)r   r	   r   nbunch)r   r   edgesr   r   sortedr"   r'   s    r)   
test_edgeszTestFunction.test_edges   s"   46<<>>40@0@+A+ABBBBBdgmmoo&&&$'1B1B*C*CCCCCFLL			L**D$&1S1S1S,T,T
 
 	
 	
 	
 dgmm999m5566&HTWYYY///;
 ;
 
 
 
 
 
 
r+   c           
         t          | j                                        t          t	          j        | j                                      sJ t          | j                                                  t          t	          j        | j                            k    sJ t          | j                            ddg          t          t	          j        | j        ddg                              sJ t          | j                            ddg                    t          t	          j        | j        ddg                    k    sJ t          | j                            d          t          t	          j        | j        d                              sJ t          | j                            d                    t          t	          j        | j        d                    k    sJ d S )Nr   r	   r1   weightr7   )r   r   degreer   r   r4   r"   r'   s    r)   test_degreezTestFunction.test_degree#   s   46==??D461B1B,C,CDDDDDdgnn&&''6")DG2D2D+E+EEEEEFMM!QM(($ryA/O/O/O*P*P
 
 	
 	
 	
 dgnnQFn3344Idgq!f---9
 9
 
 
 
 
 FMMM**D46(1S1S1S,T,T
 
 	
 	
 	
 dgnnHn5566&Idgh///;
 ;
 
 
 
 
 
 
r+   c                 N   t          | j                            d                    t          t          j        | j        d                    k    sJ t          | j                            d                    t          t          j        | j        d                    k    sJ d S )Nr	   )r   r   	neighborsr   r"   r'   s    r)   test_neighborszTestFunction.test_neighbors3   s    DF$$Q''((Ddfa1H1H,I,IIIIIDG%%a(())T",tw2J2J-K-KKKKKKKr+   c                     | j                                         t          j        | j                   k    sJ | j                                        t          j        | j                  k    sJ d S r-   )r   number_of_nodesr   r"   r'   s    r)   test_number_of_nodesz!TestFunction.test_number_of_nodes7   `    v%%''2+=df+E+EEEEEw&&((B,>tw,G,GGGGGGGr+   c                     | j                                         t          j        | j                   k    sJ | j                                        t          j        | j                  k    sJ d S r-   )r   number_of_edgesr   r"   r'   s    r)   test_number_of_edgesz!TestFunction.test_number_of_edges;   rA   r+   c                     | j                                         t          j        | j                   k    sJ | j                                        t          j        | j                  k    sJ d S r-   )r   is_directedr   r"   r'   s    r)   test_is_directedzTestFunction.test_is_directed?   s^    v!!##r~df'='=====w""$$tw(?(???????r+   c           	         | j                                         }g d}t          j        ||           t	          |                    |          g d          sJ | j                                         }t          j        ||d           t	          |                    |d          ddd	difdd
d	difddd	difg          sJ | j                                         }dg}t          j        ||           t          |t          | j                   |z             sJ | j                                         }g }t          j        ||           t          |j        | j	                  sJ t	          |j        | j         j                  sJ d S )N            )rJ   rK   )rJ   rL   rJ   rM          @r8   TdatarJ   rK   r7   rL   rM   )
r   copyr   add_starr   r3   r   r   r.   r   r(   r   nlists      r)   test_add_starzTestFunction.test_add_starC   s   FKKMM   
Au1775>>+I+I+IJJJJJFKKMM
AuS))))GGEG%%R(C)R(C)R(C)
 
 	
 	
 	
 FKKMM
Au1d46llU233333FKKMM
Au17DK0000017DFL1111111r+   c           	         | j                                         }g d}t          j        ||           t	          |                    |          g d          sJ | j                                         }t          j        ||d           t	          |                    |d          ddd	difdd
d	difd
dd	difg          sJ | j                                         }dg}t          j        ||           t	          |                    |          g           sJ t          |t          | j                   dgz             sJ | j                                         }t          dg          }t          j        ||           t	          |                    dg          g           sJ t          |t          | j                   dgz             sJ | j                                         }dg}t          j        ||           t	          |                    |          g           sJ t          |t          | j                   dgz             sJ | j                                         }t          dg          }t          j        ||           t	          |                    dg          g           sJ t          |t          | j                   dgz             sJ | j                                         }g }t          j        ||           t	          |j        | j         j                  sJ t          |t          | j                             sJ | j                                         }t          g           }t          j        ||           t	          |j        | j         j                  sJ t          |t          | j                             sJ d S )NrI   )rN   rK   rL   rL   rM   rP   r8   TrQ   rJ   rK   r7   rL   rM   node)	r   rS   r   add_pathr   r3   r   r   iterrU   s      r)   test_add_pathzTestFunction.test_add_path_   sm   FKKMM   
Au1775>>+I+I+IJJJJJFKKMM
AuS))))GGEG%%R(C)R(C)R(C)
 
 	
 	
 	
 FKKMM
Au1775>>2.....1d46llfX566666FKKMMfX
Au177F8,,b111111d46llfX566666FKKMM
Au1775>>2.....1d46llbT122222FKKMMbT


Au177B4=="-----1d46llbT122222FKKMM
Au17DFL111111d46ll+++++FKKMMR
Au17DFL111111d46ll+++++++r+   c                 h   | j                                         }g d}g dg dg}t          j        ||           t	          |                    |                    |v s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	          |                    |d                    |v sJ | j                                         }dg}t          j        ||           t          |t          | j                   |z             sJ | j                                         }g }t          j        ||           t          |j        | j	                  sJ t          |j        | j         j                  sJ d S )NrI   )rN   rO   rY   rZ   )rN   rY   rZ   )rM   rJ   rJ   rK   r7         ?rM   rL   r8   TrQ   )r   rS   r   	add_cycler4   r3   r   r   r.   r   r   )r(   r   rV   oklistss       r)   test_add_cyclezTestFunction.test_add_cycle   s   FKKMM   444444
 	Qaggenn%%0000FKKMM R(C)R(C)R(C)R(C)	 R(C)R(C)R(C)R(C)	
 	Qc****agge$g//00G;;;;FKKMM
Q1d46llU233333FKKMM
Q17DK0000017DFL1111111r+   c                    | j                             g d          j        t          j        | j         g d          j        k    sJ | j                            g d          j        t          j        | j        g d          j        k    sJ | j                             g d          j        t          j        | j         g d          j        k    sJ | j                            g d          j        t          j        | j        g d          j        k    sJ t          j        | j                             g d          g d          }|j        | j         usJ |j        | j                             g d          j        k    sJ d S )N)r   r	   r
   r   r   )r   subgraphadjr   r"   induced_subgraph_graph)r(   Hs     r)   test_subgraphzTestFunction.test_subgraph   sy   FOOLLL))-TV\\\1R1R1VVVVV G\\\**."+dg|||2T2T2XXXXX FOOLLL))-"46<<<88<= = = = G\\\**."47LLL99=> > > >  = =yyyIIxtv%%%%u			226666666r+   c                    | j                             ddg          j        t          j        | j         ddg          j        k    sJ | j                            ddg          j        t          j        | j        ddg          j        k    sJ d S )Nr   r   )r   edge_subgraphrf   r   r"   r'   s    r)   test_edge_subgraphzTestFunction.test_edge_subgraph   s    F  &&!1226(899=> > > > G!!66"2337&&)9::>? ? ? ? ? ?r+   c                    t          j        | j        d          }t          |t	          | j                            sJ |j        i k    sJ |j        i                     | j                                        i           k    sJ |j	        i                     | 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                                        i           k    sJ d S )NF)	with_data)
r   create_empty_copyr   r   r   graph_nodefromkeysr.   _adjr(   r   s     r)   test_create_empty_copyz#TestFunction.test_create_empty_copy   s+    59991d46ll+++++w"}}}}w"++dfllnnb999999vTV\\^^R888888 ((1d46ll+++++w$&,&&&&w$&,&&&&vTV\\^^R88888888r+   c                 H    t          j        | j                  g dk    sJ d S )N)r	   r	   r	   r	   r	   )r   degree_histogramr   r'   s    r)   test_degree_histogramz"TestFunction.test_degree_histogram   s*    "46**ooo======r+   c                    t          j        | j                  dk    sJ t          j        | j                  dk    sJ t          j                    }|                    d           t          j        |          dk    sJ d S )Ng      ?g333333?r	           )r   densityr   r"   r   add_noderu   s     r)   test_densityzTestFunction.test_density   su    z$&!!S((((z$'""c))))HJJ	

1z!}}######r+   c                     t          j                    }|                    dd           t          j        |          dk    sJ |                    dd           t          j        |          dk    sJ d S )Nr	   r{   r
   rP   )r   r   add_edger|   ru   s     r)   test_density_selfloopz"TestFunction.test_density_selfloop   sm    HJJ	

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

1az!}}######r+   c                 6   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                   d S )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clearru   s     r)   test_freezezTestFunction.test_freeze   s*   Idfxb&
A666b&(81#>>>b&q999b&(;aSAAAb&
Aq999b&(86(CCCb&q!<<<b&(;fXFFFb&666b&00000r+   c                     t          j        | j                  rJ t          j        | j                  }|j        t          j        | j                  k    sJ |j        sJ d S r-   )r   	is_frozenr   r   r   ru   s     r)   test_is_frozenzTestFunction.test_is_frozen  sY    <'''''Idfx2<//////xr+   c                     t          j        t          j        d                    }|j        d         }d|d<   |d         dk    sJ d S )Nr   r   Tnode_attribute)r   r   
path_graphr.   )r(   r   r[   s      r)   6test_node_attributes_are_still_mutable_on_frozen_graphzCTestFunction.test_node_attributes_are_still_mutable_on_frozen_graph  sN    IbmA&&''wqz!%$%------r+   c                     t          j        t          j        d                    }|j        d         }d|d<   |d         dk    sJ d S )Nr   r   Tedge_attribute)r   r   r   r3   )r(   r   edges      r)   6test_edge_attributes_are_still_mutable_on_frozen_graphzCTestFunction.test_edge_attributes_are_still_mutable_on_frozen_graph  sN    IbmA&&''wv!%$%------r+   c                    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k    r|dk    rt          |          dk    sJ nt          |          dk    sJ t          j        d          }t	          t          j        |d                    }t          |          dk    sJ d S )Nd   r	   r   c   r
   )	r   complete_graphrandomsampler   r<   lenr   
star_graphr(   rq   popnborsr[   s        r)   test_neighbors_complete_graphz*TestFunction.test_neighbors_complete_graph  s+   !#&&mDKK++R\%Q00115zzSZZ!^++++c""}T%[[!,,Q/R\%..//199u::?????u::???? b!!R\%++,,5zzRr+   c                    t          j        d          }t          j        t	          |          d          }t	          t          j        ||d                             }t          |          dk    sJ t          j        d          }t          j        t	          |          d          d         }t	          t          j        ||                    }|dk    r|dk    rt          |          dk    sJ nt          |          dk    sJ t          j        d          }t	          t          j        |d                    }t          |          dk    sJ t          j	                    }|
                    t          d                     t	          t          j        |d                    }t          |          dk    sJ d S )	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)  sw   !#&&mDKK++R%eSV44555zzQc""}T%[[!,,Q/R%eT2233199u::#####u::#### b!!R%eQ//005zzQ 

U2YY'''R%eQ//005zzQr+   c                    t          j        d          }t          t          j        |                    }t	          |          dk    sJ t          j        d          }g d}t          t          j        |                    }|D ]\  }}||f|v s||f|v sJ t          j        d          }g d}t          t          j        |                    }|D ]\  }}||f|v s||f|v sJ t          j                    }|                    g d           g d}t          t          j        |                    }|D ]}||v sJ 	d S )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(   rq   nedgesexpecteduves          r)   test_non_edgeszTestFunction.test_non_edgesD  s   !!$$bl5))**6{{aa  +++bl5))** 	8 	8DAqq6V##1v'7'7'7'7a  CCCbl5))** 	8 	8DAqq6V##1v'7'7'7'7 
555666+++bl5))** 	 	A;;;;;	 	r+   c                    t          j                    }t          j        |          rJ t          j        d          }t          j        |          rJ t          j        |d          rJ |                    d           |                    ddd           t          j        |          rJ t          j        |d          sJ t          j                    }|                    g d           t          j        |          sJ t          j        |d          sJ |                                }t          j        |          sJ t          j        |d          sJ t          j
        t           j        t           j        |d           d S )	Nr   r   r   r8   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   ru   s     r)   test_is_weightedzTestFunction.test_is_weighted^  su   HJJ>!$$$$$M!>!$$$$$>!V,,,,,	

1	

1a
""">!$$$$$~a(((((JLL	!!  		
 		
 		
 ~a     ~a,,,,,OO~a     ~a,,,,,b&6BBBBBr+   c                    t          j                    }t          j        |          rJ |                    d           |                    g d           t          j        |          rJ |                    ddd           t          j        |d          r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                    }|                    g d           t          j        |          sJ t          j        |d          rJ t          j        |d          sJ t          j
        t           j        t           j        |d           d S )Nr	   )r
   r   r   r   r
   r   r8   r   )r   r   )r
      bluer   colorr   r7   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   ru   s     r)   test_is_negatively_weightedz(TestFunction.test_is_negatively_weighted  s   HJJ,Q/////	

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

1a
""",Q77777	111222!!Q,Q/////,Q77777!Q(F33333(+++++JLL	!!  		
 		
 		
 (+++++,Q
;;;;;(J77777b&(A1fMMMMMr+   N)__name__
__module____qualname__r*   r/   r5   r:   r=   r@   rD   rG   rW   r^   rc   rj   rm   rv   ry   r~   r   r   r   r   r   r   r   r   r   r    r+   r)   r   r   	   s       	H 	H 	HE E E
 
 

 
 
 L L LH H HH H H@ @ @2 2 282, 2, 2,h$2 $2 $2L7 7 7(
 
 

9 
9 
9> > >$ $ $$ $ $1 1 1  . . .. . .     *  6  4C C CB#N #N #N #N #Nr+   r   c                   N    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	S )
TestCommonNeighborsc                 v     t          t          j                   _         fd}t          |           _        d S )Nc                 `    t                              | ||                    }||k    sJ d S r-   )r4   func)r   r   r   r   resultclss        r)   	test_funcz2TestCommonNeighbors.setup_class.<locals>.test_func  s7    CHHQ1--..FX%%%%%%r+   )staticmethodr   common_neighborsr   test)r   r   s   ` r)   setup_classzTestCommonNeighbors.setup_class  sC     344	& 	& 	& 	& 	&  	**r+   c                 b    t          j        d          }|                     |ddg d           d S )Nr   r   r	   )r
   r   r   r   r   r   ru   s     r)   test_K5zTestCommonNeighbors.test_K5  s4    a  		!Q999%%%%%r+   c                 `    t          j        d          }|                     |dddg           d S )Nr   r   r
   r	   )r   r   r   ru   s     r)   test_P3zTestCommonNeighbors.test_P3  1    M!		!QA3r+   c                 `    t          j        d          }|                     |dddg           d S )Nr   r	   r
   r   )r   r   r   ru   s     r)   test_S4zTestCommonNeighbors.test_S4  r   r+   c                     t          j        t          j                  5  t          j                    }|                    ddg           |                     |dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r
   )r   r   r   NetworkXNotImplementedr!   r   r   ru   s     r)   test_digraphz TestCommonNeighbors.test_digraph  s    ]2455 	 	
Aff-...IIaA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA..A25A2c                 6   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           d S )Nr   r   r   )r   r   r   r   r   r   ru   s     r)   test_nonexistent_nodesz*TestCommonNeighbors.test_nonexistent_nodes  sr    a  b&(;Q1EEEb&(;Q1EEEb&(;Q1EEEEEr+   c                     t          j                    }|                    ddg           |                     |ddg            dS )zCase of no common neighbors.r   r	   N)r   r   r   r   ru   s     r)   test_custom1z TestCommonNeighbors.test_custom1  sC    HJJ	!Q   		!Q2r+   c                 b    t          j        d          }|                     |ddg d           dS )zCase of equal nodes.r   r   r   Nr   ru   s     r)   test_custom2z TestCommonNeighbors.test_custom2  s4    a  		!Q999%%%%%r+   N)r   r   r   classmethodr   r   r   r   r   r   r   r   r   r+   r)   r   r     s        + + [+& & &            F F 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          |                                          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          	                    |                                |          }|
                    d           t          j        ||           |j        d         i k    sJ |j        d         d         dk    sJ |j        d         d         d	k    sJ d S )Nr   create_usingr   hellor   r	   r
   hi   r   r   )r   r   set_node_attributesr.   dictzipr4   r   r   rs   r   )r   r   valsattrds        r)   test_set_node_attributesr    s   
 	aj111ADD1dD)))71:dt####71:dt####71:dt#### 	aj111AF17799%%uSVV}}5566DD1dD)))71:dq    71:dq    71:dq     	aj111A3A==A&&DHHQKKK1d###71:71:dq    71:g#%%%%%%r+   )valuesr   redr   r   r   c                     t          j                    }|                    d           t          j        || |           |j        d         d         dk    sJ d|j        vsJ dS )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   r.   r  r   r   s      r)   ,test_set_node_attributes_ignores_extra_nodesr    sh     	

AJJqMMM1fd+++71:g%''''AGr+   c           
      4   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                              ||          }t          j        ||           |d         d         d         dk    sJ |d         d         d         d
k    sJ |d         d         i k    sJ d S )Nr   r   r   r   r	   r
   r   r   r   r   r   r   r   set_edge_attributesr   r   r   r   rs   r   r   r  r   r3   r  s         r)   test_set_edge_attributesr    s    	aj111ADD1dD)))Q474=D    Q474=D     	aj111ADVEE5U,,--..D1dD)))Q474=AQ474=A 	aj111A3AHE==""D1d###Q474=AQ477s""""Q47b======r+   r`   rP   )r   r   r7   c                     t          j        dg          }t          j        || |           |d         d         d         dk    sJ d|j        vsJ dS )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	   r7   r`   r   N)r   r   r  r3   r  s      r)   ,test_set_edge_attributes_ignores_extra_edgesr  &  sa     	&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                              ||          }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 d S )Nr   r   r   r   r	   r
   r   r   r	   r   r   r   r   r
  r  s         r)   test_set_edge_attributes_multir  7  s    	aj111ADD1dD)))Q471:dt####Q471:dt#### 	aj111AD	"EE5U,,--..D1dD)))Q471:dq    Q471:dq     	aj11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|                                vsJ dS )	r  r  r   r	   r	   r   r	   r7   r`   r   N)r   
MultiGraphr  r3   r  s      r)   2test_set_edge_attributes_multi_ignores_extra_edgesr  U  s     	y),--A1fd+++Q471:h3&&&&Q471:""""""r+   c                     t          j                    t          j                    t          j                    t          j                    g} | D ]q}t          j        d|          }d}d}t          j        |||           t          j        ||          }|d         |k    sJ |d         |k    sJ |d         |k    sJ rd S )Nr   r   r   r   r   r	   r
   )r   r   r!   r  MultiDiGraphr   r   get_node_attributes)graphsr   r  r   attrss        r)   test_get_node_attributesr  g  s    hjj"*,,9J9JKF    M!!,,,
q$---&q$//Qx4Qx4Qx4   r+   c                  |   t          j                    t          j                    t          j                    t          j                    g} | D ]}t          j        d|          }d}d}t          j        |||           t          j        ||          }t          |          dk    sJ |	                                rAddg}|D ]9\  }}}	 ||||f         dk    sJ # t          $ r ||||f         dk    sJ Y 6w xY wdd	g}|D ]6\  }}	 |||f         dk    sJ # t          $ r |||f         dk    sJ Y 3w xY wd S )
Nr   r   r   r   r
   r  r   r   r   )r   r   r!   r  r  r   r  get_edge_attributesr   is_multigraphKeyError)	r  r   r  r   r  keysr   r   ks	            r)   test_get_edge_attributesr%  t  s   hjj"*,,9J9JKF 0 0M!!,,,
q$---&q$//5zzQ?? 	0y)D 3 31a3 !Q+s22222 3 3 3 !Q+s22222233 F#D 0 010 !Q=C///// 0 0 0 !Q=C//////00#0 0s$   
CC:9C:
DD87D8c                     t          j                    t          j                    t          j                    t          j                    g} | D ]}}t          j        |          sJ |                    t          d                     t          j        |          sJ |                    ddg           t          j        |          rJ ~d S )Nr   r   r   )	r   r   r!   r  r  is_emptyr   r   r   )r  r   s     r)   test_is_emptyr(    s    hjj"*,,9J9JKF " "{1~~	q"""{1~~	&&)***;q>>!!!!" "r+   c                 z   t          j        d|           }|                    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 d S )Nr   r   r   r   r   TrQ   r	   )r   r   r   r   nodes_with_selfloopsr   selfloop_edgesnumber_of_selfloopsr   r   s     r)   test_selfloopsr/    s     	!*555AJJq!r.q11A377777r(++fX66666r(666!QEEEEE!!$$))))))r+   c                 >   t          j        d|           }|                    dd           |                    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 d S )Nr   r   r   r	   r
   r8   TrQ   r7   )r   r   N)r	   r	   r
   )r   r   r   r   r,  r.  s     r)   test_selfloop_edges_attrr1    s     	!*555AJJq!JJq!AJ
!$'''1a*q!h]6K)L     r(:::\9<UVVVVVVVr+   c                      t          j        dt           j                  } |                     ddd           |                     ddd           t	          t          j        | dd	          d
dg          sJ d S )Nr   r   r   r   r8   r   r7   TrR   r#  )r   r   r   r   )r   r   r	   r   )r   r   r  r   r   r,  )r   s    r)   ,test_selfloop_edges_multi_with_data_and_keysr4    s    
!"-888AJJq!BJJJq!CJ   
!(6668W      r+   c                    t          j        d|           }|                    dd           |                    t          j        |d                     |                    dd           |                    t          j        |d                     |                    dd           |                    t          j        |dd                     d S )Nr   r   r   Tr#  rQ   )r#  rR   )r   r   r   r   r,  r.  s     r)   test_selfloops_removalr7    s    
!*555AJJq!)!$777888JJq!)!$777888JJq!)!$TBBBCCCCCr+   c                 0   t          j        d|           }|                    dd           |                    dd           |                    t          j        |                     d|                                vsJ |                    dd           |                    dd           t          j        t                    5  |                    t          j        |d                     ddd           n# 1 swxY w Y   |                    dd           |                    dd           t          j        t                    5  |                    t          j        |d                     ddd           n# 1 swxY w Y   |                    dd           |                    dd           t          j        t                    5  |                    t          j        |dd	                     ddd           dS # 1 swxY w Y   dS )
z[test removing selfloops behavior vis-a-vis altering a dict while iterating.
    cf. gh-4068r   r   r   r*  Tr6  NrQ   r3  )
r   r   r   r   r,  r3   r   r   RuntimeError	TypeErrorr.  s     r)   test_selfloops_removal_multir;    s    	!*555AJJq!JJq!)!,,---""""JJq!JJq!	|	$	$ = =	B-ad;;;<<<= = = = = = = = = = = = = = = JJq!JJq!	y	!	! = =	B-ad;;;<<<= = = = = = = = = = = = = = = JJq!JJq!	|	$	$ H H	B-adFFFGGGH H H H H H H H H H H H H H H H H Hs6   *C==DD*FF
F+HHH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 ]{}|                    |           t          j        || d
          d	k    sJ t          j        || d          dk    sJ t          j        t           j	        t           j        ||d
           |d S )Nr   )r	   r   r
   r	   r
   r   r   )costdistr   r   r=  r>  )
r   r   r!   r  r  r   path_weightr   r   NetworkXNoPath)
valid_pathinvalid_pathr  r3   rq   s        r)   test_pathweightrC    s
   J99Lhjj"*,,9J9JKF	
A1%%&	
A1%%&	
A1%%&E
  V VU###~eZ88A====~eZ88A====b'fUUUU	V Vr+   r   c                     |                      g d           g d}g d}g d}t          j        | |          sJ t          j        | |          rJ t          j        | |          rJ d S )N)r   r   r   r   )r	   r
   r   r   )r	   r
   r   r   )r	   r
   r   r   r   )r   r   is_path)r   rA  rB  another_invalid_paths       r)   test_ispathrG    s     555666J<<L*??:a$$$$$z!\*****z!12222222r+   c                 4   |                      g d           |                     d           t          j        | g dddg          }t	          |                                          h dk    sJ t	          |                                          dhk    sJ d S )Nr   r   r   r
   r   r   r      r	   r   r   r   r   r}   r   restricted_viewsetr.   r3   r   ri   s     r)   test_restricted_viewrO    s    EEEFFFJJqMMM
1iii&&)9::Aqwwyy>>YYY&&&&qwwyy>>fX%%%%%%r+   c                 4   |                      g d           |                     d           t          j        | g dddg          }t	          |                                          h dk    sJ t	          |                                          dhk    sJ d S )N)r  r  )r   r   r   r  )r	   r   r   )r	   r	   r   r   r   rI  r   )r   r   r   rJ  r   rK  rN  s     r)   test_restricted_view_multirQ    s    UUU   JJqMMM
1iii)Y)?@@Aqwwyy>>YYY&&&&qwwyy>>fX%%%%%%r+   )!r   r   networkxr   networkx.utilsr   r   r   r   markparametrizer   r!   r  r  r  r  r  r  r  r  r  r%  r(  r/  r1  r4  r7  r;  rC  rG  rO  rQ  r   r+   r)   <module>rV     s         3 3 3 3 3 3 3 3YN YN YN YN YN YN YN YNx,& ,& ,& ,& ,& ,& ,& ,&^ 28RZH & & &< v		(u7F"3	4	4d; 	 	 	 "*'=>>  ?>: s	#	#X.S/Hc?	;	;TB ! ! ! r'GHH  IH: S	)	)84_(C	A	A4H # # #
  
  
 0 0 04" " " 28RZH * * * 28RZH W W W   "*'=>>D D ?>D r'GHHH H IHH4V V V  ("(**jbjllMBMOO_R_5F5F	G 3 3 3 xrxzz:2:<<899& & :9& }r}0A0ABCC& & DC& & &r+   