o
    hv                     @   s@  d Z ddlZddlZddlZddlZedZedZed edZ	de	j
d< ddlZed	d
Zdd Zdd Zdd Zdd Zejddddgdfddgdfddgdfddgd ff	ejd!dd"gfd#d$ Zejddddgdfddgdfddgdfddgd ff	ejd!dd"gfd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zejd1ejejfd2d3 Zejd4d5d6gd6ffd7d8 Zejd4d5d6gd6ffd9d: Z ejd!g d;dd"d<gfd=d> Z!d?d@ Z"dAdB Z#ejdCdDdEdF Z$ejdGdHgdIgdJgg dKdIdLgg dMfdNdO Z%dPdQ Z&ejj'dRdS Z(dTdU Z)dVdW Z*dXdY Z+dZd[ Z,d\d] Z-d^d_ Z.d`da Z/ejdbdcg ddfdedf Z0dgdh Z1didj Z2ejdkdldmdn Z3dodp Z4dqdr Z5dsdt Z6dudv Z7ejdwej8ej9fdxdy Z:ejdwej8ej9fdzd{ Z;d|d} Z<ejd~e dge= d	ge> d	gfdd Z?ejd~e dge= d	ge> d	gfdd Z@dd ZAdd ZBdd ZCejdddLidbdiddiddiddifdd ZDejdej8ejEfdd ZFejdddgejdej9ejGejHejIejJgdd ZKdS )z,Unit tests for matplotlib drawing functions.    N
matplotlibnumpyPSzmatplotlib.pyplotFztext.usetex      c                  C   s   zOz1t jt jt jt jt jt jt jg} ddddg}t	| |D ]\}}|t
fi | td qW n	 ty;   Y nw W ztd W d S  tyO   Y d S w ztd W w  ty`   Y w w )Nblackd      )
node_color	node_sizewidthtest.ps)nxdraw_circulardraw_kamada_kawaidraw_planardraw_randomdraw_spectraldraw_spring
draw_shell	itertoolsproductbarbellpltsavefigModuleNotFoundErrorosunlinkOSError)	functionsoptionsfunctionoption r#   \/var/www/html/env_mimamsha/lib/python3.10/site-packages/networkx/drawing/tests/test_pylab.py	test_draw   s8   	r%   c                  C   s   z3t tdt tddt tddg} tjt| d td W ztd W d S  t	y3   Y d S w ztd W w  t	yD   Y w w )Nr   
      nlistr   )
listranger   r   r   r   r   r   r   r   r(   r#   r#   r$   test_draw_shell_nlist,   s   &r,   c                  C   s(   t t } tjt| dtjjdd d S )Nr   T)
edge_colorr   	edge_cmapwith_labels)r+   r   number_of_edgesr   r   r   cmBlues)colorsr#   r#   r$   test_edge_colormap8   s   
r4   c                   C   s   t t  d S N)r   r   r   to_directedr#   r#   r#   r$   test_arrows@   s   r7   )r-   expected)Nr   )rredr9   r:   )      ?r<   g        yellowr;   r=   )r      r   r?   limer>   r@   )#0000ffbluerA   rB   edgelistr   r?   c                 C   s<   t d}t j|t ||| d}tj| |sJ dS )z`Tests ways of specifying all edges have a single color for edges
    drawn with a LineCollectionr	   posrC   r-   N)r   
path_graphdraw_networkx_edgesrandom_layoutmplr3   
same_color	get_color)r-   r8   rC   Gdrawn_edgesr#   r#   r$   !test_single_edge_color_undirectedE   s
   
rO   c                 C   sL   t jdt jd}t j|t ||| d}|D ]}tj| |s#J qdS )zaTests ways of specifying all edges have a single color for edges drawn
    with FancyArrowPatchesr	   create_usingrE   N)	r   rG   DiGraphrH   rI   rJ   r3   rK   get_edgecolor)r-   r8   rC   rM   rN   fapr#   r#   r$   test_single_edge_color_directed_   s   rU   c                  C   s  t jdt jd} dd tt| D }dD ]5}t j| ||d}|D ]}tj|	 |s.J q!t j| |ddg|d	}|D ]}tj|	 |sIJ q<qt j| |g d
