
    h,                         S SK r S SKrS SKJrJr   " S S5      r " S S5      rS r " S S	5      r	 " S
 S5      r
 " S S5      rg)    N)edges_equalnodes_equalc                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestReverseView	   c                     [         R                  " S[         R                  " 5       S9U l        [         R                  " U R                  5      U l        g Nr   create_using)nx
path_graphDiGraphGreverse_viewrvselfs    X/var/www/html/env/lib/python3.13/site-packages/networkx/classes/tests/test_graphviews.pysetup_methodTestReverseView.setup_method
   s.    qrzz|<//$&&)    c                    SS K nU R                  nUR                  UR                  US5      5      nUR                  UR                  :X  d   eUR
                  UR
                  :X  d   eUR                  UR                  :X  d   eg Nr   pickler   loadsdumps_node_adjgraphr   r   r   prvs       r   test_pickleTestReverseView.test_pickle   i    WWll6<<B/0xx399$$$ww#(("""xx399$$$r   c                     SU R                   R                  ;   d   eSU R                   R                  ;  d   eSU R                  R                  ;  d   eSU R                  R                  ;   d   eg N)      )r*   r)   r   edgesr   r   s    r   test_containsTestReverseView.test_contains   sZ    %%%TVV\\)))TWW]]***&&&r   c                     [        S U R                  R                   5       5      n[        U R                  R                  5      U:X  d   eg )Nc              3   J   #    U  H  n[        [        U5      5      v   M     g 7fN)tuplereversed).0es     r   	<genexpr>,TestReverseView.test_iter.<locals>.<genexpr>   s     Cl%,,ls   !#sortedr   r,   r   r   expecteds     r   	test_iterTestReverseView.test_iter   s5    CdffllCCdggmm$000r   c                     [         R                  " 5       n[        R                  " [         R                  [         R
                  U5        g r1   )r   GraphpytestraisesNetworkXNotImplementedr   r   r   s     r   test_exceptionsTestReverseView.test_exceptions!   s'    HHJb//!Dr   c                   ^  " U4S jS[         R                  5      mT" 5       nUR                  SS5        [         R                  " U5      n[	        SUR
                  5        UR                  5       n[	        SUR
                  5        [	        UR                  5        UR                  SS5      (       d   eUR                  5       S:X  d   eg )Nc                   (   > \ rS rSrS rU 4S jrSrg).TestReverseView.test_subclass.<locals>.MyGraph&   c                     gNme r   s    r   	my_method8TestReverseView.test_subclass.<locals>.MyGraph.my_method'       r   c                    > T" 5       $ r1   rM   r   MyGraphs    r   to_directed_class@TestReverseView.test_subclass.<locals>.MyGraph.to_directed_class*       y r   rM   N__name__
__module____qualname____firstlineno__rN   rT   __static_attributes__rS   s   r   rS   rH   &       ! !r   rS      r)   zRM classz	RMC classrL   )
r   r   add_edger   print	__class__copyr,   has_edgerN   )r   MRMRMCrS   s       @r   test_subclassTestReverseView.test_subclass%   s    	!bjj 	! I	

