U
    ÂmœdÃ  ã                	   @   s´  d dl Z d dlmZ 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Zd dlZd dlZd dlmZ d dlZd dlmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZmZmZ d dl m!Z!m"Z"m#Z# d dl$m%Z& d dl'm(Z) edgddge *¡ dkrd ndddd„ ƒZ+dd„ Z,dd„ Z-dd„ Z.dd„ Z/edgƒdd„ ƒZ0ed gƒd!d"„ ƒZ1d#d$„ Z2d%d&„ Z3d'd(„ Z4ed)gƒd*d+„ ƒZ5d,d-„ Z6ed.gddgd/d0d1œd2d3d4„ ƒZ7d5d6„ Z8d7d8„ Z9d9d:„ Z:d;d<„ Z;d=d>„ Z<ej= >d?d@dAdBg¡dCdD„ ƒZ?ej@ AdE¡dFdG„ ƒZBej= >dHdIejCfdJejDdIfg¡dKdL„ ƒZEdMdN„ ZFdOdP„ ZGdQdR„ ZHdSdT„ ZIdUdV„ ZJej= >dWejKdXej= LdX¡gdYejKdZej= LdZ¡gdYg¡d[d\„ ƒZMd]d^„ ZNd_d`„ ZOdadb„ ZPdcdd„ ZQej= >dedfdgg¡dhdi„ ƒZReddjgdkdldm„ ƒZSej= >dnddjdodpdg¡dqdr„ ƒZTdsdt„ ZUdudv„ ZVdwdx„ ZWej= >dydzd{g¡d|d}„ ƒZXd~d„ ZYej@ Ad€¡dd‚„ ƒZZdƒd„„ Z[ed…gd€d†d‡dˆœd‰dŠd‹dŒ„ ƒZ\eddjdpdgdkddŽ„ ƒZ]G dd„ dƒZ^d‘d’„ Z_ed“gd€d”d‡id•d–d—„ ƒZ`d˜d™„ Zadšd›„ Zbedœgd€d”d‡iddždŸd „ ƒZced¡gd€d”d‡id•d¢d£„ ƒZdd¤d¥„ Zeej@ Ad€¡d¦d§„ ƒZfed¨gd€d‰d©dªd«„ ƒZgd¬d­„ Zhd®d¯„ Zid°d±„ Zjd²d³„ Zkd´dµ„ Zld¶d·„ Zmedgdkd¸d¹„ ƒZndºd»„ Zod¼d½„ Zpd¾d¿„ ZqdS )Àé    N)Údatetime)ÚPath)ÚTimer)ÚSimpleNamespace)ÚImage)Úgridspec)Úimage_comparisonÚcheck_figures_equal)ÚAxes)ÚFigureÚ
FigureBase)ÚConstrainedLayoutEngineÚTightLayoutEngineÚPlaceHolderLayoutEngine)ÚAutoMinorLocatorÚFixedFormatterÚScalarFormatterZfigure_align_labelsÚpngÚsvgÚx86_64ç{®Gáz„?)Ú
extensionsÚtolc                  C   s¢  t jdd} t dd¡}|  |dd d…f ¡}| t ddd¡¡ | d¡ |  |d	 ¡}| t dd
d¡¡ t	dƒD ]Ž}|  |d|f ¡}| d| ¡ | 
d| ¡ |dkrÆ|j d¡ |j ¡  |dkræ| ¡ D ]}| d¡ qÖ|dkrv|j d¡ |j ¡  qvt	dƒD ]†}|  |d|f ¡}| 
d|› ¡ | d|› ¡ |dkr| t dd
d¡¡ |j d¡ |j ¡  | ¡ D ]}| d¡ q€q|  ¡  d S )NÚtight©Úlayouté   r   é   g    €„.Aéè  z	Ylabel0 0)r   éÿÿÿÿg     ˆÃ@éd   é   z
YLabel1 %dz
XLabel1 %d)r   r   ÚtopéZ   ÚrightzXLabel2 zYLabel2 é
   )ÚpltÚfigurer   ZGridSpecÚadd_subplotÚplotÚnpÚarangeÚ
set_ylabelÚrangeÚ
set_xlabelÚxaxisZset_label_positionZtick_topÚget_xticklabelsZset_rotationÚyaxisZ
tick_rightZalign_labels)ÚfigÚgsÚaxÚiZtick© r6   úU/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_figure.pyÚtest_align_labels   s>    



r8   c                  C   s  t  dd¡\} }t|jƒD ]<\}}| d¡ | d¡ | t d¡| t d¡| ¡ q|  ¡  |  	¡  |  
¡  t d¡}t d¡}t|jƒD ]0\}}|jj ¡ d ||< |jj ¡ d ||< qŽtj |d d… |dd … ¡ tj |d d d… |dd d… ¡ t jdddd\} }t|jƒD ]2\}}| d¡ | d¡ | tj d	d	¡¡}q| j||d
 |  ¡  |  	¡  |  
¡  t d¡}t d¡}t|jƒD ]2\}}|jj ¡ d ||< |jj ¡ d ||< q–tj |d d… |dd … ¡ tj |d d d… |dd d… ¡ d S )Nr   ÚBooZWhoé   r!   r   T©Úconstrained_layoutr%   ©r4   )r&   ÚsubplotsÚ	enumerateÚflatr.   r)   r*   r+   Zalign_ylabelsZalign_xlabelsÚdraw_without_renderingÚzerosr/   ÚlabelZget_positionr1   ÚtestingÚassert_allcloseÚ
pcolormeshÚrandomÚrandnÚcolorbar)r2   ÚaxsÚnnr4   ZxnZynÚpcr6   r6   r7   Útest_align_labels_stray_axesE   s>    

"

"



rM   c               	   C   s  t  d¡ t  d¡} t  d¡ t  d¡ t  ¡  t  d¡ t  d¡ t  d¡ t  ¡ dddddgksht‚t  ¡ d	dd	dd	gks‚t‚t  d
¡ t  ¡  t  d¡ t  d¡ t  ¡ ddgks¼t‚t  ¡ d	dgksÐt‚t  | ¡ t  ¡ | ksêt‚t t	¡ t  t
ƒ ¡ W 5 Q R X d S )NÚallÚtodayr   Útomorrowr   r!   r:   é   Ú r%   )r&   Úcloser'   Zget_fignumsÚAssertionErrorZget_figlabelsZgcfÚpytestÚraisesÚ
ValueErrorr   )Z	fig_todayr6   r6   r7   Útest_figure_labelh   s(    










rX   c                   C   s’   t  d¡ t  d¡ t  d¡ t  ¡  t  d¡s4t‚t  d¡sBt‚t  d¡sPt‚t  d¡s^t‚t  d¡ t  d¡ t  d¡r€t‚t  d¡rŽt‚d S )NÚoner   Úthreer:   )r&   r'   Zfignum_existsrT   rS   r6   r6   r6   r7   Útest_fignum_exists€   s    




