o
    tBh]                     @   s  d Z ddlZddlmZmZ ddlZddlZddl	m
Z
mZmZmZmZ ddlmZmZ ddlmZ ddlmZ ddlmZmZmZmZmZ m!Z! ddl"Z"e"j#dkZ$d	d
 Z%dd Z&edgddd Z'dd Z(edgdd Z)edgdddd Z*edgdddd Z+ej,-ddd  Z.ed!gddd"d# Z/d$d% Z0edgdd&d' Z1d(d) Z2ed*gde$rd+ndd,d-d. Z3d/d0 Z4ed1gddd2d3d4 Z5ed5gd6d7 Z6ed8gd9dd:d;d< Z7edgdd=d> Z8d?d@ Z9dAdB Z:dCdD Z;dEdF Z<edgddGdH Z=dIdJ Z>dKdL Z?edMgd9dNdOdP Z@edQgd9dNdRdS ZAedTgdgdUdVdW ZBedTgdgdUdXdY ZCdZd[ ZDejEFd\d]d^d_ ZGd`da ZHdbdc ZIddde ZJdfdg ZKdhdi ZLdS )jz'
Tests specific to the patches module.
    N)assert_almost_equalassert_array_equal)AnnulusPatchPolygon	RectangleFancyArrowPatch)image_comparisoncheck_figures_equal)Bbox)collectionscolorspatchespath
transformsrcParamswin32c                  C   s   ddgddgddgg} | ddgg }t | dd}t| | ||  t| | t |dd}t| |  || t| |  t | dd}t| |  ||  t| |  t |dd}t| | || t| | d S )Nr      TclosedF)r   r   get_xyset_xy)xyxyclosedp r   t/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/matplotlib/tests/test_patches.pytest_Polygon_close   s$   



r   c            	      C   s   t ddg} d}d}d}t| |||d}t| ||}t j| d }t t |t | gt |t |gg}t || |  j	|  }t
| | d S )N      ?g       @      g      >@angle     f@)npasarrayr   piarraycossininner	get_vertsTr   )	locwidthheightr"   rect1rect2	angle_radrotation_matrix	new_vertsr   r   r   test_rotate_rect9   s   r5   png)
extensionsc           
      C   s   |   }|  }d}d\}}d}t||||d}|| | |ks%J t|||}	|	 dks3J ||	 |	| |	 |ksEJ d S )Nr   r   r   r      r!   r   )add_subplotr   	add_patch	get_angle	set_angle)
fig_testfig_refax_testax_refr-   r.   r/   r"   rect_ref	rect_testr   r   r   test_rotate_rect_drawQ   s   


rE   c                  C   sH   t ddd d d } t ddd d d }tt|dd|  d S )	N)r    r   r8   rF   rG   r   )r   r+   r   r$   roll)pos_verticesneg_verticesr   r   r   test_negative_rectf   s   rL   clip_to_bboxc            	      C   s   t  \} }|ddg |ddg tjd }| jddg9  _| jddg8  _tj	  }| jddg9  _| jdd	g7  _tj
||}tj|d
ddd}|| tddgddgg}||}tj|d
dddd}|| d S )Ni   ijd      
         i      ?coralnone)alpha	facecolor	edgecolorig     `S2   igreen   black)rW   rX   lwrY   )pltsubplotsset_xlimset_ylimmpathPathunit_regular_stardeepcopyverticesunit_circlemake_compound_pathmpatches	PathPatchr<   mtransformsr   rM   )	figaxr   path2combinedpatchbboxresult_pathresult_patchr   r   r   test_clip_to_bboxn   s(   


ru   patch_alpha_coloringT)remove_textc            	      C   s   t jd} t j }t|j| jddd g}t|j| jg}t ||}t |d |}t	 }t
j|gddddd	}|| tj|ddddd
}|| |ddg |ddg dS )z
    Test checks that the patch and collection are rendered with the specified
    alpha values in their facecolor and edgecolor.
       NrH   r   rR   dashdotr   r   r   rT   r   r   r   g      ?	linewidth
linestylesrX   rY   r}   	linestylerX   rY   r   rc   rd   re   rh   r$   concatenaterg   codesr_   axesmcollectionsPathCollectionadd_collectionrj   rk   r<   ra   rb   	starcirclevertsr   	cut_star1	cut_star2rn   colrq   r   r   r   test_patch_alpha_coloring   s*   


r   patch_alpha_overridec            	      C   s   t jd} t j }t|j| jd d d g}t|j| jg}t ||}t |d |}t	 }t
j|gdddddd	}|| tj|dddddd
}|| |ddg |ddg d S )Nrx   rH   r   rR   ry         ?rz   r{   )r}   r~   rW   rX   rY   )r}   r   rW   rX   rY   r   r   r   r   r   r   test_patch_alpha_override   s.   


