o
    ]Zh                     @   s  d dl Z d dlZd dlZd dlmZmZ dd ZG dd dZG dd dZ	ej
d	ejejejejfd
d Zej
dddddfddiddiddffdd Zej
d	ejejfdd Zej
dddddfddiddiddffdd Zej
d	ejejfdd Zej
dddddfddiddiddffdd Zd d! Zd"d# Zej
d	ejejejejfd$d% Zej
d	ejejfd&d' Zej
d	ejejfd(d) Zd*d+ Zej
d	ejejejejgd,d- Zej
d	ejejejejgd.d/ Zd0d1 Zej
d	ejejgd2d3 Zej
d	ejejgd4d5 Z d6d7 Z!ej
d8e e e e fd9d: Z"ej
d8e e fd;d< Z#ej
d8e e fd=d> Z$dS )?    N)edges_equalnodes_equalc                  C   s   t  } t | g ksJ d S N)nxGraphdegree_histogramG r
   S/var/www/auris/lib/python3.10/site-packages/networkx/classes/tests/test_function.pytest_degree_histogram_empty	   s   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5S )6TestFunctionc                 C   s   t jg dg dg ddd| _ddddd	d
| _ttd| _g d| _t g dg dg d| _	ddddd	d
| _
ddd	d	d	d
| _ttd| _g d| _d S )N         r   r   r   r   r      ZTest)namer   r   r   r   )r   r   r   r   r      r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r	   ZGdegreelistrangeGnodesZGedgesDiGraphDGZDGin_degreeZDGout_degreeZDGnodesZDGedgesselfr
   r
   r   setup_method   s    
zTestFunction.setup_methodc                 C   sD   t | j tt| jsJ t | j tt| js J d S r   )r   r	   nodesr   r   r"   r#   r
   r
   r   
test_nodes   s    $zTestFunction.test_nodesc                 C   s   t | j tt| jsJ t| j tt| jks!J t | jjg ddttj| jg dds9J t| jjg ddttj| jg ddksRJ d S )N)r   r   r   Znbunch)r   r	   edgesr   r   sortedr"   r#   r
   r
   r   
test_edges   s    "&zTestFunction.test_edgesc                 C   s   t | j tt| jsJ t| j tt| jks!J t | jjddgdttj| jddgds9J t| jjddgdttj| jddgdksRJ t | jjddttj| jddsfJ t| jjddttj| jddks{J d S )Nr   r   r(   weightr,   )r   r	   Zdegreer   r   r*   r"   r#   r
   r
   r   test_degree(   s    "&
zTestFunction.test_degreec                 C   sP   t | jdt t| jdksJ t | jdt t| jdks&J d S )Nr   )r   r	   	neighborsr   r"   r#   r
   r
   r   test_neighbors8   s   &*zTestFunction.test_neighborsc                 C   8   | j  t| j ksJ | j t| jksJ d S r   )r	   Znumber_of_nodesr   r"   r#   r
   r
   r   test_number_of_nodes<      z!TestFunction.test_number_of_nodesc                 C   r1   r   )r	   Znumber_of_edgesr   r"   r#   r
   r
   r   test_number_of_edges@   r3   z!TestFunction.test_number_of_edgesc                 C   r1   r   )r	   Zis_directedr   r"   r#   r
   r
   r   test_is_directedD   r3   zTestFunction.test_is_directedc                 C   s  | j  }g d}t|| t||g dsJ | j  }tj||dd t|j|ddddd	difdd
