
    \Mh,                         d dl Z d dlZd dlmZmZ  G d d          Z G d d          Zd Z G d d	          Z	 G d
 d          Z
 G d d          ZdS )    N)edges_equalnodes_equalc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestReverseViewc                     t          j        dt          j                              | _        t          j        | j                  | _        d S N	   create_using)nx
path_graphDiGraphGreverse_viewrvselfs    f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/classes/tests/test_graphviews.pysetup_methodzTestReverseView.setup_method
   s5    qrz||<<</$&))    c                     dd l }| j        }|                    |                    |d                    }|j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ d S Nr   pickler   loadsdumps_node_adjgraphr   r   r   prvs       r   test_picklezTestReverseView.test_pickle   v    Wll6<<B//00x39$$$$w#(""""x39$$$$$$r   c                     d| j         j        v sJ d| j         j        vsJ d| j        j        vsJ d| j        j        v sJ d S N)      )r(   r'   r   edgesr   r   s    r   test_containszTestReverseView.test_contains   s\    %%%%TV\))))TW]****&&&&&&r   c                     t          d | j        j        D                       }t          | j        j                  |k    sJ d S )Nc              3   N   K   | ] }t          t          |                    V  !d S Ntuplereversed.0es     r   	<genexpr>z,TestReverseView.test_iter.<locals>.<genexpr>   s0      CC%,,CCCCCCr   sortedr   r*   r   r   expecteds     r   	test_iterzTestReverseView.test_iter   sE    CCdflCCCCCdgm$$000000r   c                     t          j                    }t          j        t           j        t           j        |           d S r.   )r   GraphpytestraisesNetworkXNotImplementedr   r   r   s     r   test_exceptionszTestReverseView.test_exceptions!   s,    HJJb/!DDDDDr   c                 d    G fddt           j                               }|                    dd           t          j        |          }|j        k    sJ |                                }|j        k    sJ |                    dd          sJ |                                dk    sJ d S )Nc                        e Zd Zd Z fdZdS ).TestReverseView.test_subclass.<locals>.MyGraphc                     dS Nme r   s    r   	my_methodz8TestReverseView.test_subclass.<locals>.MyGraph.my_method'       tr   c                                  S r.   rH   r   MyGraphs    r   to_directed_classz@TestReverseView.test_subclass.<locals>.MyGraph.to_directed_class*       wyy r   N__name__
__module____qualname__rI   rN   rM   s   r   rM   rD   &   =          ! ! ! ! ! ! !r   rM      r'   rG   )r   r   add_edger   	__class__copyhas_edgerI   )r   MRMRMCrM   s       @r   test_subclasszTestReverseView.test_subclass%   s    	! 	! 	! 	! 	! 	! 	!bj 	! 	! 	! GII	

