
    9i                        S SK r S SKrS SKrS SKJrJr  S r " S S5      r " S S5      r	\R                  R                  S\R                  \R                  \R                  \R                  45      S	 5       r\R                  R                  S
SSS.S4SS0SS0S.S445      S 5       r\R                  R                  S\R                  \R                  45      S 5       r\R                  R                  S
SSS.S4SS0SS0S.S445      S 5       r\R                  R                  S\R                  \R                  45      S 5       r\R                  R                  S
SSS.S4SS0SS0S.S445      S 5       rS rS r\R                  R                  S\R                  \R                  \R                  \R                  45      S 5       r\R                  R                  S\R                  \R                  45      S 5       r\R                  R                  S\R                  \R                  45      S 5       rS r\R                  R                  S\R                  \R                  \R                  \R                  /5      S 5       r\R                  R                  S\R                  \R                  \R                  \R                  /5      S  5       rS! r\R                  R                  S\R                  \R                  /5      S" 5       r\R                  R                  S\R                  \R                  /5      S# 5       r S$ r!\R                  R                  S%\R                  " 5       \R                  " 5       \R                  " 5       \R                  " 5       45      S& 5       r"\R                  R                  S%\R                  " 5       \R                  " 5       45      S' 5       r#\R                  R                  S%\R                  " 5       \R                  " 5       45      S( 5       r$g))    N)edges_equalnodes_equalc                  f    [         R                  " 5       n [         R                  " U 5      / :X  d   eg N)nxGraphdegree_histogramGs    d/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/networkx/classes/tests/test_function.pytest_degree_histogram_emptyr   	   s&    

