
    \Mh                        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    d/var/www/html/test/jupyter/venv/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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                                        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   r5   weightr;   )r   r   degreer$   r   r8   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_neighbors8   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_nodes<   `    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@   rE   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_directedD   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            )rN   rO   )rN   rP   rN   rQ          @r<   TdatarN   rO   r;   rP   rQ   )
r   copyr   add_starr   r7   r   r$   r2   r&   r/   r   nlists      r   test_add_starzTestFunction.test_add_starH   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 )NrM   )rR   rO   rP   rP   rQ   rT   r<   TrU   rN   rO   r;   rP   rQ   node)	r   rW   r   add_pathr   r7   r   r$   iterrY   s      r   test_add_pathzTestFunction.test_add_pathd   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 )NrM   )rR   rS   r]   r^   )rR   r]   r^   )rQ   rN   rN   rO   r;         ?rQ   rP   r<   TrU   )r   rW   r   	add_cycler8   r7   r   r$   r2   r&   r   )r/   r   rZ   oklistss       r   test_add_cyclezTestFunction.test_add_cycle   s   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_subgraphrj   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fromkeysr2   _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_nodery   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   rT   )r   r   add_edger   ry   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clearry   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   ry   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u sJ d S )Nr   r   Tnode_attribute)r   r   
path_graphr2   )r/   r   r_   s      r   6test_node_attributes_are_still_mutable_on_frozen_graphzCTestFunction.test_node_attributes_are_still_mutable_on_frozen_graph  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   r7   )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/   ru   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          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_neighbors.  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/   ru   nedgesexpecteduves          r   test_non_edgeszTestFunction.test_non_edgesI  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   r<   r   )03r   r   1)r   r   r   r   2r   )r   r   r   r   r   r   r   r   r"   )r   r   is_weightedr   r   r   r(   add_weighted_edges_fromto_undirectedr   r   r   ry   s     r   test_is_weightedzTestFunction.test_is_weightedc  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   r<   r"   )r   r   )r      bluer   colorr   r;   r   )r   r   )r   r   r   r   )r   r   r   )r   r   r   r   )r   r   is_negatively_weightedr   r   r   r   r(   r   r   r   r   ry   s     r   test_is_negatively_weightedz(TestFunction.test_is_negatively_weighted  s   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   r3   r9   r>   rA   rD   rH   rK   r[   rb   rg   rn   rq   rz   r|   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r      s       	H 	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   )r8   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   ry   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   ry   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   ry   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   ry   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   ry   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   ry   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   ry   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_attributesr2   dictzipr8   r%   r   rw   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   r2   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   rw   r   r   r  r  r7   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   rd   rT   )r   r   r;   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   r;   rd   r   N)r   r   r  r7   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  <  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   r;   rd   r   N)r   
MultiGraphr  r7   r
  s      r   2test_set_edge_attributes_multi_ignores_extra_edgesr  Z  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$  l  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   r7   r   )r!  r   r  r  r"  r   r#  deafult_attrss           r   test_get_edge_attributesr(  }  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   r.  s     r   r5  z/test_remove_node_attributes.<locals>.<dictcomp>  r6  r   r5   )r   r   r   remove_node_attributesr2   r   r   r  r1  r2  r3  r4  r  s     @@@@@@r   test_remove_node_attributesr:    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   r*  r   r   r   thirdr+  c           	      ,    i | ]\  }}||fiS r   r   	r/  r   r   r  r1  r2  r3  r4  r  s	      r   r5  z/test_remove_edge_attributes.<locals>.<dictcomp>  @     	
 	
 	
1 FT4ZZP	
 	
 	
r   r   c           	      ,    i | ]\  }}||fiS r   r   r>  s	      r   r5  z/test_remove_edge_attributes.<locals>.<dictcomp>'  r?  r   ebunch)r   r   r  remove_edge_attributesr   r&  r7   r9  s     @@@@@@r   test_remove_edge_attributesrD    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   r*  r   r<  r+  c           	      0    i | ]\  }}}|||f	iS r   r   )
r/  r   r   kr  r1  r2  r3  r4  r  s
       r   r5  z5test_remove_multi_edge_attributes.<locals>.<dictcomp>^  sD     	
 	
 	
1a 1IdJ
J
S	
 	
 	
r   Tkeys)r  r   r   r   )r  r   rJ  r  r   rA  )r   r   r   r  rC  r7   r9  s     @@@@@@r   !test_remove_multi_edge_attributesrK  1  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_emptyrN    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   TrU   r   )r   r   r   r   nodes_with_selfloopsr   selfloop_edgesnumber_of_selfloopsr   r   s     r   test_selfloopsrU    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   r<   TrU   r;   )r   r   N)r   r   r   )r   r   r   r   rR  rT  s     r   test_selfloop_edges_attrrW    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   r<   r   r;   TrV   rI  )r   r   r   r   )r   r   r   r   )r   r   r  r   r   rR  r
   s    r   ,test_selfloop_edges_multi_with_data_and_keysrZ    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   TrH  rU   )rI  rV   )r   r   r   r   rR  rT  s     r   test_selfloops_removalr\    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   rP  TrH  NrU   rY  )
r   r   r   r   rR  r7   r   r   RuntimeError	TypeErrorrT  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   rb  rc  )
r   r   r(   r  r  r   path_weightr   r   NetworkXNoPath)
valid_pathinvalid_pathr!  r7   ru   s        r   test_pathweightrh    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   rf  rg  another_invalid_paths       r   test_ispathrl    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setr2   r7   r   rm   s     r   test_restricted_viewrt    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   rn  r   )r   r   r   ro  r!   rp  rs  s     r   test_restricted_view_multirv    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$  r(  r:  rD  rK  rN  rU  rW  rZ  r\  r`  rh  rl  rt  rv  r   r   r   <module>r{     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 # # #' ' '"/ / /, 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   