
    Pi)                     j   d Z ddlZddlZddlZddlZddlZ ej        d          Z ej        d          Z	e
                    d            ej        d          Zdej        d<    ej        d	d
          Zi dddddddddddddddddddd
ddddddddd dd!dd"dd#dddddd$d%d%d&ddd'dd(
d)d*d+dd,d*d-dd.ddd/Zej                            d0dded         fd1d2f          d3             Zej                            d4d5          d6             Zd7 Zd8 Zej                            d9d:          ej                            d;ej        ej        f          d<                         Zej                            d;ej        ej        f          d=             Zej                            d;ej        ej        f          d>             Zd? Zej                            d;ej        ej        f          d@             Zej                            d;ej        ej        f          dA             Zej                            d4ded!         ed!         gfdBdBdBgfdCdBdDgff          ej                            d;ej        ej        f          dE                         Zej                            d4ded)         ed)         gfdFdFdFgfdGd*dFgff          ej                            d;ej        ej        f          dH                         ZdI Z dJ Z!dK Z"dL Z#dM Z$dN Z%ej                            ddO          dP             Z&ej                            dQddg          dR             Z'dS Z(dT Z)ej*        dU             Z+ej                            dVej,        ej-        ej.        ej/        ej0        ej1        ej2        ej3        g          dW             Z4dX Z5dY Z6dZ Z7d[ Z8d\ Z9ej                            d9d]d^d_gd`fdadbgdcfdddegdffdgdhgdiff	          ej                            djddkgf          dl                         Z:ej                            d9d]d^d_gd`fdadbgdcfdddegdffdgdhgdiff	          ej                            djddkgf          dm                         Z;dn Z<do Z=dp Z>dq Z?dr Z@ej                            d;ej        ej        f          ds             ZAej                            dtdudvgdvff          dw             ZBej                            dtdudvgdvff          dx             ZCej                            djg dyddkdzgf          d{             ZDd| ZEd} ZFej                            dGd~          d             ZGej                            ddgdgdgg ddd*gg df          d             ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRd ZSd ZTej                            ddg df          d             ZUej                            ddg df          d             ZVd ZWd ZXd ZYej                            ddO          d             ZZej                            ddO          d             Z[d Z\d Z]d Z^d Z_ej                            dej`        eja        f          d             Zbej                            dej`        eja        f          d             Zcd Zdej                            d ej                    dg eje                    d	g ejf                    d	gf          d             Zgej                            d ej                    dg eje                    d	g ejf                    d	gf          d             Zhd Zid Zjd Zkej                            ddd*iddiddiddDiddDif          d             Zlej                            dej`        ej,        f          d             Zmej                            dddg          ej                            deja        ejn        ejo        ejp        ejq        g          d                         Zrej                            dGg d          d             Zsej                            dddg          d             ZtdS )z,Unit tests for matplotlib drawing functions.    N
matplotlibnumpyPSzmatplotlib.pyplotFztext.usetex      node_posnode_visibleT
node_colorz#1f78b4	node_sizei,  
node_label   z#000000z
sans-serifnormal      ?center)
sizecolorfamilyweightalphabackground_colorbackground_alphah_alignv_alignbbox
node_shapeo
node_alphanode_border_widthnode_border_colorfaceedge_visible
edge_width
edge_color
edge_labelround)r   r   r   )boxstyleecfc      ?)
r   r   r   r   r   r   r   r   posrotate
edge_style-
edge_alphaedge_arrowstyleedge_arrowsizearc3)edge_curvatureedge_source_marginedge_target_margin)
param_nameparam_valueexpected)r
   #FF0000red)r
   r   limec                    t          j        d          }t          j        |dd           t                                                              d          }t          j        |fd|i| |i t          j        	                    |
                                d                                         d         |          sJ t                                           d S )Nr   z#00FF00r   o   canvasr   )nx
path_graphset_node_attributespltfigureadd_subplotdisplaymplcolors
same_colorget_childrenget_edgecolorsclose)r5   r6   r7   Gr=   s        u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/networkx/drawing/tests/test_pylab.py$test_display_arg_handling_node_colorrM   C   s     	aA1i111ZZ\\%%c**FJq===J#<===:  !4!4!6!6q!9!H!H!J!J1!MxXXXXXIIKKKKK    )r6   r7   ))N)   rO   rO   rO   )r)   )r)   r)   r)   r)   )n_alpha)r   r)   gUUUUUU?      ?c                    t          j        d          }t          j        |d |                                D             d           t                                                              d          }t          j        |||            t          |	                                d         
                                d d df         |k              sJ t                                           d S )Nr   c                      i | ]}|d |d z   z  S )rO    .0ns     rL   
<dictcomp>z8test_display_arg_handling_node_alpha.<locals>.<dictcomp>^   s"    AAA!q!q1u+AAArN   rP   r<   )r=   r   r      )r>   r?   r@   nodesrA   rB   rC   rD   allrH   get_fcrJ   )r6   r7   rK   r=   s       rL   $test_display_arg_handling_node_alphar]   T   s     	aA1AAqwwyyAAA9MMMZZ\\%%c**FJqK8888a ''))!!!Q$/8;     IIKKKKKrN   c                      t          j        d          } t          j        | d |                                 D             d           t                                                              d          }t          j        | |d           t          	                    |
                                d                                         j        ddgddgddgd	d	ggk              sJ t                                           d S )
Nr   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z.test_display_node_position.<locals>.<dictcomp>i       <<<Qq1a&<<<rN   r*   r<   )r=   r   r   rO      rY   )r>   r?   r@   rZ   rA   rB   rC   rD   npr[   rH   get_offsetsdatarJ   )rK   r=   s     rL   test_display_node_positionre   g   s    
aA1<<!''))<<<eDDDZZ\\%%c**FJq%000066a ,,..3AAAQRTUPV7WW     IIKKKKKrN   c                  0   t          j                    } t          j        | d |                                 D             d           t                                                              d          }t          j        | |d           d |                                D             d         }t          |
                                          t          d |                                 D                       k    sJ t                                           d S )	Nc                 2    i | ]\  }}||f||z   d z  rdndS )ra   -|>r-   rT   rV   uvs      rL   rX   z0test_display_line_collection.<locals>.<dictcomp>u   s3    HHHdaQFa!eq[1EEcHHHrN   
arrowstyler<   
   )r=   r0   c                 P    g | ]#}t          |t          j        j                  !|$S rT   
isinstancerE   collectionsLineCollectionrV   ls     rL   
<listcomp>z0test_display_line_collection.<locals>.<listcomp>z   s=     
 
 
a788
	
 
 
rN   r   c                 (    g | ]\  }}||z   d z  dS )ra   rO   rT   ri   s      rL   ru   z0test_display_line_collection.<locals>.<listcomp>   s)    &N&N&NTQ1q5A+&Nq&N&N&NrN   )r>   karate_club_graphset_edge_attributesedgesrA   rB   rC   rD   rH   len	get_pathssumrJ   )rK   r=   lcs      rL   test_display_line_collectionr~   r   s    
A	HHaggiiHHH,   ZZ\\%%c**FJq3333
 
$$&&
 
 
 	
	B
 r||~~#&N&NQWWYY&N&N&N"O"OOOOOIIKKKKKrN   )r#   r7   )Nblackrr9   r   r           yellowr   rO   r   rO   r:   )r   blue)#0000FFr   
graph_typec                 
   t          j        d|          }t          j        |dd           t                                                              d          }t          j        || |           |                                rd |                                D             }n)d |j	        D             d	         
                                }t          fd
|D                       sJ t                                           d S )NrY   create_usingr   r   r<   )r#   r=   c                 t    g | ]5}t          |t          j        j                  !|                                6S rT   rp   rE   patchesFancyArrowPatchr\   rV   fs     rL   ru   z2test_display_edge_single_color.<locals>.<listcomp>   E     
 
 
!S[899
HHJJ
 
 
rN   c                 P    g | ]#}t          |t          j        j                  !|$S rT   ro   rs   s     rL   ru   z2test_display_edge_single_color.<locals>.<listcomp>   =     
 
 
!S_;<<

 
 
rN   r   c              3   X   K   | ]$}t           j                            |          V  %d S N)rE   rF   rG   )rV   cr7   s     rL   	<genexpr>z1test_display_edge_single_color.<locals>.<genexpr>   s5      BBasz$$Q11BBBBBBrN   )r>   r?   rx   rA   rB   rC   rD   is_directedrH   rq   
get_colorsr[   rJ   )r#   r7   r   rK   r=   rF   s    `    rL   test_display_edge_single_colorr      s    	aj111A1i111ZZ\\%%c**FJqZ7777}} 
 