r   defaultc                  C   s*   t jddddd} |  d dksJ d S )Nr8   r   rV   )rX   rW   r   )r_   Circleget_facecolor)cr   r   r   test_patch_color_none   s   r   patch_custom_linestylec            	      C   s   t jd} t j }t|j| jd d d g}t|j| jg}t ||}t |d |}t	 }t
j|gddgddd}|| tj|ddddd	}|| |dd
g |dd
g d S )Nrx   rH   r   rR   )r   )rR      rQ   r   r   r   r   r   r   r   r|   r   r   r   r   r   r   r   test_patch_custom_linestyle   s*   


r   c            
      C   s   t jd} t j }t|j| jd d d g}t|j| jg}g d}t	 \}}t
|D ]\}}t || |} tj| d|ddd}	||	 q0|d|d g |d|d g |j  d S )	Nrx   rH   )---z-.:soliddashedry   dottedr    r   r   r   r   )rc   rd   re   rh   r$   r   rg   r   r_   r`   	enumeraterj   rk   r<   ra   rb   canvasdraw)
r   r   r   r   r~   rm   rn   ilsrq   r   r   r   test_patch_linestyle_accents   s"   
r   c           	      C   s   t j }|  }| }tg dD ],\}}t |j| |j}tj|d|ddd}|	| tj|ddddd}|	| q|
d|d	 g |d|d	 g |
d|d	 g |d|d	 g d S )
N)rV   None  r    r   r   r   r   rV   rH   r   )rc   rd   rh   r;   r   rg   r   rj   rk   r<   ra   rb   )	r?   r@   r   rA   rB   r   r   r   rq   r   r   r   test_patch_linestyle_none  s*   

r   c                  C   s   dddddd} dd |   D }tjd	i |}|   D ] \}\}}}t|||ks-J t||| t|||ks=J qd S )
N)r8   r9   
set_center)rR   rP   
set_radius)r   r    	set_width)r   r:   
set_theta1)-   rZ   
set_theta2)centerrr.   theta1theta2c                 S   s   i | ]	\}}||d  qS )r   r   ).0kvr   r   r   
<dictcomp>)  s    z'test_wedge_movement.<locals>.<dictcomp>r   )itemsrj   Wedgegetattr)
param_dict	init_argswattrold_vnew_vfuncr   r   r   test_wedge_movement"  s   r   wedge_rangegffffff?)rw   tolc            	   
   C   s   t  } d}ddgddg||d gddgd	d
gddgddgddgddgg	}t|D ]%\}\}}|d }|d }tj|d |d fd||dddd}| | q)| ddg | ddg d S )Ngo͂@g,(J@g 7
m@g,(J@gm7
m@r#   r   h  Z   i  iL   i|  r   .   r    r   rV   r   )rX   rY   r^   rG   rP   	   )r_   r   r   rj   r   
add_artistra   rb   )	rn   t1argsr   r   r   xywedger   r   r   test_wedge_range3  s*   

r   c                  C   s6  t jddd} t| dksJ t jddddd} t| dks J t jddddd} t| d	ks1J t jddddd
d} t| dksCJ t jddddd
dd} d}t| |ksXJ t jddddd} d}t| |kskJ t jdddd} t| dks{J t j	dddd} t| dksJ t j
dddd} t| dksJ tjg ddd}t |} t| dksJ t td } t| d!ksJ ddgddgddgg}t |} t| d"ksJ t j|d#} t| d$d% d&ksJ t dd} t| d'ksJ t ddd(} t| d)ks	J t | dd}t|d*ksJ d$S )+z
    Check that patches have nice and working `str` representation.

    Note that the logic is that `__str__` is defined such that:
    str(eval(str(p))) == str(p)
    r   r   r    )r   radiuszCircle(xy=(1, 2), radius=3)r\   rR   )r   r.   r/   r"   z.Ellipse(xy=(1, 2), width=3, height=4, angle=5)z0Rectangle(xy=(1, 2), width=3, height=4, angle=5)rx   )r   r   r   r   r.   z6Wedge(center=(1, 2), r=3, theta1=4, theta2=5, width=6)r   )r   r.   r/   r"   r   r   z>Arc(xy=(1, 2), width=3, height=4, angle=5, theta1=6, theta2=7))r    r\   r   r   )r   r   r.   r"   z.Annulus(xy=(1, 2), r=(3, 4), width=1, angle=2)rN   )r   z3RegularPolygon((1, 2), 20, radius=5, orientation=0))r   r   
resolutionz.CirclePolygon((1, 2), radius=5, resolution=20))r.   r/   z)FancyBboxPatch((1, 2), width=3, height=4))r   r   r   r   Tr   zPathPatch3((1, 2) ...)r   r   z
Polygon0()zPolygon3((1, 2) ...))r   N   zFancyArrowPatch(Path(array(zFancyArrowPatch((1, 2)->(3, 4))datazConnectionPatch((1, 2), (3, 4))z'Shadow(ConnectionPatch((1, 2), (3, 4))))rj   r   strEllipser   r   Arcr   RegularPolygonCirclePolygonFancyBboxPatchrc   rd   rk   r   r$   emptyr   ConnectionPatchShadow)r   expectedr   r   sr   r   r   test_patch_strP  sH   

r   multi_color_hatch)rw   stylec               	   C   s   t  \} }|tdtdd}t|D ]\}}|d |d| |d q|	  |
d tdD ]/}tjdd|i t|d	 dfd
dddd}W d    n1 s^w   Y  || q9d S )NrR   r   rx   rV   zC{}/Fzhatch.colorg?g?z//)hatchfc)r_   r`   barranger   set_facecolorset_edgecolorformat	set_hatchautoscale_view	autoscalemplr   contextr   r<   )rm   rn   rectsr   rectr   r   r   r   test_multi_color_hatch  s   

