
    ިsg?                         d dl mZ d dlZd dlZd dlmZ ddlmZ ddlm	Z
 ddlmZ  G d d	e      Z G d
 dee      Z G d de
      Z	 G d de      Z G d dej                         Z G d de      Zy)    )UserDictN)edges_equal   )BaseMultiGraphTester)TestEdgeSubgraph)TestMultiGraphc                       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y)BaseMultiDiGraphTesterc                    | j                   }g d}t        |j                               |k(  sJ t        |j                  d            ddgk(  sJ t        j                  t
        t        j                  f|j                  d       y )Nr   r   r      r   r   r   r   r   r   r   r   r   r   r   )K3sortededgespytestraisesKeyErrornxNetworkXErrorselfGr   s      [/var/www/html/venv/lib/python3.12/site-packages/networkx/classes/tests/test_multidigraph.py
test_edgesz!BaseMultiDiGraphTester.test_edges   sh    GG@aggi E)))aggaj!ff%5555x!1!12AGGR@    c                 L   | j                   }ddi fddi fddi fddi fddi fddi fg}t        |j                  d            |k(  sJ t        |j                  dd            ddi fddi fgk(  sJ t        j                  t
        t        j                  f|j                  d       y )Nr   r   r   Tdatar   )	r   r   r   r   r   r   r   r   	neighborsr   s      r    test_edges_dataz&BaseMultiDiGraphTester.test_edges_data   s    GGQaBZ!QaBZ!QaQRTVZXagg4g()U222aggadg+,!QaBZ0HHHHx!1!12AKKDr"   c                    | j                   }t        |j                               g dk(  sJ t        |j                  d            ddgk(  sJ |j                  dd       t        |j                               g dk(  sJ y )Nr   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   add_edger   r   s     r    test_edges_multiz'BaseMultiDiGraphTester.test_edges_multi   su    GGaggi $TTTTaggaj!ff%5555	

1aaggi  %
 
 	
 
r"   c                 N   | j                   }t        |j                               g dk(  sJ t        |j                  d            ddgk(  sJ t        j                  t
        t        j                  f|j                  d       t        |j                  dd            dd	gk(  sJ y )
Nr   r   r   r   r   Tkeysr   r   r   )r   r   r   )r   r   	out_edgesr   r   r   r   r   r+   s     r    test_out_edgesz%BaseMultiDiGraphTester.test_out_edges+   s    GGakkm$(XXXXakk!n%&&)9999x!1!12AKKDakk!$k/0Y	4JJJJr"   c                    | j                   }t        |j                               g dk(  sJ t        |j                  d            ddgk(  sJ |j                  ddd       t        |j                               g dk(  sJ y )Nr   r   r   r   r   r   r)   )r   r   r1   r*   r+   s     r    test_out_edges_multiz+BaseMultiDiGraphTester.test_out_edges_multi2   sw    GGakkm$(XXXXakk!n%&&)9999	

1aakkm$ )
 
 	
 
r"   c                    | j                   }t        |j                  dd            ddi fddi fgk(  sJ |j                  dd       |j	                  ddd       t        |j                  dd            ddddifddi fgk(  sJ t        |j                  dd            ddgk(  sJ t        |j                  ddd	
            ddgk(  sJ y )Nr   Tr$   r   r   r%   )r   r   r   )r   r   Nr   r%   default)r   r   r   )r   r   r   remove_edger*   r+   s     r    test_out_edges_dataz*BaseMultiDiGraphTester.test_out_edges_dataA   s    GGaggadg+,!QaBZ0HHHH	a	

1aa
 aggadg+,!Q1Dq!Rj0QQQQaggafg-.9l2KKKKaggafbg9:y*>UUUUr"   c                    | j                   }t        |j                               g dk(  sJ t        |j                  d            ddgk(  sJ t        j                  t
        t        j                  f|j                  d       |j                  ddd       t        |j                               g dk(  sJ t        |j                  dd	
            ddgk(  sJ y )Nr   r   r   r   r   r   r   r)   Tr.   )r   r   r   )r   r   r   )	r   r   in_edgesr   r   r   r   r   r*   r+   s     r    test_in_edgesz$BaseMultiDiGraphTester.test_in_edgesJ   s    GGajjl#'WWWWajjm$(8888x!1!12AJJC	

