U
    Fvf"Ì  ã                	   @   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„ ZQdedf„ ZRedgdgdhdi„ ƒZSej= >djdkdlg¡dmdn„ ƒZTdodp„ ZUeddqgdgdrds„ ƒZVej= >dtddqdudvdg¡dwdx„ ƒZWdydz„ ZXd{d|„ ZYd}d~„ ZZej= >dd€dg¡d‚dƒ„ ƒZ[d„d…„ Z\ej@ Ad†¡d‡dˆ„ ƒZ]d‰dŠ„ Z^ed‹gd†dŒddŽœddd‘d’„ ƒZ_eddqdvdgdgd“d”„ ƒZ`G d•d–„ d–ƒZad—d˜„ Zbed™gd†dšdid›dœd„ ƒZcdždŸ„ Zdd d¡„ Zeed¢gd†dšdid£d¤d¥d¦„ ƒZfed§gd†dšdid›d¨d©„ ƒZgdªd«„ Zhej@ Ad†¡d¬d­„ ƒZied®gd†dd¯d°d±„ ƒZjd²d³„ Zkd´dµ„ Zld¶d·„ Zmd¸d¹„ Zndºd»„ Zod¼d½„ Zpd¾d¿„ ZqedgdgdÀdÁ„ ƒZrdÂdÃ„ ZsdÄdÅ„ ZtdÆdÇ„ ZudÈdÉ„ Zvd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© r7   ú@/tmp/pip-unpacked-wheel-7vhvci0g/matplotlib/tests/test_figure.pyÚtest_align_labels   s>    



r9   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   ZBooZWhoé   r!   r   T©Úconstrained_layoutr&   ©r5   )r'   ÚsubplotsÚ	enumerateÚflatr/   r*   r+   r,   Zalign_ylabelsZalign_xlabelsÚdraw_without_renderingÚzerosr0   ÚlabelÚget_positionr2   ÚtestingÚassert_allcloseÚ
pcolormeshÚrandomÚrandnÚcolorbar)r3   ÚaxsÚnnr5   ZxnZynÚpcr7   r7   r8   Útest_align_labels_stray_axesE   s>    

"

"



rN   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_todayr7   r7   r8   Útest_figure_labelh   s(    










rY   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 )NZoner   Zthreer:   )r'   r(   Zfignum_existsrU   rT   r7   r7   r7   r8   Útest_fignum_exists€   s    




rZ   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 r7   ©Zget_text©Ú.0Útr7   r7   r8   Ú
<listcomp>—   s     z$test_clf_keyword.<locals>.<listcomp>F)r[   Úclearç      à?c                 S   s   g | ]}|  ¡ ‘qS r7   r\   r]   r7   r7   r8   r`   œ   s     r   Tc                 S   s   g | ]}|  ¡ ‘qS r7   r\   r]   r7   r7   r8   r`       s     )r'   r(   ÚsuptitleZtextsrU   Útextr>   )Ztext1Ztext2Zfig0Úfig1Úfig2Úax2r7   r7   r8   Útest_clf_keyword   s    
rh   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 )NrP   rR   rQ   r   r!   Úr)	r'   r(   r)   Ú	set_titleÚ	get_labelr*   r+   r,   rT   )r3   r5   r7   r7   r8   Útest_figure£   s    


rl   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Úyri   rb   ÚkZ_yÚzÚb)r'   r>   r*   Zlegend©r3   rK   r7   r7   r8   Útest_figure_legend²   s    ru   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gcarU   r)   ÚaxesZsca)r3   Úax0Úax1r7   r7   r8   Ú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
   rV   rW   rX   Ú	TypeError©r3   r7   r7   r8   Ú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 <= 4rR   rb   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(   rV   rW   rX   r)   r‚   r>   ©r3   Ú_r5   r7   r7   r8   Útest_add_subplot_invalidç   sH    ÿÿÿÿÿr‹   Zfigure_suptitlec                  C   s.   t  ¡ \} }| jddd | jdddd d S )NZhellori   )ro   Útitlern   é   )ro   Zrotation)r'   r>   rc   )r3   rŠ   r7   r7   r8   Ú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FontPropertiesrc   Zget_fontsizeZget_size_in_pointsrU   Z