r[   c                  C   sº   d} d}t jdd}| | ¡ dd„ |jD ƒ| gks8t‚t jddd}| d	d	|¡ ||ks`t‚d
d„ |jD ƒ| |gks|t‚t jddddd\}}||ksžt‚dd„ |jD ƒg ks¶t‚d S )NzA fancy plotzReally fancy!r!   )Únumc                 S   s   g | ]}|  ¡ ‘qS r6   ©Zget_text©Ú.0Útr6   r6   r7   Ú
<listcomp>—   s     z$test_clf_keyword.<locals>.<listcomp>F)r\   Úclearç      à?c                 S   s   g | ]}|  ¡ ‘qS r6   r]   r^   r6   r6   r7   ra   œ   s     r   Tc                 S   s   g | ]}|  ¡ ‘qS r6   r]   r^   r6   r6   r7   ra       s     )r&   r'   ÚsuptitleZtextsrT   Útextr>   )Ztext1Ztext2Zfig0Úfig1Úfig2Úax2r6   r6   r7   Útest_clf_keyword   s    
ri   Zfigure_todayc                  C   sh   t  d¡} |  ¡ }| |  ¡ ¡ | t d¡¡ t  d¡ t  ddgddgd¡ t  d¡ t  d¡ d S )NrO   rQ   rP   r   r!   Úr)	r&   r'   r(   Ú	set_titleÚ	get_labelr)   r*   r+   rS   )r2   r4   r6   r6   r7   Útest_figure£   s    


rm   Zfigure_legendc                  C   s°   t  d¡\} }|d jddgddgddd |d jddgddgddd |d jddgd	d	gdd
d |d jddgddgddd |d jddgddgddd |  ¡  d S )Nr   r   r!   ÚxÚg)rC   ÚcolorÚyrj   rc   ÚkZ_yÚzÚb)r&   r>   r)   Zlegend©r2   rJ   r6   r6   r7   Útest_figure_legend²   s    rv   c                  C   s¼   t  ¡ } |  ddddg¡}|  ¡ |ks*t‚|  d¡}|  ¡ |ksDt‚|  |¡ | j||gks`t‚|  ¡ |kspt‚|  |¡ | j||gksŒt‚|  |¡ | j||gks¨t‚|  ¡ |ks¸t‚d S )Nr   r!   éo   )r&   r'   Úadd_axesZgcarT   r(   ÚaxesZsca)r2   Úax0Úax1r6   r6   r7   Útest_gca¾   s    



r|   c               	   C   s¦   t  ¡ } | jtd t t¡ | jtdd W 5 Q R X t t¡ | jtdd W 5 Q R X t t¡ | jddd W 5 Q R X t t¡ | jdd W 5 Q R X d S )	N)Ú
axes_classÚ3d)r}   Ú
projectionT)r}   Úpolar)r   r€   é*   ©r   )r&   r'   r(   r
   rU   rV   rW   Ú	TypeError©r2   r6   r6   r7   Útest_add_subplot_subclassÚ   s    r…   c               	   C   sì  t  ¡ } tjtdd |  ddd¡ W 5 Q R X tjtdd |  ddd¡ W 5 Q R X tjtdd |  ddd¡ W 5 Q R X tjtdd |  ddd¡ W 5 Q R X tjtdd |  ddd	¡ W 5 Q R X 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 |  dd¡ W 5 Q R X tjtdd |  dddd¡ W 5 Q R X tjtdd |  ddd¡ W 5 Q R X tjtdd |  ddd¡ W 5 Q R X t  ¡ \}}tjtdd |  |¡ W 5 Q R X d S )Nz,Number of columns must be a positive integer©Úmatchr   r   r!   z)Number of rows must be a positive integerz)num must be an integer with 1 <= num <= 4rQ   rc   zmust be a three-digit integerr   r   z2takes 1 or 3 positional arguments but 2 were givenz2takes 1 or 3 positional arguments but 4 were givenr   r:   z2Number of rows must be a positive integer, not '2'Ú2z5Number of columns must be a positive integer, not 2.0g       @ú5The Axes must have been created in the present figure)r&   r'   rU   rV   rW   r(   rƒ   r>   ©r2   Ú_r4   r6   r6   r7   Útest_add_subplot_invalidç   sH    ÿÿÿÿÿrŒ   Zfigure_suptitlec                  C   s.   t  ¡ \} }| jddd | jdddd d S )NZhellorj   )rp   Útitlero   é   )rp   Zrotation)r&   r>   rd   )r2   r‹   r6   r6   r7   Útest_suptitle  s    r   c                  C   sV   t  ¡ \} }tjjddd}| jd|d}| ¡ | ¡ ks>t‚| 	¡ | 	¡ ksRt‚d S )NZlargeÚbold)ÚsizeÚweightzfontprops title)Zfontproperties)
r&   r>   ÚmplZfont_managerZFontPropertiesrd   Zget_fontsizeZget_size_in_pointsrT   Z
get_weight)r2   r4   ZfpsÚtxtr6   r6   r7   Útest_suptitle_fontproperties  s
    r•   Zalpha_background©r   r!   çš™™™™™Ù?Únone)Ú	facecolorZ	edgecolor)r   Úsavefig_kwargc                  C   sJ   t jddgd} |  d¡ | j d¡ | j tjjddgddd	d
¡ d S )Nr   r!   ©Úfigsizer–   r—   é   é   ç333333ã?Úred)ZradiusÚalphar™   )	r&   r'   Úset_facecolorÚpatchZ	set_alphaZpatchesÚappendr“   ZCirclePolygonr„   r6   r6   r7   Ú
test_alpha"  s    
   ÿr¥   c               	   C   s:   t  t¡& ttjd d ƒD ]} t ¡  qW 5 Q R X d S )Nzfigure.max_open_warningr!   )rU   ÚwarnsÚRuntimeWarningr-   r“   ZrcParamsr&   r'   )r5   r6   r6   r7   Útest_too_many_figures1  s    r¨   c                     sL   G dd„ dt ƒ‰ G ‡ fdd„dƒ} t ¡ }|jddd| ƒ d t |¡ d S )Nc                   @   s   e Zd Zddœdd„ZdS )z.test_iterability_axes_argument.<locals>.MyAxesN)Úmyclassc                _   s   t j| f|ž|Ž d S ©N)r
   Ú__init__)Úselfr©   ÚargsÚkwargsr6   r6   r7   r«   C  s    z7test_iterability_axes_argument.<locals>.MyAxes.__init__)Ú__name__Ú
__module__Ú__qualname__r«   r6   r6   r6   r7   ÚMyAxesB  s   r²   c                       s    e Zd Zdd„ Z‡ fdd„ZdS )z/test_iterability_axes_argument.<locals>.MyClassc                 S   s   |dkrt dƒ‚d S )NÚazitem should be a)rW   )r¬   Úitemr6   r6   r7   Ú__getitem__H  s    z;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s   ˆ d| ifS )Nr©   r6   ©r¬   ©r²   r6   r7   Ú_as_mpl_axesL  s    z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)r¯   r°   r±   rµ   r¸   r6   r·   r6   r7   ÚMyClassF  s   r¹   r!   r‚   )r
   r&   r'   r(   rS   )r¹   r2   r6   r·   r7   Útest_iterability_axes_argument7  s
    	rº   c                  C   s–   t  ¡ } |  d¡ |  ¡ dks"t‚|  d¡ |  ¡ dks<t‚|  dd¡ |  ¡ dksXt‚|  ¡ dksht‚|  d¡ |  ¡ dks‚t‚|  ¡ dks’t‚d S )NrQ   r!   r   r:   )r!   r   r   )r&   r'   Zset_figwidthZget_figwidthrT   Zset_figheightZget_figheightÚset_size_inchesr„   r6   r6   r7   Útest_set_fig_sizeT  s    