1aajjl# (
 
 	
 
 ajjj./Iy3IIIIr"   c           
      ~   | j                   }t        |j                               g dk(  sJ t        |j                  d            ddgk(  sJ |j                  ddd       t        |j                               g dk(  sJ t        |j                  dd	
            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gk(  sJ y )Nr   r   r   r   r   r   r)   TF)r%   r/   )r   r   r;   r*   r+   s     r    test_in_edges_no_keysz,BaseMultiDiGraphTester.test_in_edges_no_keys[   s    GGajjl#'WWWWajjm$(8888	

1aajjl# (
 
 	
 
 ajjdj782J2J2J2J2J2J2J=
 
 	
 
r"   c                    | j                   }t        |j                  dd            ddi fddi fgk(  sJ |j                  dd       |j	                  ddd       t        |j                  dd            ddddifddi fgk(  sJ t        |j                  dd            ddgk(  sJ t        |j                  ddd	
            ddgk(  sJ y )Nr   Tr$   r   r   r%   )r   r   r   )r   r   Nr   r6   )r   r   r   )r   r   r;   r8   r*   r+   s     r    test_in_edges_dataz)BaseMultiDiGraphTester.test_in_edges_datat   s    GGajjj./Q2JAr
3KKKK	a	

1aa
 ajjj./QFA;4G!QPR3TTTTajjj01i5NNNNajjj<=)ZAXXXXr"   c                 X   |j                   d   |j                   d   k(  sJ |j                   d   j                  d       |j                   d   |j                   d   k(  sJ |j                  d   d   |j                  d   d   k(  sJ |j                  d   d   j                  d       |j                  d   d   |j                  d   d   k(  sJ |d   d   d   d   |d   d   d   d   k(  sJ |d   d   d   d   j                  d       |d   d   d   d   |d   d   d   d   k(  sJ y Nfoor   r   r   graphappendnodesr   Hr   s      r    
is_shallowz!BaseMultiDiGraphTester.is_shallow}   >   wwu~///	a wwu~///wwqz% AGGAJu$5555	
5  #wwqz% AGGAJu$5555tAwqz% AaDGAJu$5555	!Q
5  #tAwqz% AaDGAJu$5555r"   c                 X   |j                   d   |j                   d   k(  sJ |j                   d   j                  d       |j                   d   |j                   d   k7  sJ |j                  d   d   |j                  d   d   k(  sJ |j                  d   d   j                  d       |j                  d   d   |j                  d   d   k7  sJ |d   d   d   d   |d   d   d   d   k(  sJ |d   d   d   d   j                  d       |d   d   d   d   |d   d   d   d   k7  sJ y rB   rD   rH   s      r    is_deepzBaseMultiDiGraphTester.is_deep   rK   r"   c                 F   | j                   }| j                  |       t        j                  |      }	 t	        |j                         g d      sJ 	 |j                         }| j                  ||       y # t        $ r! t	        |j                         g d      sJ Y Lw xY w)N)r   r   r   )r   r   r   r   )	r   add_attributesr   
MultiGraphr   r   AssertionErrorto_undirectedrM   )r   r   rI   s      r    test_to_undirectedz)BaseMultiDiGraphTester.test_to_undirected   s     GGAMM!	Lqwwy*BCCC OOQ  	Lqwwy*JKKK	Ls   A6 6'B B c                 l    | j                   }|j                  dd      sJ |j                  dd      rJ y Nr   r   r   )r   has_successorr+   s     r    test_has_successorz)BaseMultiDiGraphTester.test_has_successor   s6    GGq!$$$??1b))))r"   c                     | j                   }t        |j                  d            ddgk(  sJ t        j                  t
        t        j                  f|j                  d       y Nr   r   r   r   )r   r   
