
    \Mhy                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d Z G d d          Z G d de          Z G d d	e          Z G d
 d          ZdS )    N)edges_equalgraphs_equalnodes_equalc                      t          j        d          } t          j        t           j        d          5  |                     d           ddd           dS # 1 swxY w Y   dS )zSee gh-7740   zNode.*is not in the graphmatchd   N)nx
path_graphpytestraisesNetworkXErrordegree)Gs    a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/classes/tests/test_graph.py,test_degree_node_not_found_exception_messager      s    
aA	r'/J	K	K	K  	                 s   AAAc                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
ej                             ej                    d	k    d
          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )BaseGraphTesterz:Tests for data-structure independent graph class features.c                 T    | j         }d|v sJ d|vsJ d|vsJ g |vsJ ddi|vsJ d S )N      b)K3selfr   s     r   test_containszBaseGraphTester.test_contains   sR    GAvvvvzzzz!||||{{{{1vQ    c                     | j         }t          |          dk    sJ |                                dk    sJ |                                dk    sJ d S N   )r   lenordernumber_of_nodesr   s     r   
test_orderzBaseGraphTester.test_order   sT    G1vv{{{{wwyyA~~~~  ""a''''''r   c                    | j         t          j        j                  sJ t          j        j                  sJ t          fdj                                        D                       sJ t          	                                          | j
        k    sJ t          	                    d                    di fdi fdi fgk    sJ d S )Nc              3   B   K   | ]}t          |j                  V  d S N)
isinstanceadjlist_inner_dict_factory).0adjr   s     r   	<genexpr>z-BaseGraphTester.test_nodes.<locals>.<genexpr>(   sA       
 
>AJsA899
 
 
 
 
 
r   Tdatar   r      )r   r)   _nodenode_dict_factory_adjadjlist_outer_dict_factoryallvaluessortednodesk3nodesr   s    @r   
test_nodeszBaseGraphTester.test_nodes$   s    G!'1#677777!&!">????? 
 
 
 
EFV]]__
 
 
 
 
 	
 	
 	
 aggii  DL0000agg4g(())q"g2wB-HHHHHHHr   c                 f   |                                  }t          j        t                    5  |                    d            d d d            n# 1 swxY w Y   t          j        t                    5  |                    d g           d d d            n# 1 swxY w Y   t          j        t                    5  |                    dd            d d d            n# 1 swxY w Y   t          j        t                    5  |                    dg           d d d            d S # 1 swxY w Y   d S )Nr   r   N)Graphr   r   
ValueErroradd_nodeadd_nodes_fromadd_edgeadd_edges_fromr   s     r   test_none_nodezBaseGraphTester.test_none_node.   s   JJLL]:&& 	 	JJt	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:&& 	% 	%dV$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]:&& 	  	 JJq$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:&& 	* 	*i[)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*sG   AAA4BBB;CC"%C"D&&D*-D*c                     | j         }|                    d          sJ |                    d          rJ |                    g           rJ |                    ddi          rJ d S )Nr   r   )r   has_noder   s     r   test_has_nodezBaseGraphTester.test_has_node9   sm    Gzz!}}::a==   ::b>>!!!::q!f%%%%%%%r   c                 t    | j         }|                    dd          sJ |                    dd          rJ d S )Nr   r   )r   has_edger   s     r   test_has_edgezBaseGraphTester.test_has_edge@   sC    Gzz!Q::a$$$$$$$r   c                     | j         }t          |                    d                    ddgk    sJ t          j        t
          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S Nr   r   r0   rH   )r   r7   	neighborsr   r   r   r   r   s     r   test_neighborszBaseGraphTester.test_neighborsE   s    Gakk!nn%%!Q////]2+,, 	 	KKOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A33A7:A7PyPyzPyPy gc is different)reasonc                    |                                  }d }t          j                      || j                   }|                                 t          j                      || j                   }||k    sJ  G d d| j                   }t          j                      |            } ||          }|                                 t          j                      ||          }||k    sJ d S )Nc                 \     t           fdt          j                    D                       S )Nc              3   p   K   | ]0}t          |t          j                  t          |          ,d V  1dS )r   N)r)   weakref
