
    h3                         S SK r S SKrS SKJr   " S S5      r " S S\5      r " S S\5      r " S	 S
\\5      r " S S5      r	 " S S5      r
g)    N)edges_equalc                       \ rS rSr\" \R                  5      r\R                  r	\" \R                  R                  5      r\" \R                  R                  5      r\S 5       rS rS rS rS rSrg)	TestSubGraphView   c                 f    [         R                  " SU R                  5       S9U l        1 SkU l        g )N	   create_using>         r      r      )nx
path_graphgraphGhide_edges_w_hide_nodes)clss    [/var/www/html/env/lib/python3.13/site-packages/networkx/classes/tests/test_subgraphviews.pysetup_classTestSubGraphView.setup_class   s"    aciik:&>#    c                    / SQn[         R                  R                  U5      nU R                  nU" U R                  US9nU R                  R
                  UR
                  -
  SS1:X  d   eU R                  R                  UR                  -
  U R                  :X  d   eUR                  5       (       a*  [        US   5      / :X  d   e[        US   5      S/:X  d   eO+[        US   5      S/:X  d   e[        US   5      SS1:X  d   e[        R                  " [        UR                  S5        [        R                  " [        UR                  S5        [        R                  " [        UR                  S	5        UR                  S5      UR!                  5       (       a  SOS:X  d   eUR#                  5       UR!                  5       (       a  S
OS:X  d   eg )Nr   r   o   filter_noder   r   r         p   r   r   )r   filters
hide_nodesgviewr   nodesedgesr   is_directedlistsetpytestraisesKeyError__getitem__degreeis_multigraphsize)selfr%   
nodes_goner&   r   s        r   test_hidden_nodes"TestSubGraphView.test_hidden_nodes   si    
ZZ**:6


$&&j1vv||agg%!Q///vv||agg%)E)EEEE==??!:###!:!$$$!:!$$$qt9A&&&hq1hs3hs3xx{AOO$5$5q1===vvx!2!2A:::r   c                    / SQnU R                  U5      nU R                  nU" U R                  US9nU R                  R                  UR                  :X  d   eUR	                  5       (       a  U R                  R
                  UR
                  -
  S1:X  d   e[        US   5      / :X  d   e[        UR                  S   5      / :X  d   e[        UR                  S   5      S/:X  d   eUR                  5       S:X  d   eOVU R                  R
                  UR
                  -
  SS1:X  d   e[        US   5      S/:X  d   eUR                  5       S	:X  d   e[        US   5      S
/:X  d   e[        R                  " [        UR                  S5        [        R                  " [        UR                  S5        UR                  S5      S:X  d   eg )Nr!   r   )   r   )      filter_edger9   r!   r   r"   r   r   r:   r   r      r;   )hide_edges_filterr&   r   r'   r)   r(   r*   predr2   r,   r-   r.   r/   r0   )r3   
hide_edges
edges_goner&   r   s        r   test_hidden_edges"TestSubGraphView.test_hidden_edges%   sx   1
++J7


$&&j1vv||qww&&&==??66<<!'')fX555!:###q	?b(((q	?qc)))668q= =66<<!'')ff-====!:!$$$668q= =AaDzaS   hs3hs3xx{ar   c                    [         R                  R                  / SQ5      nU R                  nU" U R                  US9n[        UR                  5      SS1:X  d   eUR                  5       (       a  [        US   5      / :X  d   eO[        US   5      S/:X  d   e[        US   5      S/:X  d   e[        R                  " [        UR                  S5        [        R                  " [        UR                  S5        [        R                  " [        UR                  S5        UR                  S5      UR                  5       (       a  SOS:X  d   eUR                  5       UR                  5       (       a  SOS:X  d   eg )	N)r!   r   r   r   r!   r   r   r#   r   r"   )r   r$   
show_nodesr&   r   r+   r'   r)   r*   r,   r-   r.   r/   r0   r1   r2   )r3   induced_subgraphr&   r   s       r   test_shown_node TestSubGraphView.test_shown_node:   s   ::00=

$&&&67177|1v%%%==??!:###!:!$$$AaDzaS   hq1hs3hs3xx{AOO$5$5q1===vvx!2!2A:::r   c                 f   / SQnU R                  U5      nU R                  U R                  US9nU R                  R                  UR                  :X  d   eUR	                  5       (       a  UR
                  S1:X  d   e[        US   5      / :X  d   e[        US   5      S/:X  d   e[        UR                  S   5      S/:X  d   e[        UR                  S   5      / :X  d   eUR                  5       S:X  d   eOTUR
                  SS1:X  d   e[        US   5      S/:X  d   e[        US   5      S/:X  d   eUR                  5       S:X  d   e[        R                  " [        UR                  S5        [        R                  " [        UR                  S	5        UR                  S5      S:X  d   eg )
Nr8   r=   r9   r   r!   r"   r?   r@   r;   )show_edges_filterr&   r   r'   r)   r(   r*   rB   r2   r,   r-   r.   r/   r0   r3   
show_edgesedge_subgraphr   s       r   test_shown_edges!TestSubGraphView.test_shown_edgesJ   ss   1
..z:JJtvv=J9vv||qww&&&==??77vh&&&!:###!:!$$$q	?qc)))q	?b(((668q= =77vv....!:!$$$!:!$$$668q= =hs3hs3xx{ar    N)__name__
__module____qualname____firstlineno__staticmethodr   subgraph_viewr&   Graphr   r$   rC   rA   rO   rM   classmethodr   r5   rE   rJ   rQ   __static_attributes__rS   r   r   r   r      sk    ))*EHHE$RZZ%:%:;$RZZ%:%:;? ?;& *;  r   r   c                       \ rS rSr\" \R                  5      r\R                  r	\" \R                  R                  5      r\" \R                  R                  5      r/ SQr1 SkrS rS rS rSrg)	TestSubDiGraphView`   r8   >   r9   r   r   r   c                    U R                  U R                  5      n/ SQn[        R                  R	                  U5      nU R                  U R                  X1S9nU R                  R                  UR                  -
  U R                  :X  d   eU R                  R                  UR                  -
  U R                  :X  d   eg )Nr   r    r>   )
rA   rC   r   r$   r%   r&   r   in_edgesexcluded	out_edgesr3   rD   r%   r4   r   s        r   test_inoutedges"TestSubDiGraphView.test_inoutedgesh   s    ++DOO<
 
ZZ**:6
JJtvv:JNvv+t}}<<<vv!++->>>r   c                 .   U R                  U R                  5      n/ SQn[        R                  R	                  U5      nU R                  U R                  X1S9n[        UR                  S   5      S/:X  d   e[        UR                  S   5      / :X  d   eg )Nr   ra   r!   r"   r   )	rA   rC   r   r$   r%   r&   r   r*   rB   re   s        r   	test_predTestSubDiGraphView.test_predq   s{    ++DOO<
 
ZZ**:6
JJtvv:JNAFF1I1#%%%AFF1I"$$$r   c                 j   U R                  U R                  5      n/ SQn[        R                  R	                  U5      nU R                  U R                  X1S9nUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  5       S:X  d   eg )Nr   ra   r!   r"   r   r   rA   rC   r   r$   r%   r&   r   r0   
out_degree	in_degreer2   re   s        r   test_inout_degree$TestSubDiGraphView.test_inout_degreez       ++DOO<
 
ZZ**:6
JJtvv:JNxx{a||A!###{{1~"""vvx1}}r   rS   N)rT   rU   rV   rW   rX   r   rY   r&   DiGraphr   r$   hide_diedgesrA   show_diedgesrM   rC   rc   rf   ri   ro   r\   rS   r   r   r^   r^   `   s^    ))*EJJE$RZZ%<%<=$RZZ%<%<=-J/H?%	r   r^   c                       \ rS rSr\" \R                  5      r\R                  r	\" \R                  R                  5      r\" \R                  R                  5      r\S 5       rS rS rSrg)TestMultiGraphView   c                     [         R                  " SU R                  5       S9U l        SS1nU R                  R	                  U5        1 SkU l        g )Nr   r	   r!   r   r   )r!   r   r   >   r   r   r   r   r   r   r   r   r   )r   r   r   r   add_edges_fromr   )r   
multiedgess     r   r   TestMultiGraphView.setup_class   s>    aciik:+
Z(&G#r   c                    / SQnU R                  U5      nU R                  U R                  US9nU R                  R                  UR                  :X  d   eUR	                  5       (       a  U R                  R
                  UR
                  -
  S1:X  d   e[        US   5      S/:X  d   e[        US   5      S/:X  d   e[        UR                  S   5      S/:X  d   e[        UR                  S   5      S/:X  d   eUR                  5       S:X  d   eOmU R                  R
                  UR
                  -
  SS	1:X  d   e[        US   5      SS/:X  d   e[        US   5      SS/:X  d   eUR                  5       S
:X  d   eUR                  S5      S:X  d   e[        R                  " [        UR                  S5        [        R                  " [        UR                  S5        g )Nry   )r!   r   r   r:   r   r   r;   r<   r   r=   ry   r   r   r!   r"   r   r   r:   r   r:   r@   r;   )rA   r&   r   r'   r)   r(   r*   rB   r2   r0   r,   r-   r.   r/   )r3   rC   rD   r   s       r   rE   $TestMultiGraphView.test_hidden_edges   s   E
++J7
JJtvv:J6vv||qww&&&==??66<<!'')i[888!:!$$$!:!$$$q	?qc)))q	?qc)))668q= =66<<!'')i-CCCC!:!Q'''!:!Q'''668q= =xx{ahs3hs3r   c                 <   / SQnU R                  U5      nU R                  U R                  US9nU R                  R                  UR                  :X  d   eUR	                  5       (       a{  UR
                  S1:X  d   e[        US   5      / :X  d   e[        UR                  S   5      S/:X  d   e[        UR                  S   5      / :X  d   eUR                  5       S:X  d   eO?UR
                  SS1:X  d   eUR                  5       S:X  d   e[        US   5      S/:X  d   eUR                  S5      S:X  d   e[        US   5      S/:X  d   e[        R                  " [        UR                  S5        [        R                  " [        UR                  S	5        g )
Nr   r=   ry   r   r!   r"   r   r@   r;   )rM   r&   r   r'   r)   r(   r*   rB   r2   r0   r,   r-   r.   r/   rN   s       r   rQ   #TestMultiGraphView.test_shown_edges   s[   E
..z:JJtvv=J9vv||qww&&&==??77yk)))!:###q	?qc)))q	?b(((668q= =77y)4444668q= =!:!$$$xx{aAaDzaS   hs3hs3r   rS   N)rT   rU   rV   rW   rX   r   rY   r&   
MultiGraphr   r$   hide_multiedgesrA   show_multiedgesrM   r[   r   rE   rQ   r\   rS   r   r   rv   rv      sc    ))*EMME$RZZ%?%?@$RZZ%?%?@H H4*4r   rv   c                       \ rS rSr\" \R                  5      r\R                  r	\" \R                  R                  5      r\" \R                  R                  5      r/ SQr1 SkrS rSrg)TestMultiDiGraphView   )r!   r   r   r   r   >   r   rz   r{   r|   c                 j   U R                  U R                  5      n/ SQn[        R                  R	                  U5      nU R                  U R                  X1S9nUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  5       S:X  d   eg )Nr   ra   r!   r   r"   r   rl   re   s        r   ro   &TestMultiDiGraphView.test_inout_degree   rq   r   rS   N)rT   rU   rV   rW   rX   r   rY   r&   MultiDiGraphr   r$   hide_multidiedgesrA   show_multidiedgesrM   rC   rc   ro   r\   rS   r   r   r   r      sT    ))*EOOE$RZZ%A%AB$RZZ%A%AB6J;H	r   r   c                   <    \ rS rSr\S 5       rS rS rS rS r	Sr
g)	TestInducedSubGraph   c                     [         R                  " S5      =U l        n/ UR                  S'   / UR                  S   S'   UR                  SS5        / nUR                  SSUS9  UR                  SSUS9  g )Nr   foor   r"   r!   )r   )r   complete_graphK3r   r'   remove_edgeadd_edge)r   r   lls      r   r   TestInducedSubGraph.setup_class   so    &&q))
5	a	

1aR
 	

1aR
 r   c                     U R                   n[        R                  " U/ SQ5      nUR                  UR                  :X  d   eU R	                  X!5        U R                  X!5        g )N)r   r"   r!   r   )r   r   rI   namegraphs_equalsame_attrdictr3   r   Hs      r   test_full_graph#TestInducedSubGraph.test_full_graph   sO    GG<0vv!1 r   c                 4   U R                   n[        R                  " US5      n[        UR                  5      S0 0:X  d   e[        UR                  5      S0 0:w  d   e[        R                  " USS/5      n[        UR                  5      S0 0S0 0S.:X  d   eg )Nr   r"   r   r"   )r   r   rI   dictadjr   s      r   test_partial_subgraph)TestInducedSubGraph.test_partial_subgraph   s    GG1%AEE{q"g%%%AEE{q"g%%%Aq6*AEE{1b'q"g6666r   c                    US   S   S   nSUR                   S   S'   UR                   UR                   :X  d   eX1R                   S   S'   UR                   UR                   :X  d   eUR                  S   S   nSUR                  S   S'   UR                  UR                  :X  d   eX1R                  S   S'   UR                  UR                  :X  d   eg )Nr"   r!   r   baz)r"   r!   r   )r(   r'   )r3   r   r   old_foos       r   r   !TestInducedSubGraph.same_attrdict   s    A$q'%.$eww!''!!!&eww!''!!!''!*U#!
5ww!''!!!#
5ww!''!!!r   c                    UR                   UR                   :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR	                  5       (       dd  UR	                  5       (       dO  UR                   S   S   UR                   S   S   L d   eUR                   S   S   UR                   S   S   L d   eg UR	                  5       (       d"  UR                   Ul        UR                   Ul        UR	                  5       (       d"  UR                   Ul        UR                   Ul        UR
                  UR
                  :X  d   eUR                  UR                  :X  d   eUR                  S   S   UR
                  S   S   L d   eUR                  S   S   UR
                  S   S   L d   eg )Nr"   r!   )_adj_noder   r   r)   _pred_succ)r3   r   r   s      r   r    TestInducedSubGraph.graphs_equal   su   vvww!''!!!ww!''!!!vv}}q}}66!9Q<166!9Q<///66!9Q<166!9Q<///==??&&&&==??&&&&77agg%%%77agg%%%771:a=AGGAJqM111771:a=AGGAJqM111r   rS   N)rT   rU   rV   rW   r[   r   r   r   r   r   r\   rS   r   r   r   r      s(    ! !!7
"2r   r   c                   T    \ 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g)TestEdgeSubGraphi  c                 .   [         R                  " S5      =U l        n[        S5       H  nSU 3UR                  U   S'   M     SUR
                  S   S'   SUR
                  S   S'   SUR                  S'   [         R                  " USS/5      U l        g )	Nr   noder   edge01r   edge34r   r   )	r   r   r   ranger'   r(   r   rP   r   )r   r   is      r   r   TestEdgeSubGraph.setup_class  s     MM!$$qA#'sAGGAJv  (f (f!  VV$45r   c                 p    / SQ[        U R                  R                  R                  S5      5      :X  d   eg)z.Tests that the subgraph has the correct nodes.))r   node0)r"   node1)r   node3)r   node4r   N)sortedr   r'   datar3   s    r   test_correct_nodes#TestEdgeSubGraph.test_correct_nodes  s2    G6FFLLf%L
 
 	
 
r   c                 t    [        SS/U R                  R                  R                  S5      5      (       d   eg)z.Tests that the subgraph has the correct edges.)r   r"   r   )r   r   r   r   N)r   r   r(   r   r   s    r   test_correct_edges#TestEdgeSubGraph.test_correct_edges%  s7    /0$&&,,2C2CF2K
 
 	
 
r   c                     U R                   R                  S5        / SQ[        U R                  R                  5      :X  d   eU R                   R                  S5        g)z[Tests that adding a node to the original graph does not
affect the nodes of the subgraph.

r   )r   r"   r   r   N)r   add_noder   r   r'   remove_noder   s    r   test_add_nodeTestEdgeSubGraph.test_add_node+  sA    
 	vdffll33331r   c                     U R                   R                  S5        / SQ[        U R                  R                  5      :X  d   eU R                   R                  SSS9  U R                   R                  SSSS9  g)zUTests that removing a node in the original graph
removes the nodes of the subgraph.

r   )r"   r   r   r   )r   r"   r   N)r   r   r   r   r'   r   r   r   s    r   test_remove_node!TestEdgeSubGraph.test_remove_node4  s[    
 	1F466<<0000(18,r   c                 N   U R                    H9  nU R                  R                  U   U R                   R                  U   :X  a  M9   e   SU R                  R                  S   S'   U R                  R                  S   U R                   R                  S   :X  d   eSU R                   R                  S   S'   U R                  R                  S   U R                   R                  S   :X  d   eSU R                  R                  S   S'   SU R                   R                  S   S'   g)	zPTests that the node attribute dictionary of the two graphs is
the same object.

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

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

N)r   r   r   r   s    r   test_graph_attr_dict%TestEdgeSubGraph.test_graph_attr_dict^  s"    
 vv||tvv||+++r   c                    [         R                  " [        R                  U R                  R
                  S5        [         R                  " [        R                  U R                  R                  S5        [         R                  " [        R                  U R                  R                  SS5        [         R                  " [        R                  U R                  R                  SS5        g)z9Tests that the subgraph cannot change the graph structurer   r   r   r"   N)	r,   r-   r   NetworkXErrorr   r   r   r   r   r   s    r   test_readonlyTestEdgeSubGraph.test_readonlye  s    b&&;b&&(:(:A>b&&A>b&&(:(:AqAr   rS   N)rT   rU   rV   rW   r[   r   r   r   r   r   r   r   r   r   r\   rS   r   r   r   r     s=    
6 
6

-* . ,Br   r   )r,   networkxr   networkx.utilsr   r   r^   rv   r   r   r   rS   r   r   <module>r      s`      &V  V r#) #N44) 44p-/A *92 92zYB YBr   