get_weight)r3   r5   ZfpsÚtxtr7   r7   r8   Ú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ƒ   r7   r7   r8   Ú
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!   )rV   ÚwarnsÚRuntimeWarningr.   r’   ZrcParamsr'   r(   )r6   r7   r7   r8   Ú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Úkwargsr7   r7   r8   rª   C  s    z7test_iterability_axes_argument.<locals>.MyAxes.__init__)Ú__name__Ú
__module__Ú__qualname__rª   r7   r7   r7   r8   Ú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)rX   )r«   Úitemr7   r7   r8   Ú__getitem__H  s    z;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s   ˆ d| ifS )Nr¨   r7   ©r«   ©r±   r7   r8   Ú_as_mpl_axesL  s    z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)r®   r¯   r°   r´   r·   r7   r¶   r7   r8   ÚMyClassF  s   r¸   r!   r   )r
   r'   r(   r)   rT   )r¸   r3   r7   r¶   r8   Ú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 )NrR   r!   r   r:   )r!   r   r   )r'   r(   Zset_figwidthZget_figwidthrU   Zset_figheightZget_figheightÚset_size_inchesrƒ   r7   r7   r8   Ú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ravelrx   rU   Úlen©r3   rK   r5   r7   r7   r8   Ú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   rb   )r   r   )r'   Z	figaspectr+   Zfloat64rU   rB   )ÚwÚhr7   r7   r8   Ú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:   rR   é   é   Ú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_dater0   Zset_minor_locatorr   ÚwarningsÚcatch_warningsÚfilterwarningsZset_minor_formatterr   Zautofmt_xdaterx   r1   ÚintZget_rotationrU   )
rÄ   ÚdateÚtimeZangleZminorsrm   rp   r3   r5   rC   r7   r7   r8   Ú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ÚheightrU   ÚwidthÚdpirƒ   r7   r7   r8   Ú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š   )rV   rW   rX   r'   r(   rº   )rÛ   rÚ   r3   r7   r7   r8   Ú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…   çš™™™™™¹?rb   z#multiple values for argument 'rect'r   r!   )Zrectrˆ   )
r'   r(   rV   rW   r‚   rw   rX   r+   Únanr>   r‰   r7   r7   r8   Ú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½   r0   Zget_ticklabelsrU   r2   r¾   r7   r7   r8   Ú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(   rV   rW   r‚   Úsavefig)r3   Úmsgr7   r7   r8   Ú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(   rV   rW   r‚   rç   ÚioÚBytesIO)r3   rë   r7   r7   r8   Ú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(   rV   rW   ÚModuleNotFoundErrorrç   rX   rƒ   r7   r7   r8   Ú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_ratiorU   )rð   r3   r5   ÚbufZratio1Zratio2r7   r7   r8   Útest_savefig_pixel_ratio   s    



rø   c                  C   s0   t jdd} | jt ¡ dd |  ¡ js,t‚d S )NÚ
compressedr   r   ©Úbbox_inches)r'   r(   rç   rì   rí   Úget_layout_engineZ	_compressrU   rƒ   r7   r7   r8   Ú#test_savefig_preserve_layout_engine  s    rý   c                  C   s|   t  ¡ \} }| tj dd¡¡}| j|dd}| jt 	¡ t
j ddgddgg¡d |jjddj|jjd	djksxt‚d S )
Nr   é(   )Zaspectr   r:   rú   T)ÚoriginalF)r'   r>   rG   r+   rH   rI   rJ   rç   rì   rí   r’   Z
transformsZBboxr5   rD   ZboundsrU   )r3   r5   rM   Zcbarr7   r7   r8   Útest_savefig_locate_colorbar  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(   ÚreprrU   rƒ   r7   r7   r8   Ú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_layoutrU   Zget_constrained_layoutrƒ   r7   r7   r8   Ú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>   rV   r¥   ÚUserWarningZsubplots_adjustÚ
isinstancerü   r   rU   r   r   rW   rX   Úset_layout_enginerG   r+   rH   rI   rJ   ÚRuntimeErrorr   )r3   r5   ZwstrM   r7   r7   r8   Útest_invalid_layouts<  sN    ÿ





r  ©r   c              
   C   sd   t || gddgƒD ]L\}}t d|i¡ |jdd}|jdd W 5 Q R X t| ¡ tƒst‚qd S )NFTzfigure.autolayoutr   )Úncolsr&   )Úw_pad)	Úzipr’   Ú
