o
    ]Zh                     @   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 )    NZ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)nxZ
path_graphpagerankpytestraises	TypeErrorr    r   Q/var/www/auris/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backendsZ_registered_algorithmsitemspickledumps__wrapped__loadsPicklingErrorZinverse_line_graph)countnamefuncZ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)Zpreserve_edge_attrsZpreserve_node_attrsZpreserve_graph_attrs)appendZconvert_from_nx__getattr__)selfargskwargsZ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sparseZ	coo_arraystaticmethodr,   r    r)   r   r*   r   r	   ImportError)r   r   Ar    r,   orig_convert_to_nxr   r&   r   "test_graph_converter_needs_backend#   s0   
	

"r;   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   Nr'   c                   s(   t |  rt }|j| j |S | S r(   )
isinstancer   r*   __dict__update)r+   r   Z	new_graphr   r   r   r,   k   s
   
z,test_networkx_backend.<locals>.convert_to_nxr0   r.   )
r4   r   r   Zadd_edges_fromr7   r,   r   Z	ego_graphr)   r*   )r   r   r,   r:   G2r   r?   r   test_networkx_backend\   s   	rA   c                   C   s   t tjt tjju sJ d S r(   )r)   r   r   Z	orig_funcr   r   r   r   test_dispatchable_are_functions~   s   rB   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   r-   r1   r2   )Znetworkx.classes.testsrC   r   r*   Zadd_edgeintersectionsetconvertconfigZbackend_priorityr   r   r	   r8   )rC   r   Hrvr@   ZH2r   r   r   test_mixing_backend_graphs   s*   

 "rJ   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 installedr2   Zthis_backend_does_not_existr.   N)r   r	   r8   r   Z
null_graphr   r   r   r   test_bad_backend_name   s
   "rK   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_nxr2   )
r   ZwarnsDeprecationWarningr   Z_dispatchablerL   rG   Zfallback_to_nxr   r   r   r   r   r   test_fallback_to_nx   s   "rN   )r   r   r0   r   Zimportorskipr5   r   r   markZskipifr;   rA   rB   rJ   rK   rN   r   r   r   r   <module>   s(    


5


