o
    ä¸GfD  ã                   @   s   d dl Z d dlmZ d dlZd dlZd dlmZ d dl	m
Z d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ  d dl!Z"d dl#m$Z$m%Z% dd„ Z&dd„ Z'e%dgd	d
dd„ ƒZ(e$dgddd„ ƒZ)dd„ Z*e%dgd	dddd„ ƒZ+dd„ Z,e%dgd	dddd„ ƒZ-dd„ Z.dd „ Z/d!d"„ Z0ej1 2d#g d$¢¡d%d&„ ƒZ3d'd(„ Z4d)d*„ Z5d+d,„ Z6d-d.„ Z7d/d0„ Z8d1d2„ Z9d3d4„ Z:d5d6„ Z;d7d8„ Z<dS )9é    N)Úchain)Úcheck_figures_equalÚimage_comparisonc                  C   s2  t  ¡ } |  dd¡ |  dd¡ d}| j |¡}tj|ddddd}|  |¡ |j	| jks/J ‚tj|dddd dd	}| 
¡ s@J ‚|  |¡ t|j	tjƒsNJ ‚tj|d
d
t ¡ dd}|  |¡ t|j	tjƒshJ ‚tj|ddddd}| ¡ }| 
¡ r|J ‚|  |¡ | ¡ |ks‰J ‚| 
¡ sJ ‚|j	| jks—J ‚d S )Né   é   ©é   r   Úyellowç      à?)ÚwidthÚheightÚfcÚalphaéx   Úcoral)r   r   r   Ú	transformr   éd   )r   r   r   r   )ÚpltÚaxesÚset_xlimÚset_ylimÚ	transDatar   ÚmpatchesÚEllipseÚ	add_patchZ
_transformZis_transform_setÚ
isinstanceÚmtransformsÚIdentityTransformÚget_transform)ÚaxÚxy_dataÚxy_pixÚeZintermediate_transform© r#   ú<lib/python3.10/site-packages/matplotlib/tests/test_artist.pyÚtest_patch_transform_of_none   s8   
ÿ

