U
    Fvf!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#d$d%d&d'd(d)d*g¡d+d,„ ƒZ3d-d.„ Z4d/d0„ Z5d1d2„ Z6d3d4„ Z7d5d6„ Z8d7d8„ Z9d9d:„ Z:d;d<„ Z;d=d>„ Z<dS )?é    N)Úchain)Úcheck_figures_equalÚimage_comparisonc                  C   s<  t  ¡ } |  ddg¡ |  ddg¡ d}| j |¡}tj|ddddd}|  |¡ |j	| jksbt
‚tj|dddd dd	}| ¡ s„t
‚|  |¡ t|j	tjƒs t
‚tj|d
d
t ¡ dd}|  |¡ t|j	tjƒsÔt
‚tj|ddddd}| ¡ }| ¡ rüt
‚|  |¡ | ¡ |kst
‚| ¡ s&t
‚|j	| jks8t
‚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
_transformÚAssertionErrorZis_transform_setÚ
isinstanceÚmtransformsÚIdentityTransformÚget_transform)ÚaxÚxy_dataÚxy_pixÚeZintermediate_transform© r$   ú@/tmp/pip-unpacked-wheel-7vhvci0g/matplotlib/tests/test_artist.pyÚtest_patch_transform_of_none   s<    
 ÿ

 ÿ
ÿ
r&   c                  C   s  t  ¡ } |  ddg¡ |  ddg¡ d}| j |¡}tj|ddd}tj	|gddd}|  
|¡ | ¡ | ¡  | jkszt‚tj|ddd}tj	|gd	dd}| d ¡ |  
|¡ t| ¡ tjƒsÄt‚tj|d
d
d}tj	|gt ¡ dd}|  
|¡ t| ¡ tjƒs
t‚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   r   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_rectangleÚ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ÚcolÚpatchr$   r$   r%   Útest_clippingc   s0      ÿ
 ÿ
rA   Zpng)Ú
extensionsc                 C   s°   |   ddddg¡}| 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}| |¡ |  ddddg¡}| ddgddg¡ |jddd |jddd d S )Nr   r   r5   r   )r   )r
   g      è?)ZxlimZylim)	Zadd_axesÚplotr6   r7   r   r;   r   r:   Úset)Zfig_testZfig_refZax_testÚlÚpZax_refr$   r$   r%   Útest_clipping_zoom   s    (
rG   c                  C   s–   t j d¡} t j d¡}t ¡ \}}| | |d¡ | dd¡ t ¡ }|j|dd t	| 
¡ ƒdk sht‚t ¡ }|j|dd t	| 
¡ ƒdk s’t‚d S )	Ni N  zk.r   r   Úpdf)Úformati@  Úsvg)ÚnpÚrandomr   r9   rC   r   ÚioÚBytesIOZsavefigÚlenÚgetvaluer   )ÚxÚyr<   r    rH   rJ   r$   r$   r%   Útest_cull_markers’   s    rS   ZhatchingÚdefault)r,   Ú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-   ú/)r4   i€>  )g      ø?ç      @)ÚsizesÚoffsetsÚoffset_transformr4   )r-   r   ZC1)r4   r3   )g      @rX   )rY   rZ   r[   r4   r3   r   é   é	   )r   r9   r   Z	Rectangler   r(   ZRegularPolyCollectionr   r)   r   r   )r<   r    Zrect1Zrect2Zrect3Zrect4r$   r$   r%   Útest_hatching£   s0    
   þ

    þ