rc_contextr>   r  r  rü   r   rU   )Úfig_testÚfig_refr3   Z
autolayoutrx   r7   r7   r8   Ú&test_tightlayout_autolayout_deconflictp  s
    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>   rV   r¥   r  r  )r   r3   r5   r7   r7   r8   Útest_layout_change_warningy  s    r  c                  C   s"   t ƒ } |  ¡  |  ¡  |  ¡  d S r©   )r   r  rƒ   r7   r7   r8   Útest_repeated_tightlayout„  s    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  rb   çš™™™™™©?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)	r  r  r  r  Zr1Zr2Zr3r²   rg   r7   r7   r8   Útest_add_artistŒ  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ÚlowerrU   )r   ZtmpdirÚoutÚfiler7   r7   r8   Ú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      ð?rb   zThis dangles over endgR¸…ë"@r   r  gî|?5^ºå?Fg¢E¶óýT@T)Zbbox_extra_artists)r'   r>   Úset_xlimrd   rØ   Úget_rendererÚabsÚget_tightbboxÚx1rÜ   rU   Úx0Zset_in_layout)r3   r5   r_   rÙ   Zx1Nom0Zx1Nomr7   r7   r8   Ú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  r0   Zget_major_formatterrÍ   ZAutoDateFormatterrU   Zset_major_formatterr   rt   r7   r7   r8   Útest_axes_removalÌ  s    (ÿ(ÿr1  c                  C   s,   t jddd\} }|d  ¡  | j ¡  d S )Nr   Tr0  r   )r'   r>   r¼   rØ   Údrawrt   r7   r7   r8   Útest_removed_axisÞ  s    r3  Ú
