
    Pi                        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
                            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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 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                  `    t          j                    } t          j        |           g k    sJ d S N)nxGraphdegree_histogramGs    x/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/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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   )r   r   r   GdegreelistrangeGnodesGedgesDiGraphDGDGin_degreeDGout_degreeDGnodesDGedgesselfs    r   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r   c                    t           j        j                            | j                  }|d         dk    sJ |d         rJ |d         rJ |d         dk    sJ |d         dk    sJ |d         d	k    sJ |d
         dk    sJ d S )NzName of Graphr   Directed
MultigraphzNumber of nodesr   zNumber of edgeszAverage degree (min, max)z2.00 (0, 4)zNumber of connected componentsr   )r   classesfunction_create_describe_info_dictr   )r/   	info_dicts     r   test_describe_info_dictz$TestFunction.test_describe_info_dict   s    J'BB46JJ	)V3333Z((((\*****+q0000*+q000045FFFF9:a??????r   c                 :   t          | j                                        t          t	          j        | j                                      sJ t          | j                                        t          t	          j        | j                                      sJ d S r   )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   r=   weightrC   )r   r   degreer$   r   r@   r)   r.   s    r   test_degreezTestFunction.test_degree2   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_neighborsB   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_nodesF   `    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_edgesJ   rM   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_directedN   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            )rV   rW   )rV   rX   rV   rY          @rD   TdatarV   rW   rC   rX   rY   )
r   copyr   add_starr   r?   r   r$   r:   r&   r/   r   nlists      r   test_add_starzTestFunction.test_add_starR   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 )NrU   )rZ   rW   rX   rX   rY   r\   rD   Tr]   rV   rW   rC   rX   rY   node)	r   r_   r   add_pathr   r?   r   r$   iterra   s      r   test_add_pathzTestFunction.test_add_pathn   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 )NrU   )rZ   r[   re   rf   )rZ   re   rf   )rY   rV   rV   rW   rC         ?rY   rX   rD   Tr]   )r   r_   r   	add_cycler@   r?   r   r$   r:   r&   r   )r/   r   rb   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_subgraphrr   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   r	   r   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_noder   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   r\   )r   r   add_edger   r   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clearr   s     r   test_freezezTestFunction.test_freeze  s*   Idfx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   r   s     r   test_is_frozenzTestFunction.test_is_frozen  sY    <'''''Idfx2<//////xxr   c                     t          j        t          j        d                    }|j        d         }d|d<   |d         du sJ d S )Nr   r   Tnode_attribute)r   r   
path_graphr:   )r/   r   rg   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u sJ d S )Nr   r   Tedge_attribute)r   r   r   r?   )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$   rH   lenr   
star_graphr/   r}   popnborsrg   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          j        ||d                   }t          |          dk    sJ t          j        d          }t          j        t	          |          d          d         }t          j        ||          }|dk    r|dk    rt          |          dk    sJ nt          |          dk    sJ t          j        d          }t          j        |d          }t          |          dk    sJ t          j	                    }|
                    t          d                     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_neighbors8  sW   !#&&mDKK++ A//5zzQc""}T%[[!,,Q/ --199u::#####u::#### b!! **5zzQ 

U2YY''' **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/   r}   nedgesexpecteduves          r   test_non_edgeszTestFunction.test_non_edgesS  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   rD   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   r   s     r   test_is_weightedzTestFunction.test_is_weightedm  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   rD   r"   )r   r   )r      bluer   colorr   rC   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   r   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__r0   r8   r;   rA   rF   rI   rL   rP   rS   rc   rj   ro   rv   ry   r   r   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   )r@   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   r   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   r   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   r   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   r   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   r   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   r   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   r   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zipr@   r%   r   r   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   r   r   r   r  r  r?   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   rl   r\   )r   r   rC   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   rC   rl   r   N)r   r   r  r?   r  s      r   ,test_set_edge_attributes_ignores_extra_edgesr  5  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  F  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   rC   rl   r   N)r   
MultiGraphr  r?   r  s      r   2test_set_edge_attributes_multi_ignores_extra_edgesr#  d  s     	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}|                    d           t          j        |||	          }|d         |k    sJ d S )
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,  v  s
   hjj"*,,9J9JKF ' 'M!!,,,