((**
 
 

 
'
 
 
 	 Z\\	 	
 BBBB6BBBBBBBBIIKKKKKrN   c                    t          j        d|           }t          j        |dddd           t                                                              d          }t          j        ||           d	d
g}|                                rd |                                D             }n)d |j	        D             d         
                                }t          j                            ||          sJ t                                           d S )NrY   r   r8   r   r   rO   r   rO   rO   ra   r   r<   r=   r9   r   c                 t    g | ]5}t          |t          j        j                  !|                                6S rT   r   r   s     rL   ru   z5test_display_edge_multiple_colors.<locals>.<listcomp>   r   rN   c                 P    g | ]#}t          |t          j        j                  !|$S rT   ro   rs   s     rL   ru   z5test_display_edge_multiple_colors.<locals>.<listcomp>   s<     
 
 
As7U)V)V

 
 
rN   r   )r>   r?   rx   rA   rB   rC   rD   r   rH   rq   r   rE   rF   rG   rJ   )r   rK   axr7   rF   s        rL   !test_display_edge_multiple_colorsr      s   
aj111A1y)DDgNNN		!	!#	&	&BJqvH}} 	
 
__&&
 
 

 
~
 
 

Z\\ 	 :  22222IIKKKKKrN   c                     t          j        d|           }t          j        |d |                                D             d           t                                                              d          }t          j        ||           |                                rd |	                                D             }n5d |j
        D             d	         }d
 |                                D             }ddg}d}t          ||          D ][\  }}|\  }	}
|\  }}t          t          |	|z
            ||fk               r%t          t          |