ProxyTypes)r+   obj_types     r   r-   zRBaseGraphTester.test_memory_leak.<locals>.count_objects_of_type.<locals>.<genexpr>Z   s`        !#w'9:: @J#u?U?U     r   )sumgcget_objects)rW   s   `r   count_objects_of_typez?BaseGraphTester.test_memory_leak.<locals>.count_objects_of_typeQ   sE         >++     r   c                       e Zd ZdS )1BaseGraphTester.test_memory_leak.<locals>.MyGraphN)__name__
__module____qualname__ r   r   MyGraphr]   h   s        Dr   rb   )r=   rY   collectcopy)r   r   r[   beforeafterrb   s         r   test_memory_leakz BaseGraphTester.test_memory_leakK   s    JJLL	 	 	 	
&&tz22	

%%dj11	 	 	 	 	dj 	 	 	 	
GII&&w//	

%%g..r   c                    | j         }t          |j        |j                  sJ t	          |                                g d          sJ t	          |                    d          ddg          sJ t	          |                    ddg          g d          sJ t          j        t          j	                  5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r0   r   r0   r   rj   rk   r   rH   )
r   r)   r3   r4   r   edgesr   r   r   r   r   s     r   
test_edgeszBaseGraphTester.test_edgess   s   G!&!">?????17799&>&>&>?????1771::'788888177Aq6??,D,D,DEEEEE]2+,, 	 	GGBKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   8CC"Cc                    | j         }t          |                                          g dk    sJ t          |                                          ddddk    sJ |                    d          dk    sJ t	          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )N)rk   rl   )r0   r0   r0   r   r   r0   r   rH   )r   r7   r   dictr   r   r   r   r   s     r   test_degreezBaseGraphTester.test_degree|   s    Gahhjj!!%=%=%=====AHHJJqQ1#5#55555xx{{a]2+,, 	 	HHRLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   B88B<?B<c                 |    | j         }|                                dk    sJ |                                dk    sJ d S r    )r   sizenumber_of_edgesr   s     r   	test_sizezBaseGraphTester.test_size   sA    Gvvxx1}}}}  ""a''''''r   c                    | j         }t          |                                | j                  sJ t          |                    d          dg          sJ t          |                    ddg          ddg          sJ t          |                    dg          g           sJ t          |                    d          g           sJ |                    d          }t	          j        t          j        d          5  t          |           d d d            n# 1 swxY w Y   |                    dddi g          }t	          j        t          j        d          5  t          |           d d d            d S # 1 swxY w Y   d S )	Nr   r   rH   foozis not in the graphr   r0   z&in sequence nbunch is not a valid node)	r   r   nbunch_iterr9   r   r   r   r   list)r   r   bunchs      r   test_nbunch_iterz BaseGraphTester.test_nbunch_iter   s   G1==??DL999991==++aS111111==!Q001a&999991=="..333331==//44444b!!]2+3HIII 	 	KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 q!Qm,,]$L
 
 
 	 	 KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$    DD #D  E==FFc                    |                                  }dt                      fg}t          j        t          j                  5  t          |                    |                     d d d            d S # 1 swxY w Y   d S )Nx)r=   setr   r   r   r   rz   ry   )r   r   nbunchs      r   "test_nbunch_iter_node_format_raisez2BaseGraphTester.test_nbunch_iter_node_format_raise   s     JJLL,]2+,, 	( 	(v&&'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   #A44A8;A8c                    |                                  }|                    dd           t          |                                          dgk    sJ t	          |                                          ddik    sJ |                    d          dk    sJ t          |                    dg                    dgk    sJ |                    dd          dk    sJ d S )Nr   rl   r0   weightr   )r=   rA   r7   r   rq   r   s     r   test_selfloop_degreez$BaseGraphTester.test_selfloop_degree   s    JJLL	

1aahhjj!!fX----AHHJJAq6))))xx{{aahhsmm$$0000xx(x++q000000r   c                    | j                                         }|                    dd           t          t	          j        |          dg          sJ t          t	          j        |          dg          sJ t	          j        |          dk    sJ |	                    dd           |                    dd           |
                    dg           |                    dd           |                    d           |                    dd           |                    dd           |                    ddg           d S )Nr   r   r   r   )r   rd   rA   r   r   nodes_with_selfloopsr   selfloop_edgesnumber_of_selfloopsremove_edgeremove_edges_fromremove_noderemove_nodes_fromr   s     r   test_selfloopszBaseGraphTester.test_selfloops   s1   GLLNN	

1a22155s;;;;;2,Q//&:::::%a((A----	a	

1a	VH%%%	

1a	a	

1a	

1a	QF#####r   c                    | j                                         }|j        }t          |j                  t          |          k    sJ i |_        t          |j                  t          |          k    sJ |j        }t          |j                  t          |          k    sJ i |_        t          |j                  t          |          k    sJ d S r(   )r   rd   r,   idr3   r8   r1   )r   r   old_adj	old_nodess       r   test_cache_resetz BaseGraphTester.test_cache_reset   s    GLLNN%!%yyBwKK''''!%yyBwKK''''G	!'{{bmm++++!'{{bmm++++++r   c                    | j                                         }t          |j                  t          |j                  k    sJ t          |j                  t          |j                  k    sJ t          |j                  t          |j                  k    sJ t          |j                  t          |j                  k    sJ d S r(   )r   rd   r   r8   rm   r   r,   r   s     r   test_attributes_cachedz&BaseGraphTester.test_attributes_cached   s    GLLNN!'{{bkk))))!'{{bkk))))!(||r!(||++++!%yyBquII%%%%%%r   N)r^   r_   r`   __doc__r   r%   r:   rC   rF   rJ   rN   r   markskipifplatformpython_implementationrg   rn   rr   rv   r|   r   r   r   r   r   ra   r   r   r   r      sY       DD  ( ( (I I I	* 	* 	*& & &% % %
   [&&((F2;Q   # # #J    ( ( (
  ,	( 	( 	(1 1 1$ $ $
, 
, 
,& & & & &r   r   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d'S )(BaseAttrGraphTesterz(Tests of graph class attribute features.c                 ,   |                                  }|                    dddd           |                    dddd           t          d |                    d          D                       g d	k    sJ t	          |                    d                    dd
ddk    sJ |                    dd          dk    sJ t          |                    dgd          dg          sJ t          d |                    d          D             g d          sJ t	          |                    d                    ddddk    sJ |                    dd          dk    sJ t          |                    dgd          dg          sJ d S )Nr   r0   r!   )r   otherr   c              3       K   | ]	\  }}|V  
d S r(   ra   r+   nds      r   r-   z;BaseAttrGraphTester.test_weighted_degree.<locals>.<genexpr>   s&      >>DAqa>>>>>>r   r   r   )r0   r!   r   r   )r   r0   r!   rl   c              3       K   | ]	\  }}|V  
d S r(   ra   r   s      r   r-   z;BaseAttrGraphTester.test_weighted_degree.<locals>.<genexpr>   s&      CC$!QACCCCCCr   r   )r!      r   r   )r   r!   )r=   rA   r7   r   rq   r   r   r   s     r   test_weighted_degreez(BaseAttrGraphTester.test_weighted_degree   s   JJLL	

1a
+++	

1a
+++>>AHHHH$=$=>>>>>)))KKKKAHHHH--..aA!2D2DDDDDxx(x++q0000AHHaSH::fXFFFFFCC!(('(*B*BCCCYYYOOOOOAHHGH,,--Q11C1CCCCCxx'x**a////AHHaSH99VHEEEEEEEr   c                     g |j         d<   g |j        d         d<   |                    dd           g }|                    dd|           |                    dd|           d S )Nrx   r   r   r0   rx   )graphr8   r   rA   )r   r   lls      r   add_attributesz"BaseAttrGraphTester.add_attributes   sl    
5	a	

1aR
   	

1aR
     r   c                     |                      d          }|j        dk    sJ |                      d          }|j        dk    sJ d S )N nametest)r=   r   r   s     r   	test_namezBaseAttrGraphTester.test_name   sP    JJBJv||||JJFJ##vr   c                     |                                  }|                    ddg           t          |          t          |          j         dk    sJ d S )Nrl   r0   r!   z with 3 nodes and 2 edgesr=   rB   strtyper^   r   s     r   test_str_unnamedz$BaseAttrGraphTester.test_str_unnamed   sW    JJLL	&&)***1vvDGG,GGGGGGGGGr   c                     |                      d          }|                    ddg           t          |          t          |          j         dk    sJ d S )Nrx   r   rl   r   z% named 'foo' with 3 nodes and 2 edgesr   r   s     r   test_str_namedz"BaseAttrGraphTester.test_str_named   s]    JJEJ""	&&)***1vvDGG,SSSSSSSSSr   c                     |                      ddg          }|                    d          }|                    ddg          }|                    d          }||j        u sJ ||j        u sJ ||j        u sJ d S )	Nrj   rl   Tas_viewr   r   F)rd   )r=   to_directedsubgraphreverse_graph)r   r   DGSDGRSDGs        r   test_graph_chainz$BaseAttrGraphTester.test_graph_chain   s    JJ'((]]4]((kk1a&!!{{{&&BI~~~~SZdk!!!!!!r   c                 Z   |                                  }|                    d           |                    dd           |                     |           |                                }|                     ||           |                     ||           |                     ||           d S Nr   r   r0   )r=   r?   rA   r   rd   r   different_attrdictshallow_copy_attrdictr   r   Hs      r   	test_copyzBaseAttrGraphTester.test_copy  s    JJLL	