dd	}|D ]}tj|	 dseJ qXt j| |g ddd	}|D ]}tj|	 dsJ qst j| |g d
dd	}tj|d 	 |d 	 sJ |D ]}tj|	 drJ qt j| |g ddd	}tj|d 	 |d 	 sJ tj|d 	 |d 	 sJ |D ]}tj|	 drJ qdS )zIf edge_color is a sequence with the same length as edgelist, then each
    value in edge_color is mapped onto each edge via colormap.r   rP   c                 S      i | ]}|||fqS r#   r#   .0nr#   r#   r$   
<dictcomp>~       z8test_edge_color_tuple_interpretation.<locals>.<dictcomp>)r   r   r?   r   r   r?   r?   r-   rD   r?      )rC   r-   rD   r_   r`   r	   r]   rB   )rD   r_   rb   )r	   r   r\   r   r?   r`   r	   N)
r   rG   rR   r+   lenrH   rJ   r3   rK   rS   )rM   rF   ecrN   rT   r#   r#   r$   $test_edge_color_tuple_interpretationz   sT   re   c                  C   sZ   t  } tt }d}tj| ||d}t|t|D ]\}}tj	
| |s*J qdS )zZTest that the edge colors are cycled when there are fewer specified
    colors than edges.r9   gbr^   N)r   r6   r   rI   rH   zipr   cyclerJ   r3   rK   rS   rM   rF   
edgecolorsrN   rT   r8   r#   r#   r$   .test_fewer_edge_colors_than_num_edges_directed   s   
rm   c                  C   sd   t jdt jd} t t}d}t j| ||d}t||dd D ]\}}tj	|
 |s/J q dS )z\Test that extra edge colors are ignored when there are more specified
    colors than edges.r   rP   )r9   rg   rh   cr^   N)r   rG   rR   rI   r   rH   ri   rJ   r3   rK   rS   rk   r#   r#   r$   -test_more_edge_colors_than_num_edges_directed   s   
rp   c                  C   sl   t jtt tddgddd} |   }t|  dksJ tj	
|d d ds,J |d dks4J d S NrD   r_   purple皙?)rF   rC   r-   alphar`   ro   )r   rH   r   rI   rL   squeezerc   	get_pathsrJ   r3   rK   )edge_collectionrd   r#   r#   r$   3test_edge_color_string_with_global_alpha_undirected   s   rx   c                  C   sr   t jt t tddgddd} t| dksJ | D ]}| }tj	|d d ds.J |d dks6J qd S rq   )
r   rH   r   r6   rI   rc   rS   rJ   r3   rK   )rN   rT   rd   r#   r#   r$   1test_edge_color_string_with_global_alpha_directed   s   ry   
graph_typec                 C   sV   t jd| d}dd tt|D }t ||}t|tr!|d }| dks)J dS )z^Test the default linewidth for edges drawn either via LineCollection or
    FancyArrowPatches.r`   rP   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ      r[   z1test_edge_width_default_value.<locals>.<dictcomp>r   r?   N)r   rG   r+   rc   rH   
isinstancer*   get_linewidth)rz   rM   rF   rN   r#   r#   r$   test_edge_width_default_value   s   
r}   )	edgewidthr8   r	   r	   r	   c                 C   sX   t d}dd tt|D }t j||| d}t| dks"J | |ks*J d S )Nr   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ      r[   z;test_edge_width_single_value_undirected.<locals>.<dictcomp>r   r	   )r   rG   r+   rc   rH   rv   r|   )r~   r8   rM   rF   rN   r#   r#   r$   'test_edge_width_single_value_undirected   s
   
r   c                 C   sd   t jdt jd}dd tt|D }t j||| d}t|dks#J |D ]
}| |ks/J q%d S )Nr   rP   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ   
  r[   z9test_edge_width_single_value_directed.<locals>.<dictcomp>r   r	   )r   rG   rR   r+   rc   rH   r|   )r~   r8   rM   rF   rN   rT   r#   r#   r$   %test_edge_width_single_value_directed  s   r   ra   r_   c                 C   sV   t  }t|}d}tj||| |d}t|t|D ]\}}| |ks(J qd S )N)      ?       @g      (@)rC   r   )	r   r6   r   rI   rH   ri   r   rj   r|   )rC   rM   rF   widthsrN   rT   expected_widthr#   r#   r$   test_edge_width_sequence  s   	
r   c                  C   sx   t jdt jd} t | }t j| |ddgd}dd |D }t j| |dd	gdd	d
}dd |D }tj||s:J dS )zyTest that edge_vmin and edge_vmax properly set the dynamic range of the
    color map when num edges == len(edge_colors).r	   rP   r   r<   r^   c                 S      g | ]}|  qS r#   rS   rX   er#   r#   r$   
