o
    iz                     @   sv  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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*dd Z+dd Z,edgddd Z-edgddd Z.dd Z/edgdd Z0edgdddd  Z1ed!gddd"d# Z2ej34d$d%d& Z5ed'gddd(d) Z6d*d+ Z7edgdd,d- Z8d.d/ Z9ed0gde(rd1ndd2d3d4 Z:d5d6 Z;ed7gdd$d8d9d: Z<ed;gd<d= Z=ed>gd?dd@dAdB Z>edgddCdD Z?dEdF Z@dGdH ZAdIdJ ZBdKdL ZCedgddMdN ZDdOdP ZEdQdR ZFedSgd?dTdUdV ZGedWgd?dTdXdY ZHdZd[ ZIejJKd\d]d^d_ ZLed`gdgdadbdc ZMed`gdgdaddde ZNed`gdgdadfdg ZOdhdi ZPejJKdjdkdldm ZQdndo ZRdpdq ZSdrds ZTdtdu ZUdvdw ZVedxgddygd?ddzd{d| ZWeg d}dd~d ZXeg d}ddd ZYdS )z'
Tests specific to the patches module.
    N)assert_almost_equalassert_array_equal)	AnnulusEllipsePatchPolygon	RectangleFancyArrowPatch
FancyArrowBoxStyleArc)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}| sJ t| | ||  t| | t |dd}t| |  || t| |  t | dd}| rVJ t| |  ||  t| |  t |dd}t| | || t| | d S )Nr      TclosedF)r   Z
get_closedr   Zget_xyZset_xy)xyZxyclosedp r   l/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/matplotlib/tests/test_patches.pytest_Polygon_close   s(   



r   c            	      C   sV  ddg} d}d}d}t | ||}t| | t| d d}|d t| | t| d	 d
}t jg | t	|R  }|
|}|| t| | | d |d  | d |d  g} t| ||}t| | d}|d t| | t| |  d
}t jg | t	|R  }|
|}|| t| | d S )N
      r      )r   r    )   r    )r#      )r   r$   )g      %@   )r"   )r   r%   )   r%   )r&   r    Z   )	        4@!   r   ))      '@r)   )r+        5@)      #@r,   )r-   r)   )r   r   Zget_cornersZ
get_center	set_anglemtransformsZAffine2DZrotate_aroundnpZdeg2rad	transformr   r   )	locwidthheightZcornersrectZcorners_rotthetatellipser   r   r   test_corner_center;   s<   





r9   c               	   C   s  t ddddd} t|  ddg t|  ddg t ddddd} t|  | jd | jd td	  | jd | jd  f| jd | jd td	  | jd | jd  fg t|  | jd | jd  | jd | jd td	  f| jd | jd  | jd | jd td	  fg t	|  \}}tj
|| d | j t	|  \}}tj
|| d | j t d
dddd} t	|  \}}tj
|| d | j t	|  \}}tj
|| d | j d S )Nr   r   r   r   r3   r4   angle        r>   r!   r            )gjt@g+η%gQ@gGz?gR1Q@)r   r   Zget_verticesZget_co_verticescenterr3   r0   sqrtr4   arraytesting)r8   Zv1Zv2r   r   r   test_ellipse_verticesk   sN   rF   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       @r!   rA   g      >@r<        f@)r0   asarrayr   pirD   cossininner	get_vertsTr   )	r2   r3   r4   r<   Zrect1Zrect2Z	angle_radZrotation_matrixZ	new_vertsr   r   r   test_rotate_rect   s   rQ   png)
extensionsc           
      C   s   |   }|  }d}d\}}d}t||||d}|| | |ks%J t|||}	|	 dks3J ||	 |	| |	 |ksEJ d S )Nr:   r   r   r?   rH   r   )add_subplotr   	add_patchZ	get_angler.   )
fig_testfig_refax_testax_refr2   r3   r4   r<   rect_ref	rect_testr   r   r   test_rotate_rect_draw   s   


r]   c              	   C   s  |   }|  }d}d\}}t|||dddddgfd}t|||dddg d	fd}| dddgfks6J | dg d	fksBJ || || t|||dddddgfd}	t|||dddddgfd}
|	 dddgfkstJ |
 dddgfksJ ||	 ||
 d S )