1	

1aAFFHH!Q1%%%""1a(((((r   c                 \   |                                  }|                    d           |                    dd           |                     |           |                    |          }|                     ||           |                     ||           |                     ||           d S r   )r=   r?   rA   r   	__class__r   r   r   r   s      r   test_class_copyz#BaseAttrGraphTester.test_class_copy  s    JJLL	

1	

1aAKKNN!Q1%%%""1a(((((r   c                 "   |                                  }|                    d           |                    dd           |                     |           |                                }|                    |           |                    |                                           t          |j	        d                   dk    sJ |
                                r|j        d         d         d         n|j        d         d         }t          |          dk    sJ t          |j	        d                   dk    sJ |
                                r|j        d         d         d         n|j        d         d         }t          |          dk    sJ d S r   )r=   r?   rA   r   r   r@   rB   rm   r"   r8   is_multigraphr,   )r   r   r   ddicts       r   test_fresh_copyz#BaseAttrGraphTester.test_fresh_copy  sG   JJLL	

1	

1aAKKMM		###171:!####"#//"3"3DaAq!5zzQ171:!####"#//"3"3DaAq!5zzQr   c                     |                      ||           |                     ||           |                     ||           d S r(   )r   r   deep_copy_attrdictr   r   r   s      r   is_deepcopyzBaseAttrGraphTester.is_deepcopy.  sJ    !Q1%%%1%%%%%r   c                     |                      ||           |                     ||           |                     ||           d S r(   )deepcopy_graph_attrdeepcopy_node_attrdeepcopy_edge_attrr   s      r   r   z&BaseAttrGraphTester.deep_copy_attrdict3  sJ      A&&&1%%%1%%%%%r   c                     |j         d         |j         d         k    sJ |j         d                             d           |j         d         |j         d         k    sJ d S Nrx   r   r   appendr   s      r   r   z'BaseAttrGraphTester.deepcopy_graph_attr8  \    wu~////	a   wu~//////r   c                     |j         d         d         |j         d         d         k    sJ |j         d         d                             d           |j         d         d         |j         d         d         k    sJ d S Nr   rx   r   r8   r   r   s      r   r   z&BaseAttrGraphTester.deepcopy_node_attr=  u    wqz% AGAJu$55555	
5  ###wqz% AGAJu$5555555r   c                    |d         d         d         |d         d         d         k    sJ |d         d         d                              d           |d         d         d         |d         d         d         k    sJ d S Nr   r0   rx   r   r   s      r   r   z&BaseAttrGraphTester.deepcopy_edge_attrB  z    tAwu~1a////	!Qa   tAwu~1a//////r   c                 ^    |                      ||           |                     ||           d S r(   )r   r   r   s      r   is_shallow_copyz#BaseAttrGraphTester.is_shallow_copyG  s4    !Q""1a(((((r   c                     |                      ||           |                     ||           |                     ||           d S r(   )shallow_copy_graph_attrshallow_copy_node_attrshallow_copy_edge_attrr   s      r   r   z)BaseAttrGraphTester.shallow_copy_attrdictK  sJ    $$Q***##Aq)))##Aq)))))r   c                     |j         d         |j         d         k    sJ |j         d                             d           |j         d         |j         d         k    sJ d S r   r   r   s      r   r   z+BaseAttrGraphTester.shallow_copy_graph_attrP  r   r   c                     |j         d         d         |j         d         d         k    sJ |j         d         d                             d           |j         d         d         |j         d         d         k    sJ d S r   r   r   s      r   r   z*BaseAttrGraphTester.shallow_copy_node_attrU  r   r   c                    |d         d         d         |d         d         d         k    sJ |d         d         d                              d           |d         d         d         |d         d         d         k    sJ d S r   r   r   s      r   r   z*BaseAttrGraphTester.shallow_copy_edge_attrZ  r   r   c                 |   |d         d         d         }d|j         d         d         d<   |j        |j        k    sJ ||j         d         d         d<   |j        |j        k    sJ |j        d         d         }d|j        d         d<   |j        |j        k    sJ ||j        d         d<   |j        |j        k    sJ d S Nr   r0   rx   bazr   )r,   rm   r8   r   r   r   old_foos       r   same_attrdictz!BaseAttrGraphTester.same_attrdict_  s    A$q'%."aEw!'!!!!$aEw!'!!!!'!*U#!
5w!'!!!!#
5w!'!!!!!!r   c                 |   |d         d         d         }d|j         d         d         d<   |j        |j        k    sJ ||j         d         d         d<   |j        |j        k    sJ |j        d         d         }d|j        d         d<   |j        |j        k    sJ ||j        d         d<   |j        |j        k    sJ d S r   )r,   r3   r8   r1   r   s       r   r   z&BaseAttrGraphTester.different_attrdictl  s    A$q'%."aEv$aEv'!*U#!
5w!'!!!!#
5w!'!!!!!!r   c                 "   |j         |j         k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |                                sf|                                sR|j         d         d         |j         d         d         u sJ |j         d         d         |j         d         d         u sJ d S |                                s|j         |_        |j         |_        |                                s|j         |_        |j         |_        |j        |j        k    sJ |j        |j        k    sJ |j        d         d         |j        d         d         u sJ |j        d         d         |j        d         d         u sJ d S )Nr   r0   )r3   r1   r   r   is_directed_pred_succr   s      r   r   z BaseAttrGraphTester.graphs_equaly  s   vw!'!!!!w!'!!!!v}} 	2q}} 	26!9Q<16!9Q<////6!9Q<16!9Q<//////==?? !&&==?? !&&7ag%%%%7ag%%%%71:a=AGAJqM111171:a=AGAJqM111111r   c                 &   | j                                         }d|j        d<   t          |j        |j                  sJ |j        d         dk    sJ |j        d= |j        i k    sJ |                     d          }|j        d         dk    sJ d S )Nbarrx   r   )r   rd   r   r)   graph_attr_dict_factoryr=   r   s      r   test_graph_attrz#BaseAttrGraphTester.test_graph_attr  s    GLLNN!'1#<=====wu~&&&&GENw"}}}}JJ5J!!wu~&&&&&&r   c                    | j                                                             dd           t          fd                    d          D                       sJ t                                          g d          sJ t                              d          di fdd	difd
i fg          sJ dj        d         d	<   t                              d          di fdd	difd
i fg          sJ t                              d	          g d          sJ t                              d	d          g d          sJ d S )Nr   r   r   c              3   H   K   | ]\  }}t          |j                  V  d S r(   )r)   node_attr_dict_factory)r+   ur   r   s      r   r-   z5BaseAttrGraphTester.test_node_attr.<locals>.<genexpr>  sE       
 