r^   c                  C   sú   t  ¡ \} }| t d¡ dd¡¡}| tdƒ¡\}| js>t	‚|jsHt	‚| j
 ¡  | jr\t	‚|jrft	‚|jrpt	‚||jks~t	‚||jksŒt	‚|j|ksšt	‚| ¡  | ¡  ||fD ] }|jd ksÄt	‚|jd ks²t	‚q²||jksât	‚| jsìt	‚|jsöt	‚d S )Né$   r/   r0   )r   r9   ÚimshowrK   ÚarangeZreshaperC   ÚrangeÚstaler   ZcanvasÚdrawZ_mouseover_setr   ÚremoveÚfigure)r<   r    ZimÚlnÚartr$   r$   r%   Útest_remove½   s(    






ri   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 ddddgtjjtjjtjjtjjg¡d|jd}| |¡ d S )Nr/   ztext.kerning_factorr   é
   rQ   r   ÚoZedge)Zalignr   ZBOXé   Zsawtooth)Zboxstyle)ÚsizeZbbox)r.   r   rV   ©r   r   ©r   r   Únone)r   r   )r   ZrcParamsr9   rC   rK   ra   ÚbarÚtextÚdictr   r   r   r;   r6   r7   ZMOVETOZCURVE3Z	CLOSEPOLYr   r   )r<   r=   r>   Zax3Zax4Zpp1r$   r$   r%   Útest_default_edgesÚ   s,    
  ÿ

 ÿÿ ürt   c                  C   s   t  g g ¡} |  ¡  d S ©N)ÚmlinesÚLine2DZ
properties)rg   r$   r$   r%   Útest_propertiesï   s    rx   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sŽt‚d S )	Nr   r2   r0   Zgreen)ÚcolorÚzorder)Úfilez  zorder: float
)r   Zsetpr9   rC   rb   Úmartistr   ZspinesÚvaluesrM   ÚStringIOrP   r   )r<   r    Zlines1Zlines2Úsior$   r$   r%   Ú	test_setpô   s    
r€   c                  C   sp   t  ¡ \} }|jtdƒd d\}| ¡ tjjks4t‚| 	d¡ | ¡ dksNt‚| 	d ¡ | ¡ tjjkslt‚d S )Nr0   )rz   i@â )
r   r9   rC   rb   Z
get_zorderrv   rw   rz   r   Ú
set_zorder)r<   r    rg   r$   r$   r%   Útest_None_zorder  s    

r‚   zaccept_clause, expected)Ú Úunknown)zACCEPTS: [ '-' | '--' | '-.' ]z[ '-' | '--' | '-.' ])zACCEPTS: Some description.úSome description.)z.. ACCEPTS: Some description.r…   )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:t‚d S )Nc                   @   s   e Zd Zdd„ ZdS )z:test_artist_inspector_get_valid_values.<locals>.TestArtistc                 S   s   d S ru   r$   )ÚselfÚargr$   r$   r%   Úset_f  s    z@test_artist_inspector_get_valid_values.<locals>.TestArtist.set_fN)Ú__name__Ú
__module__Ú__qualname__r‰   r$   r$   r$   r%   Ú
TestArtist  s   r   z
    Some text.

    %s
    Úf)r|   ÚArtistr‰   Ú__doc__ÚArtistInspectorZget_valid_valuesr   )Zaccept_clauseÚ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&t‚d S )NZ	linewidthr2   )r|   r‘   rv   rw   Zget_aliasesr   )ZaiÚaliasesr$   r$   r%   Ú!test_artist_inspector_get_aliases'  s    r•   c               	   C   s¤   t  ¡ } tjtdd |  d¡ W 5 Q R X tjtdd |  dddg¡ W 5 Q R X tjtdd |  d¡ W 5 Q R X tjtdd |  tj¡ W 5 Q R X d S )	Nú^alpha must be numeric or None©ÚmatchÚstringr   r   r   úoutside 0-1 rangeçš™™™™™ñ?)	r|   r   ÚpytestÚraisesÚ	TypeErrorZ	set_alphaÚ
