o
    gxS                     @   sn  d Z ddlZddlmZmZ ddlZddl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 m!Z! ddl"Z"e"j#dkZ$d	d
 Z%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! Z.ed"gd#d$d% Z/d&d' Z0ed(gde$rd)ndd*d+d, Z1d-d. Z2ed/gddd0d1d2 Z3ed3gd4d5 Z4ed6gd7dd8d9d: Z5ed"gd#d;d< Z6d=d> Z7d?d@ Z8dAdB Z9dCdD Z:ed"gd#dEdF Z;dGdH Z<edIgd7dJdKdL Z=edMgd7dJdNdO Z>dPdQ Z?ej+@dRdSdTdU ZAdVdW ZBdXdY ZCdZd[ ZDd\d] ZEd^d_ ZFdS )`z'
Tests specific to the patches module.
    N)assert_almost_equalassert_array_equal)PatchPolygon	RectangleFancyArrowPatch)image_comparisoncheck_figures_equal)Bbox)collectionscolorspatchespathstyle
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   [/home/ubuntu/cloudmapper/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_rect7   s   r4   c                  C   sH   t ddd d d } t ddd d d }tt|dd|  d S )	N)r    r   r   r   r5   r6   r   )r   r*   r   r#   roll)pos_verticesneg_verticesr   r   r   test_negative_rectO   s   r<   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)rG   rH   lwrI   )pltsubplotsset_xlimset_ylimmpathPathunit_regular_stardeepcopyverticesunit_circlemake_compound_pathmpatches	PathPatch	add_patchmtransformsr
   r=   )	figaxr   path2combinedpatchbboxresult_pathresult_patchr   r   r   test_clip_to_bboxW   s(   


rf   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|ddddd	}|| tj|g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.
       Nr7   r   rB   dashdotr   r   r   rD   r   r   r   g      ?	linewidth	linestylerH   rI   rn   
linestylesrH   rI   r   rS   rT   rU   rX   r#   concatenaterW   codesrO   axesrZ   r[   r\   mcollectionsPathCollectionadd_collectionrQ   rR   	starcirclevertsrt   	cut_star1	cut_star2r_   rb   colr   r   r   test_patch_alpha_colorings   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|dddddd	}|| tj|gdddddd
}|| |ddg |ddg d S )Nri   r7   r   rB   rj         ?rk   rl   )rn   ro   rG   rH   rI   )rn   rq   rG   rH   rI   r   rr   ry   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   rF   )rH   rG   r   )rO   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|ddddd}|| tj|gddgddd	}|| |dd
g |dd
g d S )Nri   r7   r   rB   )r   )rB      rA   r   r   r   r   r   r   r   rm   rp   r   rr   ry   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 )	Nri   r7   )---z-.:soliddashedrj   dottedr    r   r   rm   r   )rS   rT   rU   rX   r#   rs   rW   rt   rO   rP   	enumeraterZ   r[   r\   rQ   rR   canvasdraw)
rz   r{   r|   rt   rq   r^   r_   ilsrb   r   r   r   test_patch_linestyle_accents   s"   
r   png)
extensionsc           	      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)rF   None  r    r   r   rm   r   rF   r7   r   )rS   rT   rX   add_subplotr   rW   rt   rZ   r[   r\   rQ   rR   )	fig_testfig_refr{   ax_testax_refr   r   r   rb   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   r   r   
set_center)rB   r@   
set_radius)r   r    	set_width)r      
set_theta1)-   rJ   
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   )itemsrZ   Wedgegetattr)
param_dict	init_argswattrold_vnew_vfuncr   r   r   test_wedge_movement  s   r   wedge_rangegffffff?)rh   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   rF   r   )rH   rI   rN   r6   r@   	   )rO   ru   r   rZ   r   
add_artistrQ   rR   )	r_   t1argsr   r   r   xywedger   r   r   test_wedge_range  s*   