8<1Jq!233
 
 
 
 
 
r   Tr.   rp   r   rx   r0   r   )r<   r   r   )r0   N)r/   default))r   r   r  )r0   r   )r   rd   r?   r5   r8   r   r   s    @r   test_node_attrz"BaseAttrGraphTester.test_node_attr  s   GLLNN	

1%
    
 
 
 
@AT@R@R
 
 
 
 
 	
 	
 	
 17799iii000001777--B!eU^9LqRTg/VWWWWW!
51777--B!eU^9LqRTg/VWWWWW1777..0R0R0RSSSSSGGG..0T0T0T
 
 	
 	
 	
 	
 	
r   c           	         | j                                         }ddi} |j        d
i | t          |                                g d          sJ t          |                    d          di fdi fd	i fdddifg          sJ d S )Nrx   r   r!   r   r   r0   r!   Tr.   r   r   r0   )r!   )r   rd   r?   r   r8   )r   r   as      r   test_node_attr2z#BaseAttrGraphTester.test_node_attr2  s    GLLNNEN
17799lll33333GGG!R1b'Ar7Q<O P
 
 	
 	
 	
 	
 	
r   c                     |                                  }|                    ddd           t          |j        d         ddi          sJ d S )Nr   r0   r   r   rl   rx   )r=   rA   r   rm   r   s     r   test_edge_lookupz$BaseAttrGraphTester.test_edge_lookup  sM    JJLL	

1aU
###174=5%.9999999r   c                 h   |                                                      ddd           t          fd                    d          D                       sJ t	                              d          ddddifg          sJ t	                              d          d	g          sJ d S )
Nr   r0   r   r   c              3   J   K   | ]\  }}}t          |j                  V  d S r(   )r)   edge_attr_dict_factory)r+   r  vr   r   s       r   r-   z5BaseAttrGraphTester.test_edge_attr.<locals>.<genexpr>  sG       
 
8?1aJq!233
 
 
 
 
 
r   Tr.   rx   )r   r0   r   )r=   rA   r5   rm   r   r   s    @r   test_edge_attrz"BaseAttrGraphTester.test_edge_attr  s    JJLL	

1aU
### 
 
 
 