1a__Qj",,'ggik3==)cii||Aq!!!!}}$&&&r   r   r   N)rX   rY   rZ   r[   r   r$   r-   r<   rD   rh   r\   rM   r   r   r   r   	   s!    *%'1E'r   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestMultiReverseView8   c                     [         R                  " S[         R                  " 5       S9U l        U R                  R	                  SS5        [         R
                  " U R                  5      U l        g )Nr   r
         )r   r   MultiDiGraphr   r`   r   r   r   s    r   r   !TestMultiReverseView.setup_method9   sA    qr/@A1//$&&)r   c                    SS K nU R                  nUR                  UR                  US5      5      nUR                  UR                  :X  d   eUR
                  UR
                  :X  d   eUR                  UR                  :X  d   eg r   r   r"   s       r   r$    TestMultiReverseView.test_pickle>   r&   r   c                 T   SU R                   R                  ;   d   eSU R                   R                  ;  d   eSU R                  R                  ;  d   eSU R                  R                  ;   d   eSU R                  R                  ;   d   eSU R                  R                  ;  d   eg )N)r)   r*   r   )r*   r)   r   )rp   ro   r_   )ro   rp   r_   r+   r   s    r   r-   "TestMultiReverseView.test_containsG   s    DFFLL(((,,,---DGGMM)))DGGMM)))---r   c                     [        S U R                  R                   5       5      n[        U R                  R                  5      U:X  d   eg )Nc              3   .   #    U  H  u  po2X4v   M     g 7fr1   rM   )r4   uvks       r   r6   1TestMultiReverseView.test_iter.<locals>.<genexpr>P   s     @<aa)<s   r8   r:   s     r   r<   TestMultiReverseView.test_iterO   s5    @466<<@@dggmm$000r   c                     [         R                  " U R                  5      n[        R                  " [         R
                  [         R                  U5        g r1   )r   
MultiGraphr   r@   rA   rB   r   )r   MGs     r   rD   $TestMultiReverseView.test_exceptionsS   s.    ]]466"b//"Er   rj   N)
rX   rY   rZ   r[   r   r$   r-   r<   rD   r\   rM   r   r   rl   rl   8   s    *
%.1Fr   rl   c                     [         R                  n [         R                  " S/5      n[        R                  " [         R
                  5         U R                  U[         R                  S9  S S S 5        [         R                  " S/5      n[        R                  " [         R
                  5         U R                  U[         R                  S9  S S S 5        g ! , (       d  f       Nq= f! , (       d  f       g = f)N)r_   r)   r
   )	r   
graphviewsr   r@   rA   NetworkXErrorgeneric_graph_viewr   rq   )nxgr   s     r   test_generic_multityper   X   s    
--C


F8A	r''	(qr}}= 
)
!A	r''	(qrzz: 
)	( 
)	( 
)	(s   C.C'
C$'
C5c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestToDirectedb   c                 (   [         R                  " S5      U l        [         R                  " U R                  5      U l        [         R                  " S[         R
                  " 5       S9U l        [         R                  " U R                  5      U l        g r	   )r   r   r   to_directeddvr   r   Mdvr   s    r   r   TestToDirected.setup_methodc   sR    q!..(--@>>$''*r   c                     U R                   R                  5       (       a   eU R                  R                  5       (       d   eg r1   )r   is_directedr   r   s    r   test_directedTestToDirected.test_directedi   s4    66%%''''ww""$$$$r   c                 H   [         R                  " U R                  5      n[         R                  " U R                  5      n[	        UR
                  U R                  R
                  5      (       d   e[	        UR
                  U R                  R
                  5      (       d   eg r1   )r   r   r   r   r   r,   )r   ddMdds      r   test_already_directed$TestToDirected.test_already_directedm   sd    ^^DGG$nnTXX&288TWW]]3333399dhhnn5555r   c                 F   SS K nU R                  nUR                  UR                  US5      5      n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g r   )r   r   r   r   r   _succ_predr!   )r   r   r   pdvs       r   r$   TestToDirected.test_pickles   s    WWll6<<B/0xx399$$$xx399$$$xx399$$$xx399$$$r   c                     SU R                   R                  ;   d   eSU R                   R                  ;   d   eSU R                  R                  ;   d   eSU R                  R                  ;   d   eg r(   )r   r,   r   r   s    r   r-   TestToDirected.test_contains}   sZ    %%%%%%&&&&&&r   c                    U R                   R                   Vs/ s H  n[        [        U5      5      PM     nn[	        [        U R                   R                  5      U-   5      n[	        U R                  R                  5      U:X  d   eg s  snf r1   )r   r,   r2   r3   r9   listr   )r   r5   revdr;   s       r   r<   TestToDirected.test_iter   sc    ,0FFLL9Lqhqk"L9$tvv||,t34dggmm$000 :s   B
)r   r   r   r   NrX   rY   rZ   r[   r   r   r   r$   r-   r<   r\   rM   r   r   r   r   b   s     +%6%'1r   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestToUndirected   c                 L   [         R                  " S[         R                  " 5       S9U l        [         R                  " U R                  5      U l        [         R                  " S[         R                  " 5       S9U l        [         R                  " U R                  5      U l        g r	   )	r   r   r   DGto_undirecteduvrq   MDGMuvr   s    r   r   TestToUndirected.setup_method   s_    --

=""477+==1BC##DHH-r   c                     U R                   R                  5       (       d   eU R                  R                  5       (       a   eg r1   )r   r   r   r   s    r   r   TestToUndirected.test_directed   s7    ww""$$$$77&&(((((r   c                 H   [         R                  " U R                  5      n[         R                  " U R                  5      n[	        UR
                  U R                  R
                  5      (       d   e[	        UR
                  U R                  R
                  5      (       d   eg r1   )r   r   r   r   r   r,   )r   uuMuus      r   r   &TestToUndirected.test_already_directed   sh    dgg&txx(288TWW]]3333399dhhnn5555r   c                 4   SS K nU R                  nUR                  UR                  US5      5      nUR                  UR                  :X  d   eUR
                  UR
                  :X  d   eUR                  UR                  :X  d   e[        US5      (       d   eg )Nr   r   _graph)r   r   r   r   r   r    r!   hasattr)r   r   r   puvs       r   r$   TestToUndirected.test_pickle   s|    WWll6<<B/0xx399$$$ww#(("""xx399$$$r8$$$$r   c                     SU R                   R                  ;   d   eSU R                   R                  ;  d   eSU R                  R                  ;   d   eSU R                  R                  ;   d   eg r(   )r   r,   r   r   s    r   r-   TestToUndirected.test_contains   sZ    &&&TWW]]***&&&&&&r   c                     [        U R                  R                  5      n[        U R                  R                  5      U:X  d   eg r1   )r9   r   r,   r   r:   s     r   r<   TestToUndirected.test_iter   s/    $''--(dggmm$000r   )r   r   r   r   Nr   rM   r   r   r   r      s     .)6%'1r   r   c                   ~    \ rS rSr\S 5       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)TestChainsOfViews   c           
      B   [         R                  " S5      U l        [         R                  " S[         R                  " 5       S9U l        [         R                  " S[         R
                  " 5       S9U l        [         R                  " S[         R                  " 5       S9U l        [         R                  " U R                  5      U l
        [         R                  " U R                  5      U l        [         R                  " U R                  5      U l        [         R                  " U R                  5      U l        U R                  R                  5       U l        U R                  R                  5       U l        U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                   U R"                  /
U l        U R$                   H&  nUR&                  UR(                  UR*                  4  M(     g r	   )r   r   r   r   r   r   r   rq   r   r   Gvr   DGvMGvMDGvreverseRvMRvgraphsr,   nodesdegree)clsr   s     r   setup_classTestChainsOfViews.setup_class   sH   a qrzz|<qr}}?--0AB!!#&&)..'""377+>>#&&)!''//#EEFFFFGGFFGGGGHHFFGG

 AGGQWWahh& r   c                    SS K nU R                   Hr  nUR                  UR                  US5      5      n[	        UR
                  UR
                  5      (       d   e[        UR                  UR                  5      (       a  Mr   e   g r   )r   r   r   r   r   r,   r   r   )r   r   r   Hs       r   r$   TestChainsOfViews.test_pickle   sb    AV\\!R01Aqww0000qww0000 r   c                 P   [         R                  " U R                  [        SS5      5      n[         R                  " U R                  [        SS5      5      n[         R                  " U R
                  [        SS5      5      n[         R                  " U R                  [        SS5      5      nU R                  XX4/-    He  n[         R                  " U/ SQ5      n[        U5      / SQ:X  d   eUR                  SS/5      n[        U5      S/:X  d   eUR                  UL a  Me   e   g )Nr*      ro   rp      r   )r   subgraphr   ranger   r   r   r   induced_subgraphr   r   )r   SGvSDGvSMGvSMDGvr   SGSSGs           r   test_subgraph_of_subgraph+TestChainsOfViews.test_subgraph_of_subgraph   s    kk$&&%1+.{{477E!QK0{{477E!QK0DHHeAqk2477A$$Q	2B8y(((++q!f%C9###::?"? 8r   c                    / SQnS/n[         R                  " U R                  X5      n/ SQn[         R                  " X45      nUR	                  U5      nUR
                  U R                  L d   eUR
                  U R                  L d   eUR
                  UL d   e[        UR                  UR                  5      (       d   eU R                  R                  5       nUR                  U5        UR                  U5        [        UR                  U5      UR                  5      (       d   eUR                  / SQ5        [        UR                  UR                  5      (       d   eU R                  R	                  U5      n[         R                  " XU5      n	U	R
                  U R                  Ld   e[        U	R                  UR                  5      (       d   eg)a  Test subgraph chains that both restrict and show nodes/edges.

A restricted_view subgraph should allow induced subgraphs using
G.subgraph that automagically without a chain (meaning the result
is a subgraph view of the original graph not a subgraph-of-subgraph.
)r*   ro   rp   )r   r   )ro   rp   r   r      )r   r_   r)   r*   N)r   restricted_viewr   r   r   r   r   r,   rc   remove_nodes_fromremove_edges_from)
r   
hide_nodes
hide_edgesRGr   r   r   CGSSSGRSGs
             r   'test_restricted_induced_subgraph_chains9TestChainsOfViews.test_restricted_induced_subgraph_chains   sh    
X

?  +kk% yyDFF"""zzTVV###yyB288SYY////VV[[]
Z(
Z(288E?CII6666
\*288SYY////vvu%  :>zz'''399bhh////r   c                     U R                    HV  n[        R                  " U5      nUR                  / SQ5      nUR	                  5       n[        U5      [        U5      :X  a  MV   e   g )Nr   )r   r   r?   r   rc   type)r   origGr   r   r   s        r   test_subgraph_copy$TestChainsOfViews.test_subgraph_copy   sL    [[EAI&B	A7d1g%%%	 !r   c                     [         R                  " U R                  / SQ5      nUR                  5       n[	        U5      / SQ:X  d   e[	        UR
                  5      / SQ:X  d   eg )Nr   )ro   rp   rp   ro   rp   r   )r   rp   )r   r   r   r   r9   r,   r   r   r   s      r   test_subgraph_todirected*TestChainsOfViews.test_subgraph_todirected  sN      3nnc{i'''cii $DDDDr   c                     [         R                  " U R                  / SQ5      nUR                  5       n[	        U5      / SQ:X  d   e[        UR                  5      SS/:X  d   eg )Nr   r   r   )r   r   r   r   r   r9   r,   r   s      r   test_subgraph_toundirected,TestChainsOfViews.test_subgraph_toundirected  sT      3 CyI%%%cii VV$4444r   c                     U R                   R                  SS9nUR                  / SQ5      nUR                  5       n[	        U5      / SQ:X  d   e[        UR                  5      SS/:X  d   eg )NFrc   r   r   r   )r   r   r   r   r   r9   r,   )r   r   r   r   s       r   "test_reverse_subgraph_toundirected4TestChainsOfViews.test_reverse_subgraph_toundirected  s`    GGOOO'ZZ	" CyI%%%cii VV$4444r   c                    U R                   R                  SS9nUR                  SS9nUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eU R                  R                  SS9nUR                  SS9nUR                  U R                  R                  :X  d   eUR                  U R                  R                  :X  d   eg )NFr   T)r   r   r   r,   r   )r   r   r   s      r   test_reverse_reverse_copy+TestChainsOfViews.test_reverse_reverse_copy  s    GGOOO'II4I ww$''--'''ww$''--'''HH%(II4I ww$((..(((ww$((..(((r   c                    U R                   R                  5       nUR                  / SQ5      nUR                  SS/5      nUR	                  5       n[        U5      SS/:X  d   e[        UR                  5      S/:X  d   eg )Nr   r   r   ro   rp   )r   rc   r   edge_subgraphr   r   r9   r,   )r   r   r   r   USSGs        r   'test_subgraph_edgesubgraph_toundirected9TestChainsOfViews.test_subgraph_edgesubgraph_toundirected"  sq    FFKKMZZ	"/0  "DzaV###djj!fX---r   c                     U R                   R                  5       nUR                  / SQ5      nUR                  SS9nUR                  SS9n[        US5      (       d   e[        US5      (       a   eg Nr   Tas_viewFr   )r   rc   r   r   r   r   r   CSGDCSGs        r   test_copy_subgraph$TestChainsOfViews.test_copy_subgraph*  sh    FFKKMZZ	"ggdg#wwuw%sH%%%%4*****r   c                     U R                   R                  5       nUR                  / SQ5      nUR                  SS9nUR                  SS9n[        US5      (       d   e[        US5      (       a   eg r
  )r   rc   r   r   r  s        r   test_copy_disubgraph&TestChainsOfViews.test_copy_disubgraph2  h    GGLLNZZ	"ggdg#wwuw%sH%%%%4*****r   c                     U R                   R                  5       nUR                  / SQ5      nUR                  SS9nUR                  SS9n[        US5      (       d   e[        US5      (       a   eg r
  )r   rc   r   r   r  s        r   test_copy_multidisubgraph+TestChainsOfViews.test_copy_multidisubgraph:  sh    HHMMOZZ	"ggdg#wwuw%sH%%%%4*****r   c                     U R                   R                  5       nUR                  / SQ5      nUR                  SS9nUR                  SS9n[        US5      (       d   e[        US5      (       a   eg r
  )r   rc   r   r   r  s        r   test_copy_multisubgraph)TestChainsOfViews.test_copy_multisubgraphB  r  r   c                     [         R                  " U R                  5      nUR                  R                  S:X  d   eUR                  SS9nUR                  R                  S:X  d   eg )Nr   Tr  )r   r   r   rb   rX   rc   rC   s     r   test_copy_of_view#TestChainsOfViews.test_copy_of_viewJ  sT    MM$((#{{##|333FF4F {{##|333r   c                 2  ^  " U4S jS[         R                  5      mU R                   Hj  nT" U5      nUR                  / SQ5      nUR	                  5       nUR                  5       S:X  d   eUR                  5       S:X  d   eSU;  a  Mb  SU;   a  Mj   e   g )Nc                   (   > \ rS rSrS rU 4S jrSrg)0TestChainsOfViews.test_subclass.<locals>.MyGraphiQ  c                     grK   rM   r   s    r   rN   :TestChainsOfViews.test_subclass.<locals>.MyGraph.my_methodR  rP   r   c                    > T" 5       $ r1   rM   rR   s    r   rT   BTestChainsOfViews.test_subclass.<locals>.MyGraph.to_directed_classU  rV   r   rM   NrW   r]   s   r   rS   r!  Q  r^   r   rS   r   rL   r*   )r   r   r   r   rc   rN   )r   r   r   r   r   rS   s        @r   rh   TestChainsOfViews.test_subclassP  s    	!bjj 	! [[EAI&B	A<<>T)));;=D(((A:b(( !r   rM   N)rX   rY   rZ   r[   classmethodr   r$   r   r   r   r   r   r   r  r  r  r  r  r  r  rh   r\   rM   r   r   r   r      s`    ' '41#0<&E55).++++4)r   r   )r@   networkxr   networkx.utilsr   r   r   rl   r   r   r   r   rM   r   r   <module>r*     sM      3
,' ,'^F F@;$1 $1N#1 #1Lo) o)r   