d	difddd	difgsFJ | j  }dg}t|| t|t| j | s`J | j  }g }t|| t|j| j	svJ t|j| j jsJ d S )N            )r7   r8   )r7   r9   r7   r:          @r-   Tdatar7   r8   r,   r9   r:   )
r	   copyr   Zadd_starr   r)   r   r   r&   r    r$   r	   nlistr
   r
   r   test_add_starH   s,   


	
zTestFunction.test_add_starc                 C   sR  | j  }g d}t|| t||g dsJ | j  }tj||dd t|j|ddddd	difdd
d	difd
dd	difgsFJ | j  }dg}t|| t||g s^J t|t| j dg skJ | j  }tdg}t|| t|dgg sJ t|t| j dg sJ | j  }dg}t|| t||g sJ t|t| j dg sJ | j  }tdg}t|| t|dgg sJ t|t| j dg sJ | j  }g }t|| t|j| j jsJ t|t| j sJ | j  }tg }t|| t|j| j jsJ t|t| j s'J d S )Nr6   )r;   r8   r9   r9   r:   r=   r-   Tr>   r7   r8   r,   r9   r:   node)	r	   r@   r   Zadd_pathr   r)   r   r   iterrA   r
   r
   r   test_add_pathd   sV   


	






zTestFunction.test_add_pathc                 C   sX  | j  }g d}g dg dg}t|| t|||v s"J | j  }ddddifddddifdd	ddifd	dddifgddddifdd	ddifd	dddifddddifgg}tj||dd
 t|j|dd|v spJ | j  }dg}t|| t|t| j | sJ | j  }g }t|| t|j| j	sJ t
|j| j jsJ d S )Nr6   )r;   r<   rD   rE   )r;   rD   rE   )r:   r7   r7   r8   r,         ?r:   r9   r-   Tr>   )r	   r@   r   Z	add_cycler*   r)   r   r   r&   r    r   )r$   r	   rB   Zoklistsr
   r
   r   test_add_cycle   s<   



zTestFunction.test_add_cyclec                 C   s   | j g djt| j g djksJ | jg djt| jg djks*J | j g djt| j g djks?J | jg djt| jg djksTJ t| j g dg d}|j| j usjJ |j| j g djksxJ d S )N)r   r   r   r   r   )r	   Zsubgraphadjr   r"   Zinduced_subgraphZ_graph)r$   Hr
   r
   r   test_subgraph   s   ** zTestFunction.test_subgraphc                 C   sX   | j ddgjt| j ddgjksJ | jddgjt| jddgjks*J d S )Nr   r   )r	   Zedge_subgraphrK   r   r"   r#   r
   r
   r   test_edge_subgraph   s   zTestFunction.test_edge_subgraphc                 C   s   t j| jdd}t|t| jsJ |ji ksJ |ji | j i ks'J |j	i | j i ks5J t | j}t|t| jsEJ |j| jjksNJ |j| jjksWJ |j	i | j i kseJ d S )NF)Z	with_data)
r   Zcreate_empty_copyr	   r   r   graph_nodefromkeysr&   Z_adjr$   r	   r
   r
   r   test_create_empty_copy   s    z#TestFunction.test_create_empty_copyc                 C   s   t | jg dksJ d S )N)r   r   r   r   r   )r   r   r	   r#   r
   r
   r   test_degree_histogram   s   z"TestFunction.test_degree_histogramc                 C   sP   t | jdks
J t | jdksJ t  }|d t |dks&J d S )Ng      ?g333333?r           )r   densityr	   r"   r   add_noderR   r
   r
   r   test_density   s
   
zTestFunction.test_densityc                 C   sH   t  }|dd t |dksJ |dd t |dks"J d S )Nr   rU   r   r=   )r   r   add_edgerV   rR   r
   r
   r   test_density_selfloop   s
   z"TestFunction.test_density_selfloopc                 C   s   t | j}|jsJ tt j|jd tt j|jdg tt j|j	d tt j|j
dg tt j|jdd tt j|jdg tt j|jdd tt j|jdg tt j|j tt j|j d S )Nr   r   r   )r   freezer	   frozenpytestraisesNetworkXErrorrW   add_nodes_fromremove_nodeZremove_nodes_fromrY   add_edges_fromZremove_edgeremove_edges_fromZclear_edgesclearrR   r
   r
   r   test_freeze   s   
zTestFunction.test_freezec                 C   s@   t | jrJ t | j}|jt | jksJ |jsJ d S r   )r   	is_frozenr	   r[   r\   rR   r
   r
   r   test_is_frozen  s   zTestFunction.test_is_frozenc                 C   6   t t d}|jd }d|d< |d dksJ d S )Nr   r   TZnode_attribute)r   r[   
path_graphr&   )r$   r	   rF   r
   r
   r   6test_node_attributes_are_still_mutable_on_frozen_graph     
zCTestFunction.test_node_attributes_are_still_mutable_on_frozen_graphc                 C   rh   )Nr   r   TZedge_attribute)r   r[   ri   r)   )r$   r	   edger
   r
   r   6test_edge_attributes_are_still_mutable_on_frozen_graph  rk   zCTestFunction.test_edge_attributes_are_still_mutable_on_frozen_graphc                 C   s   t d}tt|d}tt ||d }t|t|d ks#J t d}tt|dd }tt ||}|dkrK|dkrKt|dksJJ nt|dksSJ t d}tt |d}t|dkshJ d S )Nd   r   r   c   r   )	r   complete_graphrandomsampler   r/   lenri   
star_graphr$   rO   popZnborsrF   r
   r
   r   test_neighbors_complete_graph  s   


z*TestFunction.test_neighbors_complete_graphc                 C   s   t d}tt|d}t ||d }t|dksJ t d}tt|dd }t ||}|dkrC|dkrCt|dksBJ nt|dksKJ t d}t |d}t|dks^J t 	 }|
td t |d}t|dkswJ d S )	Nrn   r   r   ro   a   b   
   	   )r   rp   rq   rr   r   Znon_neighborsrs   ri   rt   r   r`   r   ru   r
   r
   r   test_non_neighbors.  s"   