|z
            ||fk               sJ \t                                           d S )NrY   r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z.test_display_edge_position.<locals>.<dictcomp>   r`   rN   r*   r<   r   c                     g | ]g}t          |t          j        j                  !|                                j        d ddf         |                                j        dddf         fhS )r   N)rp   rE   r   r   get_pathverticesr   s     rL   ru   z.test_display_edge_position.<locals>.<listcomp>   sr     
 
 
!S[899
ZZ\\"1aaa4(!**,,*?AAA*FG
 
 
rN   c                 P    g | ]#}t          |t          j        j                  !|$S rT   ro   rs   s     rL   ru   z.test_display_edge_position.<locals>.<listcomp>   s<     
 
 
As7U)V)V

 
 
rN   r   c                 R    g | ]$}|j         d ddf         |j         dddf         f%S )r   N)r   rV   ps     rL   ru   z.test_display_edge_position.<locals>.<listcomp>   sH     
 
 
67QZ111qz"aaa%01
 
 
rN   )r   r   rO   rO   )r   ra   ra   g?)r>   r?   r@   rZ   rA   rB   rC   rD   r   rH   rq   r{   zipr[   absrJ   )r   rK   r   
end_pointsline_collectionr7   	thresholdae	act_startact_end	exp_startexp_ends                rL   test_display_edge_positionr      s   
aj111A1<<!''))<<<eDDD		!	!#	&	&BJq}} 

 
__&&
 
 



 
~
 
 


 
;J;T;T;V;V
 
 

 !"23H IJ)) 
 
1	7	73y9,--I0FFGG 	
C'!""i%;;M
 M
 	
 	
 
 	
 IIKKKKKrN   c                  &   t          j                    } d } ||           }t                                                              d          }t          j        | ||           d t          |                                 |                                d         	                                j
                  D             }|                                 D ]#}t          ||         ||         k              sJ $t                                           d S )Nc                 .    t          j        | d          S )Ni/ seed)r>   spring_layoutrK   s    rL   fixed_layoutz4test_display_position_function.<locals>.fixed_layout   s    ////rN   r<   )r   r=   c                 4    i | ]\  }}|t          |          S rT   tuple)rV   rW   r   s      rL   rX   z2test_display_position_function.<locals>.<dictcomp>   s1       1588  rN   r   )r>   rw   rA   rB   rC   rD   r   rZ   rH   rc   rd   r[   rJ   )rK   r   r*   r   act_posrW   s         rL   test_display_position_functionr      s    
A0 0 0 ,q//C		!	!#	&	&BJq<3333  #AGGIIr/@/@/C/O/O/Q/Q/V W W  G WWYY ) )3q6WQZ'((((((IIKKKKKrN   c                    t          j        d|           }t          j        |dddd           t          j        d         }t          j        |dd|d	
           t                                                              d          }t          j	        ||           t          j
                            |          }|                    dd           |                    d          |                    d          g}|                                rd |                                D             }n)d |j        D             d                                         }t          j                            |d         |j        d         d                   sJ t          j                            |d         |j        d         d                   sJ t          j                            ||          sJ t                                           d S )NrY   r   r   rO   r   r   plasmar   F)rZ   r<   r   cmapc                 t    g | ]5}t          |t          j        j                  !|                                6S rT   )rp   rE   r   r   get_facecolorr   s     rL   ru   z/test_display_edge_colormaps.<locals>.<listcomp>   G     
 
 
!S[899
OO
 
 
rN   c                 P    g | ]#}t          |t          j        j                  !|$S rT   ro   rs   s     rL   ru   z/test_display_edge_colormaps.<locals>.<listcomp>   r   rN   r   r   )r>   r?   rx   rE   	colormapsapply_matplotlib_colorsrA   rB   rC   rD   cmScalarMappableset_climto_rgbar   rH   rq   r   rF   rG   ry   rJ   r   rK   r   r=   mapperr7   rF   s          rL   test_display_edge_colormapsr      s   
aj111A1q!44h???="Dq(GTGGGGZZ\\%%c**FJq    V"""--F
OOAqq!!6>>!#4#45H}} 
 
((**
 
 

 
'
 
 
 	 Z\\	 	
 :  !agdmG.DEEEEE:  !agdmG.DEEEEE:  622222IIKKKKKrN   c                 B   t          j        d|           }t          j        |ddddd           t          j        d         }t          j        |dd	|           t                                                              d
          }t          j	        ||           t          j
                            |          }|                    dd           |                    d          |                    d          |                    d          g}d |j        D             d                                         }t          j                            |d         |j        d         d	                   sJ t          j                            |d         |j        d         d	                   sJ t          j                            |d         |j        d         d	                   sJ t          j                            ||          sJ t                                           d S )NrY   r   r   r)   rO   r   rO   ra   r   r   r   r<   r   r   c                 P    g | ]#}t          |t          j        j                  !|$S rT   rp   rE   rq   PathCollectionrV   ss     rL   ru   z/test_display_node_colormaps.<locals>.<listcomp>  s<       As7U)V)V	  rN   ra   )r>   r?   r@   rE   r   r   rA   rB   rC   rD   r   r   r   r   rq   rI   rF   rG   rZ   rJ   r   s          rL   test_display_node_colormapsr     s   
aj111A1!22H===="Dq(GT:::ZZ\\%%c**FJq    V"""--F
OOAqq!!6>>##6#6q8I8IJH %  				  :  !agaj.ABBBBB:  !agaj.ABBBBB:  !agaj.ABBBBB:  622222IIKKKKKrN      widthrm   c                    t          j        d|          }t          j        |dddd           t                                                              d          }t          j        || |           |                                rd	 |                                D             }n6t          d
 |j
        D             d                                                   }||k    sJ d S )NrY   r   r   rm   r   r   r<   )r"   r=   c                 t    g | ]5}t          |t          j        j                  !|                                6S rT   )rp   rE   r   r   get_linewidthr   s     rL   ru   z+test_display_edge_width.<locals>.<listcomp>,  r   rN   c                 P    g | ]#}t          |t          j        j                  !|$S rT   ro   rs   s     rL   ru   z+test_display_edge_width.<locals>.<listcomp>3  s=       a!?@@  rN   r   )r>   r?   rx   rA   rB   rC   rD   r   rH   listrq   get_linewidths)r6   r7   r   rK   r=   widthss         rL   test_display_edge_widthr     s    	aj111A1q"55w???ZZ\\%%c**FJq[8888}} 

 
((**
 
 
  +   	  !!
 
 XrN   :stylec                    t          j        d|          }t          j        |dddd           t                                                              d          }t          j        || |           |                                rd	 |                                D             }n:ddd
fdd |j	        D             d         
                                D             }||k    sJ t                                           d S )NrY   r   r-   r   r   r   r<   )r,   r=   c                 t    g | ]5}t          |t          j        j                  !|                                6S rT   )rp   rE   r   r   get_linestyler   s     rL   ru   z+test_display_edge_style.<locals>.<listcomp>K  r   rN   ))r   N)r   )rO   gffffff?c                 j    g | ]/}|d          |d         t          |d                   ndf         0S )r   rO   Nr   )rV   r   
linestyless     rL   ru   z+test_display_edge_style.<locals>.<listcomp>S  sN     
 
 
 !QqT-=eAaDkkk4HI
 
 
rN   c                 P    g | ]#}t          |t          j        j                  !|$S rT   ro   rs   s     rL   ru   z+test_display_edge_style.<locals>.<listcomp>U  s=       a!?@@  rN   r   )r>   r?   rx   rA   rB   rC   rD   r   rH   rq   get_linestylesrJ   )r6   r7   r   rK   r=   stylesr   s         @rL   test_display_edge_styler   <  s2    	aj111A1sC88'BBBZZ\\%%c**FJq[8888}} 

 
((**
 
 
 "%c::

 
 
 
 +   	  !!
 
 
 XIIKKKKKrN   c                     t          j        d          } t                                                              d          }t          j        | |ddi           d |                                D             }t          |                                 |          D ]F\  }}|	                                t          |          k    sJ |                                dk    sJ Gt                                           d S )Nr   r<   r      )r=   r   c                 P    g | ]#}t          |t          j        j                  !|$S rT   rp   rE   textTextrV   ts     rL   ru   z,test_display_node_labels.<locals>.<listcomp>c  +    OOOA*Q2N2NOaOOOrN   g      4@)r>   r?   rA   rB   rC   rD   rH   r   rZ   get_textstrget_sizerJ   )rK   r=   labelsrW   rt   s        rL   test_display_node_labelsr
  _  s    
aAZZ\\%%c**FJqVRL9999OO,,..OOOFAGGIIv&& $ $1zz||s1vv%%%%zz||t#####IIKKKKKrN   c                     t          j        d          } t                                                              d          }t          j        | d |                                 D                        t          j        | |ddid            d |                                D             }t          |           t          |                                 |          D ]U\  }}|                                t          |d         |d	         z             k    sJ |                                dk    sJ Vt                                           d S )
Nr   r<   c                 (    i | ]\  }}||fd ||z   iS )labelrT   ri   s      rL   rX   z,test_display_edge_labels.<locals>.<dictcomp>o  s+    NNNDAq1vQ'7NNNrN   r   r   )r=   r$   r   c                 P    g | ]#}t          |t          j        j                  !|$S rT   r   r  s     rL   ru   z,test_display_edge_labels.<locals>.<listcomp>q  r  rN   r   rO   )r>   r?   rA   rB   rC   rx   ry   rD   rH   printr   r  r  	get_colorrJ   )rK   r=   r	  r   rt   s        rL   test_display_edge_labelsr  j  s   
aAZZ\\%%c**F 1NNAGGIINNNOOOJqWcNtLLLLOO,,..OOOF	&MMMAGGIIv&& $ $1zz||s1Q4!A$;//////{{}}#####IIKKKKKrN   c                     t          j                    } |                     g d           |                     g d           t          j        | d |                     d          D             d           t                                                              d          }t          j	        | |           d	 |
                                D             }|g d
k    sJ t                                           d S )N)ABCD))r  r  0)r  r  1)r  r  -1)r  r  r  )r  r  r  )r  r  r  c           	      F    i | ]}|d dt          |d                   z   S )z	arc3,rad=皙?ra   intrV   r   s     rL   rX   z<test_display_multigraph_non_integer_keys.<locals>.<dictcomp>  s1    IIIA,3QqT?,,IIIrN   T)keys	curvaturer<   r   c                 ~    g | ]:}t          |t          j        j                  !|                                j        ;S rT   )rp   rE   r   r   get_connectionstyleradr   s     rL   ru   z<test_display_multigraph_non_integer_keys.<locals>.<listcomp>  sL       a455	#  rN   )r   r  皙ɿr  r$  r   )r>   
MultiGraphadd_nodes_fromadd_edges_fromrx   ry   rA   rB   rC   rD   rH   rJ   )rK   r=   radss      rL   (test_display_multigraph_non_integer_keysr)  y  s   
A)))***	
 	
 	
	 	 	 	IIagg4g6H6HIII;   ZZ\\%%c**FJq     $$&&  D
 3333333IIKKKKKrN   c                      t          j                    } t          j        t           j                  5  t          j        | d           t                                           d d d            d S # 1 swxY w Y   d S )Nbad_arg)r+  )r>   rw   pytestraisesNetworkXErrorrD   rA   rJ   r   s    rL   test_display_raises_for_bad_argr/    s    
A	r'	(	(  

1i((((		                 s   0A//A36A3c                     t          j        dt           j                  } t          j        | d |                                 D             d           t
                                          }t          j        | |           g dd |                                D             k    sJ t
          	                                 d S )Nr   r   c                 0    i | ]\  }}||f||z   d z   d z  S )ra   rT   ri   s      rL   rX   z+test_display_arrow_size.<locals>.<dictcomp>  s/    ;;;AQFQUQY1$;;;rN   	arrowsizer   )	      1   c                 t    g | ]5}t          |t          j        j                  !|                                6S rT   )rp   rE   r   r   get_mutation_scaler   s     rL   ru   z+test_display_arrow_size.<locals>.<listcomp>  sI       a455	  rN   )
r>   r?   DiGraphrx   ry   rA   axesrD   rH   rJ   )rK   r   s     rL   test_display_arrow_sizer:    s    
abj111A	;;;;;[   
BJq;;  ""      
 IIKKKKKrN   c                  ^   t          j        d          } t          j        | dddddd           t          j        | d |                                 D             d	           t	          j        t           j                  5  t          j        |            d
d
d
           d
S # 1 swxY w Y   d
S )zP
    This test ensures that a error is raised for incomplete position data.
    r   r   r   r   )r   r   )r   rO   ra   r   r*   c                     i | ]	}||d k     
S )r   rT   rU   s     rL   rX   z9test_display_mismatched_edge_position.<locals>.<dictcomp>  s    ;;;Aq!a%;;;rN   visibleN)r>   r?   r@   rZ   r,  r-  r.  rD   r   s    rL   %test_display_mismatched_edge_positionr>    s     	aA1&V6JJERRR1;;;;;YGGG 
r'	(	(  

1                 s    B""B&)B&)r   r   c                 H   t                                                               d          }t          j        dg          }t          j        |dddd           t          j        |||            d |                                D             d         }|                                	                                d	d	d
df         }t                                                               d          }t          j        ||dd|            d |                                D             d         }|                                	                                d	d	d
df         }|d         |d         k    sJ |d         |d         k     sJ t           
                                 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 os min_{source/target}_margin edge
    attributes result is 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

    r<   r   r   r   r*   )r=   r   c                 P    g | ]#}t          |t          j        j                  !|$S rT   rp   rE   r   r   r   s     rL   ru   z-test_display_edge_margins.<locals>.<listcomp>  s<       
1ck6Q(R(R	  rN   r   Nra   d   )r=   r3   r4   r   c                 P    g | ]#}t          |t          j        j                  !|$S rT   rA  r   s     rL   ru   z-test_display_edge_margins.<locals>.<listcomp>  s<       
1ck6Q(R(R	  rN   rO   )rA   rB   rC   r>   r8  r@   rD   rH   get_extentscornersrJ   )r   r   rK   default_arrowdefault_extentpadded_arrowpadded_extents          rL   test_display_edge_marginsrJ    s   * 
	!	!#	&	&B

F8A1&V44e<<<Jq
3333 ??$$  	M #..0088::33Q36BN		!	!#	&	&BJ	    ??$$  	L !,,..66881a@M nQ/////nQ/////IIKKKKKrN   ticksc                    t          j        d          }t          j        |d |                                D             d           t                                          }t          j        ||            |j        |j        fD ])}t          |
                                          | k    sJ *t                                           d S )NrY   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z+test_display_hide_ticks.<locals>.<dictcomp>  r`   rN   r*   )
hide_ticks)r>   r?   r@   rZ   rA   r9  rD   xaxisyaxisboolget_ticklabelsrJ   )rK  rK   r   axiss       rL   test_display_hide_ticksrT    s    
aA1<<!''))<<<eDDD	BJqU####28$ 4 4D''))**e33333IIKKKKKrN   c                  f   t                                           } t          j                    }|                    d           |                    dd           t          j        |ddid           t          j        ||            d |                                 D             d         }|	                                }t          |j                   t          |j                   |j        dk    r|j        dk    sJ t                               |            t                                            d S )Nr   r   r*   r   c                 P    g | ]#}t          |t          j        j                  !|$S rT   rA  r   s     rL   ru   z*test_display_self_loop.<locals>.<listcomp>  s<       
1ck6Q(R(R	  rN   )rA   r9  r>   r8  add_nodeadd_edger@   rD   rH   rD  r  r   heightdelaxesrJ   )r   rK   arrowr   s       rL   test_display_self_loopr\    s   	B