1a_Q|w&&&&ggii}''''||Aq!!!!!}}$&&&&&&r   N)	rQ   rR   rS   r   r#   r+   r:   rA   r^   rH   r   r   r   r   	   sq        * * *% % %' ' '1 1 1E E E' ' ' ' 'r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestMultiReverseViewc                     t          j        dt          j                              | _        | j                            dd           t          j        | j                  | _        d S )Nr	   r
         )r   r   MultiDiGraphr   rW   r   r   r   s    r   r   z!TestMultiReverseView.setup_method8   sM    qr/@/@AAA1/$&))r   c                     dd l }| j        }|                    |                    |d                    }|j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ d S r   r   r!   s       r   r#   z TestMultiReverseView.test_pickle=   r$   r   c                     d| j         j        v sJ d| j         j        vsJ d| j        j        vsJ d| j        j        v sJ d| j        j        v sJ d| j        j        vsJ d S )N)r'   r(   r   )r(   r'   r   )rc   rb   rV   )rb   rc   rV   r)   r   s    r   r+   z"TestMultiReverseView.test_containsF   s    DFL((((,,,,----DGM))))DGM))))------r   c                     t          d | j        j        D                       }t          | j        j                  |k    sJ d S )Nc              3   (   K   | ]\  }}}|||fV  d S r.   rH   )r3   uvks       r   r5   z1TestMultiReverseView.test_iter.<locals>.<genexpr>O   s.      @@1a1a)@@@@@@r   r6   r8   s     r   r:   zTestMultiReverseView.test_iterN   sE    @@46<@@@@@dgm$$000000r   c                     t          j        | j                  }t          j        t           j        t           j        |           d S r.   )r   
MultiGraphr   r=   r>   r?   r   )r   MGs     r   rA   z$TestMultiReverseView.test_exceptionsR   s2    ]46""b/"EEEEEr   N)rQ   rR   rS   r   r#   r+   r:   rA   rH   r   r   r`   r`   7   sd        * * *
% % %. . .1 1 1F F F F Fr   r`   c                     t           j        } t          j        dg          }t          j        t           j                  5  |                     |t           j                   d d d            n# 1 swxY w Y   t          j        dg          }t          j        t           j                  5  |                     |t           j                   d d d            d S # 1 swxY w Y   d S )N)rV   r'   r
   )	r   
graphviewsr   r=   r>   NetworkXErrorgeneric_graph_viewrm   rd   )nxgr   s     r   test_generic_multitypert   W   s@   
-C

F8A	r'	(	( > >qr}===> > > > > > > > > > > > > > >
!!A	r'	(	( ; ;qrz:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s$    "A..A25A2,"CC"Cc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestToDirectedc                    t          j        d          | _        t          j        | j                  | _        t          j        dt          j                              | _        t          j        | j                  | _        d S r   )r   r   r   to_directeddvrm   rn   Mdvr   s    r   r   zTestToDirected.setup_methodb   sY    q!!.((-@@@>$'**r   c                 r    | j                                         rJ | j                                        sJ d S r.   )r   is_directedry   r   s    r   test_directedzTestToDirected.test_directedh   s<    6%%'''''w""$$$$$$$r   c                     t          j        | j                  }t          j        | j                  }t	          |j        | j        j                  sJ t	          |j        | j        j                  sJ d S r.   )r   rx   ry   rz   r   r*   )r   ddMdds      r   test_already_directedz$TestToDirected.test_already_directedl   sb    ^DG$$nTX&&28TW]3333339dhn5555555r   c                     dd l }| j        }|                    |                    |d                    }|j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ d S r   )r   ry   r   r   r   _succ_predr    )r   r   ry   pdvs       r   r#   zTestToDirected.test_pickler   s    Wll6<<B//00x39$$$$x39$$$$x39$$$$x39$$$$$$r   c                     d| j         j        v sJ d| j         j        v sJ d| j        j        v sJ d| j        j        v sJ d S r&   )r   r*   ry   r   s    r   r+   zTestToDirected.test_contains|   s\    %%%%%%%%&&&&&&&&&&r   c                     d | j         j        D             }t          t          | j         j                  |z             }t          | j        j                  |k    sJ d S )Nc                 F    g | ]}t          t          |                    S rH   r/   r2   s     r   
<listcomp>z,TestToDirected.test_iter.<locals>.<listcomp>   s&    999qhqkk""999r   )r   r*   r7   listry   )r   revdr9   s      r   r:   zTestToDirected.test_iter   sZ    99DFL999$tv|,,t344dgm$$000000r   N	rQ   rR   rS   r   r}   r   r#   r+   r:   rH   r   r   rv   rv   a   sn        + + +% % %6 6 6% % %' ' '1 1 1 1 1r   rv   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestToUndirectedc                 .   t          j        dt          j                              | _        t          j        | j                  | _        t          j        dt          j                              | _        t          j        | j                  | _        d S r   )	r   r   r   DGto_undirecteduvrd   MDGMuvr   s    r   r   zTestToUndirected.setup_method   sh    -
==="47++=1B1BCCC#DH--r   c                 r    | j                                         sJ | j                                        rJ d S r.   )r   r|   r   r   s    r   r}   zTestToUndirected.test_directed   s<    w""$$$$$7&&(((((((r   c                     t          j        | j                  }t          j        | j                  }t	          |j        | j        j                  sJ t	          |j        | j        j                  sJ d S r.   )r   r   r   r   r   r*   )r   uuMuus      r   r   z&TestToUndirected.test_already_directed   sd    dg&&tx((28TW]3333339dhn5555555r   c                     dd l }| j        }|                    |                    |d                    }|j        |j        k    sJ |j        |j        k    sJ |j        |j        k    sJ t          |d          sJ d S )Nr   r   _graph)r   r   r   r   r   r   r    hasattr)r   r   r   puvs       r   r#   zTestToUndirected.test_pickle   s    Wll6<<B//00x39$$$$w#(""""x39$$$$r8$$$$$$$r   c                     d| j         j        v sJ d| j         j        vsJ d| j        j        v sJ d| j        j        v sJ d S r&   )r   r*   r   r   s    r   r+   zTestToUndirected.test_contains   s\    &&&&TW]****&&&&&&&&&&r   c                 v    t          | j        j                  }t          | j        j                  |k    sJ d S r.   )r7   r   r*   r   r8   s     r   r:   zTestToUndirected.test_iter   s6    $'-((dgm$$000000r   Nr   rH   r   r   r   r      sn        . . .) ) )6 6 6% % %' ' '1 1 1 1 1r   r   c                   ~    e Zd Ze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 )TestChainsOfViewsc           
      j   t          j        d          | _        t          j        dt          j                              | _        t          j        dt          j                              | _        t          j        dt          j                              | _        t          j	        | j                  | _
        t          j        | j                  | _        t          j	        | j                  | _        t          j        | j                  | _        | j                                        | _        | j                                        | _        | j        | j        | j        | j        | j
        | j        | j        | j        | j        | j        g
| _        | j        D ]}|j        |j        |j        f d S r   )r   r   r   r   r   rm   rn   rd   r   r   Gvrx   DGvMGvMDGvreverseRvMRvgraphsr*   nodesdegree)clsr   s     r   setup_classzTestChainsOfViews.setup_class   sK   a  qrz||<<<qr}???-0A0ABBB!#&)).''"37++>#&))!!'//##EFFGFGGHFG

  	' 	'AGQWah&&&	' 	'r   c                     dd l }| j        D ]c}|                    |                    |d                    }t	          |j        |j                  sJ t          |j        |j                  sJ dd S r   )r   r   r   r   r   r*   r   r   )r   r   r   Hs       r   r#   zTestChainsOfViews.test_pickle   s|     	1 	1AV\\!R0011Aqw00000qw000000	1 	1r   c                 4   t          j        | j        t          dd                    }t          j        | j        t          dd                    }t          j        | j        t          dd                    }t          j        | j        t          dd                    }| j        ||||gz   D ]h}t          j        |g d          }t          |          g dk    sJ |                    ddg          }t          |          dgk    sJ |j
        |u sJ id S )Nr(      rb   rc      r   )r   subgraphr   ranger   rn   r   r   induced_subgraphr   r   )r   SGvSDGvSMGvSMDGvr   SGSSGs           r   test_subgraph_of_subgraphz+TestChainsOfViews.test_subgraph_of_subgraph   s   k$&%1++..{47E!QKK00{47E!QKK00DHeAqkk22T477 	# 	#A$Q			22B88yyy((((++q!f%%C99####:?????	# 	#r   c                 ,   g d}dg}t          j        | j        ||          }g d}t          j        ||          }|                    |          }|j        | j        u sJ |j        | j        u sJ |j        |u sJ t          |j        |j                  sJ | j                                        }|	                    |           |
                    |           t          |                    |          |j                  sJ |	                    g d           t          |j        |j                  sJ | j                            |          }t          j        |||          }	|	j        | j        usJ t          |	j        |j                  sJ dS )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(   rb   rc   )r   r   )rb   rc   r   r      )r   rV   r'   r(   N)r   restricted_viewr   r   r   r   r   r*   rY   remove_nodes_fromremove_edges_from)
r   
hide_nodes
hide_edgesRGr   r   r   CGSSSGRSGs
             r   'test_restricted_induced_subgraph_chainsz9TestChainsOfViews.test_restricted_induced_subgraph_chains   s    YY
X

J?? U++kk%  yDF""""zTV####yB28SY/////V[[]]
Z(((
Z(((288E??CI66666
\\\***28SY/////vu%% z:>>z''''39bh///////r   c                     | j         D ]a}t          j        |          }|                    g d          }|                                }t          |          t          |          u sJ bd S )Nr   )r   r   r<   r   rY   type)r   origGr   r   r   s        r   test_subgraph_copyz$TestChainsOfViews.test_subgraph_copy   sl    [ 	& 	&EAIII&&B		A77d1gg%%%%%		& 	&r   c                     t          j        | j        g d          }|                                }t	          |          g dk    sJ t	          |j                  g dk    sJ d S )Nr   )rb   rc   rc   rb   rc   r   )r   rc   )r   r   r   rx   r7   r*   r   r   r   s      r   test_subgraph_todirectedz*TestChainsOfViews.test_subgraph_todirected  sl     33nnc{{iii''''ci  $D$D$DDDDDDDr   c                     t          j        | j        g d          }|                                }t	          |          g dk    sJ t          |j                  ddgk    sJ d S )Nr   r   r   )r   r   r   r   r   r7   r*   r   s      r   test_subgraph_toundirectedz,TestChainsOfViews.test_subgraph_toundirected
  sl     33  CyyIII%%%%ci  VV$4444444r   c                     | j                             d          }|                    g d          }|                                }t	          |          g dk    sJ t          |j                  ddgk    sJ d S )NFrY   r   r   r   )r   r   r   r   r   r7   r*   )r   r   r   r   s       r   "test_reverse_subgraph_toundirectedz4TestChainsOfViews.test_reverse_subgraph_toundirected  s~    GOOO''ZZ			""  CyyIII%%%%ci  VV$4444444r   c                    | j                             d          }|                    d          }|j        | j         j        k    sJ |j        | j         j        k    sJ | j                            d          }|                    d          }|j        | j        j        k    sJ |j        | j        j        k    sJ d S )NFr   T)r   r   r   r*   r   )r   r   r   s      r   test_reverse_reverse_copyz+TestChainsOfViews.test_reverse_reverse_copy  s    GOOO''II4I  w$'-''''w$'-''''H%((II4I  w$(.((((w$(.((((((r   c                     | j                                         }|                    g d          }|                    ddg          }|                                }t          |          ddgk    sJ t          |j                  dgk    sJ d S )Nr   r   r   rb   rc   )r   rY   r   edge_subgraphr   r   r7   r*   )r   r   r   r   USSGs        r   'test_subgraph_edgesubgraph_toundirectedz9TestChainsOfViews.test_subgraph_edgesubgraph_toundirected!  s    FKKMMZZ			""/00  ""DzzaV####dj!!fX------r   c                    | j                                         }|                    g d          }|                    d          }|                    d          }t          |d          sJ t          |d          rJ d S Nr   Tas_viewFr   )r   rY   r   r   r   r   r   CSGDCSGs        r   test_copy_subgraphz$TestChainsOfViews.test_copy_subgraph)  s~    FKKMMZZ			""ggdg##wwuw%%sH%%%%%4*******r   c                    | j                                         }|                    g d          }|                    d          }|                    d          }t          |d          sJ t          |d          rJ d S r   )r   rY   r   r   r   s        r   test_copy_disubgraphz&TestChainsOfViews.test_copy_disubgraph1  ~    GLLNNZZ			""ggdg##wwuw%%sH%%%%%4*******r   c                    | j                                         }|                    g d          }|                    d          }|                    d          }t          |d          sJ t          |d          rJ d S r   )r   rY   r   r   r   s        r   test_copy_multidisubgraphz+TestChainsOfViews.test_copy_multidisubgraph9  s~    HMMOOZZ			""ggdg##wwuw%%sH%%%%%4*******r   c                    | j                                         }|                    g d          }|                    d          }|                    d          }t          |d          sJ t          |d          rJ d S r   )rn   rY   r   r   r   s        r   test_copy_multisubgraphz)TestChainsOfViews.test_copy_multisubgraphA  r   r   c                     t          j        | j                  }|j        j        dk    sJ |                    d          }|j        j        dk    sJ d S )Nrm   Tr   )r   rm   r   rX   rQ   rY   r@   s     r   test_copy_of_viewz#TestChainsOfViews.test_copy_of_viewI  sX    M$(##{#|3333FF4F  {#|333333r   c                 8    G fddt           j                  | j        D ]v} |          }|                    g d          }|                                }|                                dk    sJ |                                dk    sJ d|vsd|v sJ wd S )Nc                        e Zd Zd Z fdZdS )0TestChainsOfViews.test_subclass.<locals>.MyGraphc                     dS rF   rH   r   s    r   rI   z:TestChainsOfViews.test_subclass.<locals>.MyGraph.my_methodQ  rJ   r   c                                  S r.   rH   rL   s    r   rN   zBTestChainsOfViews.test_subclass.<locals>.MyGraph.to_directed_classT  rO   r   NrP   rT   s   r   rM   r   P  rU   r   rM   r   rG   r(   )r   r   r   r   rY   rI   )r   r   r   r   r   rM   s        @r   r^   zTestChainsOfViews.test_subclassO  s    	! 	! 	! 	! 	! 	! 	!bj 	! 	! 	! [ 	) 	)EAIII&&B		A<<>>T))));;==D((((A::b	) 	)r   N)rQ   rR   rS   classmethodr   r#   r   r   r   r   r   r   r   r   r   r   r   r   r   r^   rH   r   r   r   r      s       ' ' ['41 1 1# # #0 0 0<& & &E E E5 5 55 5 5) ) ). . .+ + ++ + ++ + ++ + +4 4 4) ) ) ) )r   r   )r=   networkxr   networkx.utilsr   r   r   r`   rt   rv   r   r   rH   r   r   <module>r      s)        3 3 3 3 3 3 3 3
+' +' +' +' +' +' +' +'\F F F F F F F F@; ; ;$1 $1 $1 $1 $1 $1 $1 $1N#1 #1 #1 #1 #1 #1 #1 #1Lo) o) o) o) o) o) o) o) o) o)r   