<listcomp>)      z7test_edge_color_with_edge_vmin_vmax.<locals>.<listcomp>rs   g?)r-   	edge_vmin	edge_vmaxc                 S   r   r#   r   r   r#   r#   r$   r   .  r   N)r   rG   rR   rI   rH   rJ   r3   rK   )rM   rF   rN   orig_colorsscaled_colorsr#   r#   r$   #test_edge_color_with_edge_vmin_vmax"  s   
r   c                  C   s`   t jdt jd} dd tt| D }t | |}t|dks!J |D ]
}| dks-J q#dS )z>Test default linestyle for edges drawn with FancyArrowPatches.r   rP   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ   5  r[   z9test_directed_edges_linestyle_default.<locals>.<dictcomp>r	   solidNr   rG   rR   r+   rc   rH   get_linestyle)rM   rF   rN   rT   r#   r#   r$   %test_directed_edges_linestyle_default2  s   r   style)dashed--r?   r?   r?   c                 C   sd   t jdt jd}dd tt|D }t j||| d}t|dks#J |D ]
}| | ks/J q%dS )zTests support for specifying linestyles with a single value to be applied to
    all edges in ``draw_networkx_edges`` for FancyArrowPatch outputs
    (e.g. directed edges).r   rP   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ   L  r[   z>test_directed_edges_linestyle_single_value.<locals>.<dictcomp>r   r	   Nr   )r   rM   rF   rN   rT   r#   r#   r$   *test_directed_edges_linestyle_single_value>  s   r   	style_seqr   r   r   )r   -:r   )r   r   r   z-.c                 C   st   t jdt jd}dd tt|D }t j||| d}t|dks#J t|t| D ]\}}|	 |ks7J q+dS )zTests support for specifying linestyles with sequences in
    ``draw_networkx_edges`` for FancyArrowPatch outputs (e.g. directed edges).r   rP   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ   d  r[   z:test_directed_edges_linestyle_sequence.<locals>.<dictcomp>r   r	   N)
r   rG   rR   r+   rc   rH   ri   r   rj   r   )r   rM   rF   rN   rT   r   r#   r#   r$   &test_directed_edges_linestyle_sequenceT  s   r   c               
   C   s.  t  } t | }t j| |g ddddd t j| |g dddg dd t j| |d	d
d t j| |g ddd
dd t j| |g ddd
dd t j| |g ddd
dddd i }d|d< d|d< d|d< d|d< d|d< d|d< d|d< d |d!< t j| ||d"d# t j| |d d$d% t j| |d&d'id( d S ))Nr   r?   r`   r	   r9   i        ?)nodelistr
   r   rt   )r      r      rh   )g      ?r   r   r<   r<   r   )r   rt   )rD   r_   rb   )r	   r      )rC   r   rt   r-   )r   r   )r   r   )r   r   )r   r   T)rC   arrowsmin_source_marginmin_target_marginr   r-   z$a$r   z$b$r?   z$c$r`   z$d$r	   z$\alpha$r   z$\beta$r   z$\gamma$r   z$\delta$r      )	font_sizeF)edge_labelsrotater   z4-5r   )r   cubical_graphspring_layoutdraw_networkx_nodesrH   draw_networkx_labelsdraw_networkx_edge_labels)rM   rF   labelsr#   r#   r$   test_labels_and_colorsl  sh   
	r   c                  C   s   t  } t \}}dddddd}t j| |dg dd	d
 t j| |ddgdd
 t j| |ddd |d t  td |S )Nr   r   r?   r   rD   r   )r   r   )r   r?   r`   r	   r   i  r   ztab:blue)r   r   r
   i  r   z
tab:oranger   r   )rt   r   g)\(?off)	r   house_graphr   subplotsr   rH   marginstight_layoutaxis)rM   figaxrF   r#   r#   r$   test_house_with_colors  s$   