r   zunits_rectangle.pngc                  C   s   dd l m  m}  |   td| j d| j fd| j d| j }t \}}|	| |
d| j d| j g |d| j d| j g d S )	Nr   rR   rx   r   r   r\   r   r   )matplotlib.testing.jpl_unitstesting	jpl_unitsregisterrj   r   kmr_   r`   r<   ra   rb   )Ur   rm   rn   r   r   r   test_units_rectangle  s   *
r   zconnection_patch.pngmpl20)r   rw   c               	   C   sl   t dd\} \}}tjdddd||dd}|| d}d	}d
}| }tj||||dd}|| d S )Nr   r   )皙?r  )?r  r   ->)xyAxyBcoordsAcoordsBaxesAaxesB
arrowstyle)g333333?r   )        皙?zaxes fractionr   )r  r  r  r  r
  )r_   r`   rj   r   r   get_yaxis_transform)rm   ax1ax2conr  r  r  r  r   r   r   test_connection_patch  s   

r  c              	   C   s   |  dd\}}tjdd|ddddd	}| | | dd\}}|j}tjd
 tjd< tjdd||jd |jd fdddd	}|| d S )Nr   r   )333333?r  r   )iizfigure pixelsr  rR   )r  r  r  r  r  r
  shrinkBz
figure.dpisavefig.dpir:   rN   )	r`   rj   r   r   rr   r_   r   r.   r/   )r?   r@   r  r  r  bbr   r   r   test_connection_patch_fig  s    
r  c                  C   sX   ddl m } m} | dddddd}|dd}t|df|d}t \}}|| d S )Nr   )datetime	timedelta  r      )seconds)r  r  rj   r   r_   r`   r<   )r  r  startdeltarq   rm   rn   r   r   r   test_datetime_rectangle  s   
r  c                  C   s   ddl m }  | dddddd}| ddd}tt t|df|d W d    n1 s.w   Y  tt td|fd| W d    d S 1 sMw   Y  d S )Nr   r  r  r   i  rR   )r  pytestraises	TypeErrorrj   r   )r  r  dt_deltar   r   r   test_datetime_datetime_fails  s   "r$  c                     s|   t dddd g d}      d tfdd| D }t fdd| D }t||ks<J d S )	NrT   rT   rT   r   r   )r  rT   )r  rT   )r   rT   r%  c                    s   g | ]	}  |qS r   contains_pointr   point)r   r   	transformr   r   
<listcomp>  s    z'test_contains_point.<locals>.<listcomp>c                    s   g | ]}  |qS r   r'  r)  )ellr   r   r,    s    )rj   r   get_pathget_transform_process_radiusr$   r'   all)pointsr   resultr   )r-  r   r   r+  r   test_contains_point  s   
r4  c                  C   s`   t dddd} g d}|  }|  }| d }||||}| |}t||ks.J d S )Nr%  rT   r   r   r&  )rj   r   r.  r/  r0  contains_pointsr$   r1  )r-  r2  r   r+  r   r   r3  r   r   r   test_contains_points   s   

r6  c                 C   s   t ddg}t ddg}dtjd< |  }tj|ddd}tj||d |d	 d
}|| || | }tj|ddd}tj||j	d |  ddt 
t| d t 
t| d dd}|| || d S )Nr  r  r  figurer  rT   )r   r.   r/   r   r   )oxoyH   )r   r.   r/   r   ecrW   )r$   r'   r_   r   r`   rj   r   r   r<   dpir%   mcolorsto_rgbr   )r?   r@   r   dxya1r   shadowa2r   r   r   test_shadow  s$   