AJJqMMMJJq!1q&k5111Jq ??$$  	E D	$*	$+:>>dkAooo-KKOOOIIKKKKKrN   c                      t          j                    } t          j        |            t          j        | d          i k    sJ dS )z
    If the pos attribute isn't provided or is a function, display computes the layout
    and adds it to the graph. We need to ensure that this new attribute is removed from
    the returned graph.
    z!display's position attribute nameN)r>   rw   rD   get_node_attributesr   s    rL   test_display_remove_pos_attrr_    sD     	AJqMMM!!%HIIROOOOOOrN   c               #      K   t                                           \  } }| |fV  t                               |           t                                            d S r   )rA   subplotsrZ  rJ   )figr   s     rL   ra  ra    sD      llnnGC
r'MMMKKOOOIIKKKKKrN   functionc                     | t           j        k    rt          j        dd           |\  }}dddd} | t          fi | |                    |dz             d S )	Nscipyz draw_kamada_kawai requires scipy)reasonr   rB  rY   )r
   r   r   test.ps)r>   draw_kamada_kawair,  importorskipbarbellsavefig)rc  ra  tmp_pathrb  _optionss         rL   	test_drawro     sv     2'''G,NOOOOFC$3CCGHW     KK9$%%%%%rN   c                     | \  }}t          t          d                    t          t          dd                    t          t          dd                    g}t          j        t          |           |                    |dz             d S )Nr   rm      )nlistrg  )r   ranger>   
draw_shellrj  rk  )ra  rl  rb  rm  rr  s        rL   test_draw_shell_nlistru  6  su    FC%((^^T%2,,//eBmm1D1DEEM'''''KK9$%%%%%rN   c                     | \  }}t          j        dd          }t          j        |           |                    |dz             d S )Nra   r   rg  )r>   complete_bipartite_graphdraw_bipartiterk  )ra  rl  rb  rm  rK   s        rL   test_draw_bipartitery  =  sK    FC
#Aq))AaKK9$%%%%%rN   c                      t          t                                                    } t          j        t          | dt
          j        j        d           d S )Nr   T)r#   r   	edge_cmapwith_labels)rs  rj  number_of_edgesr>   draw_springrA   r   Blues)rF   s    rL   test_edge_colormapr  D  sN    7**,,--FNF!sv|QU     rN   c                     | \  }}d}t          j        |g          }d |D             }t          j        ||           t          j        |||di           |                    |dz             d S )Nr   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z2test_draw_networkx_edge_labels.<locals>.<dictcomp>P      
 
 
 1q!f
 
 
 rN   )r*   edgeedge_labelsrg  )r>   r8  drawdraw_networkx_edge_labelsrk  )ra  rl  rb  rm  r  rK   r*   s          rL   test_draw_networkx_edge_labelsr  L  s    FCD

D6A
 
 a
 
 
 CGA3 CdF^DDDDKK9$%%%%%rN   c                  \    t          j        t                                                     d S r   )r>   r~  rj  to_directedrT   rN   rL   test_arrowsr  V  s$    N7&&(()))))rN   r   r   r   r9   r   r   r   r   r   r:   )#0000ffr   r  r   edgelistr   c                     t          j        d          }t          j        |t          j        |          ||           }t          j                            |                                |          sJ dS )z`Tests ways of specifying all edges have a single color for edges
    drawn with a LineCollectionrY   r*   r  r#   N)r>   r?   draw_networkx_edgesrandom_layoutrE   rF   rG   r  )r#   r7   r  rK   drawn_edgess        rL   !test_single_edge_color_undirectedr  [  sp    & 	aA(	r""X*  K :  !6!6!8!8(CCCCCCCrN   c                    t          j        dt           j                  }t          j        |t          j        |          ||           }|D ]6}t
          j                            |                                |          sJ 7dS )zaTests ways of specifying all edges have a single color for edges drawn
    with FancyArrowPatchesrY   r   r  N)	r>   r?   r8  r  r  rE   rF   rG   get_edgecolor)r#   r7   r  rK   r  faps         rL   test_single_edge_color_directedr  u  s    & 	abj111A(	r""X*  K  D Dz$$S%6%6%8%8(CCCCCCD DrN   c                  f   t          j        dt           j                  } d t          t	          |                     D             }dD ]}t          j        | ||          }|D ]6}t          j                            |	                                |          sJ 7t          j        | |ddg|          }|D ]6}t          j                            |	                                |          sJ 7t          j        | |g d	d
          }|D ]6}t          j                            |	                                d          sJ 7t          j        | |g dd          }|D ]6}t          j                            |	                                d          sJ 7t          j        | |g d	d          }t          j                            |d         	                                |d         	                                          sJ |D ]6}t          j                            |	                                d          rJ 7t          j        | |g dd
          }t          j                            |d         	                                |d         	                                          sJ t          j                            |d         	                                |d         	                                          sJ |D ]6}t          j                            |	                                d          rJ 7d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   r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z8test_edge_color_tuple_interpretation.<locals>.<dictcomp>      
,
,
,1q!f
,
,
,rN   )r   r   r   rO   rO   r#   r   r   )r  r#   r   r   ra   rY   r  r   )r   r   r  )rY   r   r   r   rO   ra   rY   N)
r>   r?   r8  rs  rz   r  rE   rF   rG   r  )rK   r*   r'   r  r  s        rL   $test_edge_color_tuple_interpretationr    s    	abj111A
,
,eCFFmm
,
,
,C ( 
B 
B,QCCC 	B 	BC:(():):)<)<bAAAAAA,sff-"
 
 
  	B 	BC:(():):)<)<bAAAAAA	B (	3111l  K  B Bz$$S%6%6%8%8&AAAAAA (	3999i  K  B Bz$$S%6%6%8%8&AAAAAA (	3111i  K :  A$$&&A(D(D(F(F      F F:(():):)<)<fEEEEEE (	3999l  K :  A$$&&A(D(D(F(F     :  A$$&&A(D(D(F(F      F F:(():):)<)<fEEEEEEF FrN   c                  T   t                                           } t          j        t                     }d}t          j        | ||          }t          |t          j        |                    D ]9\  }}t          j	        
                    |                                |          sJ :dS )zZTest that the edge colors are cycled when there are fewer specified
    colors than edges.r   gbr  N)rj  r  r>   r  r  r   	itertoolscyclerE   rF   rG   r  rK   r*   
edgecolorsr  r  r7   s         rL   .test_fewer_edge_colors_than_num_edges_directedr    s     	A

7
#
#C J(CJGGGK[)/**E*EFF D DXz$$S%6%6%8%8(CCCCCCD DrN   c                  N   t          j        dt           j                  } t          j        t                    }d}t          j        | ||          }t          ||dd                   D ]9\  }}t          j        	                    |
                                |          sJ :dS )z\Test that extra edge colors are ignored when there are more specified
    colors than edges.r   r   )r   r  r  r   r  Nr   )r>   r?   r8  r  rj  r  r   rE   rF   rG   r  r  s         rL   -test_more_edge_colors_than_num_edges_directedr    s     	abj111A

7
#
#C%J(CJGGGK[*SbS/:: D DXz$$S%6%6%8%8(CCCCCCD DrN   c                  ~   t          j        t          t          j        t                    ddgdd          } |                                                                 }t          |                                           dk    sJ t          j	        
                    |d d         d          sJ |d         dk    sJ d S Nr   r   purpler  )r*   r  r#   r   ra   r   )r>   r  rj  r  r  squeezerz   r{   rE   rF   rG   )edge_collectionr'   s     rL   3test_edge_color_string_with_global_alpha_undirectedr    s    ,W%%&!  O 
	"	"	$	$	,	,	.	.B((**++q0000:  CRC(33333b6S======rN   c                  d   t          j        t                                          t          j        t                    ddgdd          } t          |           dk    sJ | D ]N}|                                }t          j        	                    |d d         d          sJ |d         dk    sJ Od S r  )