CD77PT7CUCU
 
 
 
 
 	
 	
 	
 1777--Au~0F/GHHHHH1777..@@@@@@@r   c                    |                                  }|                    ddgd           t          |                    d          ddddifd	d
ddifg          sJ t          |                    d          ddg          sJ d S )Nrl   r!   r   rx   r   Tr.   r   r0   r!   r   )r   r0   rx   )r!   r   rx   )r=   rB   r   rm   r   s     r   test_edge_attr2z#BaseAttrGraphTester.test_edge_attr2  s    JJLL	&&)u555GGG!Q!7!Q9O P
 
 	
 	
 	
 1777..0NOOOOOOOr   c           	         |                                  }|                    ddddifddddifgd	           t          |                    d
          dddddfdddddfg          sJ |                    ddg           |                    ddddd           t          |                    d
          ddddddfg          sJ d S )Nr   r0   r       r!   r   @   rx   r   Tr.   )rx   r   rl   r  r   r   r/   spamr   )r=   rB   r   rm   r   rA   r   s     r   test_edge_attr3z#BaseAttrGraphTester.test_edge_attr3  s   JJLL	1a(B01a(B2HIuUUUGGGAu334Au334
 
 	
 	
 	
 	
VV,---	

1aae
777GGG!QE%(P(P!Q R
 
 	
 	
 	
 	
 	
r   c           	         |                                  }|                    ddddd           t          |                    d          ddddddfg          sJ d	|d         d         d
<   t          |                    d          ddd	dddfg          sJ d|j        d         d         d
<   t          |                    d          ddddddfg          sJ d|j        d         d
<   t          |                    d          ddddddfg          sJ ddg|j        d         d         d<   d|j        d         d         d<   dddddgdd}t          |                    d          dd|fg          sJ d S )Nr   r0   r   r   rx   r  Tr.   
   r/         rl      listdatar   )r/   r  r   r   r   )r=   rA   r   rm   r,   )r   r   dds      r   test_edge_attr4z#BaseAttrGraphTester.test_edge_attr4  s   JJLL	

