
    hx                         S SK r S SKrS SKrS SKrS SKrS SKrS SKJrJ	r	J
r
   " S S5      r " S S\5      r " S S\5      r " S	 S
5      rg)    N)edges_equalgraphs_equalnodes_equalc                       \ rS rSrSrS rS rS rS rS r	S r
S	 r\R                  R                  \R                   " 5       S
:H  SS9S 5       rS rS rS rS rS rS rS rS rS rSrg)BaseGraphTester   z:Tests for data-structure independent graph class features.c                 p    U R                   nSU;   d   eSU;  d   eSU;  d   e/ U;  d   eSS0U;  d   eg )N      b)K3selfGs     S/var/www/html/env/lib/python3.13/site-packages/networkx/classes/tests/test_graph.pytest_containsBaseGraphTester.test_contains   sJ    GGAvvzz!||{{1vQ    c                     U R                   n[        U5      S:X  d   eUR                  5       S:X  d   eUR                  5       S:X  d   eg N   )r   lenordernumber_of_nodesr   s     r   
test_orderBaseGraphTester.test_order   sD    GG1v{{wwyA~~  "a'''r   c                   ^ U R                   m[        TR                  TR                  5      (       d   e[        TR                  TR
                  5      (       d   e[        U4S jTR                  R                  5        5       5      (       d   e[        TR                  5       5      U R                  :X  d   e[        TR                  SS95      S0 4S0 4S0 4/:X  d   eg )Nc              3   P   >#    U  H  n[        UTR                  5      v   M     g 7fN)
isinstanceadjlist_inner_dict_factory).0adjr   s     r   	<genexpr>-BaseGraphTester.test_nodes.<locals>.<genexpr>!   s$      
ETcJsA8899_s   #&Tdatar   r
      )r   r    _nodenode_dict_factory_adjadjlist_outer_dict_factoryallvaluessortednodesk3nodesr   s    @r   
test_nodesBaseGraphTester.test_nodes   s    GG!''1#6#67777!&&!">">???? 
EFVV]]_
 
 
 	
 
 aggi DLL000agg4g()q"g2wB-HHHHr   c                 R   U R                  5       n[        R                  " [        5         UR	                  S 5        S S S 5        [        R                  " [        5         UR                  S /5        S S S 5        [        R                  " [        5         UR                  SS 5        S S S 5        [        R                  " [        5         UR                  S/5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nf= f! , (       d  f       g = f)Nr   r   N)Graphpytestraises
ValueErroradd_nodeadd_nodes_fromadd_edgeadd_edges_fromr   s     r   test_none_nodeBaseGraphTester.test_none_node'   s    JJL]]:&JJt ']]:&dV$ ']]:&JJq$ ']]:&i[) '& '&&&&&&&s/   C%C6D	D%
C36
D
D
D&c                     U R                   nUR                  S5      (       d   eUR                  S5      (       a   eUR                  / 5      (       a   eUR                  SS05      (       a   eg )Nr
   r   )r   has_noder   s     r   test_has_nodeBaseGraphTester.test_has_node2   s_    GGzz!}}}::a==  ::b>>!!::q!f%%%%%r   c                     U R                   nUR                  SS5      (       d   eUR                  SS5      (       a   eg )Nr   r
   )r   has_edger   s     r   test_has_edgeBaseGraphTester.test_has_edge9   s<    GGzz!Q::a$$$$$r   c                     U R                   n[        UR                  S5      5      SS/:X  d   e[        R                  " [
        R                  5         UR                  S5        S S S 5        g ! , (       d  f       g = fNr   r
   r(   rE   )r   r/   	neighborsr7   r8   nxNetworkXErrorr   s     r   test_neighborsBaseGraphTester.test_neighbors>   sS    GGakk!n%!Q///]]2++,KKO -,,s   A..
A<PyPyzPyPy gc is different)reasonc                    U R                  5       nS n[        R                  " 5         U" U R                   5      nUR                  5         [        R                  " 5         U" U R                   5      nX4:X  d   e " S SU R                   5      n[        R                  " 5         U" 5       nU" U5      nUR                  5         [        R                  " 5         U" U5      nX4:X  d   eg )Nc                 T   ^  [        U 4S j[        R                  " 5        5       5      $ )Nc              3      >#    U  H;  n[        U[        R                  5      (       a  M$  [        UT5      (       d  M7  S v   M=     g7f)r
   N)r    weakref
ProxyTypes)r"   obj_types     r   r$   RBaseGraphTester.test_memory_leak.<locals>.count_objects_of_type.<locals>.<genexpr>S   s9      +C!#w'9'9: ?I#u?U +s   #AA	A)sumgcget_objects)rX   s   `r   count_objects_of_type?BaseGraphTester.test_memory_leak.<locals>.count_objects_of_typeJ   s&      >>+  r   c                       \ rS rSrSrg)1BaseGraphTester.test_memory_leak.<locals>.MyGrapha    N)__name__
__module____qualname____firstlineno____static_attributes__rb   r   r   MyGraphr`   a   s    r   rh   )r6   r[   collectcopy)r   r   r]   beforeafterrh   s         r   test_memory_leak BaseGraphTester.test_memory_leakD   s     JJL	 	

&tzz2	


%djj1	djj 	 	

I&w/	


%g.r   c                    U R                   n[        UR                  UR                  5      (       d   e[	        UR                  5       / SQ5      (       d   e[	        UR                  S5      SS/5      (       d   e[	        UR                  SS/5      / SQ5      (       d   e[        R                  " [        R                  5         UR                  S5        S S S 5        g ! , (       d  f       g = f)Nr   r
   r   r(   r
   r(   r   rq   rr   r
   rE   )
r   r    r+   r,   r   edgesr7   r8   rL   rM   r   s     r   
test_edgesBaseGraphTester.test_edgesl   s    GG!&&!">">????1779&>????1771:'78888177Aq6?,DEEEE]]2++,GGBK -,,s   C  
C.c                 p   U R                   n[        UR                  5       5      / SQ:X  d   e[        UR                  5       5      SSSS.:X  d   eUR                  S5      S:X  d   e[        R
                  " [        R                  5         UR                  S5        S S S 5        g ! , (       d  f       g = f)N)rr   rs   )r(   r(   r(   r   r
   r(   r   rE   )r   r/   degreedictr7   r8   rL   rM   r   s     r   test_degreeBaseGraphTester.test_degreeu   s    GGahhj!%====AHHJqQ1#5555xx{a]]2++,HHRL -,,s   B''
B5c                 t    U R                   nUR                  5       S:X  d   eUR                  5       S:X  d   eg r   )r   sizenumber_of_edgesr   s     r   	test_sizeBaseGraphTester.test_size}   s4    GGvvx1}}  "a'''r   c                    U R                   n[        UR                  5       U R                  5      (       d   e[        UR                  S5      S/5      (       d   e[        UR                  SS/5      SS/5      (       d   e[        UR                  S/5      / 5      (       d   e[        UR                  S5      / 5      (       d   eUR                  S5      n[        R
                  " [        R                  SS9   [        U5        S S S 5        UR                  SSS0 /5      n[        R
                  " [        R                  SS9   [        U5        S S S 5        g ! , (       d  f       N[= f! , (       d  f       g = f)	Nr   r
   rE   foozis not a node or a sequence)matchr(   z&in sequence nbunch is not a valid node)	r   r   nbunch_iterr1   r7   r8   rL   rM   list)r   r   bunchs      r   test_nbunch_iter BaseGraphTester.test_nbunch_iter   s,   GG1==?DLL99991==+aS11111==!Q01a&99991==".33331==/4444b!]]2++3PQK R q!Qm,]]$L
 K
 
 RQ

 
s   :EE,
E),
E:c                     U R                  5       nS[        5       4/n[        R                  " [        R
                  5         [        UR                  U5      5        S S S 5        g ! , (       d  f       g = f)Nx)r6   setr7   r8   rL   rM   r   r   )r   r   nbunchs      r   "test_nbunch_iter_node_format_raise2BaseGraphTester.test_nbunch_iter_node_format_raise   sK     JJL,]]2++,v&' -,,s   A&&
A4c                 h   U R                  5       nUR                  SS5        [        UR                  5       5      S/:X  d   e[	        UR                  5       5      SS0:X  d   eUR                  S5      S:X  d   e[        UR                  S/5      5      S/:X  d   eUR                  SSS9S:X  d   eg )Nr
   rs   r(   weightr   )r6   r<   r/   ry   rz   r   s     r   test_selfloop_degree$BaseGraphTester.test_selfloop_degree   s    JJL	

1aahhj!fX---AHHJAq6)))xx{aahhsm$000xx(x+q000r   c                 T   U R                   R                  5       nUR                  SS5        [        [        R
                  " U5      S/5      (       d   e[        [        R                  " U5      S/5      (       d   e[        R                  " U5      S:X  d   eUR                  SS5        UR                  SS5        UR                  S/5        UR                  SS5        UR                  S5        UR                  SS5        UR                  SS5        UR                  SS/5        g )Nr   r   r   r
   )r   rj   r<   r   rL   nodes_with_selfloopsr   selfloop_edgesnumber_of_selfloopsremove_edgeremove_edges_fromremove_noderemove_nodes_fromr   s     r   test_selfloopsBaseGraphTester.test_selfloops   s    GGLLN	

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

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

1a	a	

1a	

1a	QF#r   c                    U R                   R                  5       nUR                  n[        UR                  5      [        U5      :X  d   e0 Ul        [        UR                  5      [        U5      :w  d   eUR
                  n[        UR
                  5      [        U5      :X  d   e0 Ul        [        UR
                  5      [        U5      :w  d   eg r   )r   rj   r#   idr+   r0   r)   )r   r   old_adj	old_nodess       r   test_cache_reset BaseGraphTester.test_cache_reset   s    GGLLN%%!%%yBwK'''!%%yBwK'''GG	!''{bm+++!''{bm+++r   c                    U R                   R                  5       n[        UR                  5      [        UR                  5      :X  d   e[        UR                  5      [        UR                  5      :X  d   e[        UR
                  5      [        UR
                  5      :X  d   e[        UR                  5      [        UR                  5      :X  d   eg r   )r   rj   r   r0   rt   ry   r#   r   s     r   test_attributes_cached&BaseGraphTester.test_attributes_cached   s    GGLLN!''{bk)))!''{bk)))!((|r!((|+++!%%yBquuI%%%r   rb   N)rc   rd   re   rf   __doc__r   r   r2   r>   rB   rG   rN   r7   markskipifplatformpython_implementationrm   ru   r{   r   r   r   r   r   r   r   rg   rb   r   r   r   r      s    D(I	*&%
 [[&&(F2;Q  ##J(
,	(1$
,&r   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S r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S(r*g))*BaseAttrGraphTester   z(Tests of graph class attribute features.c                 x   U R                  5       nUR                  SSSSS9  UR                  SSSSS9  [        S UR                  SS9 5       5      / S	Q:X  d   e[	        UR                  SS95      SS
SS.:X  d   eUR                  SSS9S:X  d   e[        UR                  S/SS9S/5      (       d   e[        S UR                  SS9 5       / SQ5      (       d   e[	        UR                  SS95      SSSS.:X  d   eUR                  SSS9S:X  d   e[        UR                  S/SS9S/5      (       d   eg )Nr
   r(   r   )r   otherr   c              3   *   #    U  H	  u  pUv   M     g 7fr   rb   r"   nds      r   r$   ;BaseAttrGraphTester.test_weighted_degree.<locals>.<genexpr>   s     >$=DAa$=   r   r   )r(   r      r   )r
   r(   r   rs   c              3   *   #    U  H	  u  pUv   M     g 7fr   rb   r   s      r   r$   r      s     C*B$!A*Br   r   )r      r   r   )r
   r   )r6   r<   r/   ry   rz   r   r   r   s     r   test_weighted_degree(BaseAttrGraphTester.test_weighted_degree   sE   JJL	

1a
+	

1a
+>AHHHH$=>>)KKKAHHHH-.aA!2DDDDxx(x+q000AHHaSH:fXFFFFC!(('(*BCYOOOOAHHGH,-Q11CCCCxx'x*a///AHHaSH9VHEEEEr   c                     / UR                   S'   / UR                  S   S'   UR                  SS5        / nUR                  SSUS9  UR                  SSUS9  g )Nr   r   r
   r(   r   )graphr0   r   r<   )r   r   lls      r   add_attributes"BaseAttrGraphTester.add_attributes   sX    
5	a	

1aR
 	

1aR
 r   c                     U R                  SS9nUR                  S:X  d   eU R                  SS9nUR                  S:X  d   eg )N nametest)r6   r   r   s     r   	test_nameBaseAttrGraphTester.test_name   sD    JJBJvv||JJFJ#vvr   c                     U R                  5       nUR                  SS/5        [        U5      [        U5      R                   S3:X  d   eg )Nrs   r(   r   z with 3 nodes and 2 edgesr6   r=   strtyperc   r   s     r   test_str_unnamed$BaseAttrGraphTester.test_str_unnamed   sE    JJL	&&)*1vDG,,--FGGGGr   c                     U R                  SS9nUR                  SS/5        [        U5      [        U5      R                   S3:X  d   eg )Nr   r   rs   r   z% named 'foo' with 3 nodes and 2 edgesr   r   s     r   test_str_named"BaseAttrGraphTester.test_str_named   sJ    JJEJ"	&&)*1vDG,,--RSSSSr   c                     U R                  SS/5      nUR                  SS9nUR                  SS/5      nUR                  SS9nXR                  L d   eX#R                  L d   eX4R                  L d   eg )	Nrq   rs   Tas_viewr   r
   F)rj   )r6   to_directedsubgraphreverse_graph)r   r   DGSDGRSDGs        r   test_graph_chain$BaseAttrGraphTester.test_graph_chain   su    JJ'(]]4](kk1a&!{{{&II~~ZZkk!!!r   c                    U R                  5       nUR                  S5        UR                  SS5        U R                  U5        UR	                  5       nU R                  X!5        U R                  X!5        U R                  X!5        g Nr   r
   r(   )r6   r:   r<   r   rj   r   different_attrdictshallow_copy_attrdictr   r   Hs      r   	test_copyBaseAttrGraphTester.test_copy  si    JJL	

1	

1aAFFH!%""1(r   c                    U R                  5       nUR                  S5        UR                  SS5        U R                  U5        UR	                  U5      nU R                  X!5        U R                  X!5        U R                  X!5        g r   )r6   r:   r<   r   	__class__r   r   r   r   s      r   test_class_copy#BaseAttrGraphTester.test_class_copy  sk    JJL	

1	

1aAKKN!%""1(r   c                    U R                  5       nUR                  S5        UR                  SS5        U R                  U5        UR	                  5       nUR                  U5        UR                  UR                  5       5        [        UR                  S   5      S:X  d   eUR                  5       (       a  UR                  S   S   S   OUR                  S   S   n[        U5      S:X  d   e[        UR                  S   5      S:X  d   eUR                  5       (       a  UR                  S   S   S   OUR                  S   S   n[        U5      S:X  d   eg r   )r6   r:   r<   r   r   r;   r=   rt   r   r0   is_multigraphr#   )r   r   r   ddicts       r   test_fresh_copy#BaseAttrGraphTester.test_fresh_copy  s   JJL	

1	

1aAKKM		#1771:!###"#//"3"3aAq!5zQ1771:!###"#//"3"3aAq!5zQr   c                 j    U R                  X5        U R                  X5        U R                  X5        g r   )r   r   deep_copy_attrdictr   r   r   s      r   is_deepcopyBaseAttrGraphTester.is_deepcopy'  s,    !%%r   c                 j    U R                  X5        U R                  X5        U R                  X5        g r   )deepcopy_graph_attrdeepcopy_node_attrdeepcopy_edge_attrr   s      r   r   &BaseAttrGraphTester.deep_copy_attrdict,  s,      &%%r   c                     UR                   S   UR                   S   :X  d   eUR                   S   R                  S5        UR                   S   UR                   S   :w  d   eg Nr   r
   r   appendr   s      r   r   'BaseAttrGraphTester.deepcopy_graph_attr1  T    wwu~///	a wwu~///r   c                     UR                   S   S   UR                   S   S   :X  d   eUR                   S   S   R                  S5        UR                   S   S   UR                   S   S   :w  d   eg Nr   r   r
   r0   r   r   s      r   r   &BaseAttrGraphTester.deepcopy_node_attr6  m    wwqz% AGGAJu$5555	
5  #wwqz% AGGAJu$5555r   c                     US   S   S   US   S   S   :X  d   eUS   S   S   R                  S5        US   S   S   US   S   S   :w  d   eg Nr
   r(   r   r   r   s      r   r   &BaseAttrGraphTester.deepcopy_edge_attr;  h    tAwu~1a///	!Qa tAwu~1a///r   c                 H    U R                  X5        U R                  X5        g r   )r   r   r   s      r   is_shallow_copy#BaseAttrGraphTester.is_shallow_copy@  s    !""1(r   c                 j    U R                  X5        U R                  X5        U R                  X5        g r   )shallow_copy_graph_attrshallow_copy_node_attrshallow_copy_edge_attrr   s      r   r   )BaseAttrGraphTester.shallow_copy_attrdictD  s,    $$Q*##A)##A)r   c                     UR                   S   UR                   S   :X  d   eUR                   S   R                  S5        UR                   S   UR                   S   :X  d   eg r   r   r   s      r   r  +BaseAttrGraphTester.shallow_copy_graph_attrI  r  r   c                     UR                   S   S   UR                   S   S   :X  d   eUR                   S   S   R                  S5        UR                   S   S   UR                   S   S   :X  d   eg r  r  r   s      r   r  *BaseAttrGraphTester.shallow_copy_node_attrN  r  r   c                     US   S   S   US   S   S   :X  d   eUS   S   S   R                  S5        US   S   S   US   S   S   :X  d   eg r  r	  r   s      r   r  *BaseAttrGraphTester.shallow_copy_edge_attrS  r  r   c                    US   S   S   nSUR                   S   S   S'   UR                  UR                  :X  d   eX1R                   S   S   S'   UR                  UR                  :X  d   eUR                  S   S   nSUR                  S   S'   UR                  UR                  :X  d   eX1R                  S   S'   UR                  UR                  :X  d   eg Nr
   r(   r   bazr   )r#   rt   r0   r   r   r   old_foos       r   same_attrdict!BaseAttrGraphTester.same_attrdictX  s    A$q'%."aEww!''!!!$aEww!''!!!''!*U#!
5ww!''!!!#
5ww!''!!!r   c                    US   S   S   nSUR                   S   S   S'   UR                  UR                  :w  d   eX1R                   S   S   S'   UR                  UR                  :X  d   eUR                  S   S   nSUR                  S   S'   UR                  UR                  :w  d   eX1R                  S   S'   UR                  UR                  :X  d   eg r  )r#   r+   r0   r)   r  s       r   r   &BaseAttrGraphTester.different_attrdicte  s    A$q'%."aEvv$aEvv''!*U#!
5ww!''!!!#
5ww!''!!!r   c                    UR                   UR                   :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR	                  5       (       dd  UR	                  5       (       dO  UR                   S   S   UR                   S   S   L d   eUR                   S   S   UR                   S   S   L d   eg UR	                  5       (       d"  UR                   Ul        UR                   Ul        UR	                  5       (       d"  UR                   Ul        UR                   Ul        UR
                  UR
                  :X  d   eUR                  UR                  :X  d   eUR                  S   S   UR
                  S   S   L d   eUR                  S   S   UR
                  S   S   L d   eg )Nr
   r(   )r+   r)   r   r   is_directed_pred_succr   s      r   r    BaseAttrGraphTester.graphs_equalr  su   vvww!''!!!ww!''!!!vv}}q}}66!9Q<166!9Q<///66!9Q<166!9Q<///==??&&&&==??&&&&77agg%%%77agg%%%771:a=AGGAJqM111771:a=AGGAJqM111r   c                 T   U R                   R                  5       nSUR                  S'   [        UR                  UR                  5      (       d   eUR                  S   S:X  d   eUR                  S	 UR                  0 :X  d   eU R                  SS9nUR                  S   S:X  d   eg )Nbarr   r   )r   rj   r   r    graph_attr_dict_factoryr6   r   s      r   test_graph_attr#BaseAttrGraphTester.test_graph_attr  s    GGLLN!''1#<#<====wwu~&&&GGENww"}}JJ5J!wwu~&&&r   c                 L  ^ U R                   R                  5       mTR                  SSS9  [        U4S jTR	                  SS9 5       5      (       d   e[        TR	                  5       / SQ5      (       d   e[        TR	                  SS9S0 4SS	S04S
0 4/5      (       d   eSTR                  S   S	'   [        TR	                  SS9S0 4SS	S04S
0 4/5      (       d   e[        TR	                  S	S9/ SQ5      (       d   e[        TR	                  S	SS9/ SQ5      (       d   eg )Nr
   r)  r   c              3   T   >#    U  H  u  p[        UTR                  5      v   M     g 7fr   )r    node_attr_dict_factory)r"   ur   r   s      r   r$   5BaseAttrGraphTester.test_node_attr.<locals>.<genexpr>  s'      
@RJq!2233@Rs   %(Tr&   rx   r   r   r(   r  )r5   r
   r  )r(   N)r'   default))r   r)  r2  )r(   r)  )r   rj   r:   r-   r0   r   r   s    @r   test_node_attr"BaseAttrGraphTester.test_node_attr  s5   GGLLN	

1%
  
@AT@R
 
 
 	
 
 1779i00001777-B!eU^9LqRTg/VWWWW!
51777-B!eU^9LqRTg/VWWWW1777.0RSSSSGGG.0T
 
 	
 
r   c           	         U R                   R                  5       nSS0nUR                  " S
0 UD6  [        UR	                  5       / SQ5      (       d   e[        UR	                  SS9S0 4S0 4S	0 4SSS04/5      (       d   eg )Nr   r)  r   r   r
   r(   r   Tr&   r   r
   r(   )r   )r   rj   r:   r   r0   )r   r   as      r   test_node_attr2#BaseAttrGraphTester.test_node_attr2  s    GGLLNEN	

1779l3333GGG!R1b'Ar7Q<O P
 
 	
 
r   c                     U R                  5       nUR                  SSSS9  [        UR                  S   SS05      (       d   eg )Nr
   r(   r)  r   rs   r   )r6   r<   r   rt   r   s     r   test_edge_lookup$BaseAttrGraphTester.test_edge_lookup  s>    JJL	

1aU
#1774=5%.9999r   c                 (  ^ U R                  5       mTR                  SSSS9  [        U4S jTR                  SS9 5       5      (       d   e[	        TR                  SS9SSSS04/5      (       d   e[	        TR                  SS9S	/5      (       d   eg )
Nr
   r(   r)  r   c              3   V   >#    U  H  u  pn[        UTR                  5      v   M      g 7fr   )r    edge_attr_dict_factory)r"   r0  vr   r   s       r   r$   5BaseAttrGraphTester.test_edge_attr.<locals>.<genexpr>  s)      
CUaJq!2233CUs   &)Tr&   r   )r
   r(   r)  )r6   r<   r-   rt   r   r   s    @r   test_edge_attr"BaseAttrGraphTester.test_edge_attr  s    JJL	

1aU
# 
CD77PT7CU
 
 
 	
 
 1777-Au~0F/GHHHH1777.@@@@r   c                     U R                  5       nUR                  SS/SS9  [        UR                  SS9SSSS04S	S
SS04/5      (       d   e[        UR                  SS9SS/5      (       d   eg )Nrs   r   r   r   r   Tr&   r
   r(   r   r   )r
   r(   r   )r   r   r   )r6   r=   r   rt   r   s     r   test_edge_attr2#BaseAttrGraphTester.test_edge_attr2  s    JJL	&&)u5GGG!Q!7!Q9O P
 
 	
 
 1777.0NOOOOr   c           	      T   U R                  5       nUR                  SSSS04SSSS04/SS	9  [        UR                  S
S9SSSSS.4SSSSS.4/5      (       d   eUR	                  SS/5        UR                  SSSSSS9  [        UR                  S
S9SSSSSS.4/5      (       d   eg )Nr
   r(   r       r   r   @   r   r   Tr&   )r   r   rs   rF  r   r)  r'   spamr)  )r6   r=   r   rt   r   r<   r   s     r   test_edge_attr3#BaseAttrGraphTester.test_edge_attr3  s    JJL	1a(B01a(B2HIuUGGGAu34Au34
 
 	
 
 	
VV,-	

1aae
7GGG!QE%(P!Q R
 
 	
 
r   c           	         U R                  5       nUR                  SSSSSS9  [        UR                  SS9SSSSSS.4/5      (       d   eS	US   S   S
'   [        UR                  SS9SSS	SSS.4/5      (       d   eSUR                  S   S   S
'   [        UR                  SS9SSSSSS.4/5      (       d   eSUR                  S   S
'   [        UR                  SS9SSSSSS.4/5      (       d   eSS/UR                  S   S   S'   SUR                  S   S   S'   SSSSS/SS.n[        UR                  SS9SSU4/5      (       d   eg )Nr
   r(   r   r)  r   rL  Tr&   
   r'         rs      listdatar   )r'   rM  r)  rU  r   )r6   r<   r   rt   r#   )r   r   dds      r   test_edge_attr4#BaseAttrGraphTester.test_edge_attr4  s   JJL	

1aae
7GGG!QE%(P!Q R
 
 	
 
 !QGGG!QU5(Q!R S
 
 	
 
 !aFGGG!QU5(Q!R S
 
 	
 
 !#fGGG!QU5(Q!R S
 
 	
 
 $&s)aJ "aHS	
 1777-Ar
|<<<<r   c                     U R                   nU R                  U5        [        R                  " U5      nU R	                  X!5        U R                  X!5        UR                  5       nU R                  X!5        g r   )r   r   rL   r6   r  r   to_undirectedr   r   s      r   test_to_undirected&BaseAttrGraphTester.test_to_undirected  s\    GGAHHQKQ"%OOr   c                    [         R                  " SU R                  S9nUR                  SS9nXR                  L d   eUR                  SS5      (       d   eUR                  SS5      (       d  UR                  5       (       d   e[        R                  " [         R                  UR                  S5        [        R                  " [         R                  UR                  SS5        UR                  SS5        UR                  SS5      (       d   eUR                  SS5      (       d  UR                  5       (       d   eg g Nr(   )create_usingTr   r   r
   rE   )rL   
path_graphr6   r   r   rF   r$  r7   r8   rM   r:   r<   r   r   H2s      r   test_to_directed_as_view,BaseAttrGraphTester.test_to_directed_as_view  s    MM!$**5]]4](II~~{{1a    {{1a  AMMOO33b&&R8b&&Q:	

1a{{1a    {{1a  AMMOO33O r   c                 .   [         R                  " SU R                  S9nUR                  SS9nXR                  L d   eUR                  SS5      (       d   eUR                  SS5      (       d   e[        R                  " [         R                  UR                  S5        [        R                  " [         R                  UR                  SS5        UR                  SS5        UR                  SS5      (       d   eUR                  SS5      (       d   eg r^  )rL   r`  r6   rZ  r   rF   r7   r8   rM   r:   r<   ra  s      r   test_to_undirected_as_view.BaseAttrGraphTester.test_to_undirected_as_view  s    MM!$**5__T_*II~~{{1a    {{1a    b&&R8b&&Q:	

1a{{1a    {{1a    r   c                 n  ^^ U R                  5       n " UU4S jSUR                  5       5      m " UU4S jSUR                  5       5      mUR                  5       (       a  T" 5       OT" 5       nUR	                  5       n[        UT5      (       d   eUR                  5       n[        UT5      (       d   eg )Nc                   .   > \ rS rSrU 4S jrU4S jrSrg)9BaseAttrGraphTester.test_directed_class.<locals>.newGraphi  c                    > T$ r   rb   r   
newDiGraphs    r   to_directed_classKBaseAttrGraphTester.test_directed_class.<locals>.newGraph.to_directed_class  	    !!r   c                    > T$ r   rb   r   newGraphs    r   to_undirected_classMBaseAttrGraphTester.test_directed_class.<locals>.newGraph.to_undirected_class      r   rb   Nrc   rd   re   rf   rn  rt  rg   rm  rs  s   r   rs  rj        "   r   rs  c                   .   > \ rS rSrU 4S jrU4S jrSrg);BaseAttrGraphTester.test_directed_class.<locals>.newDiGraphi  c                    > T$ r   rb   rl  s    r   rn  MBaseAttrGraphTester.test_directed_class.<locals>.newDiGraph.to_directed_class  rp  r   c                    > T$ r   rb   rr  s    r   rt  OBaseAttrGraphTester.test_directed_class.<locals>.newDiGraph.to_undirected_class  rv  r   rb   Nrw  rx  s   r   rm  r{    ry  r   rm  )r6   rt  rn  r$  r   r    rZ  )r   r   r   rm  rs  s      @@r   test_directed_class'BaseAttrGraphTester.test_directed_class  s    JJL	  	 q,,. 	 	  	 ,,. 	  MMOOJLMMO!Z((((OO!X&&&&r   c                     U R                   nU R                  U5        [        R                  " U5      nU R	                  X!5        U R                  X!5        UR                  5       nU R                  X!5        g r   )r   r   rL   DiGraphr  r   r   r   r   s      r   test_to_directed$BaseAttrGraphTester.test_to_directed%  s[    GGAJJqMQ"%MMOr   c                 ~   U R                   nU R                  U5        UR                  / SQ5      nU R                  X!5        U R	                  X!5        U R                  X!5        UR                  S5      nUR                  S0 0:X  d   eUR                  / 5      nUR                  0 :X  d   eUR                  0 :w  d   eg )N)r   r
   r(   r   r   )r   r   r   r   r  r   r#   r   s      r   test_subgraph!BaseAttrGraphTester.test_subgraph.  s    GGAJJ|$!1 ""1(JJqMuuBJJrNuu{{uu{{r   c                 .   U R                   R                  5       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   Tr&   r   )r   r   N)r
   r
   r(   )r   rj   r<   r   rL   r   r   s     r   test_selfloops_attr'BaseAttrGraphTester.test_selfloops_attr<  s    GGLLN	

1a	

1a
"ad+q!Rj1a(A:O-P
 
 	
 
 ah/,	1J
 
 	
 
r   rb   N)+rc   rd   re   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r  r  r  r   r   r+  r4  r9  r<  rC  rG  rN  rW  r[  rc  rf  r  r  r  r  rg   rb   r   r   r   r      s    2F! H
T
"	)	) &
&
0
6
0
)*
0
6
0
""2('

:
AP
"=<
4
!'.	
r   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g)	TestGraphiH  z;Tests specific to dict-of-dict-of-dict graph data structurec                    [         R                  U l        0 0 0 p2nXS.XS.X#S.S.U l        / SQU l        / SQU l        U R                  5       U l        U R                  U R
                  l        0 U R
                  l        0 U R
                  R                  S'   0 U R
                  R                  S'   0 U R
                  R                  S'   g )	Nrs   rr   rq   rx   rp   r   r
   r(   )rL   r6   k3adjk3edgesr1   r   r+   r)   )r   ed1ed2ed3s       r   setup_methodTestGraph.setup_methodK  s    XX
R# )#.>sCST
/ **,zzaaar   c                 
   U R                   n[        R                  " [        R                  " US5      5      nU R	                  X!5        [        R                  " [        R                  " U5      5      nU R	                  X!5        g )NrE   )r   pickleloadsdumpsr   )r   r   pgs      r   test_pickleTestGraph.test_pickleY  sV    GG\\&,,q"-." \\&,,q/*" r   c                     U R                  S/S/S.SS9nUR                  S:X  d   e[        UR                  R	                  5       5      SS0 04SS0 04/:X  d   eg )Nr(   r
   rs   r   r   )r6   r   r/   r#   itemsr   s     r   test_data_inputTestGraph.test_data_input`  sa    JJA3A3'fJ5vvaeekkm$!aWAr7|(DDDDr   c                 t    U R                   n[        UR                  5       5      0 0 S.0 0 S.0 0 S.S.:X  d   eg )Nrs   rr   rq   rx   )r   rz   	adjacencyr   s     r   test_adjacencyTestGraph.test_adjacencye  sB    GGAKKM""~"~"~'
 
 	
 
r   c                 ~   U R                   nUR                  S   0 0 S.:X  d   eUS   0 0 S.:X  d   e[        R                  " [        5         UR                  S5        S S S 5        [        R                  " [        5         UR                  S/5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nr   rs   jA)r   r#   r7   r8   KeyError__getitem__	TypeErrorr   s     r   test_getitemTestGraph.test_getitemm  s    GGuuQxrb>)))t2"~%%%]]8$MM# %]]9%MM3%  &% %$%%s   BB.
B+.
B<c                 N   U R                  5       nUR                  S5        UR                  S0 0:X  d   eUR                  SSS9  UR                  SSS9  UR                  SSS9  UR                  S   S   S:X  d   eUR                  S   S   S:X  d   eUR                  S   S   S:X  d   eUR                  SSS9  UR                  SSS9  UR                  SSS9  UR                  S   S   S:X  d   eUR                  S   S   S:X  d   eUR                  S   S   S:X  d   eg )	Nr   r
   redcr(   bluer   r  )r6   r:   r#   r0   r   s     r   test_add_nodeTestGraph.test_add_nodev  s*   JJL	

1uuB	

1
	

1
	

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

1
	

1
	

1
wwqz#&(((wwqz#%'''wwqz#&(((r   c                    U R                  5       nUR                  / SQ5        UR                  0 0 0 S.:X  d   eUR                  / SQSS9  UR                  S   S   S:X  d   eUR                  S   S   S:X  d   eUR                  S   UR                  S   Ld   eUR                  / SQSS9  UR                  S   S   S:X  d   eUR                  S   S   S:X  d   eUR                  S   UR                  S   Ld   eU R                  5       nUR                  UR                  S	S
95        UR                  S   S   S:X  d   eUR                  S   S   S:X  d   eUR                  S   UR                  S   Ld   eUR                  SSSS04SSS04/SS9  UR                  S   S   S:X  d   eUR                  S   S   S:X  d   eUR                  S   S   S:X  d   eUR                  S   S   S:X  d   eg )Nrx   r  r  r   r  r(   r
   r  Tr&   greenr   cyan)r6   r;   r#   r0   r   s      r   test_add_nodes_fromTestGraph.test_add_nodes_from  s   JJL	#uuB2"----	e,wwqz#%'''wwqz#%'''wwqz+++	f-wwqz#&(((wwqz#&(((wwqz+++JJL	d+,wwqz#&(((wwqz#&(((wwqz+++	!a#w01sFm2DEOwwqz#%'''wwqz#')))wwqz#&(((wwqz#&(((r   c                 *   U R                   R                  5       nUR                  S5        UR                  S0 0S0 0S.:X  d   e[        R
                  " [        R                  5         UR                  S5        S S S 5        g ! , (       d  f       g = f)Nr   r(   r
   rs   rE   )r   rj   r   r#   r7   r8   rL   rM   r   s     r   test_remove_nodeTestGraph.test_remove_node  sf    GGLLN	auuQGB0000]]2++,MM" -,,s   )B
Bc                     U R                   R                  5       nUR                  SS/5        UR                  S0 0:X  d   eUR                  S/5        g rJ   )r   rj   r   r#   r   s     r   test_remove_nodes_from TestGraph.test_remove_nodes_from  sI    GGLLN	QF#uuB	RD!r   c                    U R                  5       nUR                  SS5        UR                  S0 0S0 0S.:X  d   eU R                  5       nUR                  " S6   UR                  S0 0S0 0S.:X  d   eU R                  5       n[        R                  " [
        5         UR                  S S5        S S S 5        g ! , (       d  f       g = f)Nr   r
   rq   anything)r6   r<   r#   r7   r8   r9   r   s     r   test_add_edgeTestGraph.test_add_edge  s    JJL	

1auuQGB0000JJL	

FuuQGB0000JJL]]:&JJtZ( '&&s   B::
Cc                    U R                  5       nUR                  SSSSS04/5        UR                  0 SS0S.S0 0SSS00S.:X  d   eU R                  5       nUR                  SSSSS04SSS	S
04/SS9  UR                  S	S0SSS.S.S	S0S	S
0S.SSS.S	S
0S.S.:X  d   e[        R                  " [
        R                  5         UR                  S/5        S S S 5        [        R                  " [
        R                  5         UR                  S/5        S S S 5        [        R                  " [        5         UR                  S/5        S S S 5        [        R                  " [        5         UR                  SS/5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ng= f! , (       d  f       g = f)Nrq   r   r(   r   r   rs   rx   r
   r'   r   r&   )r   r'   rr   )r   r7  r   )r   r(   )	r6   r=   r#   r7   r8   rL   rM   r  r9   r   s     r   test_add_edges_fromTestGraph.test_add_edges_from  s   JJL	&1a(A"789uu8Q-(2wHa=!
 
 	
 

 JJL	&1a(A"7!Q9LMTUVuuA;a#;<A;FA;/+<
 
 	
 
 ]]2++,dV$ -]]2++,l^, -]]9%aS! &]]:&i01 '& -,,,%%&&s0   FF<F01G
F
F-0
F>
Gc                 6   U R                   R                  5       nUR                  SS5        UR                  S0 0S0 00 0 S.S.:X  d   e[        R
                  " [        R                  5         UR                  SS5        S S S 5        g ! , (       d  f       g = f)Nr   r
   r(   rq   rx   rE   )r   rj   r   r#   r7   r8   rL   rM   r   s     r   test_remove_edgeTestGraph.test_remove_edge  sp    GGLLN	auuQGBrNCCCC]]2++,MM"a  -,,s   .B


Bc                     U R                   R                  5       nUR                  S/5        UR                  S0 0S0 00 0 S.S.:X  d   eUR                  S/5        g )Nrq   r(   rx   r   )r   rj   r   r#   r   s     r   test_remove_edges_from TestGraph.test_remove_edges_from  sV    GGLLN	VH%uuQGBrNCCCC	VH%r   c                     U R                   R                  5       nSUR                  S'   UR                  5         [	        UR
                  5      / :X  d   eUR                  0 :X  d   eUR                  0 :X  d   eg )Nr   r   )r   rj   r   clearr   r0   r#   r   s     r   
test_clearTestGraph.test_clear  s]    GGLLN		AGG}"""uu{{ww"}}r   c                 b   U R                   R                  5       nSUR                  S'   [        UR                  5      nUR                  5         [        UR                  5      U:X  d   eUR                  0 0 0 S.:X  d   e[        UR                  5      / :X  d   eUR                  S   S:X  d   eg )Nr   r   rx   )r   rj   r   r   r0   clear_edgesr#   rt   )r   r   r0   s      r   test_clear_edgesTestGraph.test_clear_edges  s    GGLLNQWW	AGG}%%%uuB2"----AGG}"""wwv$&&&r   c                    U R                   nSS0 4SS0 4SS0 4/n[        UR                  SS9U5      (       d   e[        UR                  SSS9SS0 4SS0 4/5      (       d   e[        UR                  SS/SS9U5      (       d   e[        R                  " [
        R                  5         UR                  SS5        S S S 5        g ! , (       d  f       g = f)Nr   r
   r(   Tr&   rE   )r   r   rt   r7   r8   rL   rM   )r   r   	all_edgess      r   test_edges_dataTestGraph.test_edges_data  s    GGBZ!QaBZ8	1777-y99991771470Aq":1bz2JKKKK177Aq675yAAAA]]2++,GGB -,,s   +C
Cc                    U R                   R                  5       nUR                  SS5      0 :X  d   eUS   S   0 :X  d   eUR                  SS5      b   eUR                  SS5      b   eUR                  SSSS9S:X  d   eg )Nr   r
   rQ  rR  rE   )r3  )r   rj   get_edge_datar   s     r   test_get_edge_dataTestGraph.test_get_edge_data   s    GGLLNq!$***tAw"}}r2&...r1%---r1a0A555r   c                    U R                   R                  5       nUR                  SSSS04/SSSSS04/S	9  S
0 4S0 4S0 4S0 4SSS04S0 4S0 4S0 4/n[        UR                  R                  5       5      U:X  d   eUR                  5       (       a%  S
S0 4S
S0 4SS
0 4SS0 4SS
0 4SS0 4SS0 4SSSS04/nOS
S0 4S
S0 4SS0 4SS0 4SSSS04/n[        UR                  R                  5       5      U:X  d   eUR                  0 :X  d   eU R                   R                  5       nUR                  SSSSS04/SSSS04/5        [        UR                  R                  5       5      U:X  d   e[        UR                  R                  5       5      U:X  d   eUR                  0 :X  d   eU R                  5       nSUR                  S'   UR                  SSS9  UR                  S
SSS9  UR                  5       nU R                  5       nUR                  U5        [        X5      (       d   eUR                  U5        [        XQ5      (       d   eU R                  5       nUR                  SS/S9  UR                  SS1-  [        5       :X  d   eUR                  5       S
:X  d   eU R                  5       nUR                  S/S9  [        UR                  R                  5       5      SS0 4/:X  d   eUR                  5       S:X  d   e[        R                   " ["        R$                  5         ["        R                  " 5       R                  5         S S S 5        g ! , (       d  f       g = f)Nr   r   r~   r(   )r   r      r   r   )r0   rt   r   r
   r   r)  r   r&   g      ?r   )r0   rF  )rt   )r   rj   updater/   r0   r'   r$  rt   r   r6   r:   r<   r   r   r~   r7   r8   rL   rM   )r   r   nlistelistGGr   s         r   test_updateTestGraph.test_update  sP   GGLLN	A{+,VaXqM=R4STGGGGGGG	
 agglln%...==??Ar
Ar
Ar
Ar
Ar
Ar
Ar
A!}%	E Ar
Ar
Ar
Ar
A!}%E agglln%...ww"}} GGLLN	&1a(A/01q61+6F2GHagglln%...agglln%...ww"}} JJL	

11
	

1a
$VVXJJL
		!A""""	A!!!! JJL	1vww!Q35(((vvx1}} JJL	x agglln%1a*555vvx1}} ]]2++,HHJ -,,s   *$M
M%)r6   r   r  r  r1   N)rc   rd   re   rf   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rg   rb   r   r   r  r  H  sa    E!E

!)&)8"	)22!&'6F r   r  c                   H    \ 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)TestEdgeSubgraphiQ  z6Unit tests for the :meth:`Graph.edge_subgraph` method.c                     [         R                  " S5      n[        S5       H  nSU 3UR                  U   S'   M     SUR                  S   S'   SUR                  S   S'   SUR
                  S'   Xl        UR                  SS/5      U l        g )	Nr   noder   edge01rq   edge34rF  r   )	rL   r`  ranger0   rt   r   r   edge_subgraphr   )r   r   is      r   r  TestEdgeSubgraph.setup_methodT  s    MM!qA#'sAGGAJv  (f (f!&&!12r   c                 Z    / SQ[        U R                  R                  5       5      :X  d   eg)z.Tests that the subgraph has the correct nodes.r   r
   r   r   N)r/   r   r0   r   s    r   test_correct_nodes#TestEdgeSubgraph.test_correct_nodesa  s    vdfflln5555r   c                 X    SS/[        U R                  R                  SS95      :X  d   eg)z.Tests that the subgraph has the correct edges.)r   r
   r  )r   r   r  r   r&   N)r/   r   rt   r  s    r   test_correct_edges#TestEdgeSubgraph.test_correct_edgese  s+     "23vdffllPVl>W7XXXXr   c                     U R                   R                  S5        / SQ[        U R                  R	                  5       5      :X  d   eg)z[Tests that adding a node to the original graph does not
affect the nodes of the subgraph.

r   r  N)r   r:   r/   r   r0   r  s    r   r  TestEdgeSubgraph.test_add_nodei  s1    
 	vdfflln5555r   c                     U R                   R                  S5        / SQ[        U R                  R	                  5       5      :X  d   eg)zYTests that removing a node in the original graph does
affect the nodes of the subgraph.

r   )r
   r   r   N)r   r   r/   r   r0   r  s    r   r  !TestEdgeSubgraph.test_remove_nodeq  s3    
 	1F466<<>2222r   c                    U R                    H9  nU R                  R                  U   U R                   R                  U   :X  a  M9   e   SU R                  R                  S   S'   U R                  R                  S   U R                   R                  S   :X  d   eSU R                   R                  S   S'   U R                  R                  S   U R                   R                  S   :X  d   eg)zPTests that the node attribute dictionary of the two graphs is
the same object.

r   r   r   r)  r
   N)r   r   r0   )r   rA  s     r   test_node_attr_dict$TestEdgeSubgraph.test_node_attr_dicty  s    
 A66<<?dffll1o555  #(Qvv||A$&&,,q/111"'Qvv||A$&&,,q/111r   c                    U R                   R                  5        H=  u  pU R                  R                  X4   U R                   R                  X4   :X  a  M=   e   SU R                  R                  S   S'   U R                  R                  S   S   U R                   R                  S   S   :X  d   eSU R                   R                  S   S'   U R                  R                  S   S   U R                   R                  S   S   :X  d   eg)zPTests that the edge attribute dictionary of the two graphs is
the same object.

r   rq   r   r)  rF  N)r   rt   r   )r   r0  rA  s      r   test_edge_attr_dict$TestEdgeSubgraph.test_edge_attr_dict  s    
 FFLLNDA66<<%ad);;;; # &+T6"vv||D!&)TVV\\$-?-GGGG%*T6"vv||D!&)TVV\\$-?-GGGGr   c                 b    U R                   R                  U R                  R                  L d   eg)zQTests that the graph attribute dictionary of the two graphs
is the same object.

N)r   r   r   r  s    r   test_graph_attr_dict%TestEdgeSubgraph.test_graph_attr_dict  s"    
 vv||tvv||+++r   )r   r   N)rc   rd   re   rf   r   r  r  r  r  r  r  r  r  rg   rb   r   r   r  r  Q  s/    @36Y632H,r   r  )r[   r  r   rU   r7   networkxrL   networkx.utilsr   r   r   r   r   r  r  rb   r   r   <module>r     sU    	      A A@& @&Fv
/ v
rF # F RG, G,r   