zTestFunction.test_non_neighborsc                 C   s  t d}tt |}t|dksJ t d}g d}tt |}|D ]\}}||f|v s8||f|v s8J q&t d}g d}tt |}|D ]\}}||f|v s]||f|v s]J qKt  }|g d g d}tt |}|D ]}||v s~J qvd S )Nr   r   r   )r   r   r   r   )r   r}   r   r   r   r   r   r   r   r   )r   )r   r   )r   r   )r   r   r   )	r   rp   r   Z	non_edgesrs   ri   rt   r!   rb   )r$   rO   Znedgesexpecteduver
   r
   r   test_non_edgesI  s,   


zTestFunction.test_non_edgesc                 C   s   t  }t |rJ t d}t |rJ t |drJ |d |jdddd t |r3J t |ds;J t  }|g d t |sMJ t |dsUJ | }t |s`J t |dshJ t	
t jt j|d d S )	Nr   r   r   r-   r   )03r   r   1)r   r   r   r   2r   )r   r   r   r   r   r   r   r   r   )r   r   Zis_weightedri   rW   rY   r!   add_weighted_edges_fromZto_undirectedr]   r^   r_   rR   r
   r
   r   test_is_weightedc  s&   


zTestFunction.test_is_weightedc                 C   s"  t  }t |rJ |d |g d t |rJ |jdddd t |dr.J |g d d|d d	 d
< t |rDJ t |drLJ d|d d d< t |ds\J t |scJ t  }|g d t |suJ t |dr}J t |dsJ t	
t jt j|d d S )Nr   )r   r   r   r   r   r   r-   r   )r}   r   )r      bluer   colorr}   r,   r   )r   r   )r   r   r   r   )r   r   r   )r   r   r   r~   )r   r   Zis_negatively_weightedrW   r`   rY   rb   r!   r   r]   r^   r_   rR   r
   r
   r   test_is_negatively_weighted  s,   

z(TestFunction.test_is_negatively_weightedN)__name__
__module____qualname__r%   r'   r+   r.   r0   r2   r4   r5   rC   rH   rJ   rM   rN   rS   rT   rX   rZ   re   rg   rj   rm   rw   r|   r   r   r   r
   r
   r
   r   r      s6    
4&
!r   c                   @   sP   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )TestCommonNeighborsc                    s&   t tj _ fdd}t | _d S )Nc                    s"   t  | ||}||ksJ d S r   )r*   func)r	   r   r   r   resultclsr
   r   	test_func  s   z2TestCommonNeighbors.setup_class.<locals>.test_func)staticmethodr   common_neighborsr   test)r   r   r
   r   r   setup_class  s   zTestCommonNeighbors.setup_classc                 C   s"   t d}| |ddg d d S )Nr   r   r   )r   r   r   r   rp   r   rR   r
   r
   r   test_K5  s   
zTestCommonNeighbors.test_K5c                 C       t d}| |dddg d S )Nr   r   r   r   )r   ri   r   rR   r
   r
   r   test_P3     