ValueErrorrK   Únan©rh   r$   r$   r%   Útest_set_alpha.  s    r¢   c               	   C   sÌ   t  ¡ } tjtdd |  d¡ W 5 Q R X tjtdd |  d¡ W 5 Q R X tjtdd |  tj¡ W 5 Q R X tjtdd |  ddg¡ W 5 Q R X tjtdd |  dtjg¡ W 5 Q R X d S )Nr–   r—   r™   rš   r›   zalpha must be between 0 and 1r
   )	r|   r   rœ   r   rž   Z_set_alpha_for_arrayrŸ   rK   r    r¡   r$   r$   r%   Útest_set_alpha_for_array:  s    r£   c                     s„   ‡ fdd„‰ dˆ _ t ¡ } |  ˆ ¡}ˆ j dks2t‚|  ¡  ˆ j dksHt‚|  d¡ ˆ j dks`t‚|  |¡ |  ¡  ˆ j dks€t‚d S )Nc                    s   ˆ  j d7  _ d S )Nr   )Úcounter)Úartist©Úfuncr$   r%   r§   I  s    ztest_callbacks.<locals>.funcr   r   rj   r   )r¤   r|   r   Zadd_callbackr   Zpchangedr   Zremove_callback)rh   Úoidr$   r¦   r%   Útest_callbacksH  s    


r©   c                  C   sv   G dd„ dt jƒ} t| jdƒs"t‚d| jjks2t‚G dd„ d| ƒ}t|jdƒsRt‚d|jjksbt‚d|jjksrt‚dS )	z3Test autogenerated ``set()`` for Artist subclasses.c                   @   s   e Zd Zdd„ ZdS )z%test_set_signature.<locals>.MyArtist1c                 S   s   d S ru   r$   ©r‡   Úvalr$   r$   r%   Úset_myparam1]  s    z2test_set_signature.<locals>.MyArtist1.set_myparam1N)rŠ   r‹   rŒ   r¬   r$   r$   r$   r%   Ú	MyArtist1\  s   r­   Ú_autogenerated_signatureZmyparam1c                   @   s   e Zd Zdd„ ZdS )z%test_set_signature.<locals>.MyArtist2c                 S   s   d S ru   r$   rª   r$   r$   r%   Úset_myparam2d  s    z2test_set_signature.<locals>.MyArtist2.set_myparam2N)rŠ   r‹   rŒ   r¯   r$   r$   r$   r%   Ú	MyArtist2c  s   r°   Zmyparam2N©r|   r   ÚhasattrrD   r   r   )r­   r°   r$   r$   r%   Útest_set_signatureZ  s    r³   c                  C   sV   G dd„ dt jƒ} t| jdƒr"t‚| jjdks2t‚G dd„ d| ƒ}|j| jksRt‚dS )z=set() defined in Artist subclasses should not be overwritten.c                   @   s   e Zd Zdd„ ZdS )z*test_set_is_overwritten.<locals>.MyArtist3c                 [   s   dS )úNot overwritten.Nr$   )r‡   Úkwargsr$   r$   r%   rD   p  s    z.test_set_is_overwritten.<locals>.MyArtist3.setN)rŠ   r‹   rŒ   rD   r$   r$   r$   r%   Ú	MyArtist3n  s   r¶   r®   r´   c                   @   s   e Zd ZdS )z*test_set_is_overwritten.<locals>.MyArtist4N©rŠ   r‹   rŒ   r$   r$   r$   r%   Ú	MyArtist4v  s   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}ddddddddd g	}t	| j
|ƒD ]\}}| |¡|ks°t‚q°t ¡  t ¡ \}}| d!¡ tjd  d"¡}t t  ddd"¡d"¡}|j| ||d}d#d$dd%d&d'ddd g	}t	| j
|ƒD ]\}}| |¡|ksBt‚qBt ¡  t ¡ \}}| d(¡ tjd  d)¡}t t  ddd)¡d)¡}|j| ||d}d*d+d,d-d.d/d0dd g	}t	| j
|ƒD ]\}}| |¡|ksØt‚qØt ¡  t  d1¡} d2| d
< d3| d< d4| d5< d6| d7< d| d8< d9| d:< d;| d<< ddd=d>ddd?g}t ¡ \}}| d@¡ tjt jd
dd8dAdBddCdDdE}|j| d|d}t	| j
|ƒD ]\}}| |¡|ks¦t‚q¦t ¡  t ¡ \}}| dF¡ tjt jd
dd8dAdBddCdGdE}|j| d|d}t	| j
|ƒD ]\}}| |¡|ks t‚q t ¡  t ¡ \}}| dH¡ tjt jd
dd8dAdBddCdIdE}|j| d|d}t	| j
|ƒD ]\}}| |¡|ksšt‚qšt ¡  t ¡ \}}| dJ¡ tjt jd
dd8dAdBddCdKdE}|j| d|d}t	| j
|ƒD ]\}}| |¡|kst‚qt ¡  t ¡ \}}| dL¡ tjt jd
dd8dAdBddAdDdE}|j| d|d}t	| j
|ƒD ]\}}| |¡|ksŽt‚qŽt ¡  dMS )Nz7Test if cursor data is correct when using BoundaryNorm.)r   r   gÍÌÌÌÌÌì?rV   g®Gáz®ï?)r   r   g+‡ÙÎ÷ï?)r   r   r.   rn   r   ro   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Únormz[0.9]z[1.]z[-1.0]z[0.0]z[1.0]z[0.09]z[0.009]z[0.0009]z-1..1 to 0..256 in 0.01éÈ   z[0.90]z[0.99]z[-1.00]z[0.00]z[1.00]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   g      ð¿g        gš™™™™™¹?r   r
   r   r-   g      ð?r0   g       @r/   z[0.1]z[0.5]z[2.0]znoclip, neitherT)ZendpointFZneither)ZclipÚextendznoclip, minÚminznoclip, maxÚmaxznoclip, bothZbothzclip, neitherN)rK   Úemptyr   r9   ZsuptitleÚmcolorsZBoundaryNormZlinspacer`   ÚzipZflatZformat_cursor_datar   ÚcloseÚmplZ	colormapsZ	resampled)	ÚXr<   r    r½   ÚimgZlabels_listÚvÚlabelr¼   r$   r$   r%   Ú$test_format_cursor_data_BoundaryNorm|  s   