r>   r  rj  r  r  rz   r  rE   rF   rG   )r  r  r'   s      rL   1test_edge_color_string_with_global_alpha_directedr    s    (W%%&!  K {q        z$$RWh77777"v}}}}} rN   c                    t          j        d|           }d t          t          |                    D             }t          j        ||          }t          |t                    r|d         }|                                dk    sJ dS )z^Test the default linewidth for edges drawn either via LineCollection or
    FancyArrowPatches.ra   r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z1test_edge_width_default_value.<locals>.<dictcomp>  r  rN   r   rO   N)r>   r?   rs  rz   r  rp   r   r   )r   rK   r*   r  s       rL   test_edge_width_default_valuer    s     	aj111A
,
,eCFFmm
,
,
,C(C00K+t$$ %!!n$$&&!++++++rN   )	edgewidthr7   rY   rY   rY   c                 *   t          j        d          }d t          t          |                    D             }t          j        |||           }t          |                                          dk    sJ |                                |k    sJ d S )Nr   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z;test_edge_width_single_value_undirected.<locals>.<dictcomp>  r  rN   r   rY   )r>   r?   rs  rz   r  r{   r   )r  r7   rK   r*   r  s        rL   'test_edge_width_single_value_undirectedr    s     	aA
,
,eCFFmm
,
,
,C(CyAAAK{$$&&''1,,,,$$&&(222222rN   c                 (   t          j        dt           j                  }d t          t	          |                    D             }t          j        |||           }t	          |          dk    sJ |D ]}|                                |k    sJ d S )Nr   r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z9test_edge_width_single_value_directed.<locals>.<dictcomp>   r  rN   r  rY   )r>   r?   r8  rs  rz   r  r   )r  r7   rK   r*   r  r  s         rL   %test_edge_width_single_value_directedr    s     	abj111A
,
,eCFFmm
,
,
,C(CyAAAK{q     / /  ""h...../ /rN   r  r   c                    t                                           }t          j        |          }d}t          j        ||| |          }t          |t          j        |                    D ]\  }}|                                |k    sJ  d S )N)r)   g       @g      (@)r  r   )	rj  r  r>   r  r  r   r  r  r   )r  rK   r*   r   r  r  expected_widths          rL   test_edge_width_sequencer  '  s     	A

1

CF(C(&QQQK";	0G0GHH 5 5^  ""n444445 5rN   c                  J   t          j        dt           j                  } t          j        |           }t          j        | |ddg          }d |D             }t          j        | |ddg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).rY   r   r   r   r  c                 6    g | ]}|                                 S rT   r  r  s     rL   ru   z7test_edge_color_with_edge_vmin_vmax.<locals>.<listcomp>?  s"    :::1??$$:::rN   r  g?)r#   	edge_vmin	edge_vmaxc                 6    g | ]}|                                 S rT   r  r  s     rL   ru   z7test_edge_color_with_edge_vmin_vmax.<locals>.<listcomp>D  s"    <<<1Q__&&<<<rN   N)r>   r?   r8  r  r  rE   rF   rG   )rK   r*   r  orig_colorsscaled_colorss        rL   #test_edge_color_with_edge_vmin_vmaxr  8  s     	abj111A

1

C(CQHEEEK::k:::K(	3C:  K =<<<<M:  m<<<<<<<rN   c                  $   t          j        dt           j                  } d t          t	          |                     D             }t          j        | |          }t	          |          dk    sJ |D ]}|                                dk    sJ dS )z>Test default linestyle for edges drawn with FancyArrowPatches.r   r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z9test_directed_edges_linestyle_default.<locals>.<dictcomp>K  r  rN   rY   solidNr>   r?   r8  rs  rz   r  r   )rK   r*   r  r  s       rL   %test_directed_edges_linestyle_defaultr  H  s    
abj111A
,
,eCFFmm
,
,
,C (C00K{q     . .  ""g-----. .rN   )dashed--rO   r   c                 (   t          j        dt           j                  }d t          t	          |                    D             }t          j        |||           }t	          |          dk    sJ |D ]}|                                | k    sJ 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   r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z>test_directed_edges_linestyle_single_value.<locals>.<dictcomp>b  r  rN   r   rY   Nr  )r   rK   r*   r  r  s        rL   *test_directed_edges_linestyle_single_valuer  T  s     	abj111A
,
,eCFFmm
,
,
,C(Cu===K{q     , ,  ""e+++++, ,rN   	style_seqr  r  r  )r  r-   r   )r  r-   r   z-.c                 n   t          j        dt           j                  }d t          t	          |                    D             }t          j        |||           }t	          |          dk    sJ t          |t          j        |                     D ]\  }}|	                                |k    sJ  dS )zTests support for specifying linestyles with sequences in
    ``draw_networkx_edges`` for FancyArrowPatch outputs (e.g. directed edges).r   r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z:test_directed_edges_linestyle_sequence.<locals>.<dictcomp>z  r  rN   r  rY   N)
r>   r?   r8  rs  rz   r  r   r  r  r   )r  rK   r*   r  r  r   s         rL   &test_directed_edges_linestyle_sequencer  j  s     	abj111A
,
,eCFFmm
,
,
,C(CyAAAK{q    +yy'A'ABB , ,
U  ""e+++++, ,rN   c                  P   ddl m} m} ddlm} t          j        t
          j                  }t          j        t
          j                  }t          j	        |d          }t          j	        |d          }t          j
        ||          }t          ||          sJ t          j        ||d          }t          |t                    sJ t          |          dk    rt          |d         |          sJ t          j        ||d	          }t          ||           sJ t          j        ||d           }t          ||           sJ t          j        ||d           }t          |t                    sJ t          |          dk    rt          |d         |          sJ d S d S )
Nr   )rr   r   )r   r   *   r   TarrowsF)matplotlib.collectionsrr   r   matplotlib.patchesr   r>   frucht_graphGraphr8  r   draw_networkx_nodesrp   r  r   rz   )	rr   r   r   rK   dGr*   dposrZ   ry   s	            rL   test_return_typesr    s   EEEEEEEE222222
RX...A	bj	1	1	1B

12
&
&
&CBR(((D"1c**Ee^,,,,,"2tD999EeT"""""
5zzA~~%(O44444"2tE:::Ee^,,,,,"1d4888Ee^,,,,,"2s4888EeT"""""
5zzA~~%(O44444 ~44rN   c            
         t          j                    } t          j        | d          }t          j        | |g dddd           t          j        | |g dd	dg d
           t          j        | |dd           t          j        | |g dddd           t          j        | |g dddd	           t          j        | |g dddddd	           i }d|d<   d|d<   d|d<   d|d<   d|d<   d|d<   d |d!<   d"|d#<   d$ t          d          D             }t          j        | ||d%&           t          j        | ||d%|'           t          j        | |d d()           t          j        | |d*d+i,           d S )-Nr  r   )r   rO   ra   rY   r   i        ?)nodelistr
   r   r   )r   r   r      r  )rQ   r)   r  r   r   r)   )r   r   )r   r   r  )rY   r      )r  r   r   r#   )r   r   )r   r   )r   r  )r  r   T)r  r  min_source_marginmin_target_marginr   r#   z$a$r   z$b$rO   z$c$ra   z$d$rY   z$\alpha$r   z$\beta$r   z$\gamma$r   z$\delta$r  c                 *    i | ]}||d z  dk    rdndS )ra   r   kr   rT   rU   s     rL   rX   z*test_labels_and_colors.<locals>.<dictcomp>  s*    >>>aA

>>>rN      )	font_size)r  
font_colorF)r  r+   r  z4-5r  )r>   cubical_graphr   r  r  rs  draw_networkx_labelsr  )rK   r*   r	  rF   s       rL   test_labels_and_colorsr    s   
A

12
&
&
&C	3#D    	$$$    1cC8888	111    	111    	111	 	 	 	 FF1IF1IF1IF1IF1IF1IF1IF1I>>U1XX>>>FAsFb9999AsFbVLLLL CT%HHHH Cfe_EEEEEErN   c                     | \  }}t          j        t          |           t          j        t          t          j        t                    |           d S )Nr   )r>   r  rj  r  circular_layout)ra  rb  r   s      rL   	test_axesr    sI    GCGG "*<W*E*E"MMMMMMrN   c                  T    t          j                    } t          j        |            d S r   )r>   r  r  r   s    rL   test_empty_graphr    s    


AGAJJJJJrN   c                  V   dd l } t          j        ddg          }t          j        ddg          }t          j        |          }t          t          j        ||g           t          j        j	                  sJ t          t          j        ||g           t          j        j	                  sJ t          j
        ||g d          g k    sJ t          j
        ||g d          g k    sJ t          j
        ||g d          g k    sJ t          j
        ||g d          g k    sJ d S )Nr   r   r  )r  T)r  r  F)r  r>   r  r8  r  rp   r  rE   rq   r   r  )r   rK   DGr*   s       rL   #test_draw_empty_nodes_return_valuesr     sT   !!!!