Aq!R'''    c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestFunction   c                 d   [         R                  " / SQ/ SQ/ S.SS9U l        SSSSS	S
.U l        [	        [        S5      5      U l        / SQU l        [         R                  " / SQ/ SQ/ S.5      U l	        SSSSS	S
.U l
        SSS	S	S	S
.U l        [	        [        S5      5      U l        / SQU l        g )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_methodTestFunction.setup_method   s    iI"=FKqQ1558nF**yR@A Q1q9 !aA!:E!H~Gr   c                    [         R                  R                  R                  U R                  5      nUS   S:X  d   eUS   (       a   eUS   (       a   eUS   S:X  d   eUS   S:X  d   eUS   S	:X  d   eUS
   S:X  d   eg )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   )r0   	info_dicts     r   test_describe_info_dict$TestFunction.test_describe_info_dict   s    JJ''BB466J	)V333Z(((\****+q000*+q00045FFF9:a???r   c                 L   [        U R                  R                  5       [        [        R                  " U R                  5      5      5      (       d   e[        U R
                  R                  5       [        [        R                  " U R
                  5      5      5      (       d   eg r   )r   r   nodesr%   r   r*   r/   s    r   
test_nodesTestFunction.test_nodes$   s`    466<<>40@+ABBBB477==?D$''1B,CDDDDr   c           
         [        U R                  R                  5       [        [        R                  " U R                  5      5      5      (       d   e[        U R                  R                  5       5      [        [        R                  " U R                  5      5      :X  d   e[        U R                  R                  / SQS9[        [        R                  " U R                  / SQS95      5      (       d   e[        U R                  R                  / SQS95      [        [        R                  " U R                  / SQS95      :X  d   eg )N)r   r   r   nbunch)r   r   edgesr%   r   sortedr*   r/   s    r   
test_edgesTestFunction.test_edges(   s    466<<>40@+ABBBBdggmmo&&$''1B*CCCCFFLL	L*D$&&1S,T
 
 	
 
 dggmm9m56&HHTWWY/;
 
 	
 
r   c           
         [        U R                  R                  5       [        [        R                  " U R                  5      5      5      (       d   e[        U R                  R                  5       5      [        [        R                  " U R                  5      5      :X  d   e[        U R                  R                  SS/S9[        [        R                  " U R                  SS/S95      5      (       d   e[        U R                  R                  SS/S95      [        [        R                  " U R                  SS/S95      :X  d   e[        U R                  R                  SS9[        [        R                  " U R                  SS95      5      (       d   e[        U R                  R                  SS95      [        [        R                  " U R                  SS95      :X  d   eg )Nr   r   rA   weightrH   )r   r   degreer%   r   rD   r*   r/   s    r   test_degreeTestFunction.test_degree2   ss   466==?D4661B,CDDDDdggnn&'6"))DGG2D+EEEEFFMM!QM($ryyA/O*P
 
 	
 
 dggnnQFn34IIdggq!f-9
 
 	
 
 FFMMM*D466(1S,T
 
 	
 
 dggnnHn56&IIdggh/;
 
 	
 
r   c                 L   [        U R                  R                  S5      5      [        [        R                  " U R                  S5      5      :X  d   e[        U R                  R                  S5      5      [        [        R                  " U R                  S5      5      :X  d   eg )Nr   )r%   r   	neighborsr   r*   r/   s    r   test_neighborsTestFunction.test_neighborsB   sn    DFF$$Q'(Ddffa1H,IIIIDGG%%a()T",,tww2J-KKKKr   c                     U R                   R                  5       [        R                  " U R                   5      :X  d   eU R                  R                  5       [        R                  " U R                  5      :X  d   eg r   )r   number_of_nodesr   r*   r/   s    r   test_number_of_nodes!TestFunction.test_number_of_nodesF   V    vv%%'2+=+=dff+EEEEww&&(B,>,>tww,GGGGr   c                     U R                   R                  5       [        R                  " U R                   5      :X  d   eU R                  R                  5       [        R                  " U R                  5      :X  d   eg r   )r   number_of_edgesr   r*   r/   s    r   test_number_of_edges!TestFunction.test_number_of_edgesJ   rU   r   c                     U R                   R                  5       [        R                  " U R                   5      :X  d   eU R                  R                  5       [        R                  " U R                  5      :X  d   eg r   )r   is_directedr   r*   r/   s    r   test_is_directedTestFunction.test_is_directedN   sR    vv!!#r~~dff'====ww""$tww(????r   c           	      D   U R                   R                  5       n/ SQn[        R                  " X5        [	        UR                  U5      / SQ5      (       d   eU R                   R                  5       n[        R                  " XSS9  [	        UR                  USS9SSS	S04SS
S	S04SSS	S04/5      (       d   eU R                   R                  5       nS/n[        R                  " X5        [        U[        U R                   5      U-   5      (       d   eU R                   R                  5       n/ n[        R                  " X5        [        UR                  U R                  5      (       d   e[	        UR
                  U R                   R
                  5      (       d   eg )N      r      )r`   ra   )r`   r   r`   rb          @rI   Tdatar`   ra   rH   r   rb   )
r   copyr   add_starr   rC   r   r%   r=   r'   r0   r   nlists      r   test_add_starTestFunction.test_add_starR   sO   FFKKM 
A1775>+IJJJJFFKKM
AS)GGEG%R(C)R(C)R(C)
 
 	
 
 FFKKM
A1d466lU23333FFKKM
A177DKK0000177DFFLL1111r   c           	         U R                   R                  5       n/ SQn[        R                  " X5        [	        UR                  U5      / SQ5      (       d   eU R                   R                  5       n[        R                  " XSS9  [	        UR                  USS9SSS	S04SS
S	S04S
SS	S04/5      (       d   eU R                   R                  5       nS/n[        R                  " X5        [	        UR                  U5      / 5      (       d   e[        U[        U R                   5      S/-   5      (       d   eU R                   R                  5       n[        S/5      n[        R                  " X5        [	        UR                  S/5      / 5      (       d   e[        U[        U R                   5      S/-   5      (       d   eU R                   R                  5       nS/n[        R                  " X5        [	        UR                  U5      / 5      (       d   e[        U[        U R                   5      S/-   5      (       d   eU R                   R                  5       n[        S/5      n[        R                  " X5        [	        UR                  S/5      / 5      (       d   e[        U[        U R                   5      S/-   5      (       d   eU R                   R                  5       n/ n[        R                  " X5        [	        UR
                  U R                   R
                  5      (       d   e[        U[        U R                   5      5      (       d   eU R                   R                  5       n[        / 5      n[        R                  " X5        [	        UR
                  U R                   R
                  5      (       d   e[        U[        U R                   5      5      (       d   eg )Nr_   )rc   ra   r   r   rb   re   rI   Trf   r`   ra   rH   r   rb   node)	r   rh   r   add_pathr   rC   r   r%   iterrj   s      r   test_add_pathTestFunction.test_add_pathn   s   FFKKM 
A1775>+IJJJJFFKKM
AS)GGEG%R(C)R(C)R(C)
 
 	
 
 FFKKM
A1775>2....1d466lfX56666FFKKMfX
A177F8,b11111d466lfX56666FFKKM
A1775>2....1d466lbT12222FFKKMbT

A177B4="----1d466lbT12222FFKKM
A177DFFLL11111d466l++++FFKKMR
A177DFFLL11111d466l++++r   c                    U R                   R                  5       n/ SQn/ SQ/ SQ/n[        R                  " X5        [	        UR                  U5      5      U;   d   eU R                   R                  5       nSSSS04SSSS04SS	SS04S	SSS04/SSSS04SS	SS04S	SSS04SSSS04//n[        R                  " XSS
9  [	        UR                  USS95      U;   d   eU R                   R                  5       nS/n[        R                  " X5        [        U[        U R                   5      U-   5      (       d   eU R                   R                  5       n/ n[        R                  " X5        [        UR                  U R                  5      (       d   e[        UR
                  U R                   R
                  5      (       d   eg )Nr_   )rc   rd   ro   rp   )rc   ro   rp   )rb   r`   r`   ra   rH         ?rb   r   rI   Trf   )r   rh   r   	add_cyclerD   rC   r   r%   r=   r'   r   )r0   r   rk   oklistss       r   test_add_cycleTestFunction.test_add_cycle   s   FFKKM 44
 	Qaggen%000FFKKM R(C)R(C)R(C)R(C)	 R(C)R(C)R(C)R(C)	
 	Qc*agge$g/0G;;;FFKKM
Q1d466lU23333FFKKM
Q177DKK0000177DFFLL1111r   c                    U R                   R                  / SQ5      R                  [        R                  " U R                   / SQ5      R                  :X  d   eU R                  R                  / SQ5      R                  [        R                  " U R                  / SQ5      R                  :X  d   eU R                   R                  / SQ5      R                  [        R
                  " U R                   / SQ5      R                  :X  d   eU R                  R                  / SQ5      R                  [        R
                  " U R                  / SQ5      R                  :X  d   e[        R
                  " U R                   R                  / SQ5      / SQ5      nUR                  U R                   Ld   eUR                  U R                   R                  / SQ5      R                  :X  d   eg )N)r   r   r   r   r   )r   subgraphadjr   r*   induced_subgraph_graph)r0   Hs     r   test_subgraphTestFunction.test_subgraph   sV   FFOOL)--TVV\1R1V1VV	
V GG\*.."++dgg|2T2X2XX	
X FFOOL)--""466<8<<=	
= GG\*..""477L9==>	
>  =yIxxtvv%%%uu	266666r   c                 d   U R                   R                  SS/5      R                  [        R                  " U R                   SS/5      R                  :X  d   eU R                  R                  SS/5      R                  [        R                  " U R                  SS/5      R                  :X  d   eg )Nr#   r    )r   edge_subgraphr~   r   r*   r/   s    r   test_edge_subgraphTestFunction.test_edge_subgraph   s    FF  &&!1266(89==>	
> GG!!66"2377&&)9:>>?	
?r   c                 2   [         R                  " U R                  SS9n[        U[	        U R                  5      5      (       d   eUR
                  0 :X  d   eUR                  0 R                  U R                  R                  5       0 5      :X  d   eUR                  0 R                  U R                  R                  5       0 5      :X  d   e[         R                  " U R                  5      n[        U[	        U R                  5      5      (       d   eUR
                  U R                  R
                  :X  d   eUR                  U R                  R                  :X  d   eUR                  0 R                  U R                  R                  5       0 5      :X  d   eg )NF)	with_data)
r   create_empty_copyr   r   r%   graph_nodefromkeysr=   _adjr0   r   s     r   test_create_empty_copy#TestFunction.test_create_empty_copy   s     591d466l++++ww"}}ww"++dffllnb9999vvTVV\\^R8888  (1d466l++++ww$&&,,&&&ww$&&,,&&&vvTVV\\^R8888r   c                 T    [         R                  " U R                  5      / SQ:X  d   eg )N)r   r   r   r   r   )r   r	   r   r/   s    r   test_degree_histogram"TestFunction.test_degree_histogram   s    ""466*o===r   c                     [         R                  " U R                  5      S:X  d   e[         R                  " U R                  5      S:X  d   e[         R                  " 5       nUR                  S5        [         R                  " U5      S:X  d   eg )Ng      ?g333333?r           )r   densityr   r*   r   add_noder   s     r   test_densityTestFunction.test_density   sd    zz$&&!S(((zz$''"c)))HHJ	

1zz!}###r   c                     [         R                  " 5       nUR                  SS5        [         R                  " U5      S:X  d   eUR                  SS5        [         R                  " U5      S:X  d   eg )Nr   r   r   re   )r   r   add_edger   r   s     r   test_density_selfloop"TestFunction.test_density_selfloop   sU    HHJ	

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

1azz!}###r   c                 2   [         R                  " U R                  5      nUR                  (       d   e[        R
                  " [         R                  UR                  S5        [        R
                  " [         R                  UR                  S/5        [        R
                  " [         R                  UR                  S5        [        R
                  " [         R                  UR                  S/5        [        R
                  " [         R                  UR                  SS5        [        R
                  " [         R                  UR                  S/5        [        R
                  " [         R                  UR                  SS5        [        R
                  " [         R                  UR                  S/5        [        R
                  " [         R                  UR                  5        [        R
                  " [         R                  UR                   5        g )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_freezeTestFunction.test_freeze  s3   IIdffxxxb&&

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

Aq9b&&(8(86(Cb&&q!<b&&(;(;fXFb&&6b&&0r   c                    [         R                  " U R                  5      (       a   e[         R                  " U R                  5      nUR                  [         R                  " U R                  5      :X  d   eUR                  (       d   eg r   )r   	is_frozenr   r   r   r   s     r   test_is_frozenTestFunction.test_is_frozen  sW    <<''''IIdffxx2<<////xxxr   c                     [         R                  " [         R                  " S5      5      nUR                  S   nSUS'   US   SL d   eg )Nr   r   Tnode_attribute)r   r   
path_graphr=   )r0   r   rq   s      r   6test_node_attributes_are_still_mutable_on_frozen_graphCTestFunction.test_node_attributes_are_still_mutable_on_frozen_graph  sE    IIbmmA&'wwqz!%$%---r   c                     [         R                  " [         R                  " S5      5      nUR                  S   nSUS'   US   SL d   eg )Nr   r   Tedge_attribute)r   r   r   rC   )r0   r   edges      r   6test_edge_attributes_are_still_mutable_on_frozen_graphCTestFunction.test_edge_attributes_are_still_mutable_on_frozen_graph  sE    IIbmmA&'wwv!%$%---r   c                    [         R                  " S5      n[        R                  " [	        U5      S5      n[	        [         R
                  " XS   5      5      n[        U5      [        U5      S-
  :X  d   e[         R                  " S5      n[        R                  " [	        U5      S5      S   n[	        [         R
                  " X5      5      nUS:w  a  US:w  a  [        U5      S:X  d   eO[        U5      S:X  d   e[         R                  " S5      n[	        [         R
                  " US5      5      n[        U5      S:X  d   eg )Nd   r   r   c   r   )	r   complete_graphrandomsampler%   rN   lenr   
star_graphr0   r   popnborsrq   s        r   test_neighbors_complete_graph*TestFunction.test_neighbors_complete_graph#  s    !!#&mmDK+R\\%Q015zSZ!^+++c"}}T%[!,Q/R\\%./19u:?"?u:?"? b!R\\%+,5zRr   c                    [         R                  " S5      n[        R                  " [	        U5      S5      n[         R
                  " XS   5      n[        U5      S:X  d   e[         R                  " S5      n[        R                  " [	        U5      S5      S   n[         R
                  " X5      nUS:w  a  US:w  a  [        U5      S:X  d   eO[        U5      S:X  d   e[         R                  " S5      n[         R
                  " US5      n[        U5      S:X  d   e[         R                  " 5       nUR                  [        S5      5        [         R
                  " US5      n[        U5      S:X  d   eg )	Nr   r   r   r   a   b   
   	   )r   r   r   r   r%   non_neighborsr   r   r   r   r   r&   r   s        r   test_non_neighborsTestFunction.test_non_neighbors8  s%   !!#&mmDK+  A/5zQc"}}T%[!,Q/  -19u:###u:### b!  *5zQ 
U2Y'  *5zQr   c                    [         R                  " S5      n[        [         R                  " U5      5      n[	        U5      S:X  d   e[         R
                  " S5      n/ SQn[        [         R                  " U5      5      nU H  u  pEXE4U;   a  M  XT4U;   a  M   e   [         R                  " S5      n/ SQn[        [         R                  " U5      5      nU H  u  pEXE4U;   a  M  XT4U;   a  M   e   [         R                  " 5       nUR                  / SQ5        / SQn[        [         R                  " U5      5      nU H
  nXb;   a  M
   e   g )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   )r0   r   nedgesexpecteduves          r   test_non_edgesTestFunction.test_non_edgesS  s   !!!$bll5)*6{aa +bll5)*DA6V#v'777  a Cbll5)*DA6V#v'777  

56+bll5)*A;; r   c                    [         R                  " 5       n[         R                  " U5      (       a   e[         R                  " S5      n[         R                  " U5      (       a   e[         R                  " US5      (       a   eUR	                  S5        UR                  SSSS9  [         R                  " U5      (       a   e[         R                  " US5      (       d   e[         R                  " 5       nUR                  / SQ5        [         R                  " U5      (       d   e[         R                  " US5      (       d   eUR                  5       n[         R                  " U5      (       d   e[         R                  " US5      (       d   e[        R                  " [         R                  [         R                  US5        g )	Nr   r   r   rI   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_weightedTestFunction.test_is_weightedm  sE   HHJ>>!$$$$MM!>>!$$$$>>!V,,,,	

1	

1a
">>!$$$$~~a((((JJL	!!		
 ~~a    ~~a,,,,OO~~a    ~~a,,,,b&&6Br   c                    [         R                  " 5       n[         R                  " U5      (       a   eUR                  S5        UR	                  / SQ5        [         R                  " U5      (       a   eUR                  SSSS9  [         R                  " US5      (       a   eUR                  / SQ5        SUS   S	   S
'   [         R                  " U5      (       a   e[         R                  " US5      (       a   eSUS   S   S'   [         R                  " US5      (       d   e[         R                  " U5      (       d   e[         R                  " 5       nUR                  / SQ5        [         R                  " U5      (       d   e[         R                  " US5      (       a   e[         R                  " US5      (       d   e[        R                  " [         R                  [         R                  US5        g )Nr   )r   r   r   r   r   r   rI   r#   )r   r   )r      bluer   colorr   rH   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_weighted(TestFunction.test_is_negatively_weighted  s   HHJ,,Q////	

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

1a
",,Q7777	12!!Q,,Q////,,Q7777!Q((F3333((++++JJL	!!		
 ((++++,,Q
;;;;((J7777b&&(A(A1fMr   )	r*   r.   r+   r-   r,   r   r$   r(   r'   N) __name__
__module____qualname____firstlineno__r1   r:   r>   rE   rK   rO   rS   rX   r\   rl   rt   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__ r   r   r   r      s    	H@E

 LHH@282,h$2L7(

9>$$1.. *64CB#Nr   r   c                   N    \ rS rSr\S 5       rS rS rS rS r	S r
S rS	 rS
rg)TestCommonNeighborsi  c                 n   ^  [        [        R                  5      T l        U 4S jn[        U5      T l        g )Nc                 J   > [        TR                  XU5      5      nXC:X  d   eg r   )rD   func)r   r   r   r   resultclss        r   	test_func2TestCommonNeighbors.setup_class.<locals>.test_func  s$    CHHQ1-.F%%%r   )staticmethodr   common_neighborsr  test)r  r  s   ` r   setup_classTestCommonNeighbors.setup_class  s(     3 34	&  	*r   c                 \    [         R                  " S5      nU R                  USS/ SQ5        g )Nr   r   r   )r   r   r   r   r   r
  r   s     r   test_K5TestCommonNeighbors.test_K5  s$    a 		!Q9%r   c                 Z    [         R                  " S5      nU R                  USSS/5        g )Nr   r   r   r   )r   r   r
  r   s     r   test_P3TestCommonNeighbors.test_P3  $    MM!		!QA3r   c                 Z    [         R                  " S5      nU R                  USSS/5        g )Nr   r   r   r   )r   r   r
  r   s     r   test_S4TestCommonNeighbors.test_S4  r  r   c                     [         R                  " [        R                  5         [        R                  " 5       nUR                  SS/5        U R                  USS5        S S S 5        g ! , (       d  f       g = f)Nr   r#   r   r   )r   r   r   NetworkXNotImplementedr)   r   r  r   s     r   test_digraph TestCommonNeighbors.test_digraph  sN    ]]2445

Aff-.IIaA 655s   <A**
A8c                 t   [         R                  " S5      n[        R                  " [         R                  [         R
                  USS5        [        R                  " [         R                  [         R
                  USS5        [        R                  " [         R                  [         R
                  USS5        g )Nr   r   r   )r   r   r   r   r   r	  r   s     r   test_nonexistent_nodes*TestCommonNeighbors.test_nonexistent_nodes  sr    a b&&(;(;Q1Eb&&(;(;Q1Eb&&(;(;Q1Er   c                 |    [         R                  " 5       nUR                  SS/5        U R                  USS/ 5        g)zCase of no common neighbors.r   r   N)r   r   r   r
  r   s     r   test_custom1 TestCommonNeighbors.test_custom1  s1    HHJ	!Q 		!Q2r   c                 \    [         R                  " S5      nU R                  USS/ SQ5        g)zCase of equal nodes.r   r   r   Nr  r   s     r   test_custom2 TestCommonNeighbors.test_custom2  s$    a 		!Q9%r   r   N)r   r   r   r   classmethodr  r  r  r  r  r  r   r#  r   r   r   r   r   r     s8    + +&  F&r   r   
graph_typec           
         [         R                  " SU S9nSnSn[         R                  " XU5        UR                  S   U   U:X  d   eUR                  S   U   U:X  d   eUR                  S   U   U:X  d   e[         R                  " SU S9n[	        [        [        UR                  5       5      [        [        U5      5      5      5      nSn[         R                  " XU5        UR                  S   U   S:X  d   eUR                  S   U   S:X  d   eUR                  S   U   S:X  d   e[         R                  " SU S9nSS	S
.n[        R                  UR                  5       U5      nUR                  S5        [         R                  " X5        UR                  S   0 :X  d   eUR                  S   S   S:X  d   eUR                  S   S   S	:X  d   eg )Nr   create_usingr   hellor   r   r   hi   r+  r*  )r   r   set_node_attributesr=   dictziprD   r&   r   r   r   )r&  r   valsattrds        r   test_set_node_attributesr4    s   
 	aj1ADD1D)771:dt###771:dt###771:dt### 	aj1AF1779%uSV}56DD1D)771:dq   771:dq   771:dq    	aj1A3A==A&DHHQK1#771:771:dq   771:g#%%%r   )valuesr   redr   r   r   c                     [         R                  " 5       nUR                  S5        [         R                  " X U5        UR                  S   S   S:X  d   eSUR                  ;  d   eg)zy
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   r6  r   N)r   r   r   r.  r=   r5  r   r   s      r   ,test_set_node_attributes_ignores_extra_nodesr9    sW     	
AJJqM1d+771:g%'''AGGr   c           
         [         R                  " SU S9nSnSn[         R                  " XU5        US   S   U   U:X  d   eUS   S   U   U:X  d   e[         R                  " SU S9nSnSS	/n[        [	        U[        [        U5      5      5      5      n[         R                  " XU5        US   S   U   S:X  d   eUS   S   U   S:X  d   e[         R                  " SU S9nSS
S.nS/n[        R                  XE5      n[         R                  " X5        US   S   S   S:X  d   eUS   S   S   S
:X  d   eUS   S   0 :X  d   eg )Nr   r(  r*  r   r   r   r+  r   r#   r,  r-  r   r   set_edge_attributesr/  r0  r&   r   r   r&  r   r2  r1  rC   r3  s         r   test_set_edge_attributesr>    si    	aj1ADD1D)Q474=D   Q474=D    	aj1ADVEE5U,-.D1D)Q474=AQ474=A 	aj1A3AHE=="D1#Q474=AQ477s"""Q47b==r   rw   re   )r   r   rH   c                     [         R                  " S/5      n[         R                  " X U5        US   S   S   S:X  d   eSUR                  ;  d   eg)~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   rH   rw   r   N)r   r   r<  rC   r8  s      r   ,test_set_edge_attributes_ignores_extra_edgesrA  5  sQ     	&A1d+Q478###   r   c           
         [         R                  " SU S9nSnSn[         R                  " XU5        US   S   S   U   U:X  d   eUS   S   S   U   U:X  d   e[         R                  " SU S9nSnSS	/n[        [	        U[        [        U5      5      5      5      n[         R                  " XU5        US   S   S   U   S:X  d   eUS   S   S   U   S:X  d   e[         R                  " SU S9nSS
S.nS/n[        R                  XE5      n[         R                  " X5        US   S   S   S   S:X  d   eUS   S   S   S   S
:X  d   eUS   S   S   0 :X  d   eg )Nr   r(  r*  r   r   r   r+  r   r   r   r   r,  r-  r;  r=  s         r   test_set_edge_attributes_multirD  F  s    	aj1ADD1D)Q471:dt###Q471:dt### 	aj1AD	"EE5U,-.D1D)Q471:dq   Q471:dq    	aj1A3AKE=="D1#Q471:dq   Q471:g#%%%Q471:r   )rC  r   r   r   c                     [         R                  " SS/5      n[         R                  " X U5        US   S   S   S   S:X  d   eUS   S   S   0 :X  d   eSUR                  5       ;  d   eg)	r@  rC  r   r   r   r   r   rH   rw   r   N)r   
MultiGraphr<  rC   r8  s      r   2test_set_edge_attributes_multi_ignores_extra_edgesrI  d  st     	y),-A1d+Q471:h3&&&Q471:"""r   c                     [         R                  " 5       [         R                  " 5       [         R                  " 5       [         R                  " 5       /n U  H  n[         R
                  " SUS9nSnSn[         R                  " XU5        [         R                  " X5      nUS   U:X  d   eUS   U:X  d   eUS   U:X  d   eSnUR                  S5        [         R                  " XUS	9nUS   U:X  a  M   e   g )
Nr   r(  r*  r   r   r   r   r   default)	r   r   r)   rH  MultiDiGraphr   r.  get_node_attributesr   )graphsr   r2  r1  attrsdefault_vals         r   test_get_node_attributesrR  v  s    hhj"**,9JKFMM!!,
q-&&q/Qx4Qx4Qx4	

1&&qDQx;&&& r   c                  P   [         R                  " 5       [         R                  " 5       [         R                  " 5       [         R                  " 5       /n U  H  n[         R
                  " SUS9nSnSn[         R                  " XU5        [         R                  " X5      n[        U5      S:X  d   eUR                   H  nXE   U:X  a  M   e   UnUR                  SS5        [         R                  " XUS9n[        U5      S:X  d   eUR                   H  nXu   U:X  a  M   e   M     g )	Nr   r(  r*  r   r   r   r   rK  )r   r   r)   rH  rM  r   r<  get_edge_attributesr   rC   r   )rO  r   r2  r1  rP  r   rQ  deafult_attrss           r   test_get_edge_attributesrV    s    hhj"**,9JKFMM!!,
q-&&q/5zQGGD;$&&&  	

1a..qL=!Q&&&GGD &$... ! r   c                 
   [         R                  " SU S9nSnSn[         R                  " XU5        [         R                  " X5        X1R                  S   ;  d   eX1R                  S   ;  d   eX1R                  S   ;  d   e[         R                  " SU S9nSnS	n[         R                  " XU5        [         R                  " XU5        [         R                  " X5        X1R                  S   ;  d   eUR                  S   U   U:X  d   eX1R                  S   ;  d   eUR                  S   U   U:X  d   eX1R                  S   ;  d   eUR                  S   U   U:X  d   e[         R                  " SU S9n[         R                  " XU5        [         R                  " XU5        [         R                  " XU5        X1R                  S   ;  a  XQR                  S   ;  d   eX1R                  S   ;  a  XQR                  S   ;  d   eX1R                  S   ;  a  XQR                  S   ;  d   e[         R                  " SU S9nS
nSn[         R                  " UUR	                  5        Vs0 s H	  nXX%XGU0_M     sn5        [         R                  " XU5        XQR                  S   ;  a  XqR                  S   ;  d   eXQR                  S   ;  a  XqR                  S   ;  d   eXQR                  S   ;  a  XqR                  S   ;  d   eUR                  S   U   U:X  d   eUR                  S   U   U:X  d   eUR                  S   U   U:X  d   e[         R                  " SU S9n[         R                  " UX2XT0X2XT0S.5        [         R                  " X5        X1R                  S   ;  d   eX1R                  S   ;  d   eX1R                  S   ;  d   eUR                  S   U   U:X  d   eUR                  S   U   U:X  d   e[         R                  " SU S9n[         R                  " UUR	                  5        Vs0 s H	  nXX%XGU0_M     sn5        [         R                  " XUSS/S9  X1R                  S   ;  a  XQR                  S   ;  d   eX1R                  S   ;  a  XQR                  S   ;  d   eX1R                  S   ;   a  XQR                  S   ;   d   eXqR                  S   ;   a  UR                  S   U   U:X  d   eXqR                  S   ;   a  UR                  S   U   U:X  d   eg s  snf s  snf )Nr   r(  r   r*  r   r   r   r,  other,  threer#   rA   )r   r   r.  remove_node_attributesr=   )	r&  r   r1  r2  
other_vals
other_attr
third_vals
third_attrns	            r   test_remove_node_attributesra    s   
 	aj1ADD1D)a&wwqz!!!wwqz!!!wwqz!!! 	aj1AJJ1D)1*5a&wwqz!!!771:j!Z///wwqz!!!771:j!Z///wwqz!!!771:j!Z/// 	aj1A1D)1*5az2wwqz!j
&BBBwwqz!j
&BBBwwqz!j
&BBB 	aj1AJJ	 WWY	
 d

KK	
 aZ8WWQZ'Jggaj,HHHWWQZ'Jggaj,HHHWWQZ'Jggaj,HHH771:dt###771:dt###771:dt### 	aj1A	J3J3	
 a&wwqz!!!wwqz!!!wwqz!!!771:j!Z///771:j!Z/// 	aj1A	 WWY	
 d

KK	
 az1a&Awwqz!j
&BBBwwqz!j
&BBB771:*
":::#
:(>*(LLL#
:(>*(LLL(LW	
B	
s   ,T7
T<
c                    [         R                  " SU S9nSnSn[         R                  " XU5        [         R                  " X5        [	        [         R
                  " X5      5      S:X  d   e[         R                  " SU S9nSnSn[         R                  " XU5        [         R                  " XU5        [         R                  " X5        X!S   S   ;  d   eX!S   S	   ;  d   eUS   S   U   S:X  d   eUS   S	   U   S:X  d   e[         R                  " SU S9n[         R                  " XU5        [         R                  " XU5        [         R                  " XU5        X!S   S   ;  a  XAS   S   ;  d   eX!S   S	   ;  a  XAS   S	   ;  d   e[         R                  " SU S9nS
nSn[         R                  " UUR                  5        VV	s0 s H  u  pX4X#XEXg0_M     sn	n5        [         R                  " XU5        XAS   S   ;  a  XaS   S   ;  d   eXAS   S	   ;  a  XaS   S	   ;  d   eUS   S   U   U:X  d   eUS   S	   U   U:X  d   e[         R                  " SU S9n[         R                  " USX#XE005        [         R                  " X5        XAS   S   ;  a  US   S   U   U:X  d   eXAS   S	   ;  d   e[         R                  " SU S9n[         R                  " UUR                  5        VV	s0 s H  u  pX4X#XEXg0_M     sn	n5        [         R                  " XUS/S9  XAS   S   ;  a  XaS   S   ;  d   eXAS   S	   ;   a  XaS   S	   ;   d   eg s  sn	nf s  sn	nf )Nr   r(  r*  r   r   rX  r,  r   r   thirdrY  r   ebunch)r   r   r<  remove_edge_attributesr   rT  rC   )
r&  r   r2  r1  r]  r\  r_  r^  r   r   s
             r   test_remove_edge_attributesrg    s    	aj1ADD1D)a&r%%a./1444 	aj1AJJ1D)1*5a&tAwtAwQ47:#%%%Q47:#%%% 	aj1A1D)1*5az2tAw:qT!W#<<<tAw:qT!W#<<< 	aj1AJJ	 		
! FTPP!	
 aZ8qT!W$Q47)BBBqT!W$Q47)BBBQ474=D   Q474=D    	aj1A1vJ'KLMa,qT!W$1a$)>>>qT!W$$$ 	aj1A	 		
! FTPP!	
 aZIqT!W$Q47)BBB1a ZQ47%:::%:;	
,	
s   M8M!c                 D	   [         R                  " SU S9nUR                  SS5        SnSn[         R                  " XU5        [         R                  " X5        X!S   S   S   ;  d   eX!S   S   S   ;  d   eX!S   S   S   ;  d   e[         R                  " SU S9nUR                  SS5        SnS	n[         R                  " XU5        [         R                  " XU5        [         R                  " X5        X!S   S   S   ;  d   eX!S   S   S   ;  d   eX!S   S   S   ;  d   eUS   S   S   U   U:X  d   eUS   S   S   U   U:X  d   eUS   S   S   U   U:X  d   e[         R                  " SU S9nUR                  SS5        [         R                  " XU5        [         R                  " XU5        [         R                  " XU5        X!S   S   S   ;  a  XAS   S   S   ;  d   eX!S   S   S   ;  a  XAS   S   S   ;  d   eX!S   S   S   ;  a  XAS   S   S   ;  d   e[         R                  " SU S9nUR                  SS5        S
nSn[         R                  " UUR                  SS9 VV	V
s0 s H  u  pn
XU
4X#XEXg0_M     sn
n	n5        [         R                  " XU5        XAS   S   S   ;  a  XaS   S   S   ;  d   eXAS   S   S   ;  a  XAS   S   S   ;  d   eXAS   S   S   ;  a  XAS   S   S   ;  d   eUS   S   S   U   U:X  d   eUS   S   S   U   U:X  d   eUS   S   S   U   U:X  d   e[         R                  " SU S9nUR                  SS5        [         R                  " UX#XE0X#XE0S.5        [         R                  " X5        XAS   S   S   ;  a  US   S   S   U   U:X  d   eXAS   S   S   ;  d   eXAS   S   S   ;  d   e[         R                  " SU S9nUR                  SS5        [         R                  " UX#XE0X#XE0X#XE0S.5        [         R                  " XSS/S9  X!S   S   S   ;  a  XAS   S   S   ;   d   eX!S   S   S   ;  a  XAS   S   S   ;   d   eX!S   S   S   ;   a  XAS   S   S   ;   d   eg s  sn
n	nf )Nr   r(  r   r   r*  r   r   rX  r,  rc  rY  Tkeys)rC  r   r   r   )rC  r   rk  rC  r   rd  )r   r   r   r<  rf  rC   )r&  r   r2  r1  r]  r\  r_  r^  r   r   ks              r   !test_remove_multi_edge_attributesrm  ;  sZ    	aj1AJJq!DD1D)a&tAwqz!!!tAwqz!!!tAwqz!!! 	aj1AJJq!JJ1D)1*5a&tAwqz!!!tAwqz!!!tAwqz!!!Q471:j!Z///Q471:j!Z///Q471:j!Z/// 	aj1AJJq!1D)1*5az2tAwqz!j!Q
&BBBtAwqz!j!Q
&BBBtAwqz!j!Q
&BBB 	aj1AJJq!JJ	 777-	
-a 1IJJSS-	
 aZ8qT!WQZ'Jd1gaj,HHHqT!WQZ'Jd1gaj,HHHqT!WQZ'Jd1gaj,HHHQ471:dt###Q471:dt###Q471:dt### 	aj1AJJq!	J;J;	
 a,qT!WQZ'AaDGAJt,<,DDDqT!WQZ'''qT!WQZ''' 	aj1AJJq!	J;J;J;	
 ay).DEtAwqz!jaDGAJ&>>>tAwqz!jaDGAJ&>>>Q471:*!Q
":::":U	
s   9Rc                     [         R                  " 5       [         R                  " 5       [         R                  " 5       [         R                  " 5       /n U  H  n[         R
                  " U5      (       d   eUR                  [        S5      5        [         R
                  " U5      (       d   eUR                  SS/5        [         R
                  " U5      (       d  M   e   g )Nr   r#   r   )	r   r   r)   rH  rM  is_emptyr   r&   r   )rO  r   s     r   test_is_emptyrp    s    hhj"**,9JKF{{1~~~	q"{{1~~~	&&)*;;q>>!! r   c                 ~   [         R                  " SU S9nUR                  SS5        [        [         R                  " U5      S/5      (       d   e[        [         R                  " U5      S/5      (       d   e[        [         R                  " USS9SS0 4/5      (       d   e[         R                  " U5      S:X  d   eg )Nr   r(  r   r   r   Trf   r   )r   r   r   r   nodes_with_selfloopsr   selfloop_edgesnumber_of_selfloopsr&  r   s     r   test_selfloopsrw    s     	!*5AJJq!r..q1A37777r((+fX6666r((6!QEEEE!!!$)))r   c                 $   [         R                  " SU S9nUR                  SS5        UR                  SSSS9  [        [         R                  " USS9SS0 4SSS	S04/5      (       d   e[        [         R                  " US	S9S
S/5      (       d   eg )Nr   r(  r   r   r   rI   Trf   rH   )r   r   N)r   r   r   )r   r   r   r   rt  rv  s     r   test_selfloop_edges_attrry    s     	!*5AJJq!JJq!AJ
!$'1a*q!h]6K)L    r((:\9<UVVVVr   c                      [         R                  " S[         R                  S9n U R                  SSSS9  U R                  SSSS9  [	        [         R
                  " U SSS	9S
S/5      (       d   eg )Nr   r(  r   r   rI   r   rH   Trg   rj  )r   r   r   r   )r   r   r   r   )r   r   rH  r   r   rt  r
   s    r   ,test_selfloop_edges_multi_with_data_and_keysr|    sl    
!"--8AJJq!BJJJq!CJ 
!(68W   r   c                 t   [         R                  " SU S9nUR                  SS5        UR                  [         R                  " USS95        UR                  SS5        UR                  [         R                  " USS95        UR                  SS5        UR                  [         R                  " USSS95        g )Nr   r(  r   Tri  rf   )rj  rg   )r   r   r   r   rt  rv  s     r   test_selfloops_removalr~    s    
!*5AJJq!))!$78JJq!))!$78JJq!))!$TBCr   c           	         [         R                  " SU S9nUR                  SS5        UR                  SS5        UR                  [         R                  " U5      5        SUR                  5       ;  d   eUR                  SS5        UR                  SS5        [        R                  " [        5         UR                  [         R                  " USS95        SSS5        UR                  SS5        UR                  SS5        [        R                  " [        5         UR                  [         R                  " USS95        SSS5        UR                  SS5        UR                  SS5        [        R                  " [        5         UR                  [         R                  " USSS	95        SSS5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g= f)
zWtest removing selfloops behavior vis-a-vis altering a dict while iterating.
cf. gh-4068r   r(  r   rr  Tri  Nrf   r{  )
r   r   r   r   rt  rC   r   r   RuntimeError	TypeErrorrv  s     r   test_selfloops_removal_multir    s[    	!*5AJJq!JJq!))!,-"""JJq!JJq!	|	$	B--ad;< 
% JJq!JJq!	y	!	B--ad;< 
" JJq!JJq!	|	$	B--adFG 
%	$ 
%	$
 
"	!
 
%	$s$   3%F8%G		&G8
G	
G
G(c                     / SQn / SQn[         R                  " 5       [         R                  " 5       [         R                  " 5       [         R                  " 5       /nSSSSS.4SSSS	S.4SSSSS.4/nU H  nUR                  U5        [         R                  " X@S
5      S	:X  d   e[         R                  " X@S5      S:X  d   e[        R                  " [         R                  [         R                  XAS
5        M     g )Nr   )r   r   r   r   r   r   r   )costdistr   r   r  r  )
r   r   r)   rH  rM  r   path_weightr   r   NetworkXNoPath)
valid_pathinvalid_pathrO  rC   r   s        r   test_pathweightr    s    JLhhj"**,9JKF	
A1%&	
A1%&	
A1%&E
 U#~~e8A===~~e8A===b''fU	 r   r   c                     U R                  / SQ5        / SQn/ SQn/ SQn[        R                  " X5      (       d   e[        R                  " X5      (       a   e[        R                  " X5      (       a   eg )N)r#   r   r#   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   is_path)r   r  r  another_invalid_paths       r   test_ispathr    se     56JL*::a$$$$zz!****zz!22222r   c                    U R                  / SQ5        U R                  S5        [        R                  " U / SQSS/5      n[	        UR                  5       5      1 Sk:X  d   e[	        UR                  5       5      S1:X  d   eg )Nr   r   r   r   r   r#   r      r   r   r   r"   r   r   r   restricted_viewsetr=   rC   r   r   s     r   test_restricted_viewr    sg    EFJJqM
1i&&)9:Aqwwy>Y&&&qwwy>fX%%%r   c                    U R                  / SQ5        U R                  S5        [        R                  " U / SQSS/5      n[	        UR                  5       5      1 Sk:X  d   e[	        UR                  5       5      S1:X  d   eg )N)rC  rE  )r   r   r   rG  )r   r   r   )r   r   r   r   r   r  r   )r   r   r   r  r"   r  r  s     r   test_restricted_view_multir    sk    U JJqM
1i)Y)?@Aqwwy>Y&&&qwwy>fX%%%r   )%r   r   networkxr   networkx.utilsr   r   r   r   r   markparametrizer   r)   rH  rM  r4  r9  r>  rA  rD  rI  rR  rV  ra  rg  rm  rp  rw  ry  r|  r~  r  r  r  r  r  r   r   r   <module>r     s/      3(
cN cNL,& ,&^ 288RZZH&&< v	(u7F"3	4d;		 "**'=> ?: s	#X.S/Hc?	;TB!! r'GH I: S	)84_(C	A4H##'"/, 288RZZHSMSMl "**'=>A; ?A;H r'GHV; IV;r" 288RZZH** 288RZZHWW "**'=>D ?D r'GHH IH4V  "((*bjjlBMMOR__5F	G33 rxxz2::<89& :& r}}0ABC& D&r   