r¼   c                  C   sh   t  dd¡\} }|d  ¡  | ¡ d d… D ]}|| jks,t‚q,|d | jksRt‚t| jƒdksdt‚d S )Nr   )r   r   r   r   )r&   r>   ÚremoveZravelry   rT   Úlen©r2   rJ   r4   r6   r6   r7   Útest_axes_removej  s    rÀ   c                  C   s˜   t  t d¡t d¡ ¡\} }||  dks.t‚t  d¡\} }||  dksLt‚t  t d¡¡\} }||  dkspt‚t  t d¡¡\} }||  dks”t‚d S )Nr   r!   )r!   r   rc   )r   r   )r&   Z	figaspectr*   Zfloat64rT   rB   )ÚwÚhr6   r6   r7   Útest_figaspects  s    rÃ   ÚwhichÚbothÚmajorÚminorc           
      C   sN  ddddddddd	d
ddg}ddddddddddddg}d}ddddddd g}t  |¡}t  |¡}t ¡ \}}| ||¡ | ¡  | ¡  |j t	dƒ¡ t
 ¡ " t
 d!d"¡ |j t|ƒ¡ W 5 Q R X | d#|d$| ¡ | d%kr|jd&  d'd(¡D ]}	t|	 ¡ ƒ|ksöt‚qö| d)krJ|jd&  d*d+¡D ]}	t|	 ¡ ƒ|ks,t‚q,d S ),Nz
3 Jan 2013z
4 Jan 2013z
5 Jan 2013z
6 Jan 2013z
7 Jan 2013z
8 Jan 2013z
9 Jan 2013z10 Jan 2013z11 Jan 2013z12 Jan 2013z13 Jan 2013z14 Jan 2013z16:44:00z16:45:00z16:46:00z16:47:00z16:48:00z16:49:00z16:51:00z16:52:00z16:53:00z16:55:00z16:56:00z16:57:00é<   r!   r   r   r:   rQ   é   é   Úignorez=FixedFormatter should only be used together with FixedLocatorçš™™™™™É?r$   )rÅ   rÆ   r   FrÆ   )rÅ   rÇ   TrÇ   )ÚmdatesZdatestr2numr&   r>   r)   Z
yaxis_dateZ
xaxis_dater/   Zset_minor_locatorr   ÚwarningsÚcatch_warningsÚfilterwarningsZset_minor_formatterr   Zautofmt_xdatery   r0   ÚintZget_rotationrT   )
rÄ   ÚdateÚtimeZangleZminorsrn   rq   r2   r4   rC   r6   r6   r7   Útest_autofmt_xdate~  sR          þ
     þ


þ

rÔ   Údefaultc                  C   sn   t jdd} |  ¡  | jjjdks&t‚| jjjdks8t‚d| _|  ¡  | jjjdksXt‚| jjjdksjt‚d S )N)r:   r:   r›   i  é2   éÈ   )	r&   r'   rA   ÚcanvasÚrendererÚheightrT   ÚwidthÚdpir„   r6   r6   r7   Útest_change_dpi¦  s    rÝ   zwidth, heightr!   )r   r!   c              	   C   sT   t  t¡ tj| |fd W 5 Q R X t ¡ }t  t¡ | | |¡ W 5 Q R X d S )Nr›   )rU   rV   rW   r&   r'   r»   )rÛ   rÚ   r2   r6   r6   r7   Útest_invalid_figure_size²  s
    rÞ   c               	   C   sÀ   t  ¡ } tjtdd |  ¡  W 5 Q R X t t¡ |  dddtjf¡ W 5 Q R X tjtdd$ | jddddgddddgd W 5 Q R X t  	¡ \}}tjtd	d |  |¡ W 5 Q R X d S )
Nz.missing 1 required positional argument: 'rect'r†   çš™™™™™¹?rc   z#multiple values for argument 'rect'r   r!   )Úrectr‰   )
r&   r'   rU   rV   rƒ   rx   rW   r*   Únanr>   rŠ   r6   r6   r7   Útest_invalid_figure_add_axesÀ  s    ÿ(ÿrâ   c                  C   s  t jdddddd\} }|jD ]}| dddgdddg¡ q| d¡ | d¡ |d	d d …f D ]}d	t|jjd
dƒks`t	‚q`|dd d …f D ]}d	t|jjd
dƒk st	‚q|d d …df D ]}d	t|j
jd
dƒksÀt	‚qÀ|d d …d	f D ]}d	t|j
jd
dƒk sðt	‚qðd S )Nr   TF)ÚsharexÚshareyZsqueezer%   r   rŽ   Úlogr   rÅ   )rÄ   r!   )r&   r>   r@   r)   Ú
set_yscaleZ
set_xscaler¾   r/   Zget_ticklabelsrT   r1   r¿   r6   r6   r7   Útest_subplots_shareax_loglabelsÓ  s    


rç   c               	   C   s6   t  ¡ } d}tjt|d |  dd¡ W 5 Q R X d S )Nz9savefig\(\) takes 2 positional arguments but 3 were givenr†   z
fname1.pngz
fname2.png)r&   r'   rU   rV   rƒ   Úsavefig)r2   Úmsgr6   r6   r7   Útest_savefigè  s    rê   c               
   C   s@   t  ¡ } dD ].}t t¡ | jt ¡ |dd W 5 Q R X qd S )N)r   Úpdfr   ZtifZjpgT)ÚformatZnon_existent_kwarg)r&   r'   rU   rV   rƒ   rè   ÚioÚBytesIO)r2   rì   r6   r6   r7   Útest_savefig_warnsï  s    rï   c               	   C   s\   t  ¡ } tjtdd | jddd W 5 Q R X tjtdd | jddd W 5 Q R X d S )	NzNo module named '@absent'r†   Útestzmodule://@absent)Úbackendz-The 'pdf' backend does not support png outputztest.pngrë   )r&   r'   rU   rV   ÚModuleNotFoundErrorrè   rW   r„   r6   r6   r7   Útest_savefig_backendö  s    ÿró   rñ   ZAgg)ZmarksZCairoc              	   C   s¼   t  ¡ \}}| dddg¡ t ¡ &}|j|dd t |¡}| ¡  W 5 Q R X t  ¡ \}}| dddg¡ |j	 
d¡ t ¡ &}|j|dd t |¡}| ¡  W 5 Q R X ||ks¸t‚d S )Nr!   r   r   r   ©rì   )r&   r>   r)   rí   rî   rè   r   ÚopenÚloadrØ   Ú_set_device_pixel_ratiorT   )rñ   r2   r4   ÚbufZratio1Zratio2r6   r6   r7   Útest_savefig_pixel_ratio   s    



rù   c                 C   s0   t jdd}|j| d dd | ¡ js,t‚d S )NÚ
compressedr   zfoo.pngr   )Úbbox_inches)r&   r'   rè   Úget_layout_engineZ	_compressrT   )Ztmp_pathr2   r6   r6   r7   Ú#test_savefig_preserve_layout_engine  s    rý   c                  C   s"   t jddd} t| ƒdkst‚d S )N)r%   r   r%   )rœ   rÜ   z!<Figure size 100x200 with 0 Axes>)r&   r'   ÚreprrT   r„   r6   r6   r7   Útest_figure_repr  s    rÿ   c                  C   sj   t d d} |  ¡ rt‚|  ¡ r"t‚t dd} |  ¡ s8t‚|  ¡ rDt‚t dd} |  ¡ rZt‚|  ¡ sft‚d S )Nr   r   Úconstrained)r   Zget_tight_layoutrT   Zget_constrained_layoutr„   r6   r6   r7   Útest_valid_layouts#  s    