successorsr   r   r   r   r   r+   s     r    test_successorsz&BaseMultiDiGraphTester.test_successors   sI    GGall1o&1a&000x!1!12ALL"Er"   c                 l    | j                   }|j                  dd      sJ |j                  dd      rJ y rU   )r   has_predecessorr+   s     r    test_has_predecessorz+BaseMultiDiGraphTester.test_has_predecessor   s:    GG  A&&&$$Q++++r"   c                     | j                   }t        |j                  d            ddgk(  sJ t        j                  t
        t        j                  f|j                  d       y rY   )r   r   predecessorsr   r   r   r   r   r+   s     r    test_predecessorsz(BaseMultiDiGraphTester.test_predecessors   sJ    GGannQ'(QF222x!1!12ANNBGr"   c                    | j                   }t        |j                               g dk(  sJ t        |j                               ddddk(  sJ |j                  d      dk(  sJ t	        |j                  t        dg                  dgk(  sJ |j                  dddd	       t        |j                  d
            g dk(  sJ t        |j                  d            g dk(  sJ y )N)r      )r   rd   r   rd   rd   r   r   r   r   rc   r   333333?333333?weightotherrj   rj   ))r   333333@)r   rm   re   rk   ))r   @)r   rn   re   )r   r   degreedictlistiterr*   r+   s     r    test_degreez"BaseMultiDiGraphTester.test_degree   s    GGahhj!%====AHHJqQ1#5555xx{aAHHT1#Y'(VH444	