N皙?r_   )皙?r`   rA   br      )	linewidth	edgecolor	linestyler)r   rb   rb   r   )rU   r   get_linestylerV   )rW   rX   rY   rZ   r2   r3   r4   r[   Z	rect_ref2r\   Z
rect_test2r   r   r   test_dash_offset_patch_draw   s0   






rh   c                  C   sH   t ddd d d } t ddd d d }tt|dd|  d S )	N)rA   r!   r:   ri   rj   r   )r   rO   r   r0   Zroll)Zpos_verticesZneg_verticesr   r   r   test_negative_rect   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 )Nir    ijd   r&   r         i      ?Zcoralnone)alpha	facecolorrd   ig     `S2   igreenr@   black)rs   rt   lwrd   )pltsubplotsset_xlimset_ylimmpathPathunit_regular_stardeepcopyverticesunit_circleZmake_compound_pathmpatches	PathPatchrV   r/   r   rm   )	figaxr   Zpath2combinedpatchbboxresult_pathZresult_patchr   r   r   test_clip_to_bbox   s(   


r   Z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 |dd dS )z
    Test checks that the patch and collection are rendered with the specified
    alpha values in their facecolor and edgecolor.
    rb   Nrk   r   ro   dashdotr   r   r   rq   r   r   r   g      ?rc   
linestylesrt   rd   rc   re   rt   rd   r!   r}   r~   r   r   r0   concatenater   codesry   axesmcollectionsZPathCollectionadd_collectionr   r   rV   r{   r|   	starcirclevertsr   Z	cut_star1Z	cut_star2r   colr   r   r   r   test_patch_alpha_coloring  s*   


r   Z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 |dd d S )Nrb   rk   r   ro   r         ?r   r   )rc   r   rs   rt   rd   )rc   re   rs   rt   rd   r!   r   r   r   r   r   test_patch_alpha_override0  s.   


r   defaultc                  C   s*   t jddddd} |  d dksJ d S )Nr:   r   rr   )rt   rs   r   )ry   Circleget_facecolor)cr   r   r   test_patch_color_noneP  s   r   Z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
 |dd
 d S )Nrb   rk   r   ro   )r   )ro      r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r   test_patch_custom_linestyleX  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 )	Nrb   rk   )---z-.:solidZdashedr   ZdottedrA   r   r   r   r   )r}   r~   r   r   r0   r   r   r   ry   rz   	enumerater   r   rV   r{   r|   ZcanvasZdraw)
r   r   r   r   r   r   r   ilsr   r   r   r   test_patch_linestyle_accentsu  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)rr   None  rA   r   r   r   r   rr   rk   r   )r}   r~   r   rU   r   r   r   r   r   rV   r{   r|   )	rW   rX   r   rY   rZ   r   r   r   r   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)r:   rT   Z
set_center)ro   r&   Z
set_radius)r!   rA   	set_width)r   r?   Z
set_theta1)-   ru   Z
set_theta2)rB   rf   r3   theta1theta2c                 S   s   i | ]	\}}||d  qS )r   r   ).0kvr   r   r   
<dictcomp>  s    z'test_wedge_movement.<locals>.<dictcomp>r   )itemsr   Wedgegetattr)Z
param_dictZ	init_argswattrold_vnew_vfuncr   r   r   test_wedge_movement  s   r   Zwedge_rangegffffff?)r   Z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 | dd d S )Ngo͂@g,(J@g 7
m@g,(J@gm7
m@rI   r   h  r'   i  iL   i|  r   .   rA   r   rr   r   )rt   rd   rx   rj   r&   r(   )ry   r   r   r   r   
add_artistr{   r|   )	r   t1argsr   r   r   xyZwedger   r   r   test_wedge_range  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!   rA   )r   radiuszCircle(xy=(1, 2), radius=3)r@   ro   r;   z.Ellipse(xy=(1, 2), width=3, height=4, angle=5)z0Rectangle(xy=(1, 2), width=3, height=4, angle=5)rb   )rB   rf   r   r   r3   z6Wedge(center=(1, 2), r=3, theta1=4, theta2=5, width=6)r   )r   r3   r4   r<   r   r   z>Arc(xy=(1, 2), width=3, height=4, angle=5, theta1=6, theta2=7))rA   r@   r   r!   )r   rf   r3   r<   z.Annulus(xy=(1, 2), r=(3, 4), width=1, angle=2)r    )r   z3RegularPolygon((1, 2), 20, radius=5, orientation=0))r   r   
resolutionz.CirclePolygon((1, 2), radius=5, resolution=20))r3   r4   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))))r   r   strr   r   r   r   r   ZRegularPolygonZCirclePolygonZFancyBboxPatchr}   r~   r   r   r0   emptyr	   ConnectionPatchShadow)r   expectedr   r   sr   r   r   test_patch_str  sH   