÷
÷
÷
ù

   ÿ
   ÿ
   ÿ
   ÿ
   ÿrË   c                  C   sf   G dd„ dt jƒ} d| jks t‚| jd | jks4t‚G dd„ d| ƒ}d|jksRt‚|j| jksbt‚d S )Nc                   @   s   e Zd ZdS )z$test_auto_no_rasterize.<locals>.Gen1Nr·   r$   r$   r$   r%   ÚGen1  s   rÌ   rd   c                   @   s   e Zd ZdS )z$test_auto_no_rasterize.<locals>.Gen2Nr·   r$   r$   r$   r%   ÚGen2$  s   rÍ   )r|   r   Ú__dict__r   rd   )rÌ   rÍ   r$   r$   r%   Útest_auto_no_rasterize  s    rÏ   c                  C   sN   G dd„ dt jƒ} | ƒ }t ¡ }d| |d¡ks4t‚d|j|ddksJt‚d S )Nc                   @   s   e Zd Zdd„ ZdS )z1test_draw_wraper_forward_input.<locals>.TestKlassc                 S   s   |S ru   r$   )r‡   ÚrendererÚextrar$   r$   r%   rd   -  s    z6test_draw_wraper_forward_input.<locals>.TestKlass.drawN)rŠ   r‹   rŒ   rd   r$   r$   r$   r%   Ú	TestKlass,  s   rÒ   Zaardvark)rÑ   )r|   r   Úmbackend_basesZRendererBaserd   r   )rÒ   rh   rÐ   r$   r$   r%   Útest_draw_wraper_forward_input+  s
    rÔ   )=rM   Ú	itertoolsr   ZnumpyrK   rœ   Zmatplotlib.colorsÚcolorsrÃ   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.patchesZpatchesr   Zmatplotlib.linesÚlinesrv   Zmatplotlib.pathÚpathr6   Zmatplotlib.transformsZ
transformsr   Zmatplotlib.collectionsÚcollectionsr(   Zmatplotlib.artistr¥   r|   Zmatplotlib.backend_basesZbackend_basesrÓ   Z
matplotlibrÆ   Zmatplotlib.testing.decoratorsr   r   r&   r+   rA   rG   rS   r^   ri   rt   rx   r€   r‚   ÚmarkZparametrizer“   r•   r¢   r£   r©   r³   r¹   rË   rÏ   rÔ   r$   r$   r$   r%   Ú<module>   sb   *$





ù	
 "