1a3
/ahhhh/04PPPPahhgh./3OOOOr"   c                 P   | j                   }t        |j                               g dk(  sJ t        |j                               ddddk(  sJ |j                  d      dk(  sJ t	        |j                  t        dg                  dgk(  sJ |j                  dd      dk(  sJ y N)r   r   )r   r   r   rf   r   r   rj   rl   )r   r   	in_degreerp   rq   rr   r+   s     r    test_in_degreez%BaseMultiDiGraphTester.test_in_degree   s    GGakkm$(@@@@AKKM"!a&8888{{1~"""AKKaS	*+x777{{1X{.!333r"   c                 P   | j                   }t        |j                               g dk(  sJ t        |j                               ddddk(  sJ |j                  d      dk(  sJ t	        |j                  t        dg                  dgk(  sJ |j                  dd      dk(  sJ y ru   )r   r   
out_degreerp   rq   rr   r+   s     r    test_out_degreez&BaseMultiDiGraphTester.test_out_degree   s    GGalln%)AAAAALLN#1q'9999||A!###ALLqc+,888||Ah|/1444r"   c                    | j                   }|j                         dk(  sJ |j                         dk(  sJ |j                  dddd       t	        |j                  d      d	      d
k(  sJ t	        |j                  d      d	      dk(  sJ y )N   r   r   rg   rh   ri   rj   rl   r   g333333@rk   g@)r   sizenumber_of_edgesr*   roundr+   s     r    	test_sizez BaseMultiDiGraphTester.test_size   s    GGvvx1}}  "a'''	

1a3
/QVV8V,a0C777QVV7V+Q/3666r"   c                 @   | j                         }|j                  dd       |j                         j                  dd      sJ |j                  d      j                  dd      rJ |j                  dd       |j                  d      j                  dd      sJ y )Nr   r   T)
reciprocal)Graphr*   rR   has_edger+   s     r    test_to_undirected_reciprocalz4BaseMultiDiGraphTester.test_to_undirected_reciprocal   s    JJL	

1a ))!Q///??d?3<<QBBB	

1a$/88A>>>r"   c                 4   t        j                  ddg      }|j                         }t        |j	                               ddgk(  sJ |j                  dd       t        |j	                               dgk(  sJ t        |j	                               ddgk(  sJ y )Nr   r   r   r   )r   MultiDiGraphreverser   r   r8   r   r   Rs      r    test_reverse_copyz(BaseMultiDiGraphTester.test_reverse_copy   s    OOVV,-IIKaggi VV$4444	aaggi VH,,,aggi VV$4444r"   c                     t        j                  ddg      }|j                  d      }t        |j	                               ddgk(  sJ t        j                  t         j                  |j                  dd       y )Nr   F)copyr   r   r   )	r   r   r   r   r   r   r   r   r8   r   s      r    test_reverse_nocopyz*BaseMultiDiGraphTester.test_reverse_nocopy   s_    OOVV,-II5I!aggi VV$4444b&&q!<r"   c                 T   | j                   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 t        |j                        t        |j                        k(  sJ t        |j                        t        |j                        k(  sJ y )N)	r   r   idr;   r1   rv   ry   succpredr+   s     r    test_di_attributes_cachedz0BaseMultiDiGraphTester.test_di_attributes_cached   s    GGLLN!**~AJJ///!++"Q[[/111!++"Q[[/111!,,2all#3333!&&zRZ'''!&&zRZ'''r"   N)__name__
__module____qualname__r!   r'   r,   r2   r4   r9   r<   r>   r@   rJ   rM   rS   rW   r[   r^   ra   rs   rw   rz   r   r   r   r   r    r"   r    r
   r
      s    AE
K
VJ"
2Y66 *
F
,
H
P457?5=(r"   r
   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestMultiDiGraphc                 P   t         j                  | _        g d| _        g d| _        | j                         | _        i i i d| j
                  _        i i i d| j
                  _        | j                  D ]U  }| j                  D ]D  }||k(  r	di i}|| j
                  j                  |   |<   || j
                  j                  |   |<   F W i | j
                  _        i | j
                  j                  d<   i | j
                  j                  d<   i | j
                  j                  d<   y N)r   r   r   rf   r   r   r   )	r   r   r   k3edgesk3nodesr   _succ_pred_noder   uvds       r    setup_methodzTestMultiDiGraph.setup_method   s    __
/ **,2"-2"- 	(A\\ (6G&'a #&'a #(	( aaar"   c                 *   | j                         }|j                  dd       |j                  ddi iii dk(  sJ |j                  ddi iii dk(  sJ |j                  i ddi iidk(  sJ | j                         } |j                  d  |j                  ddi iii dk(  sJ |j                  ddi iii dk(  sJ |j                  i ddi iidk(  sJ t        j                  t        d      5  |j                  d d       d d d        y # 1 sw Y   y xY w)Nr   r   r   None cannot be a nodematch   )r   r*   _adjr   r   r   r   
ValueErrorr+   s     r    test_add_edgezTestMultiDiGraph.test_add_edge  s    JJL	

1avva!R\b1111wwq1b'lr2222wwba!R\2222JJL

Fvva!R\b1111wwq1b'lr2222wwba!R\2222]]:-DE 	 JJtQ	  	  	 s   -D		Dc                    | j                         }|j                  dddddifg       |j                  di ddidii dk(  sJ |j                  di ddidii dk(  sJ |j                  i di ddididk(  sJ |j                  dddddifgd       |j                  di ddiddiddidii dk(  sJ |j                  i di ddiddiddididk(  sJ | j                         }ddddifd	d
dg}|j                  |       ddiddii i d}|j                  d|ii dk(  sJ |j                  d|ii dk(  sJ t        j                  t        j                  |j                  dg       t        j                  t        j                  |j                  dg       t        j                  t        |j                  dg       t        j                  t        d      5  |j                  ddg       d d d        y # 1 sw Y   y xY w)Nr   r   r   rj   r   r   rl   )r   r   r   r   )r   r   ))rj   r   )r   r      )r   r   s)r   r   r   r   r   )r   )r   r   r   r   rd   r   r   )Nr   )r   r   )r   add_edges_fromr   r   r   r   r   r   r   	TypeErrorr   )r   r   r   keydicts       r    test_add_edges_fromz$TestMultiDiGraph.test_add_edges_from#  sJ   JJL	&1a(A"789vvaRXqM!:;CCCCwwqbh]";<DDDDwwbaRXqM)B%CDDDD	&1a(A"78Cwwrxm18Q-PQ
 
 	
 
 wwrxm18Q-PQ
 
 	
 

 JJLHa=!$	
 	
m1"2Fwwq'lr2222wwq'lr2222 	b&&(8(84&Ab&&(8(8?:KLi!1!1A37]]:-DE 	2i01	2 	2 	2s   G77H c                    | j                   }|j                  dd       |j                  ddi iidi idi iddi idi iddk(  sJ |j                  di idi idddi iidi idi iddk(  sJ t	        j
                  t        t        j                  f|j                  dd       t	        j
                  t        t        j                  f|j                  ddd	       y )
Nr   r   r   r   r   rf   r   r   key)	r   r8   r   r   r   r   r   r   r   r+   s     r    test_remove_edgez!TestMultiDiGraph.test_remove_edgeI  s    GG	awwAr7|r72w'r72w'
 
 	
 

 wwr72w'Ar7|r72w'
 
 	
 

 	x!1!12AMM2qIx!1!12AMM1aQOr"   c                    | j                   }|j                  ddd       |j                  ddd       |j                  di idi iddi idi iddi idi iddk(  sJ |j                  di idi iddi idi iddi idi iddk(  sJ |j
                  di idi iddi idi iddi idi iddk(  sJ |j                  dd       |j                  d	di iidi idi iddi idi iddk(  sJ |j
                  di idi idd	di iidi idi iddk(  sJ t        j                  t        t        j                  f|j                  d
d       y )Nr   r   zparallel edger   r   r   r   rf   r   r   )r   r*   r8   r   r   r   r   r   r   r   r   r+   s     r    test_remove_multiedgez&TestMultiDiGraph.test_remove_multiedgeY  s   GG	

1a_
-	a0vvr72w'r72w'r72w'
 
 	
 
 wwr72w'r72w'r72w'
 
 	
 
 wwr72w'r72w'r72w'
 
 	
 

 	
awwAr7|r72w'r72w'
 
 	
 

 wwr72w'Ar7|r72w'
 
 	
 

 	x!1!12AMM2qIr"   c                     | j                   }|j                  dg       |j                  ddi iidi idi iddi idi iddk(  sJ |j                  di idi idddi iidi idi iddk(  sJ |j                  dg       y )Nr   r   r   r   rf   r   )r   r   )r   remove_edges_fromr   r   r+   s     r    test_remove_edges_fromz'TestMultiDiGraph.test_remove_edges_from{  s    GG	VH%wwAr7|r72w'r72w'
 
 	
 

 wwr72w'Ar7|r72w'
 
 	
 

 	
VH%r"   N)	r   r   r   r   r   r   r   r   r   r   r"   r    r   r      s$    * $2LP  JD&r"   r   c                       e Zd ZdZd Zy)r   z=Unit tests for the :meth:`MultiDiGraph.edge_subgraph` method.c                    t        j                         }t        j                  |t        d             t        j                  |t        d             t        j                  |t	        t        d                   t        j                  |t	        t        d                   t        d      D ]  }d| |j
                  |   d<    d|j                  d   d   d   d<   d|j                  d   d   d   d<   d|j                  d	   d
   d   d<   d|j                  d	   d
   d   d<   d|j                  d<   || _        |j                  ddg      | _
        y )Nr   nodenameedge010r   r   edge011edge340r   rd   edge341rE   r0   )r   rd   r   )r   r   add_pathrangereversedrG   adjrE   r   edge_subgraphrI   )r   r   is      r    r   zTestEdgeSubgraph.setup_method  s   OO
AuQx 
AuQx 
Axa)*
Axa)*q 	,A#'sAGGAJv	,!*aAv!*aAv!*aAv!*aAv! )Y!78r"   N)r   r   r   __doc__r   r   r"   r    r   r     s
    G9r"   r   c                       e Zd Zy)CustomDictClassN)r   r   r   r   r"   r    r   r     s    r"   r   c                   (    e Zd ZeZeZeZeZeZeZ	eZ
y)MultiDiGraphSubClassN)r   r   r   r   node_dict_factorynode_attr_dict_factoryadjlist_outer_dict_factoryadjlist_inner_dict_factoryedge_key_dict_factoryedge_attr_dict_factorygraph_attr_dict_factoryr   r"   r    r   r     s,    ',!0!0+,-r"   r   c                       e Zd Zd Zy)TestMultiDiGraphSubclassc                    t         | _        g d| _        g d| _        | j                         | _        | j                  j                  | j                  j                         | j                  j                         | j                  j                         d      | j                  _        i i i d| j                  _        | j                  D ]U  }| j                  D ]D  }||k(  r	di i}|| j                  j                  |   |<   || j                  j                  |   |<   F W | j                  j                         | j                  _
        | j                  j                         | j                  j                  d<   | j                  j                         | j                  j                  d<   | j                  j                         | j                  j                  d<   y r   )r   r   r   r   r   r   r   r   r   r   r   r   r   s       r    r   z%TestMultiDiGraphSubclass.setup_method  se   )
/ **,::775577755777557
 2"- 	(A\\ (6G&'a #&'a #(	( 1137799;a7799;a7799;ar"   N)r   r   r   r   r   r"   r    r   r     s    <r"   r   )collectionsr   r   networkxr   networkx.utilsr   test_multigraphr   r   _TestMultiGraphEdgeSubgraphr   _TestMultiGraphr
   r   r   r   r   r   r   r"   r    <module>r      sr        & 1 L >o(1 o(dI&- I&X92 90	h 	.2?? .</ <r"   