q$---&q$//Qx4Qx4Qx4	

1&q$DDDQx;&&&&&' '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 |j	        D ]}||         |k    sJ |}|
                    dd           t          j        |||          }t          |          dk    sJ |j	        D ]}||         |k    sJ d S )	Nr   r  r  r   r   r   r   r%  )r   r   r(   r"  r'  r   r  get_edge_attributesr   r?   r   )r)  r   r  r  r*  r   r+  deafult_attrss           r   test_get_edge_attributesr0    s<   hjj"*,,9J9JKF / /M!!,,,
q$---&q$//5zzQG 	' 	'D;$&&&&&	

1a.q$LLL=!!Q&&&&G 	/ 	/D &$.....	/!/ /r   c           	      	   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        |fd|                                D                        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        |fd|                                D                        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 d S )Nr   r  r   r  r   r   r   r  other,  threec           	      "    i | ]}|iS r   r   .0nr  
other_attr
other_vals
third_attr
third_valsr  s     r   
<dictcomp>z/test_remove_node_attributes.<locals>.<dictcomp>  8     	
 	
 	
 dJ
J
K	
 	
 	
r   r"   c           	      "    i | ]}|iS r   r   r6  s     r   r=  z/test_remove_node_attributes.<locals>.<dictcomp>  r>  r   r=   )r   r   r  remove_node_attributesr:   r   r   r  r9  r:  r;  r<  r  s     @@@@@@r   test_remove_node_attributesrB    s   
 	aj111ADD1dD)))a&&&qwqz!!!!qwqz!!!!qwqz!!!! 	aj111AJJ1dD)))1j*555a&&&qwqz!!!!71:j!Z////qwqz!!!!71:j!Z////qwqz!!!!71:j!Z//// 	aj111A1dD)))1j*555az222qwqz!!j
&B&B&BBqwqz!!j
&B&B&BBqwqz!!j
&B&B&BB 	aj111AJJ		
 	
 	
 	
 	
 	
 	
 	
 	
WWYY	
 	
 	
   aZ888QWQZ''Jagaj,H,H,HHQWQZ''Jagaj,H,H,HHQWQZ''Jagaj,H,H,HH71:dt####71:dt####71:dt#### 	aj111A	dJ
3dJ
3	
 	
   a&&&qwqz!!!!qwqz!!!!qwqz!!!!71:j!Z////71:j!Z//// 	aj111A		
 	
 	
 	
 	
 	
 	
 	
 	
WWYY	
 	
 	
   az1a&AAAAqwqz!!j
&B&B&BBqwqz!!j
&B&B&BB171:*
":":"::##
:(>*(L(L(LL##
:(>*(L(L(LL(L(Lr   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        |fd|                                D                        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        |fd|                                D                        t          j        |dg           |d         d         vr|d         d         vsJ |d         d	         v r|d         d	         v sJ d S )Nr   r  r  r   r   r2  r  r   r   thirdr3  c           	      ,    i | ]\  }}||fiS r   r   	r7  r   r   r  r9  r:  r;  r<  r  s	      r   r=  z/test_remove_edge_attributes.<locals>.<dictcomp>  @     	
 	
 	
1 FT4ZZP	
 	
 	
r   r   c           	      ,    i | ]\  }}||fiS r   r   rF  s	      r   r=  z/test_remove_edge_attributes.<locals>.<dictcomp>1  rG  r   ebunch)r   r   r  remove_edge_attributesr   r.  r?   rA  s     @@@@@@r   test_remove_edge_attributesrL    s    	aj111ADD1dD)))a&&&r%a..//14444 	aj111AJJ1dD)))1j*555a&&&qtAwqtAwQ47:#%%%%Q47:#%%%% 	aj111A1dD)))1j*555az222qtAw:QqT!W#<#<#<<qtAw:QqT!W#<#<#<< 	aj111AJJ		
 	
 	
 	
 	
 	
 	
 	
 	
			
 	
 	
   aZ888QqT!W$$1Q47)B)B)BBQqT!W$$1Q47)B)B)BBQ474=D    Q474=D     	aj111A1vdJ