r  c               	   C   sV  t jdd\} }t t¡ | jdd W 5 Q R X t|  ¡ tƒsDt	‚d}tjt|d t
ddd	} W 5 Q R X t|  ¡ tƒs€t	‚d
}tjt|d t
ddd} W 5 Q R X t|  ¡ tƒr¼t	‚t|  ¡ tƒsÎt	‚tjtdd t
dd W 5 Q R X t jdd\} }|  d¡ t|  ¡ tƒs t	‚|  d¡ t|  ¡ tƒs>t	‚t jdd\} }| tj dd¡¡}|  |¡ tjtdd |  d¡ W 5 Q R X |  d¡ tjtdd |  d¡ W 5 Q R X t jdd\} }| tj dd¡¡}|  |¡ tjtdd |  d¡ W 5 Q R X |  d¡ t|  ¡ tƒs.t	‚tjtdd |  d¡ W 5 Q R X d S )Nr   r   çš™™™™™é?)r"   z1The Figure parameters 'layout' and 'tight_layout'r†   r   F)r   Útight_layoutz7The Figure parameters 'layout' and 'constrained_layout')r   r<   zInvalid value for 'layout'Zfoobarr   zColorbar layout of new layoutr˜   )r&   r>   rU   r¦   ÚUserWarningZsubplots_adjustÚ
isinstancerü   r   rT   r   r   rV   rW   Úset_layout_enginerF   r*   rG   rH   rI   ÚRuntimeErrorr   )r2   r4   ZwstrL   r6   r6   r7   Útest_invalid_layouts1  sN    ÿ





r  r   r   rú   c              	   C   s6   t j| d\}}tjtdd t  ¡  W 5 Q R X dS )zj
    Raise a warning when a previously assigned layout changes to tight using
    plt.tight_layout().
    r   z The figure layout has changed tor†   N)r&   r>   rU   r¦   r  r  )r   r2   r4   r6   r6   r7   Útest_layout_change_warninge  s    r	  rë   ©r   c           	   	   C   s0  d| _ d|_ |  ¡  tjddgddgdd}tjddgddgdd}tjddd d	d
}tjdddd}tjdd| jddd}|||||fD ]}|  |¡ qŠ| ¡  | ¡ }tjddgddg|jddd}tjddd ddd	d}tjdd|jddd}tjdd|jddddd}||||fD ]}| |¡ qd S )Nr    rÌ   çffffffæ?Úl1)Úgidr  Úl2)r   r   ZC1)Ú	transformr  )r  rc   çš™™™™™©?ZC2)g      @r  gš™™™™™á?ZcrimsonZC3)r  r™   r  é   )r  r  ÚzorderFr   )r  Úclip_onr  r  )r  r™   r  r  r  )	rÜ   r>   r&   ZLine2DZCircleZdpi_scale_transZ
add_artistr½   ZtransFigure)	Úfig_testÚfig_refr  r  Úr1Úr2Zr3r³   rh   r6   r6   r7   Útest_add_artistp  sB     ÿ ÿÿÿ   ÿr  ÚfmtZpsZepsc              	   C   sP   t |d | ¡ƒ}t |¡ | d¡"}|  d¡| d¡ ¡ ksBt‚W 5 Q R X d S )Nztest.{}ÚrbÚasciir    )	r   rì   r&   rè   rõ   ÚencodeÚreadÚlowerrT   )r  ZtmpdirÚoutÚfiler6   r6   r7   Útest_fspath  s    
r!  c                  C   sZ  t  ¡ \} }| dd¡ | ddd¡}| j ¡ }d}t| |¡j|| j	  ƒdk sVt
‚t| |¡j|| j	  ƒdk sxt
‚t|  |¡j| ƒdk s”t
‚t|  |¡jd	 ƒdk s°t
‚| d
¡ d}t| |¡j|| j	  ƒdk sàt
‚t|  |¡j| ƒdk süt
‚| d¡ d}t| |¡j|| j	  ƒdk s.t
‚t|j|g dj|| j	  ƒdk sVt
‚d S )Nr   r!   g      ð?rc   zThis dangles over endgR¸…ë"@r   r  gî|?5^ºå?Fg¢E¶óýT@T)Zbbox_extra_artists)r&   r>   Úset_xlimre   rØ   Úget_rendererÚabsÚget_tightbboxÚx1rÜ   rT   Úx0Zset_in_layout)r2   r4   r`   rÙ   Zx1Nom0Zx1Nomr6   r6   r7   Útest_tightbbox—  s*    
""
"
$ÿÿr(  c                  C   sØ   t jdddd\} }|d  ¡  |d  tdddƒtdddƒgddg¡ t|d j ¡ tj	ƒsbt
‚t jdddd\} }|d j tƒ ¡ |d  ¡  |d  tdddƒtdddƒgddg¡ t|d j ¡ tƒsÔt
‚d S )Nr!   r   T©rã   r   iÐ  )r&   r>   r½   r)   r   r  r/   Zget_major_formatterrÍ   ZAutoDateFormatterrT   Zset_major_formatterr   ru   r6   r6   r7   Útest_axes_removal°  s    (ÿ(ÿr*  c                  C   s,   t jddd\} }|d  ¡  | j ¡  d S )Nr   Tr)  r   )r&   r>   r½   rØ   Údrawru   r6   r6   r7   Útest_removed_axisÂ  s    r,  Ú
clear_methrb   Úclfc                    s"  t  ¡ ‰ ˆ  ¡  ˆ jg kst‚ˆ  d¡}tˆ | ƒƒ  ˆ jg ksBt‚‡ fdd„tdƒD ƒ}tˆ | ƒƒ  ˆ jg ksrt‚ˆ jddd‰ˆ  	ˆd ¡}| d¡}tˆ | ƒƒ  |ˆ j
ks²t‚ˆ jg ksÀt‚ˆ  	ˆd ¡}| d¡}ˆ  ˆd ¡}| ¡  ˆ j|gksþt‚ˆ  ˆd ¡}| ¡  ˆ j|gks&t‚|ˆ j
ks6t‚| d¡}|ˆ jksPt‚|ˆ jks`t‚t|| ƒƒ  |ˆ j
ks|t‚||jksŒt‚|ˆ jksœt‚|ˆ jks¬t‚| d¡}tˆ | ƒƒ  ˆ jg ksÒt‚ˆ j
g ksât‚‡ ‡fdd„d	D ƒ}d
d„ |D ƒ}t‡ fdd„|D ƒƒs t‚t‡ fdd„|D ƒƒs<t‚t|d | ƒƒ  |d ˆ jks`t‚|d ˆ jkstt‚|d ˆ j
ksˆt‚t|d | ƒƒ  ‡ ‡fdd„d	D ƒ}dd„ |D ƒ}t‡ fdd„|D ƒƒsÖt‚t‡ fdd„|D ƒƒsòt‚tˆ | ƒƒ  ˆ j
g kst‚ˆ jg kst‚d S )Nrw   c                    s   g | ]}ˆ   d d|d ¡‘qS ©r   r!   ©r(   ©r_   r5   r„   r6   r7   ra   Ø  s     z%test_figure_clear.<locals>.<listcomp>r   r!   )ÚncolsÚnrowsr   c                    s   g | ]}ˆ   ˆ| ¡‘qS r6   ©Úadd_subfigurer1  ©r2   r3   r6   r7   ra     s     ©r   r!   c                 S   s   g | ]}|  d ¡‘qS ©rw   r0  ©r_   Úsfigr6   r6   r7   ra     s     c                 3   s   | ]}|ˆ j kV  qd S rª   ©ry   ©r_   r4   r„   r6   r7   Ú	<genexpr>  s     z$test_figure_clear.<locals>.<genexpr>c                 3   s   | ]}|ˆ j kV  qd S rª   ©Úsubfigsr9  r„   r6   r7   r=    s     c                    s   g | ]}ˆ   ˆ| ¡‘qS r6   r4  r1  r6  r6   r7   ra     s     c                 S   s   g | ]}|  d ¡‘qS r8  r0  r9  r6   r6   r7   ra     s     c                 3   s   | ]}|ˆ j kV  qd S rª   r;  r<  r„   r6   r7   r=    s     c                 3   s   | ]}|ˆ j kV  qd S rª   r>  r9  r„   r6   r7   r=    s     )r&   r'   rb   ry   rT   r(   Úgetattrr-   Úadd_gridspecr5  r?  r½   rN   )r-  r4   ry   ZsubfigZsubaxesZmainaxesr?  r6   r6  r7   Útest_figure_clearÉ  sh    




