
    h?                         S SK Jr  S SKrS SKrS SKJr  SSKJr  SSKJ	r
  SSKJr   " S S	\5      r " S
 S\\5      r " S S\
5      r	 " S S\5      r " S S\R                   5      r " S S\5      rg)    )UserDictN)edges_equal   )BaseMultiGraphTester)TestEdgeSubgraph)TestMultiGraphc                       \ 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)BaseMultiDiGraphTester   c                    U R                   n/ SQn[        UR                  5       5      U:X  d   e[        UR                  S5      5      SS/:X  d   e[        R                  " [
        [        R                  4UR                  S5        g )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      Z/var/www/html/env/lib/python3.13/site-packages/networkx/classes/tests/test_multidigraph.py
test_edges!BaseMultiDiGraphTester.test_edges   sh    GG@aggi E)))aggaj!ff%5555x!1!12AGGR@    c                 F   U R                   nSS0 4SS0 4SS0 4SS0 4SS0 4SS0 4/n[        UR                  SS95      U:X  d   e[        UR                  SSS95      SS0 4SS0 4/:X  d   e[        R                  " [
        [        R                  4UR                  S5        g )Nr   r   r   Tdatar   )	r   r   r   r   r   r   r   r   	neighborsr   s      r!   test_edges_data&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                    U R                   n[        UR                  5       5      / SQ:X  d   e[        UR                  S5      5      SS/:X  d   eUR                  SS5        [        UR                  5       5      / SQ:X  d   eg )Nr   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   add_edger   r    s     r!   test_edges_multi'BaseMultiDiGraphTester.test_edges_multi   su    GGaggi $TTTTaggaj!ff%5555	

1aaggi  %
 
 	
 
r$   c                 P   U R                   n[        UR                  5       5      / SQ:X  d   e[        UR                  S5      5      SS/:X  d   e[        R                  " [
        [        R                  4UR                  S5        [        UR                  SSS95      SS	/:X  d   eg )
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_edges%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                 
   U R                   n[        UR                  5       5      / SQ:X  d   e[        UR                  S5      5      SS/:X  d   eUR                  SSS5        [        UR                  5       5      / SQ:X  d   eg )Nr   r   r   r   r   r   r,   )r   r   r5   r-   r.   s     r!   test_out_edges_multi+BaseMultiDiGraphTester.test_out_edges_multi2   sw    GGakkm$(XXXXakk!n%&&)9999	

1aakkm$ )
 
 	
 
r$   c                    U R                   n[        UR                  SSS95      SS0 4SS0 4/:X  d   eUR                  SS5        UR	                  SSSS9  [        UR                  SSS95      SSSS04SS0 4/:X  d   e[        UR                  SSS95      SS/:X  d   e[        UR                  SSS	S
95      SS/:X  d   eg )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_data*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                    U R                   n[        UR                  5       5      / SQ:X  d   e[        UR                  S5      5      SS/:X  d   e[        R                  " [
        [        R                  4UR                  S5        UR                  SSS5        [        UR                  5       5      / SQ:X  d   e[        UR                  SS	S
95      SS/:X  d   eg )Nr   r   r   r   r   r   r   r,   Tr2   )r   r   r   )r   r   r   )	r   r   in_edgesr   r   r   r   r   r-   r.   s     r!   test_in_edges$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           
         U R                   n[        UR                  5       5      / SQ:X  d   e[        UR                  S5      5      SS/:X  d   eUR                  SSS5        [        UR                  5       5      / SQ:X  d   e[        UR                  SS	S
95      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/:X  d   eg )Nr   r   r   r   r   r   r,   TF)r'   r3   )r   r   rB   r-   r.   s     r!   test_in_edges_no_keys,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                    U R                   n[        UR                  SSS95      SS0 4SS0 4/:X  d   eUR                  SS5        UR	                  SSSS9  [        UR                  SSS95      SSSS04SS0 4/:X  d   e[        UR                  SSS95      SS/:X  d   e[        UR                  SSS	S
95      SS/:X  d   eg )Nr   Tr&   r   r   r'   )r   r   r   )r   r   Nr   r<   )r   r   r   )r   r   rB   r>   r-   r.   s     r!   test_in_edges_data)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                 d   UR                   S   UR                   S   :X  d   eUR                   S   R                  S5        UR                   S   UR                   S   :X  d   e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US   S   S   S   US   S   S   S   :X  d   eUS   S   S   S   R                  S5        US   S   S   S   US   S   S   S   :X  d   eg Nfoor   r   r   graphappendnodesr   Hr    s      r!   
is_shallow!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                 d   UR                   S   UR                   S   :X  d   eUR                   S   R                  S5        UR                   S   UR                   S   :w  d   e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US   S   S   S   US   S   S   S   :X  d   eUS   S   S   S   R                  S5        US   S   S   S   US   S   S   S   :w  d   eg rL   rN   rR   s      r!   is_deepBaseMultiDiGraphTester.is_deep   rV   r$   c                 \   U R                   nU R                  U5        [        R                  " U5      n [	        UR                  5       / SQ5      (       d   e UR                  5       nU R                  X!5        g ! [         a&    [	        UR                  5       / SQ5      (       d   e NQf = f)N)r   r   r   )r   r   r   r   )	r   add_attributesr   
MultiGraphr   r   AssertionErrorto_undirectedrX   )r   r    rS   s      r!   test_to_undirected)BaseMultiDiGraphTester.test_to_undirected   s     GGAMM!	Lqwwy*BCCCC OOQ  	Lqwwy*JKKKK	Ls   #A; ;-B+*B+c                     U R                   nUR                  SS5      (       d   eUR                  SS5      (       a   eg Nr   r   r   )r   has_successorr.   s     r!   test_has_successor)BaseMultiDiGraphTester.test_has_successor   s<    GGq!$$$$??1b)))))r$   c                     U R                   n[        UR                  S5      5      SS/:X  d   e[        R                  " [
        [        R                  4UR                  S5        g Nr   r   r   r   )r   r   
successorsr   r   r   r   r   r.   s     r!   test_successors&BaseMultiDiGraphTester.test_successors   sI    GGall1o&1a&000x!1!12ALL"Er$   c                     U R                   nUR                  SS5      (       d   eUR                  SS5      (       a   eg rb   )r   has_predecessorr.   s     r!   test_has_predecessor+BaseMultiDiGraphTester.test_has_predecessor   s@    GG  A&&&&$$Q+++++r$   c                     U R                   n[        UR                  S5      5      SS/:X  d   e[        R                  " [
        [        R                  4UR                  S5        g rg   )r   r   predecessorsr   r   r   r   r   r.   s     r!   test_predecessors(BaseMultiDiGraphTester.test_predecessors   sJ    GGannQ'(QF222x!1!12ANNBGr$   c                    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[	        UR                  [        S/5      5      5      S/:X  d   eUR                  SSSSS	9  [        UR                  S
S95      / SQ:X  d   e[        UR                  SS95      / SQ:X  d   eg )N)r      )r   ru   r   ru   ru   r   r   r   r   rt   r   333333?333333?weightotherr{   r{   ))r   333333@)r   r~   rv   r|   ))r   @)r   r   rv   )r   r   degreedictlistiterr-   r.   s     r!   test_degree"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                 T   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[	        UR                  [        S/5      5      5      S/:X  d   eUR                  SSS9S:X  d   eg N)r   r   )r   r   r   rw   r   r   r{   r}   )r   r   	in_degreer   r   r   r.   s     r!   test_in_degree%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                 T   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[	        UR                  [        S/5      5      5      S/:X  d   eUR                  SSS9S:X  d   eg r   )r   r   
out_degreer   r   r   r.   s     r!   test_out_degree&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                    U R                   nUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  SSSSS9  [	        UR                  SS9S	5      S
:X  d   e[	        UR                  SS9S	5      S:X  d   eg )N   r   r   rx   ry   rz   r{   r}   r   g333333@r|   g@)r   sizenumber_of_edgesr-   roundr.   s     r!   	test_size BaseMultiDiGraphTester.test_size   s    GGvvx1}}  "a'''	

1a3
/QVV8V,a0C777QVV7V+Q/3666r$   c                 R   U R                  5       nUR                  SS5        UR                  5       R                  SS5      (       d   eUR                  SS9R                  SS5      (       a   eUR                  SS5        UR                  SS9R                  SS5      (       d   eg )Nr   r   T)
reciprocal)Graphr-   r^   has_edger.   s     r!   test_to_undirected_reciprocal4BaseMultiDiGraphTester.test_to_undirected_reciprocal   s    JJL	

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

1a$/88A>>>>r$   c                 <   [         R                  " SS/5      nUR                  5       n[        UR	                  5       5      SS/:X  d   eUR                  SS5        [        UR	                  5       5      S/:X  d   e[        UR	                  5       5      SS/:X  d   eg )Nr   r   r   r   )r   MultiDiGraphreverser   r   r>   r   r    Rs      r!   test_reverse_copy(BaseMultiDiGraphTester.test_reverse_copy   s    OOVV,-IIKaggi VV$4444	aaggi VH,,,aggi VV$4444r$   c                     [         R                  " SS/5      nUR                  SS9n[        UR	                  5       5      SS/:X  d   e[
        R                  " [         R                  UR                  SS5        g )Nr   F)copyr   r   r   )	r   r   r   r   r   r   r   r   r>   r   s      r!   test_reverse_nocopy*BaseMultiDiGraphTester.test_reverse_nocopy   s_    OOVV,-II5I!aggi VV$4444b&&q!<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[        UR                  5      [        UR                  5      :X  d   e[        UR                  5      [        UR                  5      :X  d   eg )N)	r   r   idrB   r5   r   r   succpredr.   s     r!   test_di_attributes_cached0BaseMultiDiGraphTester.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____firstlineno__r"   r)   r/   r6   r9   r?   rC   rF   rI   rT   rX   r_   rd   ri   rm   rq   r   r   r   r   r   r   r   r   __static_attributes__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                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestMultiDiGraph   c                 V   [         R                  U l        / SQU l        / SQU l        U R                  5       U l        0 0 0 S.U R
                  l        0 0 0 S.U R
                  l        U R                   HW  nU R                   HD  nX:X  a  M
  S0 0nX0R
                  R                  U   U'   X0R
                  R                  U   U'   MF     MY     0 U R
                  l        0 U R
                  R                  S'   0 U R
                  R                  S'   0 U R
                  R                  S'   g N)r   r   r   rw   r   r   r   )	r   r   r   k3edgesk3nodesr   _succ_pred_noder   uvds       r!   setup_methodTestMultiDiGraph.setup_method   s    __
/ **,2"-2"-A\\6G&'a #&'a # "  aaar$   c                 <   U R                  5       nUR                  SS5        UR                  SS0 000 S.:X  d   eUR                  SS0 000 S.:X  d   eUR                  0 SS0 00S.:X  d   eU R                  5       nUR                  " S6   UR                  SS0 000 S.:X  d   eUR                  SS0 000 S.:X  d   eUR                  0 SS0 00S.:X  d   e[
        R                  " [        SS9   UR                  S S5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   None cannot be a nodematch   )r   r-   _adjr   r   r   r   
ValueErrorr.   s     r!   test_add_edge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 FEEs   1D
Dc                    U R                  5       nUR                  SSSSS04/5        UR                  S0 SS0S.00 S.:X  d   eUR                  S0 SS0S.00 S.:X  d   eUR                  0 S0 SS0S.0S.:X  d   eUR                  SSSSS04/SS9  UR                  S0 SS0SS0SS0S.00 S.:X  d   eUR                  0 S0 SS0SS0SS0S.0S.:X  d   eU R                  5       nSSSS04S	S
S/nUR                  U5        SS0SS00 0 S.nUR                  SU00 S.:X  d   eUR                  SU00 S.:X  d   e[
        R                  " [        R                  UR                  S/5        [
        R                  " [        R                  UR                  S/5        [
        R                  " [        UR                  S/5        [
        R                  " [        SS9   UR                  SS/5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   r{   r   r   r}   )r   r   r   r   )r   r   ))r{   r   )r   r      )r   r   s)r   r   r   r   r   )r   )r   r   r   r   ru   r   r   )Nr   )r   r   )r   add_edges_fromr   r   r   r   r   r   r   	TypeErrorr   )r   r    r   keydicts       r!   test_add_edges_from$TestMultiDiGraph.test_add_edges_from#  sB   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i01 FEEs   G<<
H
c                    U R                   nUR                  SS5        UR                  SS0 00S0 0S0 0S.S0 0S0 0S.S.:X  d   eUR                  S0 0S0 0S.SS0 00S0 0S0 0S.S.:X  d   e[        R
                  " [        [        R                  4UR                  SS5        [        R
                  " [        [        R                  4UR                  SSSS	9  g )
Nr   r   r   r   r   rw   r   r   key)	r   r>   r   r   r   r   r   r   r   r.   s     r!   test_remove_edge!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                    U R                   nUR                  SSSS9  UR                  SSSS9  UR                  S0 0S0 0S.S0 0S0 0S.S0 0S0 0S.S.:X  d   eUR                  S0 0S0 0S.S0 0S0 0S.S0 0S0 0S.S.:X  d   eUR
                  S0 0S0 0S.S0 0S0 0S.S0 0S0 0S.S.:X  d   eUR                  SS5        UR                  S	S0 00S0 0S0 0S.S0 0S0 0S.S.:X  d   eUR
                  S0 0S0 0S.S	S0 00S0 0S0 0S.S.:X  d   e[        R                  " [        [        R                  4UR                  S
S5        g )Nr   r   zparallel edger   r   r   r   rw   r   r   )r   r-   r>   r   r   r   r   r   r   r   r   r.   s     r!   test_remove_multiedge&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                    U R                   nUR                  S/5        UR                  SS0 00S0 0S0 0S.S0 0S0 0S.S.:X  d   eUR                  S0 0S0 0S.SS0 00S0 0S0 0S.S.:X  d   eUR                  S/5        g )Nr   r   r   r   rw   r   )r   r   )r   remove_edges_fromr   r   r.   s     r!   test_remove_edges_from'TestMultiDiGraph.test_remove_edges_from{  s    GG	VH%wwAr7|r72w'r72w'
 
 	
 

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

 	
VH%r$   r   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r$   r!   r   r      s$    * $2LP  JD&r$   r   c                       \ rS rSrSrS rSrg)r   i  z=Unit tests for the :meth:`MultiDiGraph.edge_subgraph` method.c                    [         R                  " 5       n[         R                  " U[        S5      5        [         R                  " U[        S5      5        [         R                  " U[	        [        S5      5      5        [         R                  " U[	        [        S5      5      5        [        S5       H  nSU 3UR
                  U   S'   M     SUR                  S   S   S   S'   SUR                  S   S   S   S'   SUR                  S	   S
   S   S'   SUR                  S	   S
   S   S'   SUR                  S'   Xl        UR                  SS/5      U l
        g )Nr   nodenameedge010r   r   edge011edge340r   ru   edge341rO   r4   )r   ru   r   )r   r   add_pathrangereversedrQ   adjrO   r    edge_subgraphrS   )r   r    is      r!   r   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$   )r    rS   N)r   r   r   r   __doc__r   r   r   r$   r!   r   r     s
    G9r$   r   c                       \ rS rSrSrg)CustomDictClassi  r   N)r   r   r   r   r   r   r$   r!   r   r     s    r$   r   c                   0    \ rS rSr\r\r\r\r\r	\r
\rSrg)MultiDiGraphSubClassi  r   N)r   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   r     s,    ',!0!0+,-r$   r   c                       \ rS rSrS rSrg)TestMultiDiGraphSubclassi  c                    [         U l        / SQU l        / SQU l        U R                  5       U l        U R                  R                  U R                  R                  5       U R                  R                  5       U R                  R                  5       S.5      U R                  l        0 0 0 S.U R                  l        U R                   HW  nU R                   HD  nX:X  a  M
  S0 0nX0R                  R                  U   U'   X0R                  R                  U   U'   MF     MY     U R                  R                  5       U R                  l
        U R                  R                  5       U R                  R                  S'   U R                  R                  5       U R                  R                  S'   U R                  R                  5       U R                  R                  S'   g r   )r   r   r   r   r   r   r   r   r   r   r   r   r   s       r!   r   %TestMultiDiGraphSubclass.setup_method  sU   )
/ **,::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$   r   N)r   r   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$   