r   c                  C   s4   t  \} }tjt|d tjttt|d d S )Nr   )r   r   r   drawr   r   circular_layout)r   r   r#   r#   r$   	test_axes  s   r   c                  C   s   t  } t |  d S r5   )r   Graphr   rM   r#   r#   r$   test_empty_graph  s   r   c                  C   s   dd l } tddg}tddg}t|}ttj||g dtjj	s&J ttj||g dtjj	s5J tj
||g ddg ksBJ tj
||g ddg ksOJ tj
||g ddg ks\J tj
||g ddg ksiJ d S )Nr   r_   rb   )r   T)rC   r   F)matplotlib.collectionsr   r   rR   r   r{   r   rJ   collectionsPathCollectionrH   )r   rM   DGrF   r#   r#   r$   #test_draw_empty_nodes_return_values  s   
r   c                  C   s:   t jdt jd} t j| dgd t j| dgg dd d S )Nr	   rP   )r   r?   r   rC   )r&      r   )rC   r   )r   rG   MultiDiGraphdraw_networkxr   r#   r#   r$   test_multigraph_edgelist_tuples  s   r   c                     s   t t} t }|d t jt| ddgd ttj  fddt	 D }t	 }|d t jt| ||d |
d	 |d
 t jt| |d d S )N   皙?rs   )rt   c                    s   g | ]}|  qS r#   r#   )rX   x	num_nodesr#   r$   r     r   z#test_alpha_iter.<locals>.<listcomp>   )r
   rt   r?      )r   rI   r   r   figureadd_subplotr   rc   nodesr+   append)rF   r   rt   r3   r#   r   r$   test_alpha_iter  s   





r   c                   C   sB   t jtdd tjtdd W d    d S 1 sw   Y  d S )NzReceived invalid argumentmatchbar)foo)pytestraises
ValueErrorr   r   r   r#   r#   r#   r$   test_error_invalid_kwds  s   "r   c                  C   sX   t g d} g d}tjtdd t j| |d W d    d S 1 s%w   Y  d S )N)rD   r   r`   r   r	   r?   r	   )r?   r`   r	   z1arrowsize should have the same length as edgelistr   )	arrowsize)r   rR   r   r   r   r   )rM   r   r#   r#   r$   +test_draw_networkx_arrowsize_incorrect_size   s   "r   r      )r&   r   r   c                 C   s|   t g d}dddd}t j||| d}t| trt| n| } t|| D ]\}}t|tj	j
s3J | |ks;J q&d S )N)rD   r   r_   r   rD   r   r   r?   r`   )rF   r   )r   rR   rH   r{   intr   repeatri   rJ   patchesFancyArrowPatchget_mutation_scale)r   rM   rF   edgesrT   r8   r#   r#   r$   test_draw_edges_arrowsize	  s   r   c                   C   s   t jttddgd d S )Nr   r   r   )r   r   r   nparrayr#   r#   r#   r$   test_np_edgelist  s   r   c                  C   sV   t d} ddd}tjt jdd t | | W d    d S 1 s$w   Y  d S )Nr	   r   r   rD   zhas no positionr   )r   rG   r   r   NetworkXErrorr   rM   rF   r#   r#   r$   *test_draw_nodes_missing_node_from_position  s
   

"r   
node_shape)osc           	      C   s   t  \}}tdg}ddd}tj|||| dd }|  ddddf }tj|||| ddd	d }|  ddddf }|d |d ksMJ |d
 |d
 k sWJ dS )a  Test that there is a wider gap between the node and the start of an
    incident edge when min_source_margin is specified.

    This test checks that the use of min_{source/target}_margin kwargs result
    in shorter (more padding) between the edges and source and target nodes.
    As a crude visual example, let 's' and 't' represent source and target
    nodes, respectively:

       Default:
       s-----------------------------t

       With margins:
       s   -----------------------   t

    rD   r   r   )r   r   r   Nr`   r   )r   r   r   r   r?   )r   r   r   rR   rH   get_extentscorners)	r   r   r   rM   rF   default_patchdefault_extentpadded_patchpadded_extentr#   r#   r$   )test_draw_edges_min_source_target_margins$  s$   
r  c                  C   st   t  \} }t }|d |dd t|ddid }| }|jdkr-|j	dks/J t 
| t   dS )zDEnsure that selfloop extent is non-zero when there is only one node.r   r   N)r   r   r   rR   add_nodeadd_edgerH   r   r   heightdelaxesclose)r   r   rM   patchbboxr#   r#   r$   &test_nonzero_selfloop_with_single_nodeQ  s   