ÿ
ÿ
r%   c                  C   s  t  ¡ } |  dd¡ |  dd¡ d}| j |¡}tj|ddd}tj	|gddd}|  
|¡ | ¡ | ¡  | jks;J ‚tj|ddd}tj	|gd	dd}| d ¡ |  
|¡ t| ¡ tjƒs`J ‚tj|d
d
d}tj	|gt ¡ dd}|  
|¡ t| ¡ tjƒs‚J ‚d S )Nr   r   r   )r   r   r	   r
   )Ú	facecolorr   r   r   r   )r   r   )r   r   r   r   r   r   r   r   ÚmcollectionsZPatchCollectionÚadd_collectionZget_offset_transformr   Zset_transformr   r   r   )r   r    r!   r"   Úcr#   r#   r$   Ú!test_collection_transform_of_none?   s.   

ÿ

þ
r*   Zclip_path_clippingT)Úremove_textc            	      C   s  t j ¡  ¡ } |  jd9  _|  jd8  _t j ¡  ¡ }|jd d d… |_t j | |¡}t j d¡ ¡ }| jd9  _tj	ddddd\}\}}t
j|gd	d
dddd}| ||j¡ | |¡ tj|d	d
dddd}| ||j¡ | |¡ | ddg¡ | ddg¡ d S )Né   r   éÿÿÿÿé   gÍÌÌÌÌÌ@r   T)ZsharexZshareyé   ZblueZredgffffffæ?Ú*)ÚlwÚ	edgecolorr&   r   Úhatchéýÿÿÿr   )ÚmpathÚPathZunit_rectangleZdeepcopyZverticesZunit_circleZmake_compound_pathZunit_regular_starr   Úsubplotsr'   ZPathCollectionÚset_clip_pathr   r(   r   Ú	PathPatchr   r   r   )	ZexteriorZinteriorZ	clip_pathZstarÚfigÚax1Úax2ÚcolZpatchr#   r#   r$   Útest_clippingc   s*   ÿ
ÿ
r>   Zpng)Ú
extensionsc                 C   s¨   |   g d¢¡}| ddgddg¡\}t ddgddgddgddgddgg¡}tj||jd}| |¡ |  g d¢¡}| ddgddg¡ |jddd |jddd d S )	N)r   r   r   r   r4   r   r   r   )r   )r
   g      è?)ZxlimZylim)	Zadd_axesÚplotr5   r6   r   r9   r   r8   Úset)Zfig_testZfig_refZax_testÚlÚpZax_refr#   r#   r$   Útest_clipping_zoom   s   (
rD   c                  C   s–   t j d¡} t j d¡}t ¡ \}}| | |d¡ | dd¡ t ¡ }|j|dd t	| 
¡ ƒdk s4J ‚t ¡ }|j|dd t	| 
¡ ƒdk sIJ ‚d S )	Ni N  zk.r   r   Úpdf)Úformati@  Úsvg)ÚnpZrandomr   r7   r@   r   ÚioÚBytesIOZsavefigÚlenÚgetvalue)ÚxÚyr:   r   rE   rG   r#   r#   r$   Útest_cull_markers’   s   rO   ZhatchingÚdefault)r+   Zstylec                  C   s°   t  dd¡\} }tjddddd}| |¡ tjddgdg|jdd	}| |¡ tjd
ddddd}| |¡ tjddgdg|jddd}| |¡ | 	dd¡ | 
dd¡ d S )Nr   ©r   r   r   r,   ú/)r3   i€>  )g      ø?ç      @)ÚsizesÚoffsetsÚoffset_transformr3   )r,   r   ZC1)r3   r2   )g      @rS   )rT   rU   rV   r3   r2   r   é   é	   )r   r7   r   Z	Rectangler   r'   ZRegularPolyCollectionr   r(   r   r   )r:   r   Zrect1Zrect2Zrect3Zrect4r#   r#   r$   Útest_hatching£   s"   
þ

þ
rY   c                  C   sú   t  ¡ \} }| t d¡ dd¡¡}| tdƒ¡\}| jsJ ‚|js$J ‚| j	 
¡  | jr.J ‚|jr3J ‚|jr8J ‚||jv s?J ‚||jvsFJ ‚|j|u sMJ ‚| ¡  | ¡  ||fD ]}|jd u sbJ ‚|jd u siJ ‚qY||jvsqJ ‚| jsvJ ‚|js{J ‚d S )Né$   r.   r/   )r   r7   ÚimshowrH   ÚarangeZreshaper@   ÚrangeZstaleZcanvasÚdrawZ_mouseover_setr   ÚremoveZfigure)r:   r   ZimÚlnÚartr#   r#   r$   Útest_remove½   s(   






rb   zdefault_edges.pngc               	   C   sä   dt jd< t  dd¡\} \\}}\}}| t d¡t d¡dt d¡d t d¡d¡ |jt d¡t d¡dd	 |jd
d
ddtddd | 	d¡ | 
d¡ tjt g d¢tjjtjjtjjtjjg¡d|jd}| |¡ d S )Nr.   ztext.kerning_factorr   é
   rM   r   ÚoZedge)Zalignr   ZBOXé   Zsawtooth)Zboxstyle)ÚsizeZbbox)r-   r   )rQ   ©r   r   ©r   r   rQ   Znone)r   r   )r   ZrcParamsr7   r@   rH   r\   ZbarÚtextÚdictr   r   r   r9   r5   r6   ZMOVETOZCURVE3Z	CLOSEPOLYr   r   )r:   r;   r<   Zax3Zax4Zpp1r#   r#   r$   Útest_default_edgesÚ   s$   
ÿ


ÿÿürk   c                  C   s   t  g g ¡} |  ¡  d S ©N)ÚmlinesÚLine2DZ
properties)r`   r#   r#   r$   Útest_propertiesï   s   ro   c                  C   s’   t  g ¡ t  g g¡ t  ¡ \} }| tdƒ¡}| tdƒ¡}t t||ƒdd¡ t j|j ¡ dd t	 
¡ }t j|d|d | ¡ dksGJ ‚d S )	Nr   r1   r/   Zgreen)ZcolorÚzorder)Úfilez  zorder: float
)r   Zsetpr7   r@   r]   Úmartistr   ZspinesÚvaluesrI   ÚStringIOrL   )r:   r   Zlines1Zlines2Zsior#   r#   r$   Ú	test_setpô   s   
ru   c                  C   sp   t  ¡ \} }|jtdƒd d\}| ¡ tjjksJ ‚| d¡ | ¡ dks'J ‚| d ¡ | ¡ tjjks6J ‚d S )Nr/   )rp   i@â )	r   r7   r@   r]   Z
get_zorderrm   rn   rp   Ú
set_zorder)r:   r   r`   r#   r#   r$   Útest_None_zorder  s   

rw   zaccept_clause, expected))Ú Úunknown)zACCEPTS: [ '-' | '--' | '-.' ]z[ '-' | '--' | '-.' ])zACCEPTS: Some description.úSome description.)z.. ACCEPTS: Some description.rz   )z	arg : intÚint)z
*arg : intr{   )z"arg : int
ACCEPTS: Something else.zSomething else. c                 C   s>   G dd„ dt jƒ}d|  |j_t  |¡ d¡}||ksJ ‚d S )Nc                   @   ó   e Zd Zdd„ ZdS )z:test_artist_inspector_get_valid_values.<locals>.TestArtistc                 S   ó   d S rl   r#   )ÚselfÚargr#   r#   r$   Úset_f  ó   z@test_artist_inspector_get_valid_values.<locals>.TestArtist.set_fN)Ú__name__Ú
__module__Ú__qualname__r€   r#   r#   r#   r$   Ú
TestArtist  ó    r…   z
    Some text.

    %s
    Úf)rr   ÚArtistr€   Ú__doc__ÚArtistInspectorZget_valid_values)Zaccept_clauseZexpectedr…   Zvalid_valuesr#   r#   r$   Ú&test_artist_inspector_get_valid_values  s   
ür‹   c                  C   s*   t  tj¡} |  ¡ }|d dhksJ ‚d S )NZ	linewidthr1   )rr   rŠ   rm   rn   Zget_aliases)ZaiÚaliasesr#   r#   r$   Ú!test_artist_inspector_get_aliases'  s   r   c                  C   sô   t  ¡ } tjtdd |  d¡ W d   ƒ n1 sw   Y  tjtdd |  g d¢¡ W d   ƒ n1 s9w   Y  tjtdd |  d¡ W d   ƒ n1 sUw   Y  tjtdd |  tj¡ W d   ƒ d S 1 ssw   Y  d S )Nú^alpha must be numeric or None©ÚmatchÚstring)r   r   r   úoutside 0-1 rangeçš™™™™™ñ?)	rr   rˆ   ÚpytestÚraisesÚ	TypeErrorZ	set_alphaÚ
ValueErrorrH   Únan©ra   r#   r#   r$   Útest_set_alpha.  s   ÿÿÿ"ÿrš   c                  C   s2  t  ¡ } tjtdd |  d¡ W d   ƒ n1 sw   Y  tjtdd |  d¡ W d   ƒ n1 s7w   Y  tjtdd |  tj¡ W d   ƒ n1 sTw   Y  tjtdd |  ddg¡ W d   ƒ n1 srw   Y  tjtdd |  dtjg¡ W d   ƒ d S 1 s’w   Y  d S )NrŽ   r   r‘   r’   r“   zalpha must be between 0 and 1r
   )	rr   rˆ   r”   r•   r–   Z_set_alpha_for_arrayr—   rH   r˜   r™   r#   r#   r$   Útest_set_alpha_for_array:  s    ÿÿÿÿ"ÿr›   c                     s„   ‡ fdd„‰ dˆ _ t ¡ } |  ˆ ¡}ˆ j dksJ ‚|  ¡  ˆ j dks$J ‚|  d¡ ˆ j dks0J ‚|  |¡ |  ¡  ˆ j dks@J ‚d S )Nc                    s   ˆ  j d7  _ d S )Nr   )Úcounter)Úartist©Úfuncr#   r$   rŸ   I  s   ztest_callbacks.<locals>.funcr   r   rc   r   )rœ   rr   rˆ   Zadd_callbackZpchangedrv   Zremove_callback)ra   Zoidr#   rž   r$   Útest_callbacksH  s   


r    c                  C   sv   G dd„ dt jƒ} t| jdƒsJ ‚d| jjv sJ ‚G dd„ d| ƒ}t|jdƒs)J ‚d|jjv s1J ‚d|jjv s9J ‚dS )	z3Test autogenerated ``set()`` for Artist subclasses.c                   @   r|   )z%test_set_signature.<locals>.MyArtist1c                 S   r}   rl   r#   ©r~   Úvalr#   r#   r$   Úset_myparam1]  r   z2test_set_signature.<locals>.MyArtist1.set_myparam1N)r‚   rƒ   r„   r£   r#   r#   r#   r$   Ú	MyArtist1\  r†   r¤   Ú_autogenerated_signatureZmyparam1c                   @   r|   )z%test_set_signature.<locals>.MyArtist2c                 S   r}   rl   r#   r¡   r#   r#   r$   Úset_myparam2d  r   z2test_set_signature.<locals>.MyArtist2.set_myparam2N)r‚   rƒ   r„   r¦   r#   r#   r#   r$   Ú	MyArtist2c  r†   r§   Zmyparam2N©rr   rˆ   ÚhasattrrA   r‰   )r¤   r§   r#   r#   r$   Útest_set_signatureZ  s   rª   c                  C   sV   G dd„ dt jƒ} t| jdƒrJ ‚| jjdksJ ‚G dd„ d| ƒ}|j| ju s)J ‚dS )z=set() defined in Artist subclasses should not be overwritten.c                   @   r|   )z*test_set_is_overwritten.<locals>.MyArtist3c                 [   s   dS )úNot overwritten.Nr#   )r~   Úkwargsr#   r#   r$   rA   p  s    z.test_set_is_overwritten.<locals>.MyArtist3.setN)r‚   rƒ   r„   rA   r#   r#   r#   r$   Ú	MyArtist3n  s    r­   r¥   r«   c                   @   ó   e Zd ZdS )z*test_set_is_overwritten.<locals>.MyArtist4N©r‚   rƒ   r„   r#   r#   r#   r$   Ú	MyArtist4v  ó    r°   Nr¨   )r­   r°   r#   r#   r$   Útest_set_is_overwrittenl  s
   r²   c            	      C   s~  t  d¡} d| d< d| d< d| d< d| d	< d
| d< d| d< d| d< d| d< d| d< t ¡ \}}| d¡ t t  ddd¡d¡}|j| d|d}g d¢}t	| j
|ƒD ]\}}| |¡|ks^J ‚qQt ¡  t ¡ \}}| d¡ tjd  d¡}t t  ddd¡d¡}|j| ||d}g d¢}t	| j
|ƒD ]\}}| |¡|ks J ‚q“t ¡  t ¡ \}}| d¡ tjd  d¡}t t  ddd¡d¡}|j| ||d}g d¢}t	| j
|ƒD ]\}}| |¡|ksâJ ‚qÕt ¡  t  d ¡} d!| d
< d"| d< d#| d$< d%| d&< d| d'< d(| d)< d*| d+< g d,¢}t ¡ \}}| d-¡ tjt jd
dd'd.d/dd0d1d2}|j| d|d}t	| j
|ƒD ]\}}| |¡|ksCJ ‚q5t ¡  t ¡ \}}| d3¡ tjt jd
dd'd.d/dd0d4d2}|j| d|d}t	| j
|ƒD ]\}}| |¡|ks€J ‚qrt ¡  t ¡ \}}| d5¡ tjt jd
dd'd.d/dd0d6d2}|j| d|d}t	| j
|ƒD ]\}}| |¡|ks½J ‚q¯t ¡  t ¡ \}}| d7¡ tjt jd
dd'd.d/dd0d8d2}|j| d|d}t	| j
|ƒD ]\}}| |¡|ksúJ ‚qìt ¡  t ¡ \}}| d9¡ tjt jd
dd'd.d/dd.d1d2}|j| d|d}t	| j
|ƒD ]\}}| |¡|ks7J ‚q)t ¡  d:S );z7Test if cursor data is correct when using BoundaryNorm.)r   r   gÍÌÌÌÌÌì?rQ   g®Gáz®ï?)r   r   g+‡ÙÎ÷ï?)r   r   r-   rg   r   rh   r   )r   r   g
×£p=
·?)r   r   g;ßO—n‚?)r   r   g’ËH¿}M?r   z-1..1 to 0..256 in 0.1é   é   ZRdBu_r)ÚcmapÚnorm)	ú[0.9]ú[1.]r¸   ú[-1.0]ú[0.0]ú[1.0]ú[0.09]ú[0.009]ú[0.0009]z-1..1 to 0..256 in 0.01éÈ   )	z[0.90]z[0.99]r»   z[-1.00]z[0.00]z[1.00]r¼   r½   r¾   z-1..1 to 0..256 in 0.001iÐ  )	z[0.900]z[0.990]z[0.999]z[-1.000]z[0.000]z[1.000]z[0.090]r½   r¾   )rW   r   g      ð¿g        gš™™™™™¹?r   r
   r   r,   g      ð?r/   g       @r.   )r¹   rº   z[0.1]z[0.5]r·   r»   z[2.0]znoclip, neitherT)ZendpointFZneither)ZclipÚextendznoclip, minÚminznoclip, maxÚmaxznoclip, bothZbothzclip, neitherN)rH   Úemptyr   r7   ZsuptitleÚmcolorsZBoundaryNormZlinspacer[   ÚzipZflatZformat_cursor_dataÚcloseÚmplZ	colormapsZ	resampled)	ÚXr:   r   r¶   ZimgZlabels_listÚvZlabelrµ   r#   r#   r$   Ú$test_format_cursor_data_BoundaryNorm|  s´   






ÿ
ÿ
ÿ
ÿ
ÿrÊ   c                  C   sf   G dd„ dt jƒ} d| jv sJ ‚| jd | ju sJ ‚G dd„ d| ƒ}d|jvs)J ‚|j| ju s1J ‚d S )Nc                   @   r®   )z$test_auto_no_rasterize.<locals>.Gen1Nr¯   r#   r#   r#   r$   ÚGen1  r±   rË   r^   c                   @   r®   )z$test_auto_no_rasterize.<locals>.Gen2Nr¯   r#   r#   r#   r$   ÚGen2$  r±   rÌ   )rr   rˆ   Ú__dict__r^   )rË   rÌ   r#   r#   r$   Útest_auto_no_rasterize  s   rÎ   c                  C   sN   G dd„ dt jƒ} | ƒ }t ¡ }d| |d¡ksJ ‚d|j|ddks%J ‚d S )Nc                   @   r|   )z1test_draw_wraper_forward_input.<locals>.TestKlassc                 S   s   |S rl   r#   )r~   ÚrendererÚextrar#   r#   r$   r^   -  r   z6test_draw_wraper_forward_input.<locals>.TestKlass.drawN)r‚   rƒ   r„   r^   r#   r#   r#   r$   Ú	TestKlass,  r†   rÑ   Zaardvark)rÐ   )rr   rˆ   Úmbackend_basesZRendererBaser^   )rÑ   ra   rÏ   r#   r#   r$   Útest_draw_wraper_forward_input+  s
   rÓ   )=rI   Ú	itertoolsr   ZnumpyrH   r”   Zmatplotlib.colorsZcolorsrÄ   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.patchesZpatchesr   Zmatplotlib.linesÚlinesrm   Zmatplotlib.pathÚpathr5   Zmatplotlib.transformsZ
transformsr   Zmatplotlib.collectionsÚcollectionsr'   Zmatplotlib.artistr   rr   Zmatplotlib.backend_basesZbackend_basesrÒ   Z
matplotlibrÇ   Zmatplotlib.testing.decoratorsr   r   r%   r*   r>   rD   rO   rY   rb   rk   ro   ru   rw   ZmarkZparametrizer‹   r   rš   r›   r    rª   r²   rÊ   rÎ   rÓ   r#   r#   r#   r$   Ú<module>   sT    *$






	 "