1aae
777GGG!QE%(P(P!Q R
 
 	
 	
 	
 !QGGG!QU5(Q(Q!R S
 
 	
 	
 	
 !aFGGG!QU5(Q(Q!R S
 
 	
 	
 	
 !#fGGG!QU5(Q(Q!R S
 
 	
 	
 	
 $&s)aJ "aHS	
 
 1777--Ar
|<<<<<<<r   c                    | j         }|                     |           t          j        |          }|                     ||           |                     ||           |                                }|                     ||           d S r(   )r   r   r   r=   r   r   to_undirectedr   r   s      r   test_to_undirectedz&BaseAttrGraphTester.test_to_undirected  s    GAHQKKQ"""1%%%OOAr   c                 T   t          j        d| j                  }|                    d          }||j        u sJ |                    dd          sJ |                    dd          s|                                sJ t          j        t           j	        |j
        d           t          j        t           j	        |j        dd           |                    dd           |                    dd          sJ |                    dd          s|                                sJ d S d S Nr0   )create_usingTr   r   r   rH   )r   r   r=   r   r   rI   r   r   r   r   r?   rA   r   r   H2s      r   test_to_directed_as_viewz,BaseAttrGraphTester.test_to_directed_as_view  s   M!$*555]]4]((BI~~~~{{1a     {{1a  3AMMOO333b&R888b&Q:::	

1a{{1a     {{1a  3AMMOO3333333r   c                     t          j        d| j                  }|                    d          }||j        u sJ |                    dd          sJ |                    dd          sJ t          j        t           j        |j	        d           t          j        t           j        |j
        dd           |
                    dd           |                    dd          sJ |                    dd          sJ d S r'  )r   r   r=   r$  r   rI   r   r   r   r?   rA   r)  s      r   test_to_undirected_as_viewz.BaseAttrGraphTester.test_to_undirected_as_view	  s    M!$*555__T_**BI~~~~{{1a     {{1a     b&R888b&Q:::	

1a{{1a     {{1a       r   c                    |                                  } G fdd|                                           G fdd|                                          |                                r
             n	             }|                                }t          |          sJ |                                }t          |          sJ d S )Nc                   $    e Zd Z fdZfdZdS )9BaseAttrGraphTester.test_directed_class.<locals>.newGraphc                     S r(   ra   r   
newDiGraphs    r   to_directed_classzKBaseAttrGraphTester.test_directed_class.<locals>.newGraph.to_directed_class  	    !!r   c                     S r(   ra   r   newGraphs    r   to_undirected_classzMBaseAttrGraphTester.test_directed_class.<locals>.newGraph.to_undirected_class      r   Nr^   r_   r`   r4  r9  r3  r8  s   r   r8  r0    G        " " " " "             r   r8  c                   $    e Zd Z fdZfdZdS );BaseAttrGraphTester.test_directed_class.<locals>.newDiGraphc                     S r(   ra   r2  s    r   r4  zMBaseAttrGraphTester.test_directed_class.<locals>.newDiGraph.to_directed_class   r5  r   c                     S r(   ra   r7  s    r   r9  zOBaseAttrGraphTester.test_directed_class.<locals>.newDiGraph.to_undirected_class#  r:  r   Nr;  r<  s   r   r3  r?    r=  r   r3  )r=   r9  r4  r   r   r)   r$  )r   r   r   r3  r8  s      @@r   test_directed_classz'BaseAttrGraphTester.test_directed_class  s   JJLL	  	  	  	  	  	  	  	 q,,.. 	  	  	 	  	  	  	  	  	  	  	 ,,.. 	  	  	  MMOO;JJLLLMMOO!Z(((((OO!X&&&&&&&r   c                    | j         }|                     |           t          j        |          }|                     ||           |                     ||           |                                }|                     ||           d S r(   )r   r   r   DiGraphr   r   r   r   r   s      r   test_to_directedz$BaseAttrGraphTester.test_to_directed,  s    GAJqMMQ"""1%%%MMOOAr   c                    | j         }|                     |           |                    g d          }|                     ||           |                     ||           |                     ||           |                    d          }|j        di ik    sJ |                    g           }|j        i k    sJ |j        i k    sJ d S )N)r   r   r0   r   r   )r   r   r   r   r   r   r,   r   s      r   test_subgraphz!BaseAttrGraphTester.test_subgraph5  s    GAJJ|||$$!Q1a   ""1a(((JJqMMuBJJrNNu{{{{u{{{{{{r   c                 D   | j                                         }|                    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   r0   r   Tr.   r   )r   r   N)r   r   r0   )r   rd   rA   r   r   r   r   s     r   test_selfloops_attrz'BaseAttrGraphTester.test_selfloops_attrC  s    GLLNN	

1a	

1a
"""ad+++q!Rj1a(A:O-P
 
 	
 	
 	
 ah///,	1J
 
 	
 	
 	
 	
 	
r   N))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   r  r
  r  r  r  r  r"  r%  r+  r-  rB  rE  rG  rI  ra   r   r   r   r      sT       22F F F! ! !     H H H
T T T
" " "	) 	) 	)	) 	) 	)   & & &
& & &
0 0 0
6 6 6
0 0 0
) ) )* * *
0 0 0
6 6 6
0 0 0
" " "" " "2 2 2(' ' '
 
 

 
 
: : :
A A AP P P
 
 
"= = =<  
4 
4 
4
! 
! 
!' ' '.    	
 	
 	
 	
 	
r   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S )	TestGraphz;Tests specific to dict-of-dict-of-dict graph data structurec                 F   t           j        | _        i i i }}}||d||d||dd| _        g d| _        g d| _        |                                 | _        | j        | j        _        i | j        _        i | j        j        d<   i | j        j        d<   i | j        j        d<   d S )	Nrl   rk   rj   rp   ri   r   r   r0   )r   r=   k3adjk3edgesr9   r   r3   r1   )r   ed1ed2ed3s       r   setup_methodzTestGraph.setup_methodR  s    X
R#S S))##.>.>ssCSCSTT
/// yy**,,zaaar   c                    | j         }t          j        t          j        |d                    }|                     ||           t          j        t          j        |                    }|                     ||           d S )NrH   )r   pickleloadsdumpsr   )r   r   pgs      r   test_picklezTestGraph.test_pickle`  sm    G\&,q"--.."a   \&,q//**"a     r   c                     |                      dgdgdd          }|j        dk    sJ t          |j                                                  ddi ifddi ifgk    sJ d S )Nr0   r   rl   r   r   )r=   r   r7   r,   itemsr   s     r   test_data_inputzTestGraph.test_data_inputg  st    JJA3A3''fJ55vaekkmm$$!aWAr7|(DDDDDDDr   c                 |    | j         }t          |                                          i i di i di i ddk    sJ d S )Nrl   rk   rj   rp   )r   rq   	adjacencyr   s     r   test_adjacencyzTestGraph.test_adjacencyl  s_    GAKKMM"""~~"~~"~~'
 '
 
 
 
 
 
 
r   c                 ~   | j         }|j        d         i i dk    sJ |d         i i dk    sJ t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t                    5  |                    dg           d d d            d S # 1 swxY w Y   d S )Nr   rl   jA)r   r,   r   r   KeyError__getitem__	TypeErrorr   s     r   test_getitemzTestGraph.test_getitemt  s@   GuQxrb>>))))t2"~~%%%%]8$$ 	 	MM#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9%% 	! 	!MM3%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s$   A**A.1A.B22B69B6c                    |                                  }|                    d           |j        di ik    sJ |                    dd           |                    dd           |                    dd           |j        d         d         dk    sJ |j        d         d         dk    sJ |j        d         d         dk    sJ |                    dd           |                    dd           |                    dd           |j        d         d         dk    sJ |j        d         d         dk    sJ |j        d         d         dk    sJ d S )	Nr   r   redcr0   bluer!   ri  )r=   r?   r,   r8   r   s     r   test_add_nodezTestGraph.test_add_node}  sa   JJLL	

1uB	

1
	

1
	

1
wqz#%''''wqz#&((((wqz#%''''	

1
	

1
	

1
wqz#&((((wqz#%''''wqz#&((((((r   c                 <   |                                  }|                    g d           |j        i i i dk    sJ |                    g dd           |j        d         d         dk    sJ |j        d         d         dk    sJ |j        d         |j        d         usJ |                    g dd           |j        d         d         dk    sJ |j        d         d         dk    sJ |j        d         |j        d         usJ |                                  }|                    |                    d	
                     |j        d         d         dk    sJ |j        d         d         dk    sJ |j        d         |j        d         usJ |                    ddddifdddifgd           |j        d         d         dk    sJ |j        d         d         dk    sJ |j        d         d         dk    sJ |j        d         d         dk    sJ d S )Nrp   rg  rh  r   ri  r0   r   rj  Tr.   greenr!   cyan)r=   r@   r,   r8   r   s      r   test_add_nodes_fromzTestGraph.test_add_nodes_from  sJ   JJLL	###uB2"------	e,,,wqz#%''''wqz#%''''wqz++++	f---wqz#&((((wqz#&((((wqz++++JJLL	d++,,,wqz#&((((wqz#&((((wqz++++	!a#w01sFm2DEOOOwqz#%''''wqz#'))))wqz#&((((wqz#&((((((r   c                 "   | j                                         }|                    d           |j        di idi idk    sJ t	          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r0   r   rl   rH   )r   rd   r   r,   r   r   r   r   r   s     r   test_remove_nodezTestGraph.test_remove_node  s    GLLNN	auQGB000000]2+,, 	 	MM"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   !BBBc                     | j                                         }|                    ddg           |j        di ik    sJ |                    dg           d S rL   )r   rd   r   r,   r   s     r   test_remove_nodes_fromz TestGraph.test_remove_nodes_from  s\    GLLNN	QF###uB	RD!!!!!r   c                    |                                  }|                    dd           |j        di idi idk    sJ |                                  } |j        d  |j        di idi idk    sJ |                                  }t          j        t
                    5  |                    d d           d d d            d S # 1 swxY w Y   d S )Nr   r   rj   anything)r=   rA   r,   r   r   r>   r   s     r   test_add_edgezTestGraph.test_add_edge  s   JJLL	

1auQGB000000JJLL
FuQGB000000JJLL]:&& 	) 	)JJtZ(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   CC	Cc                    |                                  }|                    dddddifg           |j        i ddiddi idddiidk    sJ |                                  }|                    dddddifddd	d
ifgd           |j        d	diddddd	did	d
iddddd	d
iddk    sJ t          j        t
          j                  5  |                    dg           d d d            n# 1 swxY w Y   t          j        t
          j                  5  |                    dg           d d d            n# 1 swxY w Y   t          j        t                    5  |                    dg           d d d            n# 1 swxY w Y   t          j        t                    5  |                    ddg           d d d            d S # 1 swxY w Y   d S )Nrj   r   r0   r   r!   rl   rp   r   r/   r   r.   )r   r/   rk   )r   r  r    )r!   r0   )	r=   rB   r,   r   r   r   r   rd  r>   r   s     r   test_add_edges_fromzTestGraph.test_add_edges_from  s(   JJLL	&1a(A"78999u8Q-((2wHa=!
 
 
 
 
 

 JJLL	&1a(A"7!Q9LMTUVVVuA;a#;#;<<A;FA;//++<<
 
 
 
 
 
 ]2+,, 	% 	%dV$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]2+,, 	- 	-l^,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-]9%% 	" 	"aS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"]:&& 	2 	2i0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2sH   C..C25C2D::D>D>FFF%G