r  c                  C   s   t  \} }tjdtjd}|dd dd |jD }tj||dgdd }| }|j	dkr5|j
dks7J t | t   d	S )
zfEnsure that selfloop extent is non-zero when only a single edge is
    specified in the edgelist.
    r`   rP   r?   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ   l  r[   zFtest_nonzero_selfloop_with_single_edge_in_edgelist.<locals>.<dictcomp>r   r   r   N)r   r   r   rG   rR   r  r   rH   r   r   r  r	  r
  )r   r   rM   rF   r  r  r#   r#   r$   2test_nonzero_selfloop_with_single_edge_in_edgelistc  s   
r  c                  C   sF   g d} g d}d}t jj||| }t|dddf |ks!J dS )zfTest apply_alpha when there is a mismatch between the number of
    supplied colors and elements.
    r   rf   r   Nro   )r   drawingnx_pylabapply_alphaall)r   	colorlistrt   rgba_colorsr#   r#   r$   test_apply_alphaw  s
    r  c                  C   s  ddl } ddl} td}tjdtjd}dd |D }||fD ] }tj||dd}t|t|jks5J t|d t	j
js@J q ||fD ]}tj||d	d}t|t	jjsXJ qEt||}t|t	jjshJ t||}t|t|jksyJ t|d t	j
jsJ dS )
a/  
    The `arrows` keyword argument is used as a 3-way switch to select which
    type of object to use for drawing edges:
      - ``arrows=None`` -> default (FancyArrowPatches for directed, else LineCollection)
      - ``arrows=True`` -> FancyArrowPatches
      - ``arrows=False`` -> LineCollection
    r   Nr	   rP   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ     r[   z>test_draw_edges_toggling_with_arrows_kwarg.<locals>.<dictcomp>T)r   F)r   matplotlib.patchesr   rG   rR   rH   rc   r   r{   rJ   r   r   r   LineCollection)r   UGr   rF   rM   r   r#   r#   r$   *test_draw_edges_toggling_with_arrows_kwarg  s"   
r  drawing_funcc                 C   sb   dd l }td}t \}}| ||d tdd |jD s!J |jr&J t| t	  d S )Nr   r	   r   c                 s       | ]
}t |tjjV  qd S r5   r{   rJ   r   r  rX   rn   r#   r#   r$   	<genexpr>  s    z?test_draw_networkx_arrows_default_undirected.<locals>.<genexpr>)
r   r   rG   r   r   anyr   r   r	  r
  r  r   rM   r   r   r#   r#   r$   ,test_draw_networkx_arrows_default_undirected  s   


r!  c                 C   sh   dd l }tjdtjd}t \}}| ||d tdd |jD r$J |js)J t	| t
  d S )Nr   r	   rP   r   c                 s   r  r5   r  r  r#   r#   r$   r    s    
z=test_draw_networkx_arrows_default_directed.<locals>.<genexpr>)r   r   rG   rR   r   r   r  r   r   r	  r
  r   r#   r#   r$   *test_draw_networkx_arrows_default_directed  s   

r"  c                  C   sV   t d} | dd t \}}t j| ddg|d |jr J t| t  d S )Nr	   r   rD   r_   )rC   r   )	r   rG   r  r   r   r   r   r	  r
  )rM   r   r   r#   r#   r$   test_edgelist_kwarg_not_ignored  s   


r#  )rM   expected_n_edgesr`   c                 C   s   t g dD ]\}\}}| j||t|d dd qdd | D }dddgg dfD ]}tj| ||d	 tj| ||d	}t||ksDJ q*d
S )zGDraws edges correctly for 3 types of graphs and checks for valid lengthrD   rD   rD   r   r	   r`   weightc                 S   rV   r#   r#   rW   r#   r#   r$   rZ     r[   zFtest_draw_networkx_edges_multiedge_connectionstyle.<locals>.<dictcomp>arc3,rad=0.1)r(  r(  arc3,rad=0.2connectionstyleN)	enumerater  roundr   rH   rc   )rM   r$  iuvrF   
conn_styler   r#   r#   r$   2test_draw_networkx_edges_multiedge_connectionstyle  s   r2  c           
      C   s   t g dD ]\}\}}| j||t|d dd qdd | D }tj| |g dd}d	d	d
gg dfD ]!}tj| ||d}t||ksFJ | D ]
}	|	jj	dksTJ qJq4dS )zXDraws labels correctly for 3 types of graphs and checks for valid length and class namesr%  r	   r`   r&  c                 S   rV   r#   r#   rW   r#   r#   r$   rZ     r[   zLtest_draw_networkx_edge_labels_multiedge_connectionstyle.<locals>.<dictcomp>)r(  r(  r(  r*  r(  r)  CurvedArrowTextN)
r,  r  r-  r   rH   r   rc   values	__class____name__)
rM   r$  r.  r/  r0  rF   r   r1  
text_itemstir#   r#   r$   8test_draw_networkx_edge_labels_multiedge_connectionstyle  s    
r9  c                  C   sl   t  } | jdddd | jdddd t | d}dd | D }t j| ||d	d
gd}t|dks4J d S )Nr   r?   r&   r&  r   r'  c                 S   rV   r#   r#   rW   r#   r#   r$   rZ     r[   z;test_draw_networkx_edge_label_multiedge.<locals>.<dictcomp>r(  r)  )r   r+  r`   )r   
MultiGraphr  get_edge_attributesr   rc   )rM   r   rF   r7  r#   r#   r$   'test_draw_networkx_edge_label_multiedge  s   r<  c                  C   s6   t d} dd | jD }t j| |i di ksJ dS )zORegression test for draw_networkx_edge_labels with empty dict. See
    gh-5372.r	   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ   
  r[   z<test_draw_networkx_edge_label_empty_dict.<locals>.<dictcomp>r   N)r   rG   r   r   r   r#   r#   r$   (test_draw_networkx_edge_label_empty_dict  s   