zTestCommonNeighbors.test_P3c                 C   r   )Nr   r   r   r   )r   rt   r   rR   r
   r
   r   test_S4  r   zTestCommonNeighbors.test_S4c                 C   sV   t tj t }|ddg | |dd W d    d S 1 s$w   Y  d S )Nr   r   r   r   )r]   r^   r   ZNetworkXNotImplementedr!   rb   r   rR   r
   r
   r   test_digraph  s
   "z TestCommonNeighbors.test_digraphc                 C   sP   t d}tt jt j|dd tt jt j|dd tt jt j|dd d S )Nr   r   r   )r   rp   r]   r^   r_   r   rR   r
   r
   r   test_nonexistent_nodes  s   
z*TestCommonNeighbors.test_nonexistent_nodesc                 C   s*   t  }|ddg | |ddg  dS )zCase of no common neighbors.r   r   N)r   r   r`   r   rR   r
   r
   r   test_custom1  s   z TestCommonNeighbors.test_custom1c                 C   s"   t d}| |ddg d dS )zCase of equal nodes.r   r   r   Nr   rR   r
   r
   r   test_custom2  s   
z TestCommonNeighbors.test_custom2N)r   r   r   classmethodr   r   r   r   r   r   r   r   r
   r
   r
   r   r     s    
	r   
graph_typec                 C   sf  t jd| d}d}d}t ||| |jd | |ksJ |jd | |ks(J |jd | |ks3J t jd| d}ttt| tt|}d}t ||| |jd | dks]J |jd | dkshJ |jd | dkssJ t jd| d}dd	d
}t	| |}|
d t || |jd i ksJ |jd d dksJ |jd d d	ksJ d S )Nr   Zcreate_usingrn   hellor   r   r   hi   r   r   )r   ri   set_node_attributesr&   dictzipr*   r   rs   rQ   rv   )r   r	   valsattrdr
   r
   r   test_set_node_attributes  s,   

r   )valuesr   redr   r   r   c                 C   sH   t  }|d t || | |jd d dksJ d|jvs"J dS )z
    When `values` is a dict or dict-of-dict keyed by nodes, ensure that keys
    that correspond to nodes not in G are ignored.
    r   r   r   r   N)r   r   rW   r   r&   r   r   r	   r
   r
   r   ,test_set_node_attributes_ignores_extra_nodes  s
   
r   c                 C   s@  t jd| d}d}d}t ||| |d d | |ksJ |d d | |ks*J t jd| d}d}dd	g}tt|tt|}t ||| |d d | dksUJ |d d | dksaJ t jd| d}dd
d}dg}t||}t || |d d d dksJ |d d d d
ksJ |d d i ksJ d S )Nr   r   r   r   r   r   r   r   r   r   r   r   ri   set_edge_attributesr   r   r   rs   rQ   r   r	   r   r   r)   r   r
   r
   r   test_set_edge_attributes  s*   
r   rI   r=   )r   r   r,   c                 C   sD   t dg}t || | |d d d dksJ d|jvs J dS )If `values` is a dict or dict-of-dicts containing edges that are not in
    G, data associate with these edges should be ignored.
    r   r   r   r,   rI   r   N)r   r   r   r)   r   r
   r
   r   ,test_set_edge_attributes_ignores_extra_edges+  s   r   c                 C   s\  t jd| d}d}d}t ||| |d d d | |ks J |d d d | |ks.J t jd| d}d}dd	g}tt|tt|}t ||| |d d d | dks[J |d d d | dksiJ t jd| d}dd
d}dg}t||}t || |d d d d dksJ |d d d d d
ksJ |d d d i ksJ d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r
   r   test_set_edge_attributes_multi<  s*   
r   )r   r   r   r   c                 C   sd   t ddg}t || | |d d d d dksJ |d d d i ks(J d| vs0J dS )	r   r   r   r   r   r   r   r,   rI   r   N)r   
MultiGraphr   r)   r   r
   r
   r   2test_set_edge_attributes_multi_ignores_extra_edgesZ  s
   r   c                  C   s   t  t  t  t  g} | D ]I}t jd|d}d}d}t ||| t ||}|d |ks2J |d |ks:J |d |ksBJ d}|d t j|||d	}|d |ksYJ qd S )
Nr   r   r   rn   r   r   r   r   default)	r   r   r!   r   MultiDiGraphri   r   Zget_node_attributesrW   )graphsr	   r   r   attrsdefault_valr
   r
   r   test_get_node_attributesl  s   
r   c                  C   s   t  t  t  t  g} | D ]V}t jd|d}d}d}t ||| t ||}t|dks2J |j	D ]
}|| |ks?J q5|}|
dd t j|||d}t|dksXJ |j	D ]
}|| |kseJ q[qd S )	Nr   r   r   rn   r   r   r   r   )r   r   r!   r   r   ri   r   get_edge_attributesrs   r)   rY   )r   r	   r   r   r   rl   r   Zdeafult_attrsr
   r
   r   test_get_edge_attributes}  s$   

r   c              	      sh  t jd| d}dd t |  t |   |jd vs!J  |jd vs*J  |jd vs3J t jd| d}dd	t |  t | t |   |jd vs[J |jd  ksfJ  |jd vsoJ |jd  kszJ  |jd vsJ |jd  ksJ t jd| d}t |  t | t |   |jd vr|jd vsJ  |jd vrȈ|jd vsJ  |jd vr؈|jd vsJ t jd| d}d
dt | fdd| D  t | |jd vr|jd vsJ |jd vr"|jd vs$J |jd vr4|jd vs6J |jd   ksBJ |jd   ksNJ |jd   ksZJ t jd| d}t | i id t |   |jd vsJ  |jd vsJ  |jd vsJ |jd  ksJ |jd  ksJ t jd| d}t | fdd| D  t j| ddgd  |jd vr|jd vsJ  |jd vr|jd vsJ  |jd v r|jd v s
J |jd v r|jd  ksJ |jd v r0|jd  ks2J d S )Nr   r   rn   r   r   r   r   r   other,  threec              	         i | ]}| iqS r
   r
   .0nr   Z
other_attrZ
other_valsZ
third_attrZ
third_valsr   r
   r   
<dictcomp>      z/test_remove_node_attributes.<locals>.<dictcomp>r   c              	      r   r
   r
   r   r   r
   r   r     r   r(   )r   ri   r   Zremove_node_attributesr&   r   r	   r
   r   r   test_remove_node_attributes  s      $$$

$$$(,r   c              	      s8  t jd| d}d dt |  t |  tt | dks$J t jd| d}ddt |  t | t |   |d d vsMJ  |d d	 vsWJ |d d  dkscJ |d d	  dksoJ t jd| d}t |  t | t |   |d d vr|d d vsJ  |d d	 vr|d d	 vsJ t jd| d}d
dt | fdd| D  t | |d d vr|d d vsJ |d d	 vr|d d	 vsJ |d d   ksJ |d d	   ksJ t jd| d}t |d ii t | |d d vr@|d d   ksBJ |d d	 vsMJ t jd| d}t | fdd| D  t j|dgd |d d vr|d d vsJ |d d	 v r|d d	 v sJ d S )Nr   r   r   rn   r   r   r   r   r   thirdr   c              	      &   i | ]\}}||f iqS r
   r
   r   r   r   r   r
   r   r         z/test_remove_edge_attributes.<locals>.<dictcomp>r   c              	      r   r
   r
   r   r   r
   r   r   '  r   Zebunch)r   ri   r   remove_edge_attributesrs   r   r)   r   r
   r   r   test_remove_edge_attributes  sf   $$$$,(,r   c              	      s  t jd| d}|dd d dt |  t |   |d d d vs*J  |d d d vs6J  |d d d vsBJ t jd| d}|dd dd	t |  t | t |   |d d d vssJ  |d d d vsJ  |d d d vsJ |d d d  ksJ |d d d  ksJ |d d d  ksJ t jd| d}|dd t |  t | t |   |d d d vr|d d d vsJ  |d d d vr|d d d vsJ  |d d d vr|d d d vsJ t jd| d}|dd d
dt | fdd|jddD  t | |d d d vra|d d d vscJ |d d d vry|d d d vs{J |d d d vr|d d d vsJ |d d d   ksJ |d d d   ksJ |d d d   ksJ t jd| d}|dd t | i id t | |d d d vr|d d d   ksJ |d d d vsJ |d d d vsJ t jd| d}|dd t | i i id t j| ddgd  |d d d vr[|d d d v s]J  |d d d vrs|d d d v suJ  |d d d v r|d d d v sJ d S )Nr   r   r   r   r   rn   r   r   r   r   r   c              	      s*   i | ]\}}}|||f iqS r
   r
   )r   r   r   kr   r
   r   r   ^  s    z5test_remove_multi_edge_attributes.<locals>.<dictcomp>Tkeys)r   r   r   r   )r   r   r   r   r   r   )r   ri   rY   r   r   r)   r   r
   r   r   !test_remove_multi_edge_attributes1  s   ,00
000

4


004r   c                  C   sp   t  t  t  t  g} | D ]%}t |sJ |td t |s'J |ddg t |r5J qd S )Nr   r   r   )	r   r   r!   r   r   Zis_emptyr`   r   rb   )r   r	   r
   r
   r   test_is_empty  s   r   c                 C   s|   t jd| d}|dd tt |dgsJ tt |dgs#J tt j|ddddi fgs3J t |dks<J d S )Nr   r   r   r   r   Tr>   r   )r   rp   rY   r   Znodes_with_selfloopsr   selfloop_edgesZnumber_of_selfloopsr   r
   r
   r   test_selfloops  s    r   c                 C   sv   t jd| d}|dd |jdddd tt j|ddddi fddd	difgs+J tt j|d	dd
