
    \Mh?                        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dS )    )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dS )BaseMultiDiGraphTesterc                    | j         }g d}t          |                                          |k    sJ t          |                    d                    ddgk    sJ t          j        t
          t          j        f|j        d           d S )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      h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/classes/tests/test_multidigraph.py
test_edgesz!BaseMultiDiGraphTester.test_edges   s    G@@@aggii  E))))aggajj!!ff%55555x!12AGR@@@@@    c                 V   | 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          |                    d                    |k    sJ t          |                    dd                    ddi fddi fgk    sJ t          j        t
          t          j        f|j        d           d S )Nr   r   r   Tdatar   )	r   r   r   r   r   r   r   r   	neighborsr   s      r    test_edges_dataz&BaseMultiDiGraphTester.test_edges_data   s    GQaBZ!QaBZ!QaQRTVZXagg4g(())U2222aggadg++,,!QaBZ0HHHHHx!12AKDDDDDr"   c                 8   | j         }t          |                                          g dk    sJ t          |                    d                    ddgk    sJ |                    dd           t          |                                          g dk    sJ d S )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   s    Gaggii  $T$T$TTTTTaggajj!!ff%55555	

1aaggii   %
 %
 %
 
 
 
 
 
 
r"   c                 j   | j         }t          |                                          g dk    sJ t          |                    d                    ddgk    sJ t          j        t
          t          j        f|j        d           t          |                    dd                    dd	gk    sJ d S )
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    Gakkmm$$(X(X(XXXXXakk!nn%%&&)99999x!12AKDDDakk!$k//00Y	4JJJJJJJr"   c                 :   | j         }t          |                                          g dk    sJ t          |                    d                    ddgk    sJ |                    ddd           t          |                                          g dk    sJ d S )Nr   r   r   r   r   r   r)   )r   r   r1   r*   r+   s     r    test_out_edges_multiz+BaseMultiDiGraphTester.test_out_edges_multi2   s    Gakkmm$$(X(X(XXXXXakk!nn%%&&)99999	

1aakkmm$$ )
 )
 )
 
 
 
 
 
 
r"   c                    | j         }t          |                    dd                    ddi fddi fgk    sJ |                    dd           |                    ddd           t          |                    dd                    ddddifddi fgk    sJ t          |                    dd                    ddgk    sJ t          |                    ddd	
                    ddgk    sJ d S )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   Gaggadg++,,!QaBZ0HHHHH	a	

1aa
   aggadg++,,!Q1Dq!Rj0QQQQQaggafg--..9l2KKKKKaggafbg99::y*>UUUUUUUr"   c                    | j         }t          |                                          g dk    sJ t          |                    d                    ddgk    sJ t          j        t
          t          j        f|j        d           |                    ddd           t          |                                          g dk    sJ t          |                    dd	
                    ddgk    sJ d S )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    Gajjll##'W'W'WWWWWajjmm$$(88888x!12AJCCC	

1aajjll## (
 (
 (
 
 
 
 
 ajjj..//Iy3IIIIIIIr"   c           
         | j         }t          |                                          g dk    sJ t          |                    d                    ddgk    sJ |                    ddd           t          |                                          g dk    sJ t          |                    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 d S )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$   Gajjll##'W'W'WWWWWajjmm$$(88888	

1aajjll## (
 (
 (
 
 
 
 
 ajjdj77882J2J2J2J2J2J2J=
 
 
 
 
 
 
r"   c                    | j         }t          |                    dd                    ddi fddi fgk    sJ |                    dd           |                    ddd           t          |                    dd                    ddddifddi fgk    sJ t          |                    dd                    ddgk    sJ t          |                    ddd	
                    ddgk    sJ d S )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   Gajjj..//Q2JAr
3KKKKK	a	

1aa
   ajjj..//QFA;4G!QPR3TTTTTajjj0011i5NNNNNajjj<<==)ZAXXXXXXXr"   c                    |j         d         |j         d         k    sJ |j         d                             d           |j         d         |j         d         k    sJ |j        d         d         |j        d         d         k    sJ |j        d         d                             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                             d           |d         d         d         d         |d         d         d         d         k    sJ d S Nfoor   r   r   graphappendnodesr   Hr   s      r    
is_shallowz!BaseMultiDiGraphTester.is_shallow}   T   wu~////	a   wu~////wqz% AGAJu$55555	
5  ###wqz% AGAJu$55555tAwqz% AaDGAJu$55555	!Q
5  ###tAwqz% AaDGAJu$5555555r"   c                    |j         d         |j         d         k    sJ |j         d                             d           |j         d         |j         d         k    sJ |j        d         d         |j        d         d         k    sJ |j        d         d                             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                             d           |d         d         d         d         |d         d         d         d         k    sJ d S rB   rD   rH   s      r    is_deepzBaseMultiDiGraphTester.is_deep   rK   r"   c                 v   | j         }|                     |           t          j        |          }	 t	          |                                g d          sJ n6# t          $ r) t	          |                                g d          sJ Y nw xY w|                                }|                     ||           d S )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     GAM!	Lqwwyy*B*B*BCCCCCC 	L 	L 	Lqwwyy*J*J*JKKKKKKK	LOOQs   &A 0BBc                 t    | j         }|                    dd          sJ |                    dd          rJ d S Nr   r   r   )r   has_successorr+   s     r    test_has_successorz)BaseMultiDiGraphTester.test_has_successor   sC    Gq!$$$$$??1b)))))))r"   c                     | j         }t          |                    d                    ddgk    sJ t          j        t
          t          j        f|j        d           d S Nr   r   r   r   )r   r   