r=  c            
      C   s   t  \} }g d}g d}t|}dd |jD }tj|||||d t|jdks.J t	|dd t	d	d
g }t
|j|dd |D ]\}}}	| |	sWJ tj| |sbJ qIt | t   dS )ztWhen an edgelist is supplied along with a sequence of colors, check that
    the self-loops have the correct colors.)r   r_   rb   r   r   )r`   r`   )pinkcyanr   r:   rB   greenc                 S   rV   r#   r#   rW   r#   r#   r$   rZ     r[   zGtest_draw_networkx_edges_undirected_selfloop_colors.<locals>.<dictcomp>)r   rC   r-   r	   Nr   r   )r   r   r   r   r   rH   rc   r   r   r   ri   get_pathcontains_pointrJ   r3   rK   rS   r	  r
  )
r   r   rC   edge_colorsrM   rF   	sl_pointsrT   clrslpr#   r#   r$   3test_draw_networkx_edges_undirected_selfloop_colors  s   
  
rH  fap_only_kwarg
arrowstyler   r+  r)  r   r&   r   c                 C   s   t d}dd |D }t \}}t|  d }tjtd| dd t j	||fd|i|  W d	   n1 s<w   Y  t
  t
d
 t j	||f|dd|  W d	   n1 sbw   Y  t| t  d	S )zUsers should get a warning when they specify a non-default value for
    one of the kwargs that applies only to edges drawn with FancyArrowPatches,
    but FancyArrowPatches aren't being used under the hood.r	   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ   :  r[   zEtest_user_warnings_for_unused_edge_drawing_kwargs.<locals>.<dictcomp>r   z

The z# keyword argument is not applicabler   r   NerrorT)r   r   )r   rG   r   r   r*   keysr   warnsUserWarningrH   warningscatch_warningssimplefilterr	  r
  )rI  rM   rF   r   r   
kwarg_namer#   r#   r$   1test_user_warnings_for_unused_edge_drawing_kwargs+  s   



rS  draw_fnc                 C   st   t  \}}td}tjdd}| ||d W d    n1 s"w   Y  t|dks/J t | t   d S )Nr   T)recordr   r   )	r   r   r   cycle_graphrO  rP  rc   r	  r
  )rT  r   r   rM   wr#   r#   r$   *test_no_warning_on_default_draw_arrowstyleN  s   

rX  
hide_ticksTmethodc                 C   sr   t d}dd |jD }t \}}| ||||d |j|jfD ]}t| |ks-J q!t	| t
  d S )Nr	   c                 S   rV   r#   r#   rW   r#   r#   r$   rZ   h  r[   z#test_hide_ticks.<locals>.<dictcomp>)rF   r   rY  )r   rG   r   r   r   xaxisyaxisboolget_ticklabelsr	  r
  )rZ  rY  rM   rF   _r   r   r#   r#   r$   test_hide_ticks[  s   

r`  )L__doc__r   r   rO  r   importorskiprJ   r   user   rcParamsnetworkxr   barbell_graphr   r%   r,   r4   r7   markparametrizerO   rU   re   rm   rp   rx   ry   r   rR   r}   r   r   r   r   r   r   r   r   mpl_image_comparer   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r   r!  r"  r#  r:  r   r2  r9  r<  r=  rH  rS  r   rX  r   rH   r   r   r`  r#   r#   r#   r$   <module>   s4   




9


	
	

;
	
	
,"

 
 




