
    Vh{                     z   d dl Z d dlZd dlZ ej                  d      Z ej                  d        ej                  d      d        Zd Zd Z	ej                  j                  d	      d
        Zej                  j                  d	      d        Zd Zej                  j                  d      d        Zd Zd Zy)    NscipynumpyF)implemented_by_nxc                     t        d      )Nz_stub_func is a stub)NotImplementedErrorGs    R/home/dcms/DCMS/lib/python3.12/site-packages/networkx/utils/tests/test_backends.py
_stub_funcr      s    
4
55    c                     t        j                  d      } t        j                  |        t        j                  |        t        j                  t
              5  t        j                          d d d        y # 1 sw Y   y xY w)N   r   )nx
path_graphpagerankpytestraises	TypeErrorr   s    r
   test_dispatch_kwds_vs_argsr      sQ    
aAKKNKK!	y	! 
  s   A88Bc                  8   d} t         j                  j                  j                  j	                         D ]{  \  }}t        j                  |j                        }t        j                  |      |j                  u sJ 	 t        j                  |      }t        j                  |      |u sJ | dz  } } | dkD  sJ t        j                  t        j                  t         j                              t         j                  u sJ y # t
        j                  $ r Y w xY w)Nr      )r   utilsbackends_registered_algorithmsitemspickledumps__wrapped__loadsPicklingErrorinverse_line_graph)countnamefuncpickleds       r
   test_pickler&      s    Ehh''>>DDF 	
d,,t//0||G$(8(8888	ll4(G ||G$,,,
	 199<<R%:%:;<@U@UUUU ## 		s   >DDDz\not nx.config.backend_priority.algos or nx.config.backend_priority.algos[0] != 'nx_loopback'c                     ddl m} m} t        j                  j                  g dg dg dg      }g fd}t        d dd       }| j                  }|| _        || _        	 g k(  sJ t        t        j                  |            t        j                  u sJ d	gk(  sJ t        t        j                  |d
            |u sJ d	d	gk(  sJ t        t        j                  |d            t        j                  u sJ d	d	gk(  sJ 	 t        |      | _        | `t        j                  t        d      5  t        j                  |d       d d d        y # t        |      | _        | `w xY w# 1 sw Y   y xY w)Nr   LoopbackBackendInterfaceLoopbackGraph)r         )r+   r   r   )r,   r   r   c                 z    j                  d       | j                   | j                  d      |i |ddd      S )Nr   from_scipy_sparse_arrayT)preserve_edge_attrspreserve_node_attrspreserve_graph_attrs)appendconvert_from_nx__getattr__)selfargskwargsside_effectss      r
   r.   zCtest_graph_converter_needs_backend.<locals>.from_scipy_sparse_array;   sM    A##7D67HH $ $!%	 $ 
 	
r   r#   c                f    t        |       t        j                  u r| S t        j                  |       S N)typer   Graph)objr#   s     r
   convert_to_nxz9test_graph_converter_needs_backend.<locals>.convert_to_nxD   s%    9 Jxx}r   r   nx_loopbackbackendnetworkxbackend is not installedmatchzbad-backend-name))networkx.classes.tests.dispatch_interfacer)   r*   spsparse	coo_arraystaticmethodr?   r.   r<   r   r=   r   r   ImportError)r)   r*   Ar.   r?   orig_convert_to_nxr8   s         @r
   "test_graph_converter_needs_backendrO   (   s   
 			Y	9=>AL
 #'   2??-:*7N4=r!!!B..q12bhh>>>s"""++A}EF-W	
W1v%%%B..q*EF"((RRR1v%%%1=>P1Q .$<	{*D	E B
""1.@AB B 2>>P1Q .$<B Bs   #B'E 8E0E-0E9c                  J   ddl m} m         }|j                  g d       t        ddfd
       }| j
                  }|| _        	 t        j                  |dd      }t        |      t        j                  u sJ 	 t	        |      | _        y# t	        |      | _        w xY w)	z;Test using `backend="networkx"` in a dispatchable function.r   r(   ))r   r   )r   r,   )r   r+   )r,   r   Nr9   c                    t        |       r;t        j                         }|j                  j	                  | j                         |S | S r;   )
isinstancer   r=   __dict__update)r>   r#   	new_graphr*   s      r
   r?   z,test_networkx_backend.<locals>.convert_to_nxp   s;    c=)
I%%cll3
r   rC   rA   )
rG   r)   r*   add_edges_fromrK   r?   r   	ego_graphr<   r=   )r)   r	   r?   rN   G2r*   s        @r
   test_networkx_backendrY   a   s    
 	A56#'   2??-:*R\\!Q
3Bx288###1=>P1Q .>P1Q .s   	5B B"c                      t        t        j                        t        t        j                  j                        u sJ y r;   )r<   r   r   	orig_func r   r
   test_dispatchable_are_functionsr]      s(    R[[%:%: ;;;;r   znot nx.utils.backends.backendsc                     ddl m}  t        j                         }|j	                  dd       |j	                  dd       t        j                         }|j	                  dd       t        j
                  ||      }t        t        j
                  ||            ddhk(  sJ | j                  |      }| j                  |      }dt        j                  j                  v rMt        t        j
                  ||            ddhk(  sJ t        t        j
                  ||            ddhk(  sJ y t        j                  j                  sdt        j                  j                  vrut        j                  t        d      5  t        j
                  ||       d d d        t        j                  t        d      5  t        j
                  ||       d d d        y y y # 1 sw Y   FxY w# 1 sw Y   y xY w)	Nr   )dispatch_interfacer   r,   r+   r@   rD   rE   )networkx.classes.testsr_   r   r=   add_edgeintersectionsetconvertconfigbackend_priorityr   r   r   rL   )r_   r	   HrvrX   H2s         r
   test_mixing_backend_graphsrj      s}   9

AJJq!JJq!

AJJq!	A	Brq!$%!Q///		#	#A	&B		#	#A	&B		2222??2q)*q!f4442??1b)*q!f444YY''MASAS,S]];.HI 	#OOB"	#]];.HI 	#OOAr"	# 	#	 -T'	# 	#	# 	#s   =G7G%G"%G.c                      t        j                  t        d      5  t        j                  d       ddd       y# 1 sw Y   yxY w)zKUsing `backend=` raises with unknown backend even if there are no backends.z6'this_backend_does_not_exist' backend is not installedrE   this_backend_does_not_existrA   N)r   r   rL   r   
null_graphr\   r   r
   test_bad_backend_namern      s8    	S
 = 	;<= = =s	   <Ac                     dt         j                  j                  v sJ dt        j                  vsJ dt         j                  j                  v r>ddlm}  d }t        |      | _        	 t        t        j                               du sJ 	 | `t        j                  t              5  t        t        j                                d d d        y # | `w xY w# 1 sw Y   y xY w)NrC   r@   r   )r)   c                      y)NTr\   r   s    r
   stub_func_implementationz<test_not_implemented_by_nx.<locals>.stub_func_implementation   s    r   T)r   r   r   r   re   rG   r)   rK   r=   r   r   r   )r)   rq   s     r
   test_not_implemented_by_nxrr      s    -----Z00000		***V	 /;;S.T +	4bhhj)T111(3	*	+ 288:  )3 s   )!C &CCC)r   r   rC   r   importorskiprH   _dispatchabler   r   r&   markskipifrO   rY   r]   rj   rn   rr   r\   r   r
   <module>rw      s      V!   G  E*6 +6V  >2B	2Bj >R	R<< 45# 6#4=r   