clear_methra   Ú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 )Nrv   c                    s   g | ]}ˆ   d d|d ¡‘qS ©r   r!   ©r)   ©r^   r6   rƒ   r7   r8   r`   ô  s     z%test_figure_clear.<locals>.<listcomp>r   r!   )r  Únrowsr   c                    s   g | ]}ˆ   ˆ| ¡‘qS r7   ©Úadd_subfigurer8  ©r3   r4   r7   r8   r`   !  s     ©r   r!   c                 S   s   g | ]}|  d ¡‘qS ©rv   r7  ©r^   Úsfigr7   r7   r8   r`   "  s     c                 3   s   | ]}|ˆ j kV  qd S r©   ©rx   ©r^   r5   rƒ   r7   r8   Ú	<genexpr>#  s     z$test_figure_clear.<locals>.<genexpr>c                 3   s   | ]}|ˆ j kV  qd S r©   ©Úsubfigsr?  rƒ   r7   r8   rC  $  s     c                    s   g | ]}ˆ   ˆ| ¡‘qS r7   r:  r8  r<  r7   r8   r`   .  s     c                 S   s   g | ]}|  d ¡‘qS r>  r7  r?  r7   r7   r8   r`   /  s     c                 3   s   | ]}|ˆ j kV  qd S r©   rA  rB  rƒ   r7   r8   rC  0  s     c                 3   s   | ]}|ˆ j kV  qd S r©   rD  r?  rƒ   r7   r8   rC  1  s     )r'   r(   ra   rx   rU   r)   Úgetattrr.   Úadd_gridspecr;  rE  r¼   rO   )r4  r5   rx   ZsubfigZsubaxesZmainaxesrE  r7   r<  r8   Útest_figure_clearå  sh    




rH  c                  C   s    t  ¡ D ]} d| jkst‚qd S )Nr5  )r   Ú__subclasses__Ú__dict__rU   )Úklassr7   r7   r8   Útest_clf_not_redefined7  s    rL  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   )rm   rp   ZinaxesZguiEvent)r'   r>   ÚscatterrØ   r2  ÚstalerU   r   Úbboxr.  rÛ   Zy0rÚ   Zpick)r3   r5   Zmouse_eventr7   r7   r8   Útest_picking_does_not_stale=  s    

 þ
rP  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   rR   r!   r   )r:   rÉ   )r   rÉ   )r:   rR   )rÉ   r   )r'   r(   r)   Úget_subplotspecZrowspanr.   rU   ÚcolspanrV   rW   Ú
IndexError)r3   rz   rg   Úax3Zax4r7   r7   r8   Útest_add_subplot_twotupleK  s    rV  ztightbbox_box_aspect.svgr   Z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   r=  r}   r   rb   )r   r!   r!   )r'   r(   rG  r)   Zset_box_aspect)r3   r4   rz   rg   r7   r7   r8   Útest_tightbbox_box_aspect]  s    
rZ  c                 C   s4   |  ¡ }| tdƒ¡ |   ¡ }|jtdƒdd d S )NrR   T)Zanimated)r>   r*   r.   )r  r  Zax_refZax_testr7   r7   r8   Ú test_animated_with_canvas_changej  s    r[  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  rm   ÚAÚBÚCÚDr!   r   r   r:   ))r]  r]  r^  )r_  r`  r^  ))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Úitemsrj   Úsortedr+   Úuniquer½   rU   rG  r)   )r«   r  r  rm   Ú	grid_axesrq   r5   Úlabelsr4   ÚaxAÚaxBÚaxCÚaxDr7   r7   r8   Ú
test_basict  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 )Nr]  r^  r_  r`  ÚEÚFÚGÚHr  r!   r   rY  r=  )	r	  rc  Úvaluesrj   rk   rG  Úsubgridspecr?   r)   )r«   r  r  rm   rp   rg  r5   r4   Zgs_leftÚjri   rq   rC   Zgs_rightr7   r7   r8   Útest_all_nested”  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  r]  r^  r_  r`  ro  r   r!   ra  rY  r=  rb  )r	  rc  rd  rj   rG  rs  r)   )r«   r  r  rm   rp   rg  rq   r5   r4   Zgs_nri  rj  rk  rl  ZaxFr7   r7   r8   Ú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 )Nr]  r^  r_  r`  ))r]  r^  r^  )r_  r_  r`  ro  )rc  )r«   r  r  rm   Zxtr7   r7   r8   Ú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 )Nr]  r^  r_  r   r!   )Úwidth_ratios)r'   rc  Úget_gridspecZget_width_ratiosrU   )r«   rm   rx  r3   Úaxdr7   r7   r8   Ú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 )Nr]  r^  r_  r`  r!   r   ©Úheight_ratios)r'   rc  ry  Zget_height_ratiosrU   )r«   rm   r}  r3   rz  r7   r7   r8   Ú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 r7   r7   )r^   ÚrowÚnamer7   r7   r8   Ú	<setcomp>   s       z/TestSubplotMosaic.test_empty.<locals>.<setcomp>r  r   rY  r   rb  r!   )rc  rd  rj   re  r½   rU   rG  r)   )r«   r  r  rm   r  r­   rg  rq   r5   rh  r4   ri  rj  r7   r7   r8   Ú
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²   rs   )r²   rs   Úc)rV   rW   rX   r'   rc  rµ   r7   r7   r8   Ú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‰  rY  r=  )rc  rG  r)   )	r«   r  r  r‰  rm   rg  r4   ri  rj  r7   r7   r8   Útest_subplot_kw  s    
z!TestSubplotMosaic.test_subplot_kwÚmulti_valueZ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`  ZblueZgreen)r‰  Úper_subplot_kwr   ©r˜   )rc  rG  r  r)   )	r«   r  r  r‹  rm   rg  r4   ro   Úspecr7   r7   r8   Ú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ÚABCr]  r^  r_  zAB;CCzAB;CC;DEr`  rn  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Z_normalize_grid_stringrU   ©r«   Ú	normalizer7   r7   r8   Útest_string_parser3  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©r]  r^  zThe key r^  z appears multiple timesr…   )r”  r^  )r^  r”  )r   Z_norm_per_subplot_kwrU   rV   rW   rX   r‘  r7   r7   r8   Útest_per_subplot_kw_expanderF  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 r^  z are inr…   r]  )rŒ  )rV   rW   rX   Úsetr   rc  rµ   r7   r7   r8   Útest_extra_per_subplot_kwS  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 r7   )Úlist)r^   Úlnr7   r7   r8   r`   a  s     z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>Ú
)rc  ÚstripÚsplit)r«   r  r  r˜  rg  r7   r7   r8   Útest_single_str_inputY  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 lengthrn  rŸ  c              	   C   s0   t  ¡ }tjt|d | |¡ W 5 Q R X d S )Nr…   )r'   r(   rV   rW   rX   rc  )r«   rm   r†   r3   r7   r7   r8   Ú	test_faild  s    zTestSubplotMosaic.test_failc                 C   s(   |  tƒ tƒ gg¡ |  ddgg¡ d S )Nr]  r^  )rc  Úobject)r«   r  r  r7   r7   r8   Útest_hashable_keys~  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(   rc  r™  rU   rx   rr  )r«   r˜  r3   Úax_dictr7   r7   r8   Útest_user_orderƒ  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 )Nr]  r^  r_  r`  rn  ro  rp  r  rq  ÚIZ	ABCDEFGHIr¤  ©r«   r   r3   r¥  r7   r7   r8   Útest_nested_user_order‹  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 )Nr]  r^  r_  r`  rn  ro  rp  r  rq  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_yscalerB  r7   r7   r8   rC  ¤  s   ÿz3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r'   r(   rc  r–  rO   rr  rU   r¨  r7   r7   r8   Útest_share_all™  s    ÿÿüÿz TestSubplotMosaic.test_share_all)r®   r¯   r°   r	   rV   ÚmarkÚparametrizerm  ru  rv  rw  r{  r~  r…  rˆ  rŠ  Útupler  r“  r•  r—  rž  r   r¢  r¦  r©  r¬  r7   r7   r7   r8   r\  s  sˆ   
üÿ



!




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




ÿýþþóþ


ÿ
r\  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   rQ  r:   )r   r   r6  )rS  r3   N)r'   r(   r)   Zsubplot2gridrR  ry  rU   )r3   rz   rg   rU  Zgs1Zgs2Zgs3r7   r7   r8   Útest_reused_gridspec¨  s    r°  ztest_subfigure.pngr˜   )rW  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   Zbottom)r5   Úlocationz
Right SideúFigure suptitleúxx-large©Úfontsize)r+   rH   Úseedr'   r(   Ú
subfiguresr>   r@   rG   rI   rJ   rc   )r3   ÚsubrK   r5   rM   r7   r7   r8   Ú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+   rE   rF   r,  rØ   r*  rÛ   )r3   r¼  r7   r7   r8   Ú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_dpirU   Zset_dpi©r3   Úsub_figr7   r7   r8   Útest_subfigure_dpi×  s    
rÂ  ztest_subfigure_ss.pngç{®Gáz”?)rW  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+   rH   rº  r'   r(   rG  r;  r>   r@   rG   rI   rJ   rc   r)   r*   r,   rj   )r3   r4   r¼  rK   r5   rM   r7   r7   r8   Ú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›   r3   r!   r   gìQ¸…ë±?)Úwspacer   Zcoralz
subfigs[0]z
subfigs[1]gffffffö?r|  zsubfigsnest[0]ri   T©rã   é   r   g      Àg      @r³  zx-labelr¸  zy-labelÚTitler=   zsubfigsnest[1]rn   r   r0  ÚylabelÚ	supxlabelÚ	supylabel)r+   rH   rº  r'   r(   rc   r»  r¡   r>   rG   rI   r/   r-   rj   rJ   r?   rË  rÌ  )
r3   rE  ZsubfigsnestZaxsnest0r5   r¹  rM   Zaxsnest1rL   ZaxsRightr7   r7   r8   Ú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   rY  r   r   r!   é€  éà  ç        r:   )r'   r(   rG  r;  r+   rE   rF   rO  ÚminÚmaxr.   r)   rA   )r3   r4   Úsub_figsrÁ   rÂ   r6   r7   r7   r8   Ú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Æ  rx  é   )r9  r  r   gæû©!<LÀgkâX.8@iÜ  i  )rm   rp   r   rÇ  g …ëYI¢_ÀgRã¥óÏ«W@éx   i,  )r'   r(   r»  rG  r)   rM  rÜ   rA   Z
get_xticksr+   rE   rF   )	r3   Z	subfig_blZ	subfig_brr4   rz   rg   rU  Zticks120Zticks300r7   r7   r8   Útest_subfigure_ticks?  s"    
ÿ
r×  ztest_subfigure_scatter_size.png)rW  rX  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:   rR   rœ   rþ   r   ri   )rØ  rÙ  ro   rn   )r'   r(   rG  r)   rM  r;  r>   )r3   r4   ry   r@  rK   r5   r7   r7   r8   Útest_subfigure_scatter_size[  s    $ rÚ  c                  C   sN   t jdd} |  ¡ }| d¡}| dd¡}| |¡ t ¡ }| j|dd d S )Nr  r   rv   r!   rê   ró   )	r'   r(   r»  r)   r†  Z	bar_labelrì   rí   rç   )r3   rÁ  r5   rs   Úbufferr7   r7   r8   Útest_subfigure_pdfl  s    

rÜ  c                  C   s’  t  ¡ jddddd} d}d}tj | d jjd	|d
 g¡ tj | d jj|d |g¡ tj | d jj|d |d
 g¡ tj | d jj|d |g¡ tj | d jj|d |d
 g¡ tj | d jj||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 |d g¡ tj | d jj|d dg¡ tj | d jj||d g¡ d S )Nr   r   rb   gUUUUUUÅ?)ÚhspacerÆ  rÎ  rÏ  rY  rÐ  rž   ç333333Ó?r=  gffffffÖ?gÍÌÌÌÌÌä?r"   r  ra  r   r–   rb  rÀ   )	r'   r(   r»  r+   rE   rF   rO  rÑ  rÒ  )rÓ  rÁ   rÂ   r7   r7   r8   Útest_subfigures_wspace_hspacev  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)   rU   rT   rƒ  ©r3   r5   rz   r7   r7   r8   Útest_add_subplot_kwargs  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(   rw   rU   rT   rƒ  rá  r7   r7   r8   Útest_add_axes_kwargs¨  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  r7   ©r5   r3   r7   r8   Ú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©rÞ  r–   ©rb   rž   rY  r   )r!   )r!   )r!   )r   )rØ   ræ  rç  r  Úkey_press_eventr7   rè  r7   r8   Úmulti_pressesË  s
    z"test_ginput.<locals>.multi_pressesr   rê  rë  )rÎ   rÐ   r'   r>   r   ÚstartZginputrU   r+   rE   rF   )Úrecwarnré  rí  r7   rè  r8   Ú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)rr   T)r   r   r!   F)rÎ   rÐ   r'   r(   ZwaitforbuttonpressrU   r   rØ   rì  rî  ræ  )rï  r3   r7   r7   r8   Ú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»  rk   rU   rÀ  r7   r7   r8   Ú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É  Úlightrœ   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)rË  rÌ  rc   r’   r  )r  r  r7   r7   r8   Ú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ö  r=  )r'   r>   r*   rå   ÚcopyÚdeepcopyrx   rU   r«  r)  rA   Zget_xlim)re   r5   rf   r7   r7   r8   Ú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Ü   rU   ÚpickleÚloadsÚdumps)r3   rf   r7   r7   r8   Ú%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   )rx  Zgridspec_kwZAB)Údictr'   r>   rU   rc  )r4   Zgs_origr7   r7   r8   Útest_gridspec_no_mutate_input  s
    r   c               	   C   s`   dddddœ} t |  ¡ •ƒ}tjtjjf | Žd}tjt	dd | 
