o
    &?e                     @   s   d dl Zd dl mZmZmZmZmZ d dlmZ G dd deZ	G dd deZ
G dd	 d	eZG d
d deZG dd deZdd ZG dd dZe ZdS )    N)DiGraphGraphMultiDiGraph
MultiGraphPlanarEmbedding)NodeViewc                   @      e Zd ZdZdS )LoopbackGraphnx-loopbackN__name__
__module____qualname__Z__networkx_backend__ r   r   j/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/networkx/classes/tests/dispatch_interface.pyr	          r	   c                   @   r   )LoopbackDiGraphr
   Nr   r   r   r   r   r      r   r   c                   @   r   )LoopbackMultiGraphr
   Nr   r   r   r   r   r      r   r   c                   @   r   )LoopbackMultiDiGraphr
   Nr   r   r   r   r   r      r   r   c                   @   r   )LoopbackPlanarEmbeddingr
   Nr   r   r   r   r   r   "   r   r   c                 C   sl   t | tr	t| S t | trt| S t | trt| S t | tr$t| S t | t	r-t
| S tdt|  )NzUnsupported type of graph: )
isinstancer   r   r   r   r   r   r   r   r   r	   	TypeErrortype)graphr   r   r   convert&   s   




r   c                	   @   sX   e Zd Zdd ZeddddddddddZedddd	Zed
d Zdd ZdS )LoopbackDispatcherc                 C   s,   z	t jjj| jW S  ty   t|d w N)nxutilsbackendsZ_registered_algorithmsZ	orig_funcKeyErrorAttributeError)selfitemr   r   r   __getattr__5   s
   
zLoopbackDispatcher.__getattr__N)
edge_attrs
node_attrspreserve_edge_attrspreserve_node_attrspreserve_graph_attrsname
graph_namec          
         s  |dv r| S t | trt }||   |} t }	nOt | ts/td| d| dt|  | jtthv r:t }	n0| jt	t
hv rEt
 }	n%| jtthv rPt }	n| jtthv r[t }	n| jtthv rft
 }	n|  }	|rs|	j| j |r|	| jdd nr|	fdd| jddD  n|	|  |  r|r|	d	d | j D  |	S  r|	 fd
d| j D  |	S |	dd | j D  |	S |r|	| jdd |	S  r|	 fdd| jddD  |	S |	| j |	S )N>   Ztopological_generationsZ lexicographical_topological_sortZdfs_labeled_edgesZtopological_sortzBad type for graph argument z in z: T)datac                 3   s.    | ]\} | fd d  D fV  qdS )c                    .   i | ]\}}|d us| v r|  ||qS r   get.0kdefaultdatadictr   r   
<dictcomp>u       @LoopbackDispatcher.convert_from_nx.<locals>.<genexpr>.<dictcomp>Nitems)r1   node)r&   r4   r   	<genexpr>r   s    	

z5LoopbackDispatcher.convert_from_nx.<locals>.<genexpr>c                 s   sD    | ]\}}|  D ]\}}|  D ]\}}||||fV  qq
qd S r   r9   r1   unbrsvkeydictkeyr5   r   r   r   r<          
c              	   3   sV    | ]&\}}|  D ]\}}|  D ]\} ||| fd d  D fV  qq
qdS )c                    r-   r   r.   r0   r4   r   r   r6      r7   r8   Nr9   )r1   r>   r?   r@   rA   rB   r%   r4   r   r<      s"    
c                 s   sD    | ]\}}|  D ]\}}|  D ]\}}|||i fV  qq
qd S r   r9   r=   r   r   r   r<      rC   c                 3   s2    | ]\}} || fd d  D fV  qdS )c                    r-   r   r.   r0   r4   r   r   r6      r7   r8   Nr9   )r1   r>   r@   rD   r4   r   r<      s    


)r   r   r   Zadd_nodes_fromr:   r	   r   r   	__class__r   r   r   r   r   r   r   r   r   updatenodesZis_multigraphZadd_edges_fromZ_adjedges)
r   r%   r&   r'   r(   r)   r*   r+   Z	new_graphGr   )r%   r&   r   convert_from_nx;   sp   


	


.'


z"LoopbackDispatcher.convert_from_nx)r*   c                C   s   | S r   r   )objr*   r   r   r   convert_to_nx   s   z LoopbackDispatcher.convert_to_nxc                 C   s   | D ]	}t |dsJ qd S )NZ
add_markerhasattr)r:   r#   r   r   r   on_start_tests   s   z!LoopbackDispatcher.on_start_testsc                 C   s
   t | |S r   rM   )r"   r*   argskwargsr   r   r   can_run   s   
zLoopbackDispatcher.can_run)	r   r   r   r$   staticmethodrJ   rL   rO   rR   r   r   r   r   r   4   s     v
r   )Znetworkxr   r   r   r   r   r   Znetworkx.classes.reportviewsr   r	   r   r   r   r   r   r   
dispatcherr   r   r   r   <module>   s    