'KLMMMa,,,QqT!W$$1a$)>)>)>>QqT!W$$$$ 	aj111A		
 	
 	
 	
 	
 	
 	
 	
 	
			
 	
 	
   aZIIIIQqT!W$$1Q47)B)B)BB1a  Z1Q47%:%:%::%:%:r   c           	         t          j        d|           }|                    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|           }|                    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|           }|                    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|           }|                    dd           d
dt          j        |fd|                    d          D                        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|           }|                    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|           }|                    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 d S )Nr   r  r   r   r  r   r   r2  r  rD  r3  c           	      0    i | ]\  }}}|||f	iS r   r   )
r7  r   r   kr  r9  r:  r;  r<  r  s
       r   r=  z5test_remove_multi_edge_attributes.<locals>.<dictcomp>h  sD     	
 	
 	
1a 1IdJ
J
S	
 	
 	
r   Tkeys)r  r   r   r   )r  r   rR  r  r   rI  )r   r   r   r  rK  r?   rA  s     @@@@@@r   !test_remove_multi_edge_attributesrS  ;  s    	aj111AJJq!DD1dD)))a&&&qtAwqz!!!!qtAwqz!!!!qtAwqz!!!! 	aj111AJJq!JJ1dD)))1j*555a&&&qtAwqz!!!!qtAwqz!!!!qtAwqz!!!!Q471:j!Z////Q471:j!Z////Q471:j!Z//// 	aj111AJJq!1dD)))1j*555az222qtAwqz!!j!Q
&B&B&BBqtAwqz!!j!Q
&B&B&BBqtAwqz!!j!Q
&B&B&BB 	aj111AJJq!JJ		
 	
 	
 	
 	
 	
 	
 	
 	
777--	
 	
 	
   aZ888QqT!WQZ''Jad1gaj,H,H,HHQqT!WQZ''Jad1gaj,H,H,HHQqT!WQZ''Jad1gaj,H,H,HHQ471:dt####Q471:dt####Q471:dt#### 	aj111AJJq!	dJ
;dJ
;	
 	
   a,,,QqT!WQZ''AaDGAJt,<,D,D,DDQqT!WQZ''''QqT!WQZ'''' 	aj111AJJq!	dJ
;dJ
;dJ
;	
 	
   ay).DEEEEqtAwqz!!jAaDGAJ&>&>&>>qtAwqz!!jAaDGAJ&>&>&>>1Q471:*!Q
":":"::":":r   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_emptyrV    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   Tr]   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   rD   Tr]   rC   )r   r   N)r   r   r   )r   r   r   r   rZ  r\  s     r   test_selfloop_edges_attrr_    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   rD   r   rC   Tr^   rQ  )r   r   r   r   )r   r   r   r   )r   r   r"  r   r   rZ  r
   s    r   ,test_selfloop_edges_multi_with_data_and_keysrb    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   TrP  r]   )rQ  r^   )r   r   r   r   rZ  r\  s     r   test_selfloops_removalrd    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   rX  TrP  Nr]   ra  )
r   r   r   r   rZ  r?   r   r   RuntimeError	TypeErrorr\  s     r   test_selfloops_removal_multirh    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   rj  rk  )
r   r   r(   r"  r'  r   path_weightr   r   NetworkXNoPath)
valid_pathinvalid_pathr)  r?   r}   s        r   test_pathweightrp    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   rn  ro  another_invalid_paths       r   test_ispathrt    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:   r?   r   ru   s     r   test_restricted_viewr|    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   rv  r   )r   r   r   rw  r!   rx  r{  s     r   test_restricted_view_multir~    s    UUU   JJqMMM
1iii)Y)?@@Aqwwyy>>YYY&&&&qwwyy>>fX%%%%%%r   )%r   r   networkxr   networkx.utilsr   r   r   r   r   markparametrizer   r(   r"  r'  r  r  r  r  r  r#  r,  r0  rB  rL  rS  rV  r]  r_  rb  rd  rh  rp  rt  r|  r~  r   r   r   <module>r     s         3 3 3 3 3 3 3 3( ( (
cN cN cN cN cN cN cN cNL,& ,& ,& ,& ,& ,& ,& ,&^ 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 # # #' ' '"/ / /, 28RZH SM SM SMl "*'=>>A; A; ?>A;H r'GHHV; V; IHV;r" " " 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   