rB  c                  C   s    t  ¡ D ]} d| jkst‚qd S )Nr.  )r   Ú__subclasses__Ú__dict__rT   )Úklassr6   r6   r7   Útest_clf_not_redefined  s    rF  Zmpl20c                  C   s€   t  ¡ \} }|jdgdgdgdd | j ¡  | jr8t‚t|jj	|jj
d  |jj|jjd  |d d}|  |¡ | jr|t‚d S )Nr   r   T)Zpickerr   )rn   rq   ZinaxesZguiEvent)r&   r>   ÚscatterrØ   r+  ÚstalerT   r   Úbboxr'  rÛ   Zy0rÚ   Úpick)r2   r4   Zmouse_eventr6   r6   r7   Útest_picking_does_not_stale!  s    

 þ
rK  c               	   C   s*  t  ¡ } |  ddd¡}| ¡ jtddƒks.t‚| ¡ jtddƒksFt‚|  ddd¡}| ¡ jtddƒkslt‚| ¡ jtddƒks„t‚|  ddd¡}| ¡ jtddƒksªt‚| ¡ jtddƒksÂt‚|  ddd¡}| ¡ jtddƒksèt‚| ¡ jtddƒkst‚t 	t
¡ |  ddd	¡ W 5 Q R X d S )
Nr   r   ©r   rQ   r!   r   )r:   rÉ   )r   rÉ   )r:   rQ   )rÉ   r   )r&   r'   r(   Úget_subplotspecZrowspanr-   rT   ÚcolspanrU   rV   Ú
IndexError)r2   r{   rh   Úax3Zax4r6   r6   r7   Útest_add_subplot_twotuple/  s    rQ  ztightbbox_box_aspect.svgr   Úteal)rû   r™   T)Ústylerš   Úremove_textc                  C   sL   t  ¡ } |  dd¡}|  |d ¡}| j|d dd}| d¡ | d¡ d S )	Nr!   r   ©r   r   r7  r~   r‚   rc   )r   r!   r!   )r&   r'   rA  r(   Zset_box_aspect)r2   r3   r{   rh   r6   r6   r7   Útest_tightbbox_box_aspectA  s    
rV  c                 C   s4   |  ¡ }| tdƒ¡ |   ¡ }|jtdƒdd d S )NrQ   T)Zanimated)r>   r)   r-   )r  r  Zax_refZax_testr6   r6   r7   Ú test_animated_with_canvas_changeN  s    rW  c                   @   sx  e Zd Zedgdej ddddgdddggddd	gd
dd	ggddg¡dd„ ƒƒZedgddd„ ƒZedgddd„ ƒZ	edgddd„ ƒZ
dd„ Zdd„ Zedgdej dddgddggdfddgddggdfddgddggdfddgdd	ggdfddgdd	ggdfddgdd	ggdfg¡dd „ ƒƒZd!d"„ Zedgdej d#i d$d%idg¡d&d'„ ƒƒZedgdej d(d)ed)ƒg¡d*d+„ ƒƒZd,d-„ Zd.d/„ Zd0d1„ Zedgdej d2d3d4d5g¡d6d7„ ƒƒZej d8ddgddggd9fddgdddgddggggd:fd;dddgdgggd<d<ggd=fg¡d>d?„ ƒZedgdd@dA„ ƒZej d2dBdCdDdEdFdGg¡dHdI„ ƒZdJdK„ ZdLdM„ ZdS )NÚTestSubplotMosaicr   r
  rn   ÚAÚBÚCÚDr!   r   r   r:   ))rY  rY  rZ  )r[  r\  rZ  ))r!   r!   r   )r   r:   r   c                 C   sÜ   |  |¡}| ¡ D ]\}}| |¡ qtt |¡ƒ}t|ƒt|ƒksHt‚| dd¡}| 	|d d…d d…f ¡}	|	 |d ¡ | 	|d d …df ¡}
|
 |d ¡ | 	|d ¡}| |d ¡ | 	|d ¡}| |d ¡ d S )Nr   r   r!   r   ©r!   r   ©r!   r!   )
Úsubplot_mosaicÚitemsrk   Úsortedr*   Úuniquer¾   rT   rA  r(   )r¬   r  r  rn   Ú	grid_axesrr   r4   Úlabelsr3   ÚaxAÚaxBÚaxCÚaxDr6   r6   r7   Ú
test_basicX  s    

zTestSubplotMosaic.test_basicc                 C   s  ddgddgg}ddgddgg}|  d	¡ |  d	¡ | ||gg¡}| ¡ D ]}| | ¡ ¡ qL| d
d¡}|d  dd¡}t|ƒD ]2\}	}
t|
ƒD ] \}}| ||	|f ¡ |¡ q”q„|d  dd¡}t|ƒD ]2\}	}
t|
ƒD ] \}}| ||	|f ¡ |¡ qàqÐd S )NrY  rZ  r[  r\  ÚEÚFÚGÚHr   r!   r   rU  r7  )	r  r_  Úvaluesrk   rl   rA  Úsubgridspecr?   r(   )r¬   r  r  rn   rq   rc  r4   r3   Zgs_leftÚjrj   rr   rC   Zgs_rightr6   r6   r7   Útest_all_nestedx  s     

z!TestSubplotMosaic.test_all_nestedc                 C   sî   |  d¡ |  d¡ ddgddgg}dg|gg}| |¡}| ¡ D ]\}}| |¡ qB| dd¡}|d	  dd¡}	| |	d
 ¡}