dgs9J d S )Nr   r   r   r   r   r-   Tr>   r,   )r   r   N)r   r   r   )r   rp   rY   r   r   r   r
   r
   r   test_selfloop_edges_attr  s   " r   c                  C   sR   t jdt jd} | jdddd | jdddd tt j| ddd	d
dgs'J d S )Nr   r   r   rz   r-   rn   r,   Tr?   r   )r   r   r   rz   )r   r   r   rn   )r   rp   r   rY   r   r   r   r
   r
   r   ,test_selfloop_edges_multi_with_data_and_keys  s   r   c                 C   st   t jd| d}|dd |t j|dd |dd |t j|dd |dd |t j|ddd d S )Nr   r   r   Tr   r>   )r   r?   )r   rp   rY   rc   r   r   r
   r
   r   test_selfloops_removal  s   r   c                 C   sP  t jd| d}|dd |dd |t | d| vs#J |dd |dd tt |t j|dd W d   n1 sIw   Y  |dd |dd tt	 |t j|dd W d   n1 stw   Y  |dd |dd tt |t j|ddd	 W d   dS 1 sw   Y  dS )
z[test removing selfloops behavior vis-a-vis altering a dict while iterating.
    cf. gh-4068r   r   r   r   Tr   Nr>   r   )
r   rp   rY   rc   r   r)   r]   r^   RuntimeError	TypeErrorr   r
   r
   r   test_selfloops_removal_multi  s(   "r   c                  C   s   g d} g d}t  t  t  t  g}dddddfdddd	dfdddddfg}|D ](}|| t || d
d	ksAJ t || ddksLJ tt j	t j||d
 q/d S )Nr   )r   r   r   r   r   r   r   )costdistr   r   r   r   )
r   r   r!   r   r   rb   Zpath_weightr]   r^   ZNetworkXNoPath)
valid_pathinvalid_pathr   r)   rO   r
   r
   r   test_pathweight  s   
r   r	   c                 C   sZ   |  g d g d}g d}g d}t| |sJ t| |r#J t| |r+J d S )N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   )rb   r   Zis_path)r	   r   r   Zanother_invalid_pathr
   r
   r   test_ispath  s   r   c                 C   `   |  g d | d t| g dddg}t| h dks#J t| dhks.J d S )Nr   r   r   r   r   r   r      r   r   r   r   rb   rW   r   Zrestricted_viewsetr&   r)   r	   rL   r
   r
   r   test_restricted_view  s
   
r  c                 C   r   )N)r   r   )r   r   r   r   )r   r   r   )r   r   r   r   r   r  r   )r   r   r   r  r   r  r  r
   r
   r   test_restricted_view_multi  s   
r  )%rq   r]   Znetworkxr   Znetworkx.utilsr   r   r   r   r   markZparametrizer   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
   r
   r
   r   <module>   s       /







V
D
Y

	

	