successorsr   r   r   r   r   r+   s     r    test_successorsz&BaseMultiDiGraphTester.test_successors   sT    Gall1oo&&1a&0000x!12AL"EEEEEr"   c                 t    | j         }|                    dd          sJ |                    dd          rJ d S rU   )r   has_predecessorr+   s     r    test_has_predecessorz+BaseMultiDiGraphTester.test_has_predecessor   sG    G  A&&&&&$$Q+++++++r"   c                     | j         }t          |                    d                    ddgk    sJ t          j        t
          t          j        f|j        d           d S rY   )r   r   predecessorsr   r   r   r   r   r+   s     r    test_predecessorsz(BaseMultiDiGraphTester.test_predecessors   sV    GannQ''((QF2222x!12ANBGGGGGr"   c                 >   | j         }t          |                                          g dk    sJ t          |                                          ddddk    sJ |                    d          dk    sJ t	          |                    t          dg                              dgk    sJ |                    dddd	           t          |                    d
                    g dk    sJ t          |                    d                    g dk    sJ d S )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"   Gahhjj!!%=%=%=====AHHJJqQ1#5#55555xx{{aAHHT1#YY''((VH4444	

1a3
///ahhhh//004P4P4PPPPPahhgh..//3O3O3OOOOOOOr"   c                    | j         }t          |                                          g dk    sJ t          |                                          ddddk    sJ |                    d          dk    sJ t	          |                    t          dg                              dgk    sJ |                    dd          dk    sJ d S 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    Gakkmm$$(@(@(@@@@@AKKMM""!a&8&88888{{1~~""""AKKaS		**++x7777{{1X{..!333333r"   c                    | j         }t          |                                          g dk    sJ t          |                                          ddddk    sJ |                    d          dk    sJ t	          |                    t          dg                              dgk    sJ |                    dd          dk    sJ d S ru   )r   r   
out_degreerp   rq   rr   r+   s     r    test_out_degreez&BaseMultiDiGraphTester.test_out_degree   s    Gallnn%%)A)A)AAAAAALLNN##1q'9'99999||A!####ALLqc++,,8888||Ah|//1444444r"   c                 V   | j         }|                                dk    sJ |                                dk    sJ |                    dddd           t	          |                    d          d	          d
k    sJ t	          |                    d          d	          dk    sJ d S )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    Gvvxx1}}}}  ""a''''	

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

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

1a$//88A>>>>>>>r"   c                 z   t          j        ddg          }|                                }t          |                                          ddgk    sJ |                    dd           t          |                                          dgk    sJ t          |                                          ddgk    sJ d S )Nr   r   r   r   )r   MultiDiGraphreverser   r   r8   r   r   Rs      r    test_reverse_copyz(BaseMultiDiGraphTester.test_reverse_copy   s    OVV,--IIKKaggii  VV$44444	aaggii  VH,,,,aggii  VV$4444444r"   c                     t          j        ddg          }|                    d          }t          |                                          ddgk    sJ t          j        t           j        |j        dd           d S )Nr   F)copyr   r   r   )	r   r   r   r   r   r   r   r   r8   r   s      r    test_reverse_nocopyz*BaseMultiDiGraphTester.test_reverse_nocopy   sp    OVV,--II5I!!aggii  VV$44444b&q!<<<<<r"   c                 H   | 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 d S )N)	r   r   idr;   r1   rv   ry   succpredr+   s     r    test_di_attributes_cachedz0BaseMultiDiGraphTester.test_di_attributes_cached   s    GLLNN!*~~AJ////!+"Q[//1111!+"Q[//1111!,2al#3#33333!&zzRZZ''''!&zzRZZ''''''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 A AE E E
 
 
K K K
 
 
V V VJ J J"
 
 
2Y Y Y6 6 66 6 6   * * *
F F F
, , ,
H H H
P P P4 4 45 5 57 7 7? ? ?5 5 5= = =( ( ( ( (r"   r
   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestMultiDiGraphc                    t           j        | _        g d| _        g d| _        |                                 | _        i i i d| j        _        i i i d| j        _        | j        D ]A}| j        D ]7}||k    r	di i}|| j        j        |         |<   || j        j        |         |<   8Bi | j        _        i | j        j        d<   i | j        j        d<   i | j        j        d<   d S 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    _
/// yy**,,2"--2"-- 	( 	(A\ ( (66G&'a #&'a ##( aaar"   c                    |                                  }|                    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        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  |                    d d           d d d            d S # 1 swxY w Y   d S )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   JJLL	

1ava!R\b111111wq1b'lr222222wba!R\222222JJLL
Fva!R\b111111wq1b'lr222222wba!R\222222]:-DEEE 	  	 JJtQ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   D  DDc                    |                                  }|                    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 |                    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 |                                  }ddddifd	d
dg}|                    |           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  |                    ddg           d d d            d S # 1 swxY w Y   d S )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#  s   JJLL	&1a(A"78999vaRXqM!:!:;CCCCCCwqbh]";";<DDDDDDwbaRXqM)B)B%CDDDDDD	&1a(A"78CCCwrxm18Q-PPQ
 
 
 
 
 
 wrxm18Q-PPQ
 
 
 
 
 

 JJLLHa=!$	
 	
m1"2FFwq'lr222222wq'lr222222 	b&(84&AAAb&(8?:KLLLi!1A3777]:-DEEE 	2 	2i0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   9GG"%G"c                    | 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	           d S )
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   G	awAr7|r72w''r72w''
 
 
 
 
 

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

 	x!12AM2qIIIx!12AM1aQOOOOOOr"   c                 j   | j         }|                    ddd           |                    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 |                    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           d S )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  s9   G	

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

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

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

 	x!12AM2qIIIIIr"   c                     | 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 |                    dg           d S )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    G	VH%%%wAr7|r72w''r72w''
 
 
 
 
 

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

 	
VH%%%%%r"   N)	r   r   r   r   r   r   r   r   r   r   r"   r    r   r      sv          *     $2 $2 $2LP P P  J  J  JD& & & & &r"   r   c                       e Zd ZdZd ZdS )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<   || _        |	                    ddg          | _
        d S )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=   O
AuQxx   
AuQxx   
Axa))***
Axa))***q 	, 	,A!+AGAJv!*aAv!*aAv!*aAv!*aAv! )Y!788r"   N)r   r   r   __doc__r   r   r"   r    r   r     s)        GG9 9 9 9 9r"   r   c                       e Zd ZdS )CustomDictClassN)r   r   r   r   r"   r    r   r     s        Dr"   r   c                   *    e Zd ZeZeZeZeZeZeZ	eZ
dS )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dS )TestMultiDiGraphSubclassc                 *   t           | _        g d| _        g d| _        |                                 | _        | j                            | j                                        | j                                        | j                                        d          | j        _        i i i d| j        _        | j        D ]A}| j        D ]7}||k    r	di i}|| j        j        |         |<   || j        j        |         |<   8B| j        	                                | j        _
        | j                                        | j        j
        d<   | j                                        | j        j
        d<   | j                                        | j        j
        d<   d S r   )r   r   r   r   r   r   r   r   r   r   r   r   r   s       r    r   z%TestMultiDiGraphSubclass.setup_method  su   )
/// yy**,,::755777557775577 
 
 2"-- 	( 	(A\ ( (66G&'a #&'a ##( 1133799;;a799;;a7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      s                    & & & & & & 1 1 1 1 1 1 L L L L L L > > > > > >o( o( o( o( o(1 o( o( o(dI& I& I& I& I&- I& I& I&X9 9 9 9 92 9 9 90	 	 	 	 	h 	 	 	. . . . .2? . . .< < < < </ < < < < <r"   