GGc                 .   | j                                         }|                    dd           |j        di idi ii i ddk    sJ t	          j        t          j                  5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r0   rj   rp   rH   )r   rd   r   r,   r   r   r   r   r   s     r   test_remove_edgezTestGraph.test_remove_edge  s    GLLNN	auQGBrNNCCCCCC]2+,, 	! 	!MM"a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   &B

BBc                     | j                                         }|                    dg           |j        di idi ii i ddk    sJ |                    dg           d S )Nrj   r0   rp   r   )r   rd   r   r,   r   s     r   test_remove_edges_fromz TestGraph.test_remove_edges_from  sn    GLLNN	VH%%%uQGBrNNCCCCCC	VH%%%%%r   c                     | j                                         }d|j        d<   |                                 t	          |j                  g k    sJ |j        i k    sJ |j        i k    sJ d S )Nr   r   )r   rd   r   clearrz   r8   r,   r   s     r   
test_clearzTestGraph.test_clear  sd    GLLNN				AG}}""""u{{{{w"}}}}}}r   c                 L   | j                                         }d|j        d<   t          |j                  }|                                 t          |j                  |k    sJ |j        i i i dk    sJ t          |j                  g k    sJ |j        d         dk    sJ d S )Nr   r   rp   )r   rd   r   rz   r8   clear_edgesr,   rm   )r   r   r8   s      r   test_clear_edgeszTestGraph.test_clear_edges  s    GLLNNQW	AG}}%%%%uB2"------AG}}""""wv$&&&&&&r   c                    | j         }ddi fddi fddi fg}t          |                    d          |          sJ t          |                    dd          ddi fddi fg          sJ t          |                    ddgd          |          sJ t          j        t
          j                  5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r0   Tr.   rH   )r   r   rm   r   r   r   r   )r   r   	all_edgess      r   test_edges_datazTestGraph.test_edges_data  s7   GBZ!QaBZ8	1777--y9999917714700Aq":1bz2JKKKKK177Aq6755yAAAAA]2+,, 	 	GGB	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   2CCCc                 4   | j                                         }|                    dd          i k    sJ |d         d         i k    sJ |                    dd          J |                    dd          J |                    ddd          dk    sJ d S )Nr   r   r  r  rH   )r  )r   rd   get_edge_datar   s     r   test_get_edge_datazTestGraph.test_get_edge_data  s    GLLNNq!$$****tAw"}}}}r2&&...r1%%---r1a00A555555r   c                 V   | j                                         }|                    ddddifgdddddifg	           d
i fdi fdi fdi fdddifdi fdi fdi fg}t          |j                                                  |k    sJ |                                r%d
di fd
di fdd
i fddi fdd
i fddi fddi fddddifg}nd
di fd
di fddi fddi fddddifg}t          |j                                                  |k    sJ |j        i k    sJ | j                                         }|                    dddddifgddddifg           t          |j                                                  |k    sJ t          |j                                                  |k    sJ |j        i k    sJ | 	                                }d|j        d<   |
                    dd           |                    d