&&!""A	VV$	%	%B

Q

C
q#333S_5S     
r3444co6T     !!S2dCCCrIIII!!S2eDDDJJJJ!"cBuEEEKKKK!"cBtDDDJJJJJJrN   c                      t          j        dt           j                  } t          j        | dg           t          j        | dgg d           d S )NrY   r   )r   rO   r   r  )rm   r   r   )r  r   )r>   r?   MultiDiGraphdraw_networkxr   s    rL   test_multigraph_edgelist_tuplesr    sT    
abo666AQ)----Q)DDDDDDrN   c                  H   t          j        t                    } t                                          }|                    d           t          j        t          | ddg           t          t          j                  fdt                    D             }t                    }|                    d           t          j        t          | ||           |
                    d           |                    d	           t          j        t          | |           d S )
N   皙?r  )r   c                     g | ]}|z  S rT   rT   )rV   x	num_nodess     rL   ru   z#test_alpha_iter.<locals>.<listcomp>	  s    555qQ]555rN      )r
   r   rO      )r>   r  rj  rA   rB   rC   r  rz   rZ   rs  append)r*   rb  r   rF   r  s       @rL   test_alpha_iterr    s    

7
#
#C
**,,COOC7CSz::::GM""I5555E)$4$4555E9FOOC7CF%HHHH	LLOOOOOC7Cu555555rN   c                     | \  }}t          j        d          }t          j        |g d|           d |                                D             }t	          |          dk    sJ d S )Nr   )r   hr   ^)r   r   c                 P    g | ]#}t          |t          j        j                  !|$S rT   r   r   s     rL   ru   z-test_multiple_node_shapes.<locals>.<listcomp>  s<       
1co6T(U(U	  rN   )r>   r?   r  rH   rz   )ra  rb  r   rK   scatterss        rL   test_multiple_node_shapesr    s    GC
aAGA...26666 ??$$  H x==ArN   c                 2   t          j                    }| \  }}t          j        ||d |                                D             d |                                D                        t	          |                                d |                                D                       D ]o\  }}|dz  rdnd}t          j                            |	                                |          sJ t          |dz  d	z             |                                k    sJ pd S )
Nc                 "    i | ]}||d z  rdndS )ra   r  r   rT   rU   s     rL   rX   z7test_individualized_font_attributes.<locals>.<dictcomp>#  s'    @@@Aa!e,ss@@@rN   c                 :    i | ]}|t          |d z  dz             S )""""""@r   r  rU   s     rL   rX   z7test_individualized_font_attributes.<locals>.<dictcomp>$  s+    @@@1c!w-!+,,@@@rN   )r   r  r  c                     g | ]H}t          |t          j        j                  r't	          |                                          d k    F|IS r   )rp   rE   r  r  rz   r  r  s     rL   ru   z7test_individualized_font_attributes.<locals>.<listcomp>(  sU     	
 	
 	
!SX]++	
 14AJJLL0A0AA0E0E 0E0E0ErN   ra   r   r9   r  r   )r>   rw   r  rZ   r   rH   rE   rF   rG   r  r  r  )ra  rK   rb  r   rW   r  r7   s          rL   #test_individualized_font_attributesr    s+   
AGCG	@@aggii@@@@@aggii@@@	    				
 	
__&&	
 	
 	
  6 61  !e.77z$$Q[[]]H=====1=1$%%555556 6rN   c                    t          j                    }| \  }}d |                                D             }d |                                D             }t          j        ||d||           d |                                D             }t          |                                |          D ]\  }}|                                d|d         dz  |d	         dz  z   z  dz   k    sJ t          |          dz  rt          j	        j
        j        nt          j	        j
        j        }	t          |                                |	          sJ d S )
Nc                 4    g | ]\  }}||z   d z  dk    rdndS )ra   r   rh   -[rT   ri   s      rL   ru   z7test_individualized_edge_attributes.<locals>.<listcomp>7  s2    MMM41aQUaK1,,55$MMMrN   c                 6    g | ]\  }}d |dz  |dz  z   z  d z   S )rm   ra   rT   ri   s      rL   ru   z7test_individualized_edge_attributes.<locals>.<listcomp>8  s2    BBB1"AA&+BBBrN   T)r   r  rl   r2  c                 P    g | ]#}t          |t          j        j                  !|$S rT   rA  r   s     rL   ru   z7test_individualized_edge_attributes.<locals>.<listcomp>:  s<       
1ck6Q(R(R	  rN   rm   r   ra   rO   )r>   rw   ry   r  rH   r   r7  r|   rE   r   
ArrowStyleBracketBCurveFilledBrp   get_arrowstyle)
ra  rK   rb  r   arrowstyles
arrowsizesr  r   r   r7   s
             rL   #test_individualized_edge_attributesr(  4  sW   
AGCMM17799MMMKBB		BBBJGA"TkZPPPP ??$$  F AGGIIv&& 8 81##%%qtax!A$(/B)Cb)HHHHH 1vvz5CK"++'4 	
 !**,,h7777778 8rN   c                      t          j        t          d          5  t          j        t
          d           d d d            d S # 1 swxY w Y   d S )NzReceived invalid argumentmatchbar)foo)r,  r-  
ValueErrorr>   r  rj  rT   rN   rL   test_error_invalid_kwdsr/  G  s    	z)D	E	E	E $ $
U####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   AA	A	c                      t          j        g d          } g d}t          j        t          d          5  t          j        | |           d d d            d S # 1 swxY w Y   d S )N)r   r   ra   r   rY   rO   rY   )rO   ra   rY   z1arrowsize should have the same length as edgelistr*  )r2  )r>   r8  r,  r-  r.  r  )rK   r2  s     rL   +test_draw_networkx_arrowsize_incorrect_sizer4  L  s    

33344A		I	M
 
 
 ( ( 	Y''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   AA!Ar2     )rm   r   r5  c                 d   t          j        g d          }dddd}t          j        |||           }t          | t                    rt          j        |           n| } t          ||           D ]@\  }}t          |t          j	        j
                  sJ |                                |k    sJ Ad S )Nr   r1  r   r   r   rO   r   r   )r*   r2  )r>   r8  r  rp   r  r  repeatr   rE   r   r   r7  )r2  rK   r*   ry   r  r7   s         rL   test_draw_edges_arrowsizer:  U  s    

+++,,AF
+
+C"1#CCCE/9)S/I/IX	 +++yIUI.. 4 4X#s{:;;;;;%%''8333334 4rN   rl   rh   rh   r  z<|-|>c                    t          j        g d          }dddd}t          j        |||           }t          | t                    rt          j        |           n| } t          j        j	        j
        t          j        j	        j        t          j        j	        j        d}t          ||           D ]P\  }}t          |t          j        j                  sJ t          |                                ||                   sJ Qd S )Nr7  r   r   r8  r   )r*   rl   r;  )r>   r8  r  rp   r  r  r9  rE   r   r"  r$  r#  CurveFilledABr   r   r%  )rl   rK   r*   ry   arrow_objectsr  r7   s          rL   test_draw_edges_arrowstyler?  b  s   

+++,,AF
+
+C"1#*EEEE )3:s(C(CS	$$$ 
 {%2k$-'5 M UJ// I IX#s{:;;;;;#,,..h0GHHHHHHI IrN   c                  p    t          j        t          t                              ddg                     d S )Nr1  r2  r  )r>   r  rj  rb   arrayrT   rN   rL   test_np_edgelistrB  w  s/    Wrxx0@'A'ABBBBBBrN   c                      t          j        d          } ddd}t          j        t           j        d          5  t          j        | |           d d d            d S # 1 swxY w Y   d S )NrY   r   r   r   zhas no positionr*  )r>   r?   r,  r-  r.  r  rK   r*   s     rL   *test_draw_nodes_missing_node_from_positionrE  |  s    
aA
 
 C	r'/@	A	A	A ' '
q#&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   AA!$A!c                     | \  }}t          j        d          }d |D             }g d}t          j        ||d||          }t          |                                          dk    sJ dS )zEnsure draw_networkx_nodes works when node_shape is a Python list.

    This covers the case where node_shape is a sequence (list) and node_color
    is a single scalar color, which should be supported.
    r   c                     i | ]}|||fS rT   rT   )rV   is     rL   rX   zNtest_draw_networkx_nodes_node_shape_list_with_scalar_color.<locals>.<dictcomp>  r  rN   )r   r  r   r  r   r9   )r
   r   r   r   N)r>   empty_graphr  rz   rc   )ra  rb  r   rK   r*   shapesrZ   s          rL   :test_draw_networkx_nodes_node_shape_list_with_scalar_colorrK    s     GC
qA
 
 a
 
 
 C&&&F"	  E u  ""##a''''''rN   c                    |\  }}t          j        dg          }ddd}t          j        ||||           d         }|                                                                ddddf         }t          j        |||| dd	          d         }|                                                                ddddf         }	|	d         |d         k    sJ |	d
         |d
         k     sJ dS )  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

    r   r   r8  r   r   r   Nra   rB  r   r   r  r  rO   )r>   r8  r  rD  rE  )
r   ra  rb  r   rK   r*   default_patchrG  padded_patchrI  s
             rL   )test_draw_edges_min_source_target_marginsrR    s   & GC

F8A
 
 C *1cbZPPPQRSM"..0088::33Q36BN )	   	L !,,..66881a@M nQ/////nQ///////rN   c           	      `   |\  }}t          j        ddg          }dddd}t          j        ||||           }d |D             }t          j        |||| d	d
gd	d
g          }d |D             }	t          ||	          D ]-\  }
}|d         |
d         k    sJ |d         |
d         k     sJ .dS )rM  r   r   r   r8  )ra   r   r   rN  c                 p    g | ]3}|                                                                 d d ddf         4S Nra   r   rD  rE  )rV   ds     rL   ru   zHtest_draw_edges_min_source_target_margins_individual.<locals>.<listcomp>  s;    OOOAammoo--//!Q7OOOrN   b   f   rO  c                 p    g | ]3}|                                                                 d d ddf         4S rU  rV  r   s     rL   ru   zHtest_draw_edges_min_source_target_margins_individual.<locals>.<listcomp>  s;    MMM1Q]]__,,..sssAv6MMMrN   r   rO   N)r>   r8  r  r   )r   ra  rb  r   rK   r*   rP  rG  rQ  rI  rW  r   s               rL   4test_draw_edges_min_source_target_margins_individualr[    s    & GC

FF#$$AF
+
+C *1cbZPPPMOOOOON )	s)s)  L NMMMMMNM22  1 tad{{{{tad{{{{{ rN   c                    | \  }}t          j                    }|                    d           |                    dd           t          j        |ddi          d         }|                                }|j        dk    r|j        dk    sJ dS )zDEnsure that selfloop extent is non-zero when there is only one node.r   r   N)r>   r8  rW  rX  r  rD  r   rY  )ra  rb  r   rK   patchr   s         rL   &test_nonzero_selfloop_with_single_noder^    s     GC

AJJqMMMJJq!"1q&k2215ED:>>dkAooo-oorN   c                 2   | \  }}t          j        dt           j                  }|                    dd           d |j        D             }t          j        ||dg          d         }|                                }|j        dk    r|j        dk    sJ dS )	zfEnsure that selfloop extent is non-zero when only a single edge is
    specified in the edgelist.
    ra   r   rO   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   zFtest_nonzero_selfloop_with_single_edge_in_edgelist.<locals>.<dictcomp>      
&
&
&1q!f
&
&
&rN   r   r  r   N)	r>   r?   r8  rX  rZ   r  rD  r   rY  )ra  rb  r   rK   r*   r]  r   s          rL   2test_nonzero_selfloop_with_single_edge_in_edgelistrb    s    
 GC
abj111AJJq!
&
&ag
&
&
&C"1cVH===a@ED:>>dkAooo-oorN   c                      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   r  r)   Nr   )r>   drawingnx_pylabapply_alphar[   )r  	colorlistr   rgba_colorss       rL   test_apply_alphari    sc     yyHIE*%11)UHMMK{111b5!U*+++++++rN   c                     ddl } ddl} t          j        d          }t          j        dt          j                  }d |D             }||fD ]g}t          j        ||d          }t          |          t          |j                  k    sJ t          |d         t          j
        j                  sJ h||fD ]:}t          j        ||d          }t          |t          j        j                  sJ ;t          j        ||          }t          |t          j        j                  sJ t          j        ||          }t          |          t          |j                  k    sJ t          |d         t          j
        j                  sJ 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   NrY   r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z>test_draw_edges_toggling_with_arrows_kwarg.<locals>.<dictcomp>4  s    
!
!
!1q!f
!
!
!rN   Tr  F)r  r  r>   r?   r8  r  rz   ry   rp   rE   r   r   rq   rr   )r   UGr  r*   rK   ry   s         rL   *test_draw_edges_toggling_with_arrows_kwargrm  '  s    "!!!	q		B	qrz	2	2	2B
!
!b
!
!
!C "X A A&q#d;;;5zzS\\))))%(CK$?@@@@@@ "X A A&q#e<<<%!?@@@@@@ "2s++EeS_;<<<<<"2s++Eu::QW%%%%eAh ;<<<<<<<rN   drawing_funcc                     dd l }t          j        d          }|\  }} | ||           t          d |j        D                       sJ |j        rJ d S )Nr   rY   r  c              3   T   K   | ]#}t          |t          j        j                  V  $d S r   ro   rV   r   s     rL   r   z?test_draw_networkx_arrows_default_undirected.<locals>.<genexpr>P  s1      UUz!S_;<<UUUUUUrN   )r  r>   r?   anyrq   r   rn  ra  r   rK   rb  r   s         rL   ,test_draw_networkx_arrows_default_undirectedrt  I  ss    !!!!
aAGCLrUUbnUUUUUUUUz>rN   c                     dd l }t          j        dt          j                  }|\  }} | ||           t	          d |j        D                       rJ |j        sJ d S )Nr   rY   r   r  c              3   T   K   | ]#}t          |t          j        j                  V  $d S r   ro   rq  s     rL   r   z=test_draw_networkx_arrows_default_directed.<locals>.<genexpr>[  sB        :;
1co455     rN   )r  r>   r?   r8  rr  rq   r   rs  s         rL   *test_draw_networkx_arrows_default_directedrw  T  s    !!!!
abj111AGCLr  ?A~        ::rN   c                     t          j        d          }|                    dd           | \  }}t          j        |ddg|           |j        rJ d S )NrY   r   r   r   )r  r   )r>   r?   rX  r  r   )ra  rK   rb  r   s       rL   test_edgelist_kwarg_not_ignoredry  a  s]    
aAJJq!GCGA(R0000z>rN   )rK   expected_n_edgesra   c           	      B   t          g d          D ]1\  }\  }}|                     ||t          |dz  d                     2d | D             }dddgg dfD ]E}t          j        | ||           t          j        | ||          }t          |          |k    sJ Fd	S )
zGDraws edges correctly for 3 types of graphs and checks for valid lengthr   r   r   r1  rY   ra   r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   zFtest_draw_networkx_edges_multiedge_connectionstyle.<locals>.<dictcomp>r  r  rN   arc3,rad=0.1)r  r  arc3,rad=0.2connectionstyleN)	enumeraterX  r%   r>   r  rz   )rK   rz  rH  rj   rk   r*   
conn_styler  s           rL   2test_draw_networkx_edges_multiedge_connectionstyler  j  s     ???@@ 1 1	6Aq	

1aa!eQ
0000
 
 a
 
 
 C 		(888 / /

 	q#zBBBB'3
KKK6{{....../ /rN   c           	         t          g d          D ]1\  }\  }}|                     ||t          |dz  d                     2d | D             }t          j        | |g d          }ddd	gg dfD ]W}t          j        | ||          }t          |          |k    sJ |                                D ]}	|	j        j	        d
k    sJ XdS )zXDraws labels correctly for 3 types of graphs and checks for valid length and class namesr|  rY   ra   r}  c                     i | ]}|||fS rT   rT   rU   s     rL   rX   zLtest_draw_networkx_edge_labels_multiedge_connectionstyle.<locals>.<dictcomp>  r  rN   )r  r  r  r  r  r  CurvedArrowTextN)
r  rX  r%   r>   r  r  rz   values	__class____name__)
rK   rz  rH  rj   rk   r*   r  r  
text_itemstis
             rL   8test_draw_networkx_edge_labels_multiedge_connectionstyler  ~  s%    ???@@ 1 1	6Aq	

1aa!eQ
0000
 
 a
 
 
 C#	3 P P P  F 		(888 > >

 1!S*UUU
:"22222##%% 	> 	>B<(,======	>> >rN   c                  ,   t          j                    } |                     ddd           |                     ddd           t          j        | d          }d | D             }t          j        | ||dd	g
          }t          |          dk    sJ d S )Nr   rO   rm   r}  r   r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z;test_draw_networkx_edge_label_multiedge.<locals>.<dictcomp>  r  rN   r  r  r  r  ra   )r>   r%  rX  get_edge_attributesr  rz   )rK   r  r*   r  s       rL   'test_draw_networkx_edge_label_multiedger    s    
AJJq!BJJJq!BJ(H55K
 
 a
 
 
 C-	'8	  J z??arN   c                      t          j        d          } d | j        D             }t          j        | |i           i k    sJ dS )zORegression test for draw_networkx_edge_labels with empty dict. See
    gh-5372.rY   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z<test_draw_networkx_edge_label_empty_dict.<locals>.<dictcomp>  ra  rN   r  N)r>   r?   rZ   r  rD  s     rL   (test_draw_networkx_edge_label_empty_dictr    sQ     	aA
&
&ag
&
&
&C'3B???2EEEEEErN   c                 R   | \  }}g d}g d}t          j        |          }d |j        D             }t          j        |||||           t	          |j                  dk    sJ t                              |dd                   t                              dd	g          z   }t          |j        |dd         |          D ]c\  }}	}
|	                                
                    |
          sJ t          j                            |                                |	          sJ ddS )
ztWhen an edgelist is supplied along with a sequence of colors, check that
    the self-loops have the correct colors.)r3  r   r  r   r  r   )pinkcyanr   r9   r   greenc                     i | ]}|||fS rT   rT   rU   s     rL   rX   zGtest_draw_networkx_edges_undirected_selfloop_colors.<locals>.<dictcomp>  ra  rN   )r   r  r#   rY   Nr   r  )r>   r  rZ   r  rz   r   rb   rA  r   r   contains_pointrE   rF   rG   r  )ra  rb  r   r  edge_colorsrK   r*   	sl_pointsr  clrslps              rL   3test_draw_networkx_edges_undirected_selfloop_colorsr    s5    GC???HCCCK
A
&
&ag
&
&
&C1cb8TTTT rz??a
 "##''"((As8*<*<<I RZRSS)99EE ? ?S#||~~,,S11111z$$S%6%6%8%8#>>>>>>? ?rN   fap_only_kwargr   r  r  r  r  c                    t          j        d          }d |D             }|\  }}t          |                                           d         }t	          j        t          d| d          5  t          j        ||fd|i|  ddd           n# 1 swxY w Y   t          j	                    5  t          j
        d	           t          j        d
t                     t          j        ||f|dd|  ddd           dS # 1 swxY w Y   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.rY   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   zEtest_user_warnings_for_unused_edge_drawing_kwargs.<locals>.<dictcomp>  r  rN   r   z

The z# keyword argument is not applicabler*  r   Nerrorignore)categoryT)r   r  )r>   r?   r   r  r,  warnsUserWarningr  warningscatch_warningssimplefilterfilterwarningsDeprecationWarning)r  ra  rK   r*   rb  r   
kwarg_names          rL   1test_user_warnings_for_unused_edge_drawing_kwargsr    s    	aA
 
 a
 
 
 CGC n))++,,Q/J	UjUUU
 
 
 @ @ 	q#??"????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 
	 	"	" M Mg&&&3EFFFF
q#L"TLL^LLL	M M M M M M M M M M M M M M M M M Ms%   ,BBB,AC??DDdraw_fnc                     |\  }}t          j        d          }t          j        d          5 } | ||           d d d            n# 1 swxY w Y   t	          |          dk    sJ d S )Nr   T)recordr  r   )r>   cycle_graphr  r  rz   )r  ra  rb  r   rK   ws         rL   *test_no_warning_on_default_draw_arrowstyler    s     GC
qA		 	-	-	- b              q66Q;;;;;;s   A		AArN  methodc                     t          j        d          }d |j        D             }|\  }} | ||||           |j        |j        fD ])}t          |                                          |k    sJ *d S )NrY   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z#test_hide_ticks.<locals>.<dictcomp>   ra  rN   )r*   r   rN  )r>   r?   rZ   rO  rP  rQ  rR  )r  rN  ra  rK   r*   rm  r   rS  s           rL   test_hide_ticksr    s     	aA
&
&ag
&
&
&CEAr
F1#"444428$ 9 9D''))**j888889 9rN   )angleangle3arczarc3,rad=0.0zbar,fraction=0.1c                    | \  }}d}t          j        |g          }d |D             }|                    d          d         }t          j        |||di|          }|d         d         |d         d         z   dz  }	|d         d         |d         d         z   dz  }
|d	v r<||         j        s-J ||         j        t          j        |	|
f          k                dS |d
k    r||         j        |
k     sJ dS dS )z
    Check that FancyArrowPatches with all `connectionstyle`s are supported
    in edge label rendering. See gh-7735 and gh-8106.
    r   c                     i | ]}||d fS r  rT   rU   s     rL   rX   z8test_edge_label_all_connectionstyles.<locals>.<dictcomp>  r  rN   ,r   r  r  rO   ra   >   r  r1   r,  N)r>   r8  splitr  r
  yr,  approx)ra  r   rb  r   r  rK   r*   namer	  hmidvmids              rL   $test_edge_label_all_connectionstylesr    s     GCD

D6A
 
 a
 
 
 C;;sAD)	3T6NE  F F1IAq	!Q&DF1IAq	!Q&Dd|~LLvd|~d|1L1LLLL~LL	d|~$$$$ 
$$rN   	label_posgg?c                     | \  }}d}t          j        |g          }d |D             }t          j        |||di|d          }||         j        s-J ||         j        t          j        ||f          k                dS )zH
    Check that label positions can be extrapolated outside [0, 1].
    r   c                     i | ]}|||fS rT   rT   rU   s     rL   rX   z-test_edge_label_label_pos.<locals>.<dictcomp>)  r  rN   r  r  )r  r  r  N)r>   r8  r  r
  r  r,  r  )ra  r  rb  r   r  rK   r*   lbls           rL   test_edge_label_label_posr  !  s    
 GCD

D6A
 
 a
 
 
 C

&	3T6NiQX  C t9;LLD	v}i5K'L'LLLL;LLrN   )u__doc__r  osr  r,  networkxr>   ri  rE   rb   userA   rcParamsbarbell_graphrj  defaultsmarkparametrizerM   r]   re   r~   r  r8  r   r   r   r   r   r   r   r   r
  r  r)  r/  r:  r>  rJ  rT  r\  r_  fixturera  draw_circularrh  draw_planardraw_randomdraw_spectralr~  rt  draw_forceatlas2ro  ru  ry  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(  r/  r4  r:  r?  rB  rE  rK  rR  r[  r^  rb  ri  rm  r  r  rt  rw  ry  r%  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rT   rN   rL   <module>r     s   2 2     				      f,''V!! f-..#]  "
1a
 
 ,,D, ), 	,
    ," ##,$ #%,& ',( ),* D+,, #-,. )/,0 $O?SS 1,H #I,J #K,N sO,P aQ,R W, , ,^ -	tXl34('           " 
 
 "*'=>>  ?>
 
* "*'=>>  ?>( "*'=>>  ?>>  $ "*'=>>  ?>8 "*'=>>  ?>( 	&(>?@	
QF	1b'  "*'=>>  ?> , 	&(>?@	sCj	3*  "*'=>>  ?> 4      6      " z22/ / 32/d 5$-00  10  &P P P    







	 & & && & && & &  & & &* * *
 
#
	H%
 
f
  dVH%566D D 76 D 
#
	H%
 
f
  dVH%566	D 	D 76 	D6F 6F 6FrD D DD D D     "*'=>>, , ?>, 
a 3 3 3 
a / / /    	 5 5 5= = = 	. 	. 	.  , , , 	
			s
 

, 
,
 

,5 5 549F 9F 9FzN N N  
K K K,E E E6 6 6$  6 6 6.8 8 8&$ $ $
( ( ( r<<<&899	4 	4 :9	4 /E/E/E'FGGI I HGI(C C C
' ' '( ( (: z22)0 )0 32)0\ z22) ) 32)X. . .. . .", , ,= = =D "'23C)DEE  FE "'23C)DEE	 	 FE	   bjllA!,r/@/@!.DE / /	 /  bjllA!,r/@/@!.DE > >	 >(     F F F? ? ?6 	s	b	N+	b!	b!	 	M M	 	M. RWb.>$?@@  A@ t}55

$


	 	9 9	 	 659 KKK % % %. tSk22M M 32M M MrN   