o
    h                     @   s   d dl Z d dlZd dlZedZed dd Zdd Zej	dd	d
 Z
ej	ddd Zdd Zej	ddd Zdd Zdd ZdS )    Nscipynumpyc                  C   sX   t d} t |  t j| d tt t   W d    d S 1 s%w   Y  d S )N   G)nx
path_graphpagerankpytestraises	TypeErrorr    r   V/var/www/vscode/kcb/lib/python3.10/site-packages/networkx/utils/tests/test_backends.pytest_dispatch_kwds_vs_args   s   


"r   c               	   C   s   d} t jjj D ]3\}}t|j}t||ju sJ zt|}W n
 tj	y.   Y q	w t||u s8J | d7 } q	| dksCJ ttt j
t j
u sQJ d S )Nr      )r   utilsbackends_registered_algorithmsitemspickledumps__wrapped__loadsPicklingErrorinverse_line_graph)countnamefuncpickledr   r   r   test_pickle   s   
 r   z\not nx.config.backend_priority.algos or nx.config.backend_priority.algos[0] != 'nx_loopback'c                     sP  ddl m} m} tjg dg dg dg}g   fdd}td dd	d
}| j}|| _|| _zM g ks8J t	t
|t
ju sDJ  dgksKJ t	t
j|dd|u sXJ  ddgks`J t	t
j|ddt
ju snJ  ddgksvJ W t|| _| `nt|| _| `w tjtdd t
j|dd W d    d S 1 sw   Y  d S )Nr   LoopbackBackendInterfaceLoopbackGraph)r         )r#   r   r   )r$   r   r   c                    s,     d | j| d|i |d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_effectsr   r   r%   6   s   
zCtest_graph_converter_needs_backend.<locals>.from_scipy_sparse_arrayr   c                S   s   t | tju r	| S t| S N)typer   Graph)objr   r   r   r   convert_to_nx?   s   
z9test_graph_converter_needs_backend.<locals>.convert_to_nxr   nx_loopbackbackendnetworkxbackend is not installedmatchzbad-backend-name))networkx.classes.tests.dispatch_interfacer!   r"   spsparse	coo_arraystaticmethodr6   r%   r3   r   r4   r
   r   ImportError)r!   r"   Ar%   r6   orig_convert_to_nxr   r/   r   "test_graph_converter_needs_backend#   s0   
	

"rF   c                     s   ddl m} m    }|g d tdd fdd
}| j}|| _ztj|ddd	}t|tj	u s5J W t|| _dS t|| _w )
z;Test using `backend="networkx"` in a dispatchable function.r   r    ))r   r   )r   r$   )r   r#   )r$   r   Nr1   c                   s(   t |  rt }|j| j |S | S r2   )
isinstancer   r4   __dict__update)r5   r   	new_graphr"   r   r   r6   k   s
   
z,test_networkx_backend.<locals>.convert_to_nxr:   r8   )
r>   r!   r"   add_edges_fromrB   r6   r   	ego_graphr3   r4   )r!   r   r6   rE   G2r   rK   r   test_networkx_backend\   s   	rO   c                   C   s   t tjt tjju sJ d S r2   )r3   r   r	   	orig_funcr   r   r   r   test_dispatchable_are_functions~   s   rQ   znot nx.utils.backends.backendsc                  C   sZ  ddl m}  t }|dd |dd t }|dd t||}tt||ddhks4J | |}| |}dtjj	v rbtt||ddhksRJ tt||ddhks`J d S tjj	sdtjj
vrtjtdd t|| W d    n1 sw   Y  tjtdd t|| W d    d S 1 sw   Y  d S d S d S )	Nr   )dispatch_interfacer   r$   r#   r7   r;   r<   )networkx.classes.testsrR   r   r4   add_edgeintersectionsetconvertconfigbackend_priorityr   r
   r   rC   )rR   r   HrvrN   H2r   r   r   test_mixing_backend_graphs   s*   

 "r]   c                   C   s@   t jtdd tjdd W d   dS 1 sw   Y  dS )zKUsing `backend=` raises with unknown backend even if there are no backends.z6'this_backend_does_not_exist' backend is not installedr<   this_backend_does_not_existr8   N)r
   r   rC   r   
null_graphr   r   r   r   test_bad_backend_name   s
   "r`   c                   C   s^   t jtdd tjjtjjksJ tjj	jtjjksJ W d    d S 1 s(w   Y  d S )N_fallback_to_nxr<   )
r
   warnsDeprecationWarningr   _dispatchablera   rX   fallback_to_nxr	   r   r   r   r   r   test_fallback_to_nx   s   "rf   )r   r
   r:   r   importorskipr?   r   r   markskipifrF   rO   rQ   r]   r`   rf   r   r   r   r   <module>   s(    


5