rC  c                  C   s:   ddl m }  | ddd}t \}}td|fd|f}d S )Nr   r  i  r   {Gz?)r  r_   r`   r   )r  dtimerm   rn   arrowr   r   r   test_fancyarrow_units%  s   rG  c                  C   s   t  \} }|jdddddddd}tddgdd	gd
dgddgddgdd
gd	dgddgg}t|t|jds<J tddgddgddgddgddgddgddgddgg}|jdddddddd t|t|jdsrJ d S )Nr   rQ   rR   r   rT   )head_length
head_widthr.   gGz+@g33333$@gL#@g\(\$@gp=
ף#@g
ףp=
?g
ףp=
ǿr   g(\µ0@gGz.@g\(\?g(\?   )r   r   dxdyr.   rI  rH  )	r_   r`   rF  r$   r'   allcloseroundr   set_data)rm   rn   rF  	expected1	expected2r   r   r   test_fancyarrow_setdata-  s:   

rR  zlarge_arc.svg)r   c                  C   s   t dd\} \}}d}d}d}||fD ]}tj||f||ddd}|| |  |d q|d	d
 |dd |dd |dd d S )Nr   r      ii  r   )r^   colorequalr   rP   rR   rx   iXiPF  ii  )	r_   r`   rj   r   r<   set_axis_off
set_aspectra   rb   )rm   r  r  r   r   diameterrn   ar   r   r   test_large_arcL  s   
rZ  zall_quadrants_arcs.svgc                  C   sV  t jddddd\} }d}d}d}d}t| |D ]\}\}}d	}	td
d
td f||fD ]J\}
}t||	dD ];\}\}}tj|| |
 || |
 f|| || dd| d| t	t
||d d| d| d	}|| q:|d }	q0|| d |d  || d |d  |jd	dd |jd	dd |  |d qd S )Nr   F)rQ   rQ   )squeezefigsizei ))rH   rH   )rH   r   r9   )r   rH   ))r   r   )r   r   )r   rH   )rH   r   )r   )r   r  )r   rD  )r   gMbP?r   gH.?)r  r\   Cr   r   zbig )r^   rT  zorderr"   labelgidi  r   )rT  rU  )r_   r`   zipravelr$   sqrtr   rj   r   rad2degarctan2r<   ra   rb   axhlineaxvlinerV  rW  )rm   ax_arrscalediag_centerson_axis_centersskewsrn   sxsyr   prescalecentersjx_signy_signrY  r   r   r   test_rotated_arcs`  sB   


rt  annulus)baseline_imagesr7   c               
   C   sV   t  \} }tddddd}tddddd	d
ddd}|| || |d d S )Nr%  r  皙?gr   rT   r  r  r   mbrT   xxxr   r;  rW   r   rU  )r_   r`   r   r<   rW  rm   rn   cirr-  r   r   r   test_annulus  s   


r  c               
   C   s   t  \} }tddddd}tddddd	d
ddd}|| || |d d|_d|_d|_d|_d|_d|_d|_d S )N)r  r  r  rD  rx  ry  r   r  r   r{  r|  rT   r}  r~  rU  r%  rw  rz  r   )	r_   r`   r   r<   rW  r   radiir.   r"   r  r   r   r   test_annulus_setters  s   




r  c                  C   s8   ddg} t | | gj}tt| g j|ksJ d S )Nr   )r   extentsr$   r1  r   get_extents)r*  correct_extentsr   r   r   test_degenerate_polygon  s   "r  kwarg)rY   rX   c                 C   sJ   t jtdd tdddi| di W d    d S 1 sw   Y  d S )NzQSetting the 'color' property will override the edgecolor or facecolor properties.)matchrT  r]   r   )r   warnsUserWarningr   )r  r   r   r   test_color_override_warning  s
   "r  c                  C   s"   t td} |  g ksJ d S )Nr   )r   r$   zerosr+   )polyr   r   r   test_empty_verts  s   r  c                  C   sN   t  } | td   |  td  ksJ | d  |  td ks%J d S )Nzpatch.antialiased)r   set_antialiasedr   get_antialiasedrq   r   r   r   test_default_antialiased  s
   
r  c                  C   s.   t  } | d | d  |  dksJ d S )Nr   r   )r   set_linestyleget_linestyler  r   r   r   test_default_linestyle  s   

r  c                  C      t  } |  dksJ d S )Nbutt)r   get_capstyler  r   r   r   test_default_capstyle     r  c                  C   r  )Nmiter)r   get_joinstyler  r   r   r   test_default_joinstyle  r  r  )M__doc__numpyr$   numpy.testingr   r   r   
matplotlibr   matplotlib.patchesr   r   r   r   r   matplotlib.testing.decoratorsr	   r
   matplotlib.transformsr   matplotlib.pyplotpyplotr_   r   r   r   r=  r   rj   r   rc   r   rl   r   sysplatformon_winr   r5   rE   rL   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r$  r4  r6  rC  rG  rR  rZ  rt  r  r  r  markparametrizer  r  r  r  r  r  r   r   r   r   <module>   s     
#










@








$