¡ |ksRt‚W 5 Q R X d S )	Nr   rÃ  g¸…ëQ¸ž?g{®Gáz¤?)r  Zh_padrÆ  rÝ  r   zwill be deprecatedr…   )r¯  rr  r'   r(   r’   Zlayout_enginer   rV   r¥   ÚPendingDeprecationWarningZget_constrained_layout_padsrU   )ÚparamsÚexpectedr3   r7   r7   r8   Ú test_get_constrained_layout_pads  s
    r  )wr÷  r   rì   Úpathlibr   rú  ÚplatformÚ	threadingr   Útypesr   rÎ   Znumpyr+   rV   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Í   Úmachiner9   rN   rY   rZ   rh   rl   ru   r{   r„   r‹   rŽ   r”   r¤   r§   r¹   r»   r¿   rÃ   r­  r®  rÔ   rW  ÚcontextrÝ   rà   ÚinfrÞ   rá   ræ   ré   rî   rò   Úparamrð   rø   rý   r   r  r  r  r  r  r  r  r(  r/  r1  r3  rH  rL  rP  rV  rZ  r[  r\  r°  r½  r¾  rÂ  rÄ  rÍ  rÔ  r×  rÚ  rÜ  rß  râ  rã  rð  rò  ró  rõ  rù  rý  r   r  r7   r7   r7   r8   Ú<module>   s  ÿ
'#

,
ÿü
		
'

ý
	
þ
4



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