|
 d¡ | |	d ¡}| d¡ | |	d	 ¡}| d¡ | |	d ¡}| d¡ | |d
 ¡}| d¡ d S )Nr   rY  rZ  r[  r\  rk  r   r!   r]  rU  r7  r^  )r  r_  r`  rk   rA  ro  r(   )r¬   r  r  rn   rq   rc  rr   r4   r3   Zgs_nre  rf  rg  rh  ZaxFr6   r6   r7   Útest_nested  s&    






zTestSubplotMosaic.test_nestedc                 C   s@   dddgdddgg}d}|  dg|gg¡ |  dg|gg¡ d S )NrY  rZ  r[  r\  ))rY  rZ  rZ  )r[  r[  r\  rk  )r_  )r¬   r  r  rn   Zxtr6   r6   r7   Útest_nested_tuple±  s    z#TestSubplotMosaic.test_nested_tuplec                 C   s`   ddgdgggg}ddg}t j||d\}}|d  ¡  ¡ |ksDt‚|d  ¡  ¡ |ks\t‚d S )NrY  rZ  r[  r   r!   )Úwidth_ratios)r&   r_  Úget_gridspecZget_width_ratiosrT   )r¬   rn   rt  r2   Úaxdr6   r6   r7   Útest_nested_width_ratios¹  s    ÿz*TestSubplotMosaic.test_nested_width_ratiosc                 C   sf   ddgdgggddgg}ddg}t j||d\}}|d  ¡  ¡ |ksJt‚|d  ¡  ¡ |ksbt‚d S )NrY  rZ  r[  r\  r!   r   ©Úheight_ratios)r&   r_  ru  Zget_height_ratiosrT   )r¬   rn   ry  r2   rv  r6   r6   r7   Útest_nested_height_ratiosÃ  s    ÿÿz+TestSubplotMosaic.test_nested_height_ratioszx, empty_sentinelNÚ.ÚSKIPr   c                 C   s¶   |dkrd|i}ni }|j |f|Ž}| ¡ D ]\}}| |¡ q,tdd„ |D ƒ|dh ƒ}	t|	ƒt|ƒksnt‚| dd¡}
| |
d ¡}| |	d ¡ | |
d	 ¡}| |	d
 ¡ d S )Nr|  Úempty_sentinelc                 S   s   h | ]}|D ]}|’qqS r6   r6   )r_   ÚrowÚnamer6   r6   r7   Ú	<setcomp>ä  s       z/TestSubplotMosaic.test_empty.<locals>.<setcomp>r{  r   rU  r   r^  r!   )r_  r`  rk   ra  r¾   rT   rA  r(   )r¬   r  r  rn   r}  r®   rc  rr   r4   rd  r3   re  rf  r6   r6   r7   Ú
test_emptyÍ  s    
ÿzTestSubplotMosaic.test_emptyc              	   C   s¬   t jtdd t ddg¡ W 5 Q R X t jtdd t dg¡ W 5 Q R X t jtdd t ddgg¡ W 5 Q R X t jtdd t ddgdd	gg¡ W 5 Q R X d S )
Nz
must be 2Dr†   ZfooÚbar)r‚  r³   rt   )r³   rt   Úc)rU   rV   rW   r&   r_  r¶   r6   r6   r7   Útest_fail_list_of_strð  s    z'TestSubplotMosaic.test_fail_list_of_strÚ
subplot_kwr   r€   c           	      C   sT   ddgg}|j ||d}|pi }| dd¡}|j|d f|Ž}|j|d f|Ž}d S )Nr!   r   )r…  rU  r7  )r_  rA  r(   )	r¬   r  r  r…  rn   rc  r3   re  rf  r6   r6   r7   Útest_subplot_kwú  s    
z!TestSubplotMosaic.test_subplot_kwÚmulti_valueÚBCc           	      C   sb   d}|j |ddidddi|ddiid}| dd¡}tddddg|ƒD ]\}}|j||d	 qFd S )
NzAB;CDr™   r    r\  ÚblueÚgreen)r…  Úper_subplot_kwr   ©r™   )r_  rA  Úzipr(   )	r¬   r  r  r‡  rn   rc  r3   rp   Úspecr6   r6   r7   Útest_per_subplot_kw  s      þý	z%TestSubplotMosaic.test_per_subplot_kwc                 C   s¶   t j}|dƒdddggkst‚|dƒddgddggks:t‚|dƒddgddgddggks\t‚|d	ƒdddggkstt‚|d
ƒddgddggkst‚|dƒddgddgddggks²t‚d S )NÚABCrY  rZ  r[  zAB;CCzAB;CC;DEr\  rj  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Z_normalize_grid_stringrT   ©r¬   Ú	normalizer6   r6   r7   Útest_string_parser  s    "
þýüz$TestSubplotMosaic.test_string_parserc              	   C   s    t j}|i i dœƒi i dœks"t‚|di iƒi i dœks<t‚tjtdd›dd |i i dœƒ W 5 Q R X tjtdd›dd |i i dœƒ W 5 Q R X d S )N©rY  rZ  zThe key rZ  z appears multiple timesr†   )r”  rZ  )rZ  r”  )r   Z_norm_per_subplot_kwrT   rU   rV   rW   r‘  r6   r6   r7   Útest_per_subplot_kw_expander*  s     
ÿ 
ÿz.TestSubplotMosaic.test_per_subplot_kw_expanderc              	   C   s>   t jtdtdƒ›dd tƒ jddi id W 5 Q R X d S )Nz	The keys rZ  z are inr†   rY  )r‹  )rU   rV   rW   Úsetr   r_  r¶   r6   r6   r7   Útest_extra_per_subplot_kw7  s
     ÿz+TestSubplotMosaic.test_extra_per_subplot_kwÚstr_patternzAAA
BBBz	
AAA
BBB
zABC
DEFc                 C   s,   |  |¡}|  dd„ | ¡  d¡D ƒ¡}d S )Nc                 S   s   g | ]}t |ƒ‘qS r6   )Úlist)r_   Úlnr6   r6   r7   ra   E  s     z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>Ú
)r_  ÚstripÚsplit)r¬   r  r  r˜  rc  r6   r6   r7   Útest_single_str_input=  s    
ÿz'TestSubplotMosaic.test_single_str_inputzx,matchzS(?m)we found that the label .A. specifies a non-rectangular or non-contiguous area.z4There are duplicate keys .* between the outer layout)z	AAA
c
BBBú'All of the rows must be the same lengthrj  rŸ  c              	   C   s0   t  ¡ }tjt|d | |¡ W 5 Q R X d S )Nr†   )r&   r'   rU   rV   rW   r_  )r¬   rn   r‡   r2   r6   r6   r7   Ú	test_failH  s    zTestSubplotMosaic.test_failc                 C   s(   |  tƒ tƒ gg¡ |  ddgg¡ d S )NrY  rZ  )r_  Úobject)r¬   r  r  r6   r6   r7   Útest_hashable_keysb  s    z$TestSubplotMosaic.test_hashable_keysÚabcZcabZbcaZcbaZacbZbacc                 C   sD   t  ¡ }| |¡}t|ƒt|ƒks&t‚t|jƒt| ¡ ƒks@t‚d S rª   ©r&   r'   r_  r™  rT   ry   rn  )r¬   r˜  r2   Úax_dictr6   r6   r7   Útest_user_orderg  s    
z!TestSubplotMosaic.test_user_orderc                 C   st   dddgddgggddgdd	d
gdgggggg}t  ¡ }| |¡}t|ƒtdƒksVt‚t|jƒt| ¡ ƒkspt‚d S )NrY  rZ  r[  r\  rj  rk  rl  r{  rm  ÚIZ	ABCDEFGHIr¤  ©r¬   r   r2   r¥  r6   r6   r7   Útest_nested_user_ordero  s    ÿÿü
z(TestSubplotMosaic.test_nested_user_orderc                 C   sx   dddgddgggddgdd	d
gdgggggg}t  ¡ }|j|ddd}|d jddd tdd„ | ¡ D ƒƒstt‚d S )NrY  rZ  r[  r\  rj  rk  rl  r{  rm  r§  T)rã   rä   rå   Úlogit)ZxscaleZyscalec                 s   s&   | ]}|  ¡ d ko| ¡ dkV  qdS )rå   rª  N)Z
get_xscaleÚ
get_yscaler<  r6   r6   r7   r=  ˆ  s   ÿz3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r&   r'   r_  r–  rN   rn  rT   r¨  r6   r6   r7   Útest_share_all}  s    ÿÿüÿz TestSubplotMosaic.test_share_all)r¯   r°   r±   r	   rU   ÚmarkÚparametrizeri  rq  rr  rs  rw  rz  r  r„  r†  Útupler  r“  r•  r—  rž  r   r¢  r¦  r©  r¬  r6   r6   r6   r7   rX  W  sˆ   
üÿ



!




úþ




ÿýþþóþ


ÿ
rX  c                  C   sv   t  ¡ } |  ddd¡}|  ddd¡}t jddd| d}| ¡  ¡ }| ¡  ¡ }| ¡  ¡ }||ksft‚||ksrt‚dS )	z)Test that these all use the same gridspecr   r   rL  r:   )r   r   r/  )rN  r2   N)r&   r'   r(   Zsubplot2gridrM  ru  rT   )r2   r{   rh   rP  Zgs1Zgs2Zgs3r6   r6   r7   Útest_reused_gridspecŒ  s    r°  ztest_subfigure.pngr™   )rS  rš   c                  C   sä   t j d¡ tjdd} |  dd¡}|d  dd¡}|jD ]}|jt j 	dd¡ddd	}q:|d j
||d
 |d  d¡ |d  dd¡}|jD ]}|jt j 	dd¡ddd	}q|d j
||dd |d  d¡ | jddd d S )Né!N,r   r   r!   r   r   rŽ   éþÿÿÿ©ZvminZvmaxr=   ú	Left Sider   Úbottom)r4   Úlocationz
Right SideúFigure suptitleúxx-large©Úfontsize)r*   rG   Úseedr&   r'   Ú
subfiguresr>   r@   rF   rH   rI   rd   )r2   ÚsubrJ   r4   rL   r6   r6   r7   Útest_subfigure›  s    

r¾  c                  C   s8   t jdd} |  dd¡}tj |  | j ¡ ¡j	d¡ d S )Nr   r   r!   r   g       @)
r&   r'   r¼  r*   rD   rE   r%  rØ   r#  rÛ   )r2   r½  r6   r6   r7   Útest_subfigure_tightbbox±  s    þr¿  c                  C   sV   t jdd} |  ¡ }| ¡ |  ¡ ks(t‚| d¡ | ¡ dksBt‚|  ¡ dksRt‚d S )Nr    ©rÜ   r×   )r&   r'   r¼  Zget_dpirT   Zset_dpi©r2   Úsub_figr6   r6   r7   Útest_subfigure_dpi»  s    
rÃ  ztest_subfigure_ss.pngg{®Gáz”?)rS  rš   r   c                  C   sº   t j d¡ tjdd} |  dd¡}| j|d dd}| dd¡}|jD ]}|j	t j 
d	d	¡d
dd}qH|j||d | d¡ |  |d ¡}| t  d¡¡ | d¡ | jddd d S )Nr±  r   r   r!   r   r   ZpinkrŒ  rŽ   r²  r³  r=   r´  r   r
   r·  r¸  r¹  )r*   rG   r»  r&   r'   rA  r5  r>   r@   rF   rH   rI   rd   r(   r)   r+   rk   )r2   r3   r½  rJ   r4   rL   r6   r6   r7   Útest_subfigure_ssÅ  s    


rÄ  ztest_subfigure_double.pngc            
      C   sœ  t j d¡ tjddd} |  d¡ | jdddd	}|d
  d¡ |d
  d¡ |d  d¡ |d  d¡ |d
 jddddgd}|d
  d¡ |d
  d¡ |d
 jdddd}|D ]L}d}|j	t j 
dd¡ddd}|jd|d |jd|d |jd|d q¸|d
 j||d |d  d¡ |d  d¡ |d jd ddd!}t|ƒD ]\}}| d"|› ¡ qP|d  d#¡ |d  d$¡ |d  dd¡}	d S )%Nr±  r   )r%   é   )r   rœ   r2   r!   r   gìQ¸…ë±?)Úwspacer   Zcoralz
subfigs[0]z
subfigs[1]gffffffö?rx  zsubfigsnest[0]rj   T©rä   é   rŽ   g      Àg      @r³  zx-labelr¹  zy-labelÚTitler=   zsubfigsnest[1]ro   r   r)  ÚylabelÚ	supxlabelÚ	supylabel)r*   rG   r»  r&   r'   rd   r¼  r¢   r>   rF   rH   r.   r,   rk   rI   r?   rË  rÌ  )
r2   r?  ZsubfigsnestZaxsnest0r4   rº  rL   Zaxsnest1rK   ZaxsRightr6   r6   r7   Útest_subfigure_doubleÜ  s6    
rÍ  c               	   C   sX  t jdd} |  dd¡}|  |d ¡|  |dd…df ¡|  |ddd…f ¡|  |dd …dd …f ¡g}d}d	}tj |d jjd
|d d g¡ tj |d jj	|d |g¡ tj |d jj|d |d g¡ tj |d jj	|d d |g¡ tj |d jj|d dg¡ tj |d jj	||d g¡ t
dƒD ]}||  ¡  q8|  ¡  d S )NTr;   r   rU  r   r   r!   i€  ià  g        r:   )r&   r'   rA  r5  r*   rD   rE   rI  ÚminÚmaxr-   r(   rA   )r2   r3   Zsub_figsrÁ   rÂ   r5   r6   r6   r7   Útest_subfigure_spanning  s$    ü"""rÐ  c            	      C   sê   t jddd} | jdddddgd\}}|jdd	d
}| |dd d…f ¡}|jddgddgd |j|ddd…f |d}|jddgddgd |j|ddd	…f |d}d| _|  ¡  | ¡ }d| _|  ¡  | ¡ }t	j
 ||¡ d S )NT)r%   r   )r<   rœ   r!   r   r   rÊ   )rÆ  rt  é   )r3  r2  r   gæû©!<LÀgkâX.8@iÜ  i  )rn   rq   r   rÇ  g …ëYI¢_ÀgRã¥óÏ«W@éx   i,  )r&   r'   r¼  rA  r(   rG  rÜ   rA   Z
get_xticksr*   rD   rE   )	r2   Z	subfig_blZ	subfig_brr3   r{   rh   rP  Zticks120Zticks300r6   r6   r7   Útest_subfigure_ticks#  s"    
ÿ
rÓ  ztest_subfigure_scatter_size.png)rS  rT  c                  C   sÚ   t  ¡ } |  dd¡}|  |d ¡}|jdddgdddgddd |jdddgdddgd	dd
gdd |  |d ¡}| dd¡}||d fD ]J}|jdddgdddgdddd |jdddgdddgd	dd
gddd qŠd S )Nr!   r   r   rŽ   Ús)rÔ  Úmarkerr:   rQ   r   é(   r   rj   )rÔ  rÕ  rp   ro   )r&   r'   rA  r(   rG  r5  r>   )r2   r3   rz   r:  rJ   r4   r6   r6   r7   Útest_subfigure_scatter_size?  s    $ r×  c                  C   sN   t jdd} |  ¡ }| d¡}| dd¡}| |¡ t ¡ }| j|dd d S )Nr   r   rw   r!   rë   rô   )	r&   r'   r¼  r(   r‚  Z	bar_labelrí   rî   rè   )r2   rÂ  r4   rt   Úbufferr6   r6   r7   Útest_subfigure_pdfP  s    

rÙ  c                  C   sê   t  ¡ } |  ddd¡}|  ddd¡}|d k	s0t‚||k	s<t‚t  ¡  t  ¡ } | jddddd}| jddddd}|d k	s|t‚||k	sˆt‚t  ¡  t  ¡ } | jddddd}|  ddd¡}|d k	sÄt‚|jdksÒt‚||k	sÞt‚t  ¡  d S )Nr!   r€   r‚   Úrectilinear)r&   r'   r(   rT   rS   r  ©r2   r4   r{   r6   r6   r7   Útest_add_subplot_kwargsZ  s&    rÜ  c                  C   s  t  ¡ } |  ddddg¡}|  ddddg¡}|d k	s8t‚||k	sDt‚t  ¡  t  ¡ } | jddddgdd}| jddddgdd}|d k	sŒt‚||k	s˜t‚t  ¡  t  ¡ } | jddddgdd}|  ddddg¡}|d k	sÜt‚|jdksêt‚||k	söt‚t  ¡  d S )Nr   r!   r€   r‚   rÚ  )r&   r'   rx   rT   rS   r  rÛ  r6   r6   r7   Útest_add_axes_kwargss  s&    rÝ  c                    s~   t  dd¡ t ¡ \‰‰ ‡ ‡fdd„}td|ƒ ¡  ˆ ¡ dgksFt‚‡ ‡fdd„}td|ƒ ¡  tj	 
ˆ d	¡d
dg¡ d S )NrË   úcannot show the figurec                      s   ˆj jˆ j d¡džŽ  d S )N©rß   rÌ   r!   )r!   )rØ   Úbutton_press_eventÚ	transDatar  r6   ©r4   r2   r6   r7   Úsingle_press  s    z!test_ginput.<locals>.single_pressrß   rß  c                      sp   ˆj jˆ j d¡džŽ  ˆj  d¡ ˆj jˆ j d¡d	žŽ  ˆj jˆ j d¡d
žŽ  ˆj jˆ j d¡džŽ  d S )Nrß  r!   Z	backspace©g333333Ó?r—   ©rc   rŸ   rU  r   )r!   )r!   )r!   )r   )rØ   rà  rá  r  Úkey_press_eventr6   râ  r6   r7   Úmulti_presses–  s
    z"test_ginput.<locals>.multi_pressesr   rä  rå  )rÎ   rÐ   r&   r>   r   ÚstartZginputrT   r*   rD   rE   )Úrecwarnrã  rç  r6   râ  r7   Útest_ginputŒ  s    rê  c                 C   st   t  dd¡ t ¡ }|jddd ks(t‚td|jjdƒ 	¡  | ¡ dksLt‚td|jj
dƒ 	¡  | ¡ dkspt‚d S )	NrË   rÞ  rß   )Útimeout)rs   T)r   r   r!   F)rÎ   rÐ   r&   r'   ZwaitforbuttonpressrT   r   rØ   ræ  rè  rà  )ré  r2   r6   r6   r7   Útest_waitforbuttonpress¡  s    rì  c                  C   s>   t dd} | jdddd}|  ¡ dks*t‚| ¡ dks:t‚d S )Nzwhole Figure)rC   r!   z
sub figure)r   r¼  rl   rT   rÁ  r6   r6   r7   Útest_kwargs_pass«  s    
rí  c              	   C   sr   |j dddd |jdddd |jdddd t ddddd	œ¡$ |   d¡ |  d¡ |  d¡ W 5 Q R X d S )
NZxlabelr   rž   )r’   r‘   rÊ  rÉ  Zlightr   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)rË  rÌ  rd   r“   Z
rc_context)r  r  r6   r6   r7   Útest_rcparams³  s    ý


rî  c                  C   sÂ   t  ¡ \} }| ddgddg¡ | d¡ t | ¡}|jd |k	sFt‚|jd  ¡ dks\t‚|jd  d¡ | ¡ dks|t‚| 	dd¡ |  
¡  | 
¡  | ¡ d	ks¨t‚|jd  ¡ d
ks¾t‚d S )Nr   r!   r   r   rå   Zlinearrß   ç      Y@)rß   rï  r7  )r&   r>   r)   ræ   ÚcopyÚdeepcopyry   rT   r«  r"  rA   Zget_xlim)rf   r4   rg   r6   r6   r7   Útest_deepcopyÁ  s    

rò  c                  C   sF   t dd} | j d¡ | jdks$t‚t t | ¡¡}|jdksBt‚d S )Nr   rÀ  rÊ   i&  )r   rØ   r÷   rÜ   rT   ÚpickleÚloadsÚdumps)r2   rg   r6   r6   r7   Ú%test_unpickle_with_device_pixel_ratioÚ  s
    
rö  c                  C   sJ   ddi} t | ƒ}tjddddg| d | |ks2t‚tjdddg| d d S )NÚleftrß   r!   r   )rt  Zgridspec_kwZAB)Údictr&   r>   rT   r_  )r3   Zgs_origr6   r6   r7   Útest_gridspec_no_mutate_inputâ  s
    rù  )rrð  r   rí   Úpathlibr   ró  ÚplatformÚ	threadingr   Útypesr   rÎ   Únumpyr*   rU   ZPILr   Z
matplotlibr“   r   Zmatplotlib.testing.decoratorsr   r	   Zmatplotlib.axesr
   Zmatplotlib.figurer   r   Zmatplotlib.layout_enginer   r   r   Zmatplotlib.tickerr   r   r   Zmatplotlib.pyplotZpyplotr&   Zmatplotlib.datesÚdatesrÍ   Úmachiner8   rM   rX   r[   ri   rm   rv   r|   r…   rŒ   r   r•   r¥   r¨   rº   r¼   rÀ   rÃ   r­  r®  rÔ   rS  ÚcontextrÝ   rá   ÚinfrÞ   râ   rç   rê   rï   ró   Úparamrñ   rù   rý   rÿ   r  r  r	  r  r!  r(  r*  r,  rB  rF  rK  rQ  rV  rW  rX  r°  r¾  r¿  rÃ  rÄ  rÍ  rÐ  rÓ  r×  rÙ  rÜ  rÝ  rê  rì  rí  rî  rò  rö  rù  r6   r6   r6   r7   Ú<module>   s  ÿ
'#

,
ÿü
		
'

ý
	
þ
4



	
Q

ÿý
	
  7ÿ


 ÿ
ÿ
(

ÿ




