o
    ¡:´a50  ã                   @   sh  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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"„ Z(ej) *d#g d$¢¡d%d&„ ƒZ+d'd(„ Z,d)d*„ Z-d+d,„ Z.d-d.„ Z/d/d0„ Z0d1d2„ Z1dS )3é    N)Úchain)Úcheck_figures_equalÚimage_comparisonc                  C   s6  t  ¡ } |  ddg¡ |  ddg¡ d}| j |¡}tj|ddddd}|  |¡ |j	| jks1J ‚tj|dddd dd	}| 
¡ sBJ ‚|  |¡ t|j	tjƒsPJ ‚tj|d
d
t ¡ dd}|  |¡ t|j	tjƒsjJ ‚tj|ddddd}| ¡ }| 
¡ r~J ‚|  |¡ | ¡ |ks‹J ‚| 
¡ s‘J ‚|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#   ú>/usr/lib/python3/dist-packages/matplotlib/tests/test_artist.pyÚtest_patch_transform_of_none   s8   
ÿ

ÿ
ÿ
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s=J ‚tj|ddd}tj	|gd	dd}| d ¡ |  
|¡ t| ¡ tjƒsbJ ‚tj|d
d
d}tj	|gt ¡ dd}|  
|¡ t|j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   Z_transOffset)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_clipping`   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ÚtransOffsetr3   )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   ZimshowrH   ÚarangeZreshaper@   ÚrangeZstaleZcanvasZdrawZ_mouseover_setr   ÚremoveZfigure)r:   r   ZimÚlnÚartr#   r#   r$   Útest_remove¼   s(   






r`   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$   
ÿ


ÿÿürg   c                  C   s   t  g g ¡} |  ¡  d S ©N)ÚmlinesÚLine2DZ
properties)r^   r#   r#   r$   Útest_propertiesî   s   rk   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   
rq   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/   )rl   i@â )	r   r7   r@   r\   Z
get_zorderri   rj   rl   Ú
set_zorder)r:   r   r^   r#   r#   r$   Útest_None_zorder  s   

rs   zaccept_clause, expected))Ú Úunknown)zACCEPTS: [ '-' | '--' | '-.' ]z[ '-' | '--' | '-.' ])zACCEPTS: Some description.úSome description.)z.. ACCEPTS: Some description.rv   )z	arg : intÚint)z
*arg : intrw   )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 rh   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)rn   Ú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   )rn   r†   ri   rj   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çš™™™™™ñ?)	rn   r„   ÚpytestÚraisesÚ	TypeErrorZ	set_alphaÚ
ValueErrorrH   Únan©r_   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
   )	rn   r„   r   r‘   r’   Z_set_alpha_for_arrayr“   rH   r”   r•   r#   r#   r$   Útest_set_alpha_for_array9  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›   H  s   ztest_callbacks.<locals>.funcr   r   ra   r   )r˜   rn   r„   Zadd_callbackZpchangedrr   Zremove_callback)r_   Zoidr#   rš   r$   Útest_callbacksG  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                   @   rx   )z%test_set_signature.<locals>.MyArtist1c                 S   ry   rh   r#   ©rz   Ú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                   @   rx   )z%test_set_signature.<locals>.MyArtist2c                 S   ry   rh   r#   r   r#   r#   r$   Úset_myparam2c  r}   z2test_set_signature.<locals>.MyArtist2.set_myparam2N)r~   r   r€   r¢   r#   r#   r#   r$   Ú	MyArtist2b  r‚   r£   Zmyparam2N©rn   r„   ÚhasattrrA   r…   )r    r£   r#   r#   r$   Útest_set_signatureY  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                   @   rx   )z*test_set_is_overwritten.<locals>.MyArtist3c                 [   s   dS )úNot overwritten.Nr#   )rz   Úkwargsr#   r#   r$   rA   o  s    z.test_set_is_overwritten.<locals>.MyArtist3.setN)r~   r   r€   rA   r#   r#   r#   r$   Ú	MyArtist3m  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$   Ú	MyArtist4u  s    rª   Nr¤   )r©   rª   r#   r#   r$   Útest_set_is_overwrittenk  s
   r«   )2rI   Ú	itertoolsr   ZnumpyrH   r   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.patchesZpatchesr   Zmatplotlib.linesÚlinesri   Zmatplotlib.pathÚpathr5   Zmatplotlib.transformsZ
transformsr   Zmatplotlib.collectionsÚcollectionsr'   Zmatplotlib.artistr™   rn   Zmatplotlib.testing.decoratorsr   r   r%   r*   r>   rD   rO   rY   r`   rg   rk   rq   rs   ZmarkZparametrizer‡   r‰   r–   r—   rœ   r¦   r«   r#   r#   r#   r$   Ú<module>   sF    *$






	