r   c                  C   s  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} t| dkshJ t jdddd} t| dksxJ 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sJ 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)rL   rB   )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)ri   )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   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()r   r   zPolygon3((1, 2) ...))r   N   zFancyArrowPatch(Path(array()r    rL   zFancyArrowPatch((1, 2)->(3, 4))datazConnectionPatch((1, 2), (3, 4))z'Shadow(ConnectionPatch((1, 2), (3, 4))))rZ   r   strEllipser   r   ArcRegularPolygonCirclePolygonFancyBboxPatchrS   rT   r[   r   r#   emptyr   ConnectionPatchShadow)r   expectedr   r   sr   r   r   test_patch_str9  sB   

r   multi_color_hatch)rh   r   c               	   C   s   t  \} }|tdtdd}t|D ]\}}|d |d| |d q|	  |
d tdD ].}tdd|i t|d	 dfd
dddd}W d    n1 s]w   Y  || q9d S )NrB   r   ri   rF   zC{}/Fzhatch.colorg?g?z//)hatchfc)rO   rP   barranger   set_facecolorset_edgecolorformat	set_hatchautoscale_view	autoscalemstylecontextr   r\   )r^   r_   rectsr   rectr   r   r   r   test_multi_color_hatchu  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   rB   ri   r   r   rL   r   r   )matplotlib.testing.jpl_unitstesting	jpl_unitsregisterrZ   r   kmrO   rP   r\   rQ   rR   )Ur   r^   r_   r   r   r   test_units_rectangle  s   *
r   zconnection_patch.pngmpl20)r   rh   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  )rO   rP   rZ   r   r   get_yaxis_transform)r^   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   rB   )r   r   r  r   r   r  shrinkBz
figure.dpisavefig.dpir   r>   )	rP   rZ   r   r   rc   rO   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  rZ   r   rO   rP   r\   )r  r  startdeltarb   r^   r_   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  rB   )r  pytestraises	TypeErrorrZ   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rD   rD   rD   r   r   )r  rD   )r  rD   )r   rD   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    )rZ   r   get_pathget_transform_process_radiusr#   r&   all)pointsr   resultr   )r&  r   r   r$  r   test_contains_point  s   
r-  c                  C   s`   t dddd} g d}|  }|  }| d }||||}| |}t||ks.J d S )Nr  rD   r   r   r  )rZ   r   r'  r(  r)  contains_pointsr#   r*  )r&  r+  r   r$  r   r   r,  r   r   r   test_contains_points  s   

r/  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  rD   )r   r-   r.   r   r   )oxoyH   )r   r-   r.   r   ecrG   )r#   r&   rO   r   rP   rZ   r   r   r\   dpir$   mcolorsto_rgbr   )r   r   r   dxya1r   shadowa2r   r   r   test_shadow  s$   



r<  c                  C   sD   ddl m }  | ddd}t \}}td|fd|f}|| d S )Nr   r  i  r   {Gz?)r  rO   rP   r   r\   )r  dtimer^   r_   arrowr   r   r   test_fancyarrow_units
  s
   r@  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   )rN   colorequalr   r@   rB   ri   iXiPF  ii  )	rO   rP   rZ   r   r\   set_axis_off
set_aspectrQ   rR   )r^   r  r  r   r   diameterr_   ar   r   r   test_large_arc  s   
rH  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)rA   rA   )squeezefigsizei ))r7   r7   )r7   r   r   )r   r7   ))r   r   )r   r   )r   r7   )r7   r   )r   )r   r   )r   r=  )r   gMbP?r   gH.?)r  rL   Cr   r   zbig )rN   rB  zorderr!   labelgidi  r   )rB  rC  )rO   rP   zipravelr#   sqrtr   rZ   r   rad2degarctan2r\   rQ   rR   axhlineaxvlinerD  rE  )r^   ax_arrscalediag_centerson_axis_centersskewsr_   sxsyr   prescalecentersjx_signy_signrG  r   r   r   test_rotated_arcs'  sB   


rb  c                  C   s8   ddg} t | | gj}tt| g j|ksJ d S )Nr   )r
   extentsr#   r*  r   get_extents)r#  correct_extentsr   r   r   test_degenerate_polygonL  s   "rf  kwarg)rI   rH   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.)matchrB  rM   r   )r  warnsUserWarningr   )rg  r   r   r   test_color_override_warningR  s
   "rk  c                  C   s"   t td} |  g ksJ d S )Nr   )r   r#   zerosr*   )polyr   r   r   test_empty_vertsZ  s   rn  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rb   r   r   r   test_default_antialiased_  s
   
rr  c                  C   s.   t  } | d | d  |  dksJ d S )Nr   r   )r   set_linestyleget_linestylerq  r   r   r   test_default_linestylei  s   

ru  c                  C      t  } |  dksJ d S )Nbutt)r   get_capstylerq  r   r   r   test_default_capstylep     ry  c                  C   rv  )Nmiter)r   get_joinstylerq  r   r   r   test_default_joinstyleu  rz  r}  )G__doc__numpyr#   numpy.testingr   r   r  matplotlib.patchesr   r   r   r   matplotlib.testing.decoratorsr   r	   matplotlib.transformsr
   matplotlib.pyplotpyplotrO   
matplotlibr   rv   r   r6  r   rZ   r   rS   r   r   r   r]   r   sysplatformon_winr   r4   r<   rf   r   r   markr   r   r   r   r   r   r   r   r   r
  r  r  r  r-  r/  r<  r@  rH  rb  rf  parametrizerk  rn  rr  ru  ry  r}  r   r   r   r   <module>   st    $
#








<






	

$