dd           |                                }| 	                                }|                    |           t          ||          sJ |                    |           t          ||          sJ | 	                                }|                    ddg           |j        ddhz  t                      k    sJ |                                d
k    sJ | 	                                }|                    dg           t          |j                                                  ddi fgk    sJ |                                dk    sJ t          j        t"          j                  5  t#          j	                                                     d d d            d S # 1 swxY w Y   d S )Nr!   r   rt   r0   )r   r      r   r   )r8   rm   r   r   r   r   rx   r.   g      ?r   )r8   r  )rm   )r   rd   updater7   r8   r/   r   rm   r   r=   r?   rA   r   r   rt   r   r   r   r   )r   r   nlistelistGGr   s         r   test_updatezTestGraph.test_update  s   GLLNN	A{+,VaXqM=R4STTTGGGGGGG	
 agllnn%%....==?? 	Ar
Ar
Ar
Ar
Ar
Ar
Ar
A!}%	EE Ar
Ar
Ar
Ar
A!}%E agllnn%%....w"}}}} GLLNN	&1a(A/01q61+6F2GHHHagllnn%%....agllnn%%....w"}}}} JJLL	

11
	

1a
$$$VVXXJJLL
		!Ar"""""	Aq!!!!! JJLL	1vw!Q355((((vvxx1}}}} JJLL	x   agllnn%%1a*5555vvxx1}}}} ]2+,, 	  	 HJJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   +&NN"%N"N)r^   r_   r`   r   rR  rX  r[  r^  re  rk  ro  rq  rs  rv  rx  rz  r|  r  r  r  r  r  ra   r   r   rK  rK  O  s0       EE  ! ! !E E E

 
 
! ! !) ) )&) ) )8  " " "	) 	) 	)2 2 22! ! !& & &  ' ' '  6 6 6F  F  F  F  F r   rK  c                   B    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestEdgeSubgraphz6Unit tests for the :meth:`Graph.edge_subgraph` method.c                    t          j        d          }t          d          D ]}d| |j        |         d<   d|j        d         d<   d|j        d         d<   d|j        d<   || _        |                    ddg          | _        d S )	Nr   noder   edge01rj   edge34r  r   )	r   r   ranger8   rm   r   r   edge_subgraphr   )r   r   is      r   rR  zTestEdgeSubgraph.setup_method[  s    M!q 	, 	,A!+AGAJv (f (f!&&!122r   c                 b    g dt          | j                                                  k    sJ dS )z.Tests that the subgraph has the correct nodes.r   r   r!   r   N)r7   r   r8   r   s    r   test_correct_nodesz#TestEdgeSubgraph.test_correct_nodesh  s/    ||vdfllnn55555555r   c                 f    ddgt          | j                            d                    k    sJ dS )z.Tests that the subgraph has the correct edges.)r   r   r  )r!   r   r  r   r.   N)r7   r   rm   r  s    r   test_correct_edgesz#TestEdgeSubgraph.test_correct_edgesl  s8     "23vdfllPVl>W>W7X7XXXXXXXr   c                     | j                             d           g dt          | j                                                  k    sJ dS )zkTests that adding a node to the original graph does not
        affect the nodes of the subgraph.

        r   r  N)r   r?   r7   r   r8   r  s    r   rk  zTestEdgeSubgraph.test_add_nodep  sE    
 	||vdfllnn55555555r   c                     | j                             d           g dt          | j                                                  k    sJ dS )ziTests that removing a node in the original graph does
        affect the nodes of the subgraph.

        r   )r   r!   r   N)r   r   r7   r   r8   r  s    r   rq  z!TestEdgeSubgraph.test_remove_nodex  sG    
 	1yyF46<<>>22222222r   c                 ^   | j         D ]*}| j        j        |         | j         j        |         k    sJ +d| j        j        d         d<   | j        j        d         | j         j        d         k    sJ d| j         j        d         d<   | j        j        d         | j         j        d         k    sJ dS )z`Tests that the node attribute dictionary of the two graphs is
        the same object.

        rx   r   r   r   r   N)r   r   r8   )r   r  s     r   test_node_attr_dictz$TestEdgeSubgraph.test_node_attr_dict  s    
  	6 	6A6<?dfl1o55555"'Qv|A$&,q/1111"'Qv|A$&,q/111111r   c                    | j                                         D ]1\  }}| j        j        ||f         | j         j        ||f         k    sJ 2d| j        j        d         d<   | j        j        d         d         | j         j        d         d         k    sJ d| j         j        d         d<   | j        j        d         d         | j         j        d         d         k    sJ dS )z`Tests that the edge attribute dictionary of the two graphs is
        the same object.

        rx   rj   r   r   r  N)r   rm   r   )r   r  r  s      r   test_edge_attr_dictz$TestEdgeSubgraph.test_edge_attr_dict  s    
 FLLNN 	< 	<DAq6<1%ad);;;;;;%*T6"v|D!&)TV\$-?-GGGGG%*T6"v|D!&)TV\$-?-GGGGGGGr   c                 :    | j         j        | j        j        u sJ dS )zaTests that the graph attribute dictionary of the two graphs
        is the same object.

        N)r   r   r   r  s    r   test_graph_attr_dictz%TestEdgeSubgraph.test_graph_attr_dict  s#    
 v|tv|++++++r   N)r^   r_   r`   r   rR  r  r  rk  rq  r  r  r  ra   r   r   r  r  X  s        @@3 3 36 6 6Y Y Y6 6 63 3 32 2 2H H H, , , , ,r   r  )rY   rT  r   rT   r   networkxr   networkx.utilsr   r   r   r   r   r   rK  r  ra   r   r   <module>r     s?   				         A A A A A A A A A A  @& @& @& @& @& @& @& @&Fv
 v
 v
 v
 v
/ v
 v
 v
rF  F  F  F  F # F  F  F RG, G, G, G, G, G, G, G, G, G,r   