r   Zmulti_color_hatch)r   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 )Nro   r   rb   rr   C/Fzhatch.colorg?r`   z//)hatchfc)ry   rz   barranger   Zset_facecolorZset_edgecolorZ	set_hatchZautoscale_view	autoscalemplr   contextr   rV   )r   r   Zrectsr   r5   rf   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   ro   rb   r   r!   r@   r   r(   )Zmatplotlib.testing.jpl_unitsrE   Z	jpl_unitsregisterr   r   kmry   rz   rV   r{   r|   )Ur   r   r   r   r   r   test_units_rectangle*  s   *
r   zconnection_patch.pngZmpl20)r   r   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axesAZaxesB
arrowstyle)g333333?rG   )r>   皙?zaxes fractionr   )r   r   r   r   r   )ry   rz   r   r   r   Zget_yaxis_transform)r   ax1ax2conr   r   r   r   r   r   r   test_connection_patch7  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   ro   )r   r   r   r   r   r   ZshrinkBz
figure.dpisavefig.dpir?   r    )	rz   r   r   r   r   ry   r   r3   r4   )rW   rX   r   r   r   Zbbr   r   r   test_connection_patch_figJ  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   r   r   ry   rz   rV   )r   r   startdeltar   r   r   r   r   r   test_datetime_rectanglea  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  ro   )r   pytestraises	TypeErrorr   r   )r   r  Zdt_deltar   r   r   test_datetime_datetime_failsm  s   "r	  c                     sz   t ddd g d}      d tfdd| D }t fdd| D }t||ks;J d S )Nrq   rq   rq   rG   )r>   rq   )r   rq   )r   rq   r
  c                    s   g | ]	}  |qS r   Zcontains_pointr   point)r   r   r1   r   r   
<listcomp>  s    z'test_contains_point.<locals>.<listcomp>c                    s   g | ]}  |qS r   r  r  )ellr   r   r    s    )r   r   get_pathget_transform_process_radiusr0   rD   all)pointsr   resultr   )r  r   r   r1   r   test_contains_pointz  s   
r  c                  C   s^   t ddd} g d}|  }|  }| d }||||}| |}t||ks-J d S )Nr
  rq   rG   r  )r   r   r  r  r  Zcontains_pointsr0   r  )r  r  r   r1   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_   Zfigurer   rq   )r   r3   r4   r   r   )oxZoyH   )r   r3   r4   r   ecrs   )r0   rD   ry   r   rz   r   r   r   rV   ZdpirJ   mcolorsZto_rgbr   )rW   rX   r   ZdxyZa1r5   ZshadowZa2r   r   r   test_shadow  s$   



r  c                  C   s:   ddl m }  | ddd}t \}}td|fd|f}d S )Nr   r  i  r   {Gz?)r   ry   rz   r	   )r   Zdtimer   r   arrowr   r   r   test_fancyarrow_units  s   r   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   r   ro   r   rq   )head_length
head_widthr3   gGz+@g33333$@gL#@g\(\$@gp=
ף#@g
ףp=
?g
ףp=
ǿr!   g(\µ0@gGz.@g\(\?g(\?   )r   r   ZdxZdyr3   r"  r!  )	ry   rz   r  r0   rD   Zallcloseroundr   set_data)r   r   r  Z	expected1Z	expected2r   r   r   test_fancyarrow_setdata  s:   

r&  zlarge_arc.svg)r   c                  C   s   t dd\} \}}d}d}d}||fD ]}t||f||ddd}|| |  |d q|d	d
 |dd |dd |dd d S )Nr   r!      ii  r   )rx   colorequalr   r&   ro   rb   iXiPF  ii  )ry   rz   r   rV   set_axis_off
set_aspectr{   r|   )r   r   r   r   r   Zdiameterr   ar   r   r   test_large_arc  s   
r-  zall_quadrants_arcs.svgc                  C   sT  t jddddd\} }d}d}d}d}t| |D ]\}\}}d	}	td
d
td f||fD ]I\}
}t||	dD ]:\}\}}t|| |
 || |
 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)r   r   )Zsqueezefigsizei ))rk   rk   )rk   r   rT   )r   rk   ))r   r   )r   r   )r   rk   )rk   r   )r   )r!   r_   )r!   r  )r!   gMbP?r   gH.?)r  r@   r   r   r   zbig )rx   r(  Zzorderr<   labelgidi  r   )r(  r)  )ry   rz   zipZravelr0   rC   r   r   Zrad2degZarctan2rV   r{   r|   ZaxhlineZaxvliner*  r+  )r   Zax_arrscaleZdiag_centersZon_axis_centersZskewsr   sxZsyr   ZprescaleZcentersjZx_signZy_signr,  r   r   r   test_rotated_arcs  sB   


r5  c                   C   sF   t jtdd tdddddd W d    d S 1 sw   Y  d S )NzGot unknown shape: 'foo'matchr   r   foo)shape)r  r  
ValueErrorr
   r   r   r   r   test_fancyarrow_shape_error  s   "r;  z
fmt, match))r8  zUnknown style: 'foo')z	Round,fooz%Incorrect style argument: 'Round,foo'c                 C   s<   t jt|d t|  W d    d S 1 sw   Y  d S )Nr6  )r  r  r:  r   )fmtr7  r   r   r   test_boxstyle_errors  s   
"r=  Zannulus)Zbaseline_imagesrS   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   rq   r   r_   r   mra   rq   xxxr   r  rs   r   r)  )ry   rz   r   rV   r+  r   r   Zcirr  r   r   r   test_annulus  s   


rF  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 )Nr=   r   r  r?  r@  r   r_   r   rB  ra   rq   rC  rD  r)  r
  r>  rA  r   )	ry   rz   r   rV   r+  rB   radiir3   r<   rE  r   r   r   test_annulus_setters&  s   




rH  c               
   C   s   t  \} }tddddd}tddddd	d
ddd}|| || |d d|_|d |d |jdks=J d|_	d|_|d |d |jdksTJ d|_	d|_
d S )Nr=   r   r  r?  r@  r   r_   r   rB  ra   rq   rC  rD  r)  r
  )r   r   r>  r   rA  r   )ry   rz   r   rV   r+  rB   Zset_semimajorZset_semiminorrG  r3   r<   rE  r   r   r   test_annulus_setters2;  s&   








rI  c                  C   s8   ddg} t | | gj}tt| g j|ksJ d S )Nr   )r   Zextentsr0   r  r   Zget_extents)r  Zcorrect_extentsr   r   r   test_degenerate_polygonT  s   "rJ  kwarg)rd   rt   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.r6  r(  rw   r   )r  ZwarnsUserWarningr   )rK  r   r   r   test_color_override_warningZ  s
   "rM  c                  C   s"   t td} |  g ksJ d S )Nr   )r   r0   ZzerosrO   )Zpolyr   r   r   test_empty_vertsb  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   Zset_antialiasedr   Zget_antialiasedr   r   r   r   test_default_antialiasedg  s
   
rP  c                  C   s.   t  } | d | d  |  dksJ d S )Nr   r   )r   Zset_linestylerg   rO  r   r   r   test_default_linestyleq  s   

rQ  c                  C      t  } |  dksJ d S )NZbutt)r   Zget_capstylerO  r   r   r   test_default_capstylex     rS  c                  C   rR  )NZmiter)r   Zget_joinstylerO  r   r   r   test_default_joinstyle}  rT  rU  Zautoscale_arcsvg)rS   r   r   c                  C   s   t jdddd\} }tddddddgtd	d
ddddgtd	d
ddddtd	dddddtd	dddddtd	dddddgf}t||D ]\}}|D ]}|| qJ|  qDd S )Nr   rA   )r@   r   )r.  r:   r   r'   )r   r   r
        ?rq   r   r    g      @n   x   g      @r'     g      @i6  i@  )ry   rz   r   r1  rV   r   )r   ZaxsZ	arc_listsr   Zarcsarcr   r   r   test_autoscale_arc  s   
r\  )rR   rV  ZpdfZepsc                 C   sb   t ddgdddddd}t ddgdddddd}tj|gddd	}| | |  | d S )
Nrq   r   r   <   r    r   r   r<   rr   r   )r   Z
facecolorsZ
edgecolors)r   r   ZPatchCollectionrz   rV   r   )rW   rX   arc1arc2r   r   r   r   test_arc_in_collection  s   
ra  c                 C   sd   t ddgdddddd}t ddgdddddd}| | |  | |d |d d S )	Nrq   r   r   r]  r    r^  rW  r   )r   rz   rV   r   r.   )rW   rX   r_  r`  r   r   r   test_modifying_arc  s   
rb  )Z__doc__numpyr0   Znumpy.testingr   r   r  Z
matplotlibr   Zmatplotlib.patchesr   r   r   r   r   r	   r
   r   r   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.transformsr   Zmatplotlib.pyplotZpyplotry   r   r   r   r  r   r   r   r}   r   r/   r   sysplatformZon_winr   r9   rF   rQ   r]   rh   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r   r&  r-  r5  r;  markZparametrizer=  rF  rH  rI  rJ  rM  rN  rP  rQ  rS  rU  r\  ra  rb  r   r   r   r   <module>   s    , 
%03



!








@








$







	