o
    l’×i"Ì  ã                	   @   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?g d@¢¡dAdB„ ƒZ?ej@ AdC¡dDdE„ ƒZBej= >dFdGejCfdHejDdGfg¡dIdJ„ ƒZEdKdL„ ZFdMdN„ ZGdOdP„ ZHdQdR„ ZIdSdT„ ZJej= >dUejKdVej= LdV¡gdWejKdXej= LdX¡gdWg¡dYdZ„ ƒZMd[d\„ ZNd]d^„ ZOd_d`„ ZPdadb„ ZQdcdd„ ZRedgdedfdg„ ƒZSej= >dhdidjg¡dkdl„ ƒZTdmdn„ ZUeddogdedpdq„ ƒZVej= >drg ds¢¡dtdu„ ƒZWdvdw„ ZXdxdy„ ZYdzd{„ ZZej= >d|d}d~g¡dd€„ ƒZ[dd‚„ Z\ej@ Adƒ¡d„d…„ ƒZ]d†d‡„ Z^edˆgdƒd‰dŠd‹œdŒddŽd„ ƒZ_eg d¢ded‘d’„ ƒZ`G d“d”„ d”ƒZad•d–„ Zbed—gdƒd˜dŠid™dšd›„ ƒZcdœd„ ZddždŸ„ Zeed gdƒd˜dŠid¡d¢d£d¤„ ƒZfed¥gdƒd˜dŠid™d¦d§„ ƒZgd¨d©„ Zhej@ Adƒ¡dªd«„ ƒZied¬gdƒdŒd­d®d¯„ ƒZjd°d±„ Zkd²d³„ Zld´dµ„ Zmd¶d·„ Znd¸d¹„ Zodºd»„ Zpd¼d½„ Zqedgde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ÚScalarFormatterÚ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 ]G}|  |d|f ¡}| d| ¡ | 
d| ¡ |dv rc|j d¡ |j ¡  |dkrs| ¡ D ]}| d¡ qk|dkr‚|j d¡ |j ¡  q;t	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   ÚGridSpecÚadd_subplotÚplotÚnpÚarangeÚ
set_ylabelÚrangeÚ
set_xlabelÚxaxisÚset_label_positionÚtick_topÚget_xticklabelsÚset_rotationÚyaxisÚ
tick_rightÚalign_labels)ÚfigÚgsÚaxÚiÚtick© r?   úZ/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/matplotlib/tests/test_figure.pyÚtest_align_labels   sB   


€
€rA   c                  C   s
  t  dd¡\} }t|jƒD ]\}}| d¡ | d¡ | t d¡| t d¡| ¡ q|  ¡  |  	¡  |  
¡  t d¡}t d¡}t|jƒD ]\}}|jj ¡ d ||< |jj ¡ d ||< qGtj |d d… |dd … ¡ tj |d d d… |dd d… ¡ t jdddd\} }t|jƒD ]\}}| d¡ | d¡ | tj d	d	¡¡}q| j||d
 |  ¡  |  	¡  |  
¡  t d¡}t d¡}t|jƒD ]\}}|jj ¡ d ||< |jj ¡ d ||< qÊtj |d d… |dd … ¡ tj |d d d… |dd d… ¡ d S )Nr   ÚBooÚWhoé   r"   r   T©Úconstrained_layoutr'   ©r<   )r(   ÚsubplotsÚ	enumerateÚflatr1   r,   r-   r.   Úalign_ylabelsÚalign_xlabelsÚdraw_without_renderingÚzerosr2   ÚlabelÚget_positionr7   ÚtestingÚassert_allcloseÚ
pcolormeshÚrandomÚrandnÚcolorbar)r:   ÚaxsÚnnr<   ÚxnÚynÚpcr?   r?   r@   Útest_align_labels_stray_axesE   s>   

"

"



&r\   c                  C   s  t  d¡ t  d¡} t  d¡ t  d¡ t  ¡  t  d¡ t  d¡ t  d¡ t  ¡ g d¢ks1J ‚t  ¡ g d¢ks;J ‚t  d	¡ t  ¡  t  d
¡ t  d¡ t  ¡ ddgksXJ ‚t  ¡ ddgksbJ ‚t  | ¡ t  ¡ | ksoJ ‚t t¡ t  t	ƒ ¡ W d   ƒ d S 1 s†w   Y  d S )NÚallÚtodayr   Útomorrowr   r"   )r   r"   r   rD   é   )Ú r^   ra   r_   ra   r'   r`   ra   )
r(   Úcloser)   Úget_fignumsÚget_figlabelsÚgcfÚpytestÚraisesÚ
ValueErrorr   )Ú	fig_todayr?   r?   r@   Útest_figure_labelh   s*   










"ÿrj   c                   C   s’   t  d¡ t  d¡ t  d¡ t  ¡  t  d¡sJ ‚t  d¡s!J ‚t  d¡s(J ‚t  d¡s/J ‚t  d¡ t  d¡ t  d¡r@J ‚t  d¡rGJ ‚d S )NÚoner   ÚthreerD   )r(   r)   Úfignum_existsrb   r?   r?   r?   r@   Útest_fignum_exists€   s   




rn   c                  C   sº   d} d}t jdd}| | ¡ dd„ |jD ƒ| gksJ ‚t jddd}| d	d	|¡ ||u s0J ‚d
d„ |jD ƒ| |gks>J ‚t jddddd\}}||u sOJ ‚dd„ |jD ƒg ks[J ‚d S )NzA fancy plotzReally fancy!r"   )Únumc                 S   ó   g | ]}|  ¡ ‘qS r?   ©Úget_text©Ú.0Útr?   r?   r@   Ú
<listcomp>—   ó    z$test_clf_keyword.<locals>.<listcomp>F)ro   Úclearç      à?c                 S   rp   r?   rq   rs   r?   r?   r@   rv   œ   rw   r   Tc                 S   rp   r?   rq   rs   r?   r?   r@   rv       rw   )r(   r)   ÚsuptitleÚtextsÚtextrH   )Útext1Útext2Úfig0Úfig1Úfig2Úax2r?   r?   r@   Útest_clf_keyword   s   
rƒ   Úfigure_todayc                  C   sh   t  d¡} |  ¡ }| |  ¡ ¡ | t d¡¡ t  d¡ t  ddgddgd¡ t  d¡ t  d¡ d S )Nr^   r`   r_   r   r"   Úr)	r(   r)   r+   Ú	set_titleÚ	get_labelr,   r-   r.   rb   )r:   r<   r?   r?   r@   Útest_figure£   s   


rˆ   Ú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)rO   ÚcolorÚyr…   ry   ÚkÚ_yÚzÚb)r(   rH   r,   Úlegend©r:   rW   r?   r?   r@   Útest_figure_legend²   s   r”   c                  C   s¸   t  ¡ } |  g d¢¡}|  ¡ |u sJ ‚|  d¡}|  ¡ |u s J ‚|  |¡ | j||gks.J ‚|  ¡ |u s6J ‚|  |¡ | j||gksDJ ‚|  |¡ | j||gksRJ ‚|  ¡ |u sZJ ‚d S )N©r   r   r"   r"   éo   )r(   r)   Úadd_axesÚgcar+   ÚaxesÚsca)r:   Úax0Úax1r?   r?   r@   Útest_gca¾   s   



r   c                  C   sø   t  ¡ } | jtd t t¡ | jtdd W d   ƒ n1 s!w   Y  t t¡ | jtdd W d   ƒ n1 s=w   Y  t t¡ | jddd W d   ƒ n1 sYw   Y  t t¡ | jdd W d   ƒ d S 1 suw   Y  d S )	N)Ú
axes_classÚ3d)rž   Ú
projectionT)rž   Úpolar)r    r¡   é*   ©r    )r(   r)   r+   r
   rf   rg   rh   Ú	TypeError©r:   r?   r?   r@   Útest_add_subplot_subclassÚ   s   ÿÿÿ"ÿr¦   c                  C   sæ  t  ¡ } tjtdd |  ddd¡ W d   ƒ n1 sw   Y  tjtdd |  ddd¡ W d   ƒ n1 s;w   Y  tjtdd |  ddd¡ W d   ƒ n1 sYw   Y  tjtdd |  ddd¡ W d   ƒ n1 sww   Y  tjtdd |  ddd	¡ W d   ƒ n1 s•w   Y  tjtd
d |  d¡ W d   ƒ n1 s±w   Y  tjtd
d |  d¡ W d   ƒ n1 sÍw   Y  tjtdd |  dd¡ W d   ƒ n1 sêw   Y  tjtdd |  dddd¡ W d   ƒ n	1 s
w   Y  tjtdd |  ddd¡ W d   ƒ n	1 s)w   Y  tjtdd |  ddd¡ W d   ƒ n	1 sHw   Y  t  ¡ \}}tjtdd |  |¡ W d   ƒ d S 1 slw   Y  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 <= 4r`   ry   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   rD   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)   rf   rg   rh   r+   r¤   rH   ©r:   Ú_r<   r?   r?   r@   Útest_add_subplot_invalidç   s`   ÿþÿþþþþÿÿþþÿýÿýÿ$ýr­   Úfigure_suptitlec                  C   s.   t  ¡ \} }| jddd | jdddd d S )NÚhellor…   )rŒ   Útitler‹   é   )rŒ   Úrotation)r(   rH   rz   )r:   r¬   r?   r?   r@   Útest_suptitle  s   r³   c                  C   sV   t  ¡ \} }tjjddd}| jd|d}| ¡ | ¡ ksJ ‚| ¡ | ¡ ks)J ‚d S )NÚlargeÚbold)ÚsizeÚweightzfontprops title)Úfontproperties)	r(   rH   ÚmplÚfont_managerÚFontPropertiesrz   Úget_fontsizeÚget_size_in_pointsÚ
get_weight)r:   r<   ÚfpsÚtxtr?   r?   r@   Útest_suptitle_fontproperties  s
   rÁ   Úalpha_background©r   r"   çš™™™™™Ù?Únone)Ú	facecolorÚ	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)ÚradiusÚalpharÆ   )	r(   r)   Úset_facecolorÚpatchÚ	set_alphaÚpatchesÚappendr¹   ÚCirclePolygonr¥   r?   r?   r@   Ú
test_alpha"  s   
ÿr×   c                  C   sP   t  t¡ ttjd d ƒD ]} t ¡  qW d   ƒ d S 1 s!w   Y  d S )Nzfigure.max_open_warningr"   )rf   ÚwarnsÚRuntimeWarningr0   r¹   ÚrcParamsr(   r)   )r=   r?   r?   r@   Ú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| g|¢R i |¤Ž d S ©N)r
   Ú__init__)ÚselfrÜ   ÚargsÚkwargsr?   r?   r@   rÞ   C  s   z7test_iterability_axes_argument.<locals>.MyAxes.__init__)Ú__name__Ú
__module__Ú__qualname__rÞ   r?   r?   r?   r@   Ú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)rh   )rß   Úitemr?   r?   r@   Ú__getitem__H  s   ÿz;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s   ˆ d| ifS )NrÜ   r?   ©rß   ©rå   r?   r@   Ú_as_mpl_axesL  s   z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)râ   rã   rä   rè   rë   r?   rê   r?   r@   ÚMyClassF  s    rì   r"   r£   )r
   r(   r)   r+   rb   )rì   r:   r?   rê   r@   Útest_iterability_axes_argument7  s
   	rí   c                  C   s–   t  ¡ } |  d¡ |  ¡ dksJ ‚|  d¡ |  ¡ dksJ ‚|  dd¡ |  ¡ dks,J ‚|  ¡ dks4J ‚|  d¡ |  ¡ dksAJ ‚|  ¡ dksIJ ‚d S )Nr`   r"   r   rD   )r"   r   r   )r(   r)   Úset_figwidthÚget_figwidthÚset_figheightÚget_figheightÚset_size_inchesr¥   r?   r?   r@   Útest_set_fig_sizeT  s   


ró   c                  C   sh   t  dd¡\} }|d  ¡  | ¡ d d… D ]	}|| jv sJ ‚q|d | jvs)J ‚t| jƒdks2J ‚d S )Nr   )r    r    r    r   )r(   rH   ÚremoveÚravelr™   Úlen©r:   rW   r<   r?   r?   r@   Útest_axes_removej  s   rø   c                  C   s˜   t  t d¡t d¡ ¡\} }||  dksJ ‚t  d¡\} }||  dks&J ‚t  t d¡¡\} }||  dks8J ‚t  t d¡¡\} }||  dksJJ ‚d S )Nr   r"   ©r"   r   ry   )r   r   )r(   Ú	figaspectr-   Úfloat64rN   )ÚwÚhr?   r?   r@   Útest_figaspects  s   rþ   Úwhich)ÚbothÚmajorÚminorc           
      C   s,  g d¢}g d¢}d}g d¢}t  |¡}t  |¡}t ¡ \}}| ||¡ | ¡  | ¡  |j t	dƒ¡ t
 ¡  t
 dd¡ |j t|ƒ¡ W d   ƒ n1 sQw   Y  | d|d	| ¡ | d
v rx|jd  dd¡D ]}	t|	 ¡ ƒ|kswJ ‚qk| dv r’|jd  dd¡D ]}	t|	 ¡ ƒ|ks‘J ‚q…d S d S )N)z
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 2013)z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   rD   r`   é   é   r   Úignorez=FixedFormatter should only be used together with FixedLocatorçš™™™™™É?r&   )r   r  r   Fr  )r   r  Tr  )ÚmdatesÚdatestr2numr(   rH   r,   Ú
yaxis_dateÚ
xaxis_dater2   Úset_minor_locatorr   ÚwarningsÚcatch_warningsÚfilterwarningsÚset_minor_formatterr   Úautofmt_xdater™   r5   ÚintÚget_rotation)
rÿ   ÚdateÚtimeÚangleÚminorsrŠ   r   r:   r<   rO   r?   r?   r@   Útest_autofmt_xdate~  s6   


þüþr  Údefaultc                  C   sn   t jdd} |  ¡  | jjjdksJ ‚| jjjdksJ ‚d| _|  ¡  | jjjdks,J ‚| jjjdks5J ‚d S )N)rD   rD   rÉ   i  é2   éÈ   )r(   r)   rM   ÚcanvasÚrendererÚheightÚwidthÚdpir¥   r?   r?   r@   Útest_change_dpi¦  s   r!  zwidth, heightr"   )r    r"   c                 C   s~   t  t¡ tj| |fd W d   ƒ n1 sw   Y  t ¡ }t  t¡ | | |¡ W d   ƒ d S 1 s8w   Y  d S )NrÉ   )rf   rg   rh   r(   r)   rò   )r  r  r:   r?   r?   r@   Útest_invalid_figure_size²  s   ÿ"ÿr"  c                  C   s
  t  ¡ } tjtdd |  ¡  W d   ƒ n1 sw   Y  t t¡ |  dddtjf¡ W d   ƒ n1 s9w   Y  tjtdd | jg d¢g d¢d W d   ƒ n1 s[w   Y  t  	¡ \}}tjtdd |  |¡ W d   ƒ d S 1 s~w   Y  d S )	Nz.missing 1 required positional argument: 'rect'r§   çš™™™™™¹?ry   z#multiple values for argument 'rect'r•   )Úrectrª   )
r(   r)   rf   rg   r¤   r—   rh   r-   ÚnanrH   r«   r?   r?   r@   Útest_invalid_figure_add_axesÀ  s$   ÿ
þÿÿÿ"ýr&  c                  C   s  t jdddddd\} }|jD ]}| g d¢g d¢¡ q| d¡ | d¡ |dd d …f D ]}dt|jjdd	ƒks=J ‚q.|d
d d …f D ]}dt|jjdd	ƒk sUJ ‚qF|d d …d
f D ]}dt|j	jdd	ƒksmJ ‚q^|d d …df D ]}dt|j	jdd	ƒk s…J ‚qvd S )Nr   TF)ÚsharexÚshareyÚsqueeze)r'   rË   r±   Úlogr   r   )rÿ   r"   )
r(   rH   rJ   r,   Ú
set_yscaleÚ
set_xscalerö   r2   Úget_ticklabelsr7   r÷   r?   r?   r@   Útest_subplots_shareax_loglabelsÓ  s   


ÿr.  c                  C   sL   t  ¡ } d}tjt|d |  dd¡ W d   ƒ d S 1 sw   Y  d S )Nz9savefig\(\) takes 2 positional arguments but 3 were givenr§   z
fname1.pngz
fname2.png)r(   r)   rf   rg   r¤   Úsavefig)r:   Úmsgr?   r?   r@   Útest_savefigè  s
   "ÿr1  c               	   C   sT   t  ¡ } dD ]!}t t¡ | jt ¡ |dd W d   ƒ n1 s"w   Y  qd S )N)r   Úpdfr   ÚtifÚjpgT)ÚformatÚnon_existent_kwarg)r(   r)   rf   rg   r¤   r/  ÚioÚBytesIO)r:   r5  r?   r?   r@   Útest_savefig_warnsï  s   ÿ€ÿr9  c                  C   s†   t  ¡ } tjtdd | jddd W d   ƒ n1 sw   Y  tjtdd | jddd W d   ƒ d S 1 s<w   Y  d S )	NzNo module named '@absent'r§   Útestzmodule://@absent)Úbackendz-The 'pdf' backend does not support png outputztest.pngr2  )r(   r)   rf   rg   ÚModuleNotFoundErrorr/  rh   r¥   r?   r?   r@   Útest_savefig_backendö  s   ÿÿ"þr=  r;  ÚAgg)ÚmarksÚCairoc                 C   sà   t  ¡ \}}| g d¢¡ t ¡ }|j|dd t |¡}| ¡  W d   ƒ n1 s,w   Y  t  ¡ \}}| g d¢¡ |j	 
d¡ t ¡ }|j|dd t |¡}| ¡  W d   ƒ n1 scw   Y  ||ksnJ ‚d S )N©r"   r   r   r   ©r5  r   )r(   rH   r,   r7  r8  r/  r   ÚopenÚloadr  Ú_set_device_pixel_ratio)r;  r:   r<   ÚbufÚratio1Úratio2r?   r?   r@   Útest_savefig_pixel_ratio   s    


ý


ýrI  c                  C   s0   t jdd} | jt ¡ dd |  ¡ jsJ ‚d S )NÚ
compressedr   r   ©Úbbox_inches)r(   r)   r/  r7  r8  Úget_layout_engineÚ	_compressr¥   r?   r?   r@   Ú#test_savefig_preserve_layout_engine  s   rO  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s<J ‚d S )
Nr   é(   )Úaspectr   rD   rK  T)ÚoriginalF)r(   rH   rS   r-   rT   rU   rV   r/  r7  r8  r¹   Ú
transformsÚBboxr<   rP   Úbounds)r:   r<   r[   Úcbarr?   r?   r@   Útest_savefig_locate_colorbar  s   &ÿrW  c                  C   s"   t jddd} t| ƒdksJ ‚d S )N)r'   rË   r'   )rÊ   r   z!<Figure size 100x200 with 0 Axes>)r(   r)   Úreprr¥   r?   r?   r@   Útest_figure_repr)  s   rY  c                  C   sj   t d d} |  ¡ rJ ‚|  ¡ rJ ‚t dd} |  ¡ sJ ‚|  ¡ r"J ‚t dd} |  ¡ r-J ‚|  ¡ s3J ‚d S )Nr   r   Úconstrained)r   Úget_tight_layoutÚget_constrained_layoutr¥   r?   r?   r@   Útest_valid_layouts.  s   


r]  c                  C   sú  t jdd\} }t t¡ | jdd W d   ƒ n1 sw   Y  t|  ¡ tƒs,J ‚d}tjt|d t	ddd	} W d   ƒ n1 sFw   Y  t|  ¡ t
ƒsTJ ‚d
}tjt|d t	ddd} W d   ƒ n1 snw   Y  t|  ¡ t
ƒr|J ‚t|  ¡ tƒs…J ‚tjtdd t	dd W d   ƒ n1 sœw   Y  t jdd\} }|  d¡ t|  ¡ t
ƒs·J ‚|  d¡ t|  ¡ tƒsÅJ ‚t jdd\} }| tj dd¡¡}|  |¡ tjtdd |  d¡ W d   ƒ n1 sów   Y  |  d¡ tjtdd |  d¡ W d   ƒ n	1 sw   Y  t jdd\} }| tj dd¡¡}|  |¡ tjtdd |  d¡ W d   ƒ n	1 sIw   Y  |  d¡ t|  ¡ tƒs]J ‚tjtdd |  d¡ W d   ƒ d S 1 svw   Y  d S )NrZ  r   çš™™™™™é?)r$   z1The Figure parameters 'layout' and 'tight_layout'r§   r   F)r   Útight_layoutz7The Figure parameters 'layout' and 'constrained_layout')r   rF   zInvalid value for 'layout'Úfoobarr   zColorbar layout of new layoutrÅ   )r(   rH   rf   rØ   ÚUserWarningÚsubplots_adjustÚ
isinstancerM  r   r   r   rg   rh   Úset_layout_enginerS   r-   rT   rU   rV   ÚRuntimeErrorr   )r:   r<   Úwstr[   r?   r?   r@   Útest_invalid_layouts<  s^   þÿÿÿþ


ÿ
ÿ
ÿ
$ÿrg  ©r   c              	   C   sx   t || gddgƒD ]0\}}t d|i¡ |jdd}|jdd W d   ƒ n1 s+w   Y  t| ¡ tƒs9J ‚q	d S )NFTzfigure.autolayoutr   )Úncolsr'   )Úw_pad)Úzipr¹   Ú
rc_contextrH   r_  rc  rM  r   )Úfig_testÚfig_refr:   Ú
autolayoutr™   r?   r?   r@   Ú&test_tightlayout_autolayout_deconflictp  s   þürp  r   rZ  rJ  c                 C   sL   t j| d\}}tjtdd t  ¡  W d  ƒ dS 1 sw   Y  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(   rH   rf   rØ   ra  r_  )r   r:   r<   r?   r?   r@   Útest_layout_change_warningy  s   
"ÿrq  c                  C   s"   t ƒ } |  ¡  |  ¡  |  ¡  d S rÝ   )r   r_  r¥   r?   r?   r@   Útest_repeated_tightlayout„  s   rr  r2  c           	   	   C   s.  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 ]}|  |¡ qE| ¡  | ¡ }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 ]}| |¡ qd S )Nr!   r  çffffffæ?Úl1)Úgidr^  Úl2)rË   rË   ÚC1)Ú	transformru  )rs  ry   çš™™™™™©?ÚC2)g      @r^  gš™™™™™á?ÚcrimsonÚC3)rx  rÆ   ru  é   )rx  ru  ÚzorderFrË   )rx  Úclip_onr~  ru  )rx  rÆ   r  r~  ru  )	r   rH   r(   ÚLine2DÚCircleÚdpi_scale_transÚ
add_artistrô   ÚtransFigure)	rm  rn  rt  rv  Úr1Úr2Úr3ræ   r‚   r?   r?   r@   Útest_add_artistŒ  s:   ÿÿÿÿÿÿrˆ  Úfmt)r   r2  ÚpsÚepsr   c                 C   sf   t |d | ¡ƒ}t |¡ | d¡}|  d¡| d¡ ¡ v s!J ‚W d   ƒ d S 1 s,w   Y  d S )Nztest.{}ÚrbÚasciir!   )r   r5  r(   r/  rC  ÚencodeÚreadÚlower)r‰  ÚtmpdirÚoutÚfiler?   r?   r@   Útest_fspath©  s
   
"ýr”  c                  C   sV  t  ¡ \} }| dd¡ | ddd¡}| j ¡ }d}t| |¡j|| j	  ƒdk s+J ‚t| |¡j|| j	  ƒdk s<J ‚t|  |¡j| ƒdk sJJ ‚t|  |¡j
d	 ƒdk sXJ ‚| d
¡ d}t| |¡j|| j	  ƒdk spJ ‚t|  |¡j| ƒdk s~J ‚| d¡ d}t| |¡j|| j	  ƒdk s–J ‚t|j|g dj|| j	  ƒdk s©J ‚d S )Nr   r"   g      ð?ry   zThis dangles over endgR¸…ë"@r   ry  gî|?5^ºå?Fg¢E¶óýT@T)Úbbox_extra_artists)r(   rH   Úset_xlimr|   r  Úget_rendererÚabsÚget_tightbboxÚx1r   Úx0Úset_in_layout)r:   r<   ru   r  Úx1Nom0Úx1Nomr?   r?   r@   Ú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	ƒs1J ‚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ƒsjJ ‚d S )Nr"   r   T©r'  r   iÐ  )r(   rH   rô   r,   r   rc  r2   Úget_major_formatterr  ÚAutoDateFormatterÚset_major_formatterr   r“   r?   r?   r@   Útest_axes_removalÌ  s   (ÿ(ÿr¤  c                  C   s,   t jddd\} }|d  ¡  | j ¡  d S )Nr   Tr   r   )r(   rH   rô   r  Údrawr“   r?   r?   r@   Útest_removed_axisÞ  s   r¦  Ú
clear_methrx   Úclfc                    s  t  ¡ ‰ ˆ  ¡  ˆ jg ksJ ‚ˆ  d¡}tˆ | ƒƒ  ˆ jg ks!J ‚‡ fdd„tdƒD ƒ}tˆ | ƒƒ  ˆ jg ks9J ‚ˆ jddd‰ˆ  ˆd ¡}| d¡}tˆ | ƒƒ  |ˆ j	vsYJ ‚ˆ jg ks`J ‚ˆ  ˆd ¡}| d¡}ˆ  ˆd ¡}| 
¡  ˆ j|gksJ ‚ˆ  ˆd ¡}| 
¡  ˆ j|gks’J ‚|ˆ j	v s™J ‚| d¡}|ˆ jv s¥J ‚|ˆ jv s¬J ‚t|| ƒƒ  |ˆ j	v s¹J ‚||jvsÀJ ‚|ˆ jvsÇJ ‚|ˆ jv sÎJ ‚| d¡}tˆ | ƒƒ  ˆ jg ksàJ ‚ˆ j	g ksçJ ‚‡ ‡fdd„d	D ƒ}d
d„ |D ƒ}t‡ fdd„|D ƒƒsJ ‚t‡ fdd„|D ƒƒsJ ‚t|d | ƒƒ  |d ˆ jvs&J ‚|d ˆ jv s0J ‚|d ˆ j	v s:J ‚t|d | ƒƒ  ‡ ‡fdd„d	D ƒ}dd„ |D ƒ}t‡ fdd„|D ƒƒsaJ ‚t‡ fdd„|D ƒƒsoJ ‚tˆ | ƒƒ  ˆ j	g ks}J ‚ˆ jg ks…J ‚d S )Nr–   c                    s   g | ]}ˆ   d d|d ¡‘qS ©r   r"   ©r+   ©rt   r=   r¥   r?   r@   rv   ô  s    z%test_figure_clear.<locals>.<listcomp>r   r"   )ri  Únrowsr   c                    ó   g | ]	}ˆ   ˆ| ¡‘qS r?   ©Úadd_subfigurer«  ©r:   r;   r?   r@   rv   !  ó    ©r   r"   c                 S   ó   g | ]}|  d ¡‘qS ©r–   rª  ©rt   Úsfigr?   r?   r@   rv   "  ó    c                 3   ó    | ]}|ˆ j v V  qd S rÝ   ©r™   ©rt   r<   r¥   r?   r@   Ú	<genexpr>#  ó   € z$test_figure_clear.<locals>.<genexpr>c                 3   r¸  rÝ   ©Úsubfigsrµ  r¥   r?   r@   r»  $  r¼  c                    r­  r?   r®  r«  r°  r?   r@   rv   .  r±  c                 S   r³  r´  rª  rµ  r?   r?   r@   rv   /  r·  c                 3   r¸  rÝ   r¹  rº  r¥   r?   r@   r»  0  r¼  c                 3   r¸  rÝ   r½  rµ  r¥   r?   r@   r»  1  r¼  )r(   r)   rx   r™   r+   Úgetattrr0   Úadd_gridspecr¯  r¾  rô   r]   )r§  r<   r™   ÚsubfigÚsubaxesÚmainaxesr¾  r?   r°  r@   Útest_figure_clearå  sh   




rÄ  c                  C   s    t  ¡ D ]	} d| jvsJ ‚qd S )Nr¨  )r   Ú__subclasses__Ú__dict__)Úklassr?   r?   r@   Útest_clf_not_redefined7  s   þrÈ  Úmpl20c                  C   s€   t  ¡ \} }|jdgdgdgdd | j ¡  | jrJ ‚t|jj|jj	d  |jj
|jjd  |d d}|  |¡ | jr>J ‚d S )Nr   r   T)Úpickerr   )rŠ   r   ÚinaxesÚguiEvent)r(   rH   Úscatterr  r¥  Ústaler   Úbboxr›  r  Úy0r  Úpick)r:   r<   Úmouse_eventr?   r?   r@   Útest_picking_does_not_stale=  s   

þ
rÓ  c                  C   s>  t  ¡ } |  ddd¡}| ¡ jtddƒksJ ‚| ¡ jtddƒks#J ‚|  ddd¡}| ¡ jtddƒks6J ‚| ¡ jtddƒksBJ ‚|  ddd¡}| ¡ jtddƒksUJ ‚| ¡ jtddƒksaJ ‚|  ddd¡}| ¡ jtddƒkstJ ‚| ¡ jtddƒks€J ‚t t	¡ |  ddd	¡ W d   ƒ d S 1 s˜w   Y  d S )
Nr   r   ©r   r`   r"   r   )rD   r  )r   r  )rD   r`   )r  r   )
r(   r)   r+   Úget_subplotspecÚrowspanr0   Úcolspanrf   rg   Ú
IndexError)r:   rœ   r‚   Úax3Úax4r?   r?   r@   Útest_add_subplot_twotupleK  s    "ÿrÛ  ztightbbox_box_aspect.svgr   Úteal)rL  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£   ry   )r   r"   r"   )r(   r)   rÀ  r+   Úset_box_aspect)r:   r;   rœ   r‚   r?   r?   r@   Útest_tightbbox_box_aspect]  s   
rá  )r   r2  r‹  r   c                 C   s4   |  ¡ }| tdƒ¡ |   ¡ }|jtdƒdd d S )Nr`   T)Úanimated)rH   r,   r0   )rm  rn  Úax_refÚax_testr?   r?   r@   Ú test_animated_with_canvas_changej  s   rå  c                   @   sf  e Zd Zedgdej dg d¢g d¢gg d¢g d¢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 d2g d3¢¡d4d5„ ƒƒZej d6ddgddggd7fddgdddgd8d9ggggd:fd;ddd8gd9gggd<d<ggd=fg¡d>d?„ ƒZedgdd@dA„ ƒZej d2g dB¢¡dCdD„ ƒZdEdF„ ZdGdH„ ZdS )IÚTestSubplotMosaicr   rh  rŠ   ©ÚArè  ÚB©ÚCÚDré  ©r"   r"   r   ©r   rD   r   )rç  rê  )rí  rî  c                 C   sÜ   |  |¡}| ¡ D ]	\}}| |¡ q	tt |¡ƒ}t|ƒt|ƒks$J ‚| 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Úitemsr†   Úsortedr-   Úuniquerö   rÀ  r+   )rß   rm  rn  rŠ   Ú	grid_axesrŽ   r<   Úlabelsr;   ÚaxAÚaxBÚaxCÚaxDr?   r?   r@   Ú
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 ]	}| | ¡ ¡ q&| d
d¡}|d  dd¡}t|ƒD ]\}	}
t|
ƒD ]\}}| ||	|f ¡ |¡ qJqB|d  dd¡}t|ƒD ]\}	}
t|
ƒD ]\}}| ||	|f ¡ |¡ qpqhd S )Nrè  ré  rë  rì  ÚEÚFÚGÚHrZ  r"   r   rß  r²  )	rd  rñ  Úvaluesr†   r‡   rÀ  ÚsubgridspecrI   r+   )rß   rm  rn  rŠ   r   rõ  r<   r;   Úgs_leftÚjr…   rŽ   rO   Úgs_rightr?   r?   r@   Ú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 ]	\}}| |¡ q!| dd¡}|d	  dd¡}	| |	d
 ¡}
|
 d¡ | |	d ¡}| d¡ | |	d	 ¡}| d¡ | |	d ¡}| d¡ | |d
 ¡}| d¡ d S )NrZ  rè  ré  rë  rì  rý  r   r"   rï  rß  r²  rð  )rd  rñ  rò  r†   rÀ  r  r+   )rß   rm  rn  rŠ   r   rõ  rŽ   r<   r;   Úgs_nr÷  rø  rù  rú  ÚaxFr?   r?   r@   Útest_nested«  s&   






zTestSubplotMosaic.test_nestedc                 C   s<   g d¢g d¢g}d}|  dg|gg¡ |  dg|gg¡ d S )N©rè  ré  ré  ©rë  rë  rì  )r	  r
  rý  )rñ  )rß   rm  rn  rŠ   Úxtr?   r?   r@   Ú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s"J ‚|d  ¡  ¡ |ks.J ‚d S )Nrè  ré  rë  r   r"   )Úwidth_ratios)r(   rñ  Úget_gridspecÚget_width_ratios)rß   rŠ   r  r:   Úaxdr?   r?   r@   Ú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s%J ‚|d  ¡  ¡ |ks1J ‚d S )Nrè  ré  rë  rì  r"   r   ©Úheight_ratios)r(   rñ  r  Úget_height_ratios)rß   rŠ   r  r:   r  r?   r?   r@   Útest_nested_height_ratiosß  s   ÿÿz+TestSubplotMosaic.test_nested_height_ratioszx, empty_sentinelrè  Nré  Ú.ÚSKIPr   r"   r   c                 C   sº   |dkr	d|i}ni }|j |fi |¤Ž}| ¡ D ]	\}}| |¡ qtdd„ |D ƒ|dh ƒ}	t|	ƒt|ƒks9J ‚| dd¡}
| |
d ¡}| |	d ¡ | |
d	 ¡}| |	d
 ¡ d S )Nr  Úempty_sentinelc                 S   s   h | ]	}|D ]}|’qqS r?   r?   )rt   ÚrowÚnamer?   r?   r@   Ú	<setcomp>   r±  z/TestSubplotMosaic.test_empty.<locals>.<setcomp>r  r   rß  r   rð  r"   )rñ  rò  r†   ró  rö   rÀ  r+   )rß   rm  rn  rŠ   r  rá   rõ  rŽ   r<   rö  r;   r÷  rø  r?   r?   r@   Ú
test_emptyé  s   
ÿzTestSubplotMosaic.test_emptyc                 C   sþ   t jtdd t ddg¡ W d   ƒ n1 sw   Y  t jtdd t dg¡ W d   ƒ n1 s6w   Y  t jtdd t ddgg¡ W d   ƒ n1 sUw   Y  t jtdd t ddgdd	gg¡ W d   ƒ d S 1 sxw   Y  d S )
Nz
must be 2Dr§   ÚfooÚbar)r  ræ   r‘   )ræ   r‘   Úc)rf   rg   rh   r(   rñ  ré   r?   r?   r@   Útest_fail_list_of_str  s   ÿÿÿ"ÿz'TestSubplotMosaic.test_fail_list_of_strÚ
subplot_kwr    r¡   c           	      C   s\   ddgg}|j ||d}|pi }| dd¡}|j|d fi |¤Ž}|j|d fi |¤Ž}d S )Nr"   r   )r!  rß  r²  )rñ  rÀ  r+   )	rß   rm  rn  r!  rŠ   rõ  r;   r÷  rø  r?   r?   r@   Útest_subplot_kw  s   
z!TestSubplotMosaic.test_subplot_kwÚmulti_valueÚBCc           	      C   s^   d}|j |ddidddi|ddiid}| dd¡}tg d	¢|ƒD ]\}}|j||d
 q!d S )NzAB;CDrÆ   rÎ   rì  ÚblueÚgreen)r!  Úper_subplot_kwr   )rÎ   r&  r&  r%  ©rÆ   )rñ  rÀ  rk  r+   )	rß   rm  rn  r#  rŠ   rõ  r;   rŒ   Úspecr?   r?   r@   Útest_per_subplot_kw"  s   þý	ÿz%TestSubplotMosaic.test_per_subplot_kwc                 C   s²   t j}|dƒg d¢gksJ ‚|dƒddgddggksJ ‚|dƒddgddgdd	ggks-J ‚|d
ƒg d¢gks8J ‚|dƒddgddggksFJ ‚|dƒddgddgdd	ggksWJ ‚d S )NÚABC)rè  ré  rë  zAB;CCrè  ré  rë  zAB;CC;DErì  rü  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Ú_normalize_grid_string©rß   Ú	normalizer?   r?   r@   Útest_string_parser3  s   "þýüz$TestSubplotMosaic.test_string_parserc                 C   sÊ   t j}|i i dœƒi i dœksJ ‚|di iƒi i dœksJ ‚tjtdd›dd |i i dœƒ W d   ƒ n1 s;w   Y  tjtdd›dd |i i dœƒ W d   ƒ d S 1 s^w   Y  d S )N©rè  ré  zThe key ré  z appears multiple timesr§   )r0  ré  )ré  r0  )r   Ú_norm_per_subplot_kwrf   rg   rh   r-  r?   r?   r@   Útest_per_subplot_kw_expanderF  s   ÿýÿ"ýz.TestSubplotMosaic.test_per_subplot_kw_expanderc                 C   sT   t jtdtdƒ›dd tƒ jddi id W d   ƒ d S 1 s#w   Y  d S )Nz	The keys ré  z are inr§   rè  )r'  )rf   rg   rh   Úsetr   rñ  ré   r?   r?   r@   Útest_extra_per_subplot_kwS  s
   ÿ"ýz+TestSubplotMosaic.test_extra_per_subplot_kwÚstr_pattern)zAAA
BBBz	
AAA
BBB
zABC
DEFc                 C   s,   |  |¡}|  dd„ | ¡  d¡D ƒ¡}d S )Nc                 S   s   g | ]}t |ƒ‘qS r?   )Úlist)rt   Úlnr?   r?   r@   rv   a  rw   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>Ú
)rñ  ÚstripÚsplit)rß   rm  rn  r5  rõ  r?   r?   r@   Ú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.rë  rì  z4There are duplicate keys .* between the outer layout)z	AAA
c
BBBú'All of the rows must be the same lengthrü  r<  c                 C   sF   t  ¡ }tjt|d | |¡ W d   ƒ d S 1 sw   Y  d S )Nr§   )r(   r)   rf   rg   rh   rñ  )rß   rŠ   r¨   r:   r?   r?   r@   Ú	test_faild  s   "ÿzTestSubplotMosaic.test_failc                 C   s(   |  tƒ tƒ gg¡ |  ddgg¡ d S )Nrè  ré  )rñ  Úobject)rß   rm  rn  r?   r?   r@   Útest_hashable_keys~  s   z$TestSubplotMosaic.test_hashable_keys)ÚabcÚcabÚbcaÚcbaÚacbÚbacc                 C   sD   t  ¡ }| |¡}t|ƒt|ƒksJ ‚t|jƒt| ¡ ƒks J ‚d S rÝ   ©r(   r)   rñ  r6  r™   r   )rß   r5  r:   Úax_dictr?   r?   r@   Ú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s+J ‚t|jƒt| ¡ ƒks8J ‚d S )Nrè  ré  rë  rì  rü  rý  rþ  r  rÿ  ÚIÚ	ABCDEFGHIrF  ©rß   r   r:   rG  r?   r?   r@   Ú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 ƒƒs:J ‚d S )Nrè  ré  rë  rì  rü  rý  rþ  r  rÿ  rI  T)r'  r(  r*  Úlogit)ÚxscaleÚyscalec                 s   s(    | ]}|  ¡ d ko| ¡ dkV  qdS )r*  rM  N)Ú
get_xscaleÚ
get_yscalerº  r?   r?   r@   r»  ¤  s   €  ÿz3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r(   r)   rñ  r3  r]   r   rK  r?   r?   r@   Útest_share_all™  s   ÿÿüÿz TestSubplotMosaic.test_share_all)râ   rã   rä   r	   rf   ÚmarkÚparametrizerû  r  r  r  r  r  r  r   r"  Útupler*  r/  r2  r4  r;  r=  r?  rH  rL  rR  r?   r?   r?   r@   ræ  s  sŠ    
üÿ




!



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




ÿýþþóþ


ÿ
ræ  c                  C   sv   t  ¡ } |  ddd¡}|  ddd¡}t jddd| d}| ¡  ¡ }| ¡  ¡ }| ¡  ¡ }||ks3J ‚||ks9J ‚dS )	z)Test that these all use the same gridspecr   r   rÔ  rD   )r   r   r©  )r×  r:   N)r(   r)   r+   Úsubplot2gridrÕ  r  )r:   rœ   r‚   rÙ  Úgs1Úgs2Úgs3r?   r?   r@   Útest_reused_gridspec¨  s   rZ  ztest_subfigure.pngrÆ   )rÝ  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	}qH|d j
||dd |d  d¡ | jddd d S )Né!N,rZ  r   r"   r   r   r±   éþÿÿÿ©ÚvminÚvmaxrG   ú	Left Sider   Úbottom)r<   Úlocationz
Right SideúFigure suptitleúxx-large©Úfontsize)r-   rT   Úseedr(   r)   Ú
subfiguresrH   rJ   rS   rU   rV   rz   )r:   ÚsubrW   r<   r[   r?   r?   r@   Útest_subfigure·  s   

rj  c                  C   s8   t jdd} |  dd¡}tj |  | j ¡ ¡j	d¡ d S )NrZ  r   r"   r   g       @)
r(   r)   rh  r-   rQ   rR   r™  r  r—  r  )r:   ri  r?   r?   r@   Útest_subfigure_tightbboxÍ  s   þrk  c                  C   sV   t jdd} |  ¡ }| ¡ |  ¡ ksJ ‚| d¡ | ¡ dks!J ‚|  ¡ dks)J ‚d S )Nr!   ©r   r  )r(   r)   rh  Úget_dpiÚset_dpi©r:   Úsub_figr?   r?   r@   Útest_subfigure_dpi×  s   
rq  ztest_subfigure_ss.pngç{®Gáz”?)rÝ  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}q$|j||d | d¡ |  |d ¡}| t  d¡¡ | d¡ | jddd d S )Nr[  rZ  r   r"   r   r   Úpinkr(  r±   r\  r]  rG   r`  rË   r
   rc  rd  re  )r-   rT   rg  r(   r)   rÀ  r¯  rH   rJ   rS   rU   rV   rz   r+   r,   r.   r†   )r:   r;   ri  rW   r<   r[   r?   r?   r@   Útest_subfigure_ssá  s   


rt  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 ]&}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"|› ¡ q¨|d  d#¡ |d  d$¡ |d  dd¡}	d S )%Nr[  rZ  )r'   é   )r   rÊ   r:   r"   r   gìQ¸…ë±?)Úwspacer   Úcoralz
subfigs[0]z
subfigs[1]gffffffö?r  zsubfigsnest[0]r…   T©r(  é   r±   g      Àg      @r]  zx-labelre  zy-labelÚTitlerG   zsubfigsnest[1]r‹   r   r   ÚylabelÚ	supxlabelÚ	supylabel)r-   rT   rg  r(   r)   rz   rh  rÑ   rH   rS   rU   r1   r/   r†   rV   rI   r|  r}  )
r:   r¾  ÚsubfigsnestÚaxsnest0r<   rf  r[   Úaxsnest1rX   ÚaxsRightr?   r?   r@   Útest_subfigure_doubleø  s6   
r‚  c               	   C   sV  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 ]}||  ¡  qœ|  ¡  d S )NTrE   r   rß  r   r   r"   é€  éà  ç        rD   )r(   r)   rÀ  r¯  r-   rQ   rR   rÏ  ÚminÚmaxr0   r+   rM   )r:   r;   Úsub_figsrü   rý   r=   r?   r?   r@   Ú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   )rF   rÊ   r"   r   r   r  )rv  r  é   )r¬  ri  r   gæû©!<LÀgkâX.8@iÜ  i  )rŠ   r   r   rx  g …ëYI¢_ÀgRã¥óÏ«W@éx   i,  )r(   r)   rh  rÀ  r+   rÍ  r   rM   Ú
get_xticksr-   rQ   rR   )	r:   Ú	subfig_blÚ	subfig_brr;   rœ   r‚   rÙ  Úticks120Úticks300r?   r?   r@   Útest_subfigure_ticks?  s"   

ÿr‘  ztest_subfigure_scatter_size.png)rÝ  rÞ  c                  C   sÆ   t  ¡ } |  dd¡}|  |d ¡}|jg d¢g d¢ddd |jg d¢g d¢g d¢dd |  |d	 ¡}| dd¡}||d	 fD ] }|jg d¢g d¢ddd
d |jg d¢g d¢g d¢ddd q@d S )Nr"   r   rA  r±   Ús)r’  Úmarker)r   rD   r`   )rË   r±   rP  r   r…   )r’  r“  rŒ   r‹   )r(   r)   rÀ  r+   rÍ  r¯  rH   )r:   r;   r›   r¶  rW   r<   r?   r?   r@   Útest_subfigure_scatter_size[  s   "þr”  c                  C   sN   t jdd} |  ¡ }| d¡}| dd¡}| |¡ t ¡ }| j|dd d S )NrZ  r   r–   r"   r2  rB  )	r(   r)   rh  r+   r  Ú	bar_labelr7  r8  r/  )r:   rp  r<   r‘   Úbufferr?   r?   r@   Ú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   ry   gUUUUUUÅ?)Úhspacerv  rƒ  r„  rß  r…  rÍ   ç333333Ó?r²  gffffffÖ?gÍÌÌÌÌÌä?r#   rs  rï  r   rÄ   rð  rù   )	r(   r)   rh  r-   rQ   rR   rÏ  r†  r‡  )rˆ  rü   rý   r?   r?   r@   Útest_subfigures_wspace_hspacev  s   """""rš  c                  C   sê   t  ¡ } |  ddd¡}|  ddd¡}|d usJ ‚||usJ ‚t  ¡  t  ¡ } | jddddd}| jddddd}|d us>J ‚||usDJ ‚t  ¡  t  ¡ } | jddddd}|  ddd¡}|d usbJ ‚|jdksiJ ‚||usoJ ‚t  ¡  d S )Nr"   r¡   r£   Úrectilinear)r(   r)   r+   rb   r  ©r:   r<   rœ   r?   r?   r@   Útest_add_subplot_kwargs  ó&   r  c                  C   sê   t  ¡ } |  g d¢¡}|  g d¢¡}|d usJ ‚||usJ ‚t  ¡  t  ¡ } | jg d¢dd}| jg d¢dd}|d us>J ‚||usDJ ‚t  ¡  t  ¡ } | jg d¢dd}|  g d¢¡}|d usbJ ‚|jdksiJ ‚||usoJ ‚t  ¡  d S )Nr•   r¡   r£   r›  )r(   r)   r—   rb   r  rœ  r?   r?   r@   Útest_add_axes_kwargs¨  rž  rŸ  c                    s~   t  dd¡ t ¡ \‰‰ ‡ ‡fdd„}td|ƒ ¡  ˆ ¡ dgks#J ‚‡ ‡fdd„}td|ƒ ¡  tj 	ˆ d	¡d
dg¡ d S )Nr  úcannot show the figurec                      s"   ˆj jg ˆ j d¡¢d‘R Ž  d S )N©r#  r  r"   )r  Úbutton_press_eventÚ	transDatarx  r?   ©r<   r:   r?   r@   Úsingle_pressÅ  s   "z!test_ginput.<locals>.single_pressr#  r¡  c                      sˆ   ˆj jg ˆ j d¡¢d‘R Ž  ˆj  d¡ ˆj jg ˆ j d¡¢d‘R Ž  ˆj jg ˆ j d¡¢d‘R Ž  ˆj jg ˆ j d¡¢d‘R Ž  d S )Nr¡  r"   Ú	backspace©r™  rÄ   ©ry   rÍ   rß  r   )r  r¢  r£  rx  Úkey_press_eventr?   r¤  r?   r@   Úmulti_pressesË  s
   "z"test_ginput.<locals>.multi_pressesr   r§  r¨  )
r  r  r(   rH   r   ÚstartÚginputr-   rQ   rR   )Úrecwarnr¥  rª  r?   r¤  r@   Útest_ginputÁ  s   r®  c                 C   st   t  dd¡ t ¡ }|jddd u sJ ‚td|jjdƒ ¡  | ¡ du s&J ‚td|jj	dƒ ¡  | ¡ du s8J ‚d S )	Nr  r   r#  )Útimeout)r   T)r   r   r"   F)
r  r  r(   r)   Úwaitforbuttonpressr   r  r©  r«  r¢  )r­  r:   r?   r?   r@   Útest_waitforbuttonpressÖ  s   r±  c                  C   s>   t dd} | jdddd}|  ¡ dksJ ‚| ¡ dksJ ‚d S )Nzwhole Figure)rO   r"   z
sub figure)r   rh  r‡   ro  r?   r?   r@   Útest_kwargs_passà  s   
r²  c                 C   sˆ   |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 d   ƒ d S 1 s=w   Y  d S )
NÚxlabelrµ   rÌ   )r·   r¶   r{  rz  ÚlightrË   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)r|  r}  rz   r¹   rl  )rm  rn  r?   r?   r@   Útest_rcparamsè  s   
ý

"úrµ  c                  C   sÂ   t  ¡ \} }| ddgddg¡ | d¡ t | ¡}|jd |us#J ‚|jd  ¡ dks.J ‚|jd  d¡ | ¡ dks>J ‚| dd¡ |  	¡  | 	¡  | 
¡ d	ksTJ ‚|jd  
¡ d
ks_J ‚d S )Nr   r"   r   r   r*  Úlinearr#  ç      Y@)r#  r·  r²  )r(   rH   r,   r+  ÚcopyÚdeepcopyr™   rQ  r–  rM   Úget_xlim)r€   r<   r   r?   r?   r@   Útest_deepcopyö  s   

r»  c                  C   sF   t dd} | j d¡ | jdksJ ‚t t | ¡¡}|jdks!J ‚d S )Nr¢   rl  r  i&  )r   r  rE  r   ÚpickleÚloadsÚdumps)r:   r   r?   r?   r@   Ú%test_unpickle_with_device_pixel_ratio  s
   
r¿  c                  C   sJ   ddi} t | ƒ}tjddddg| d | |ksJ ‚tjdddg| d d S )NÚleftr#  r"   r   )r  Úgridspec_kwÚAB)Údictr(   rH   rñ  )r;   Úgs_origr?   r?   r@   Útest_gridspec_no_mutate_input  s
   rÅ  c                  C   s|   dddddœ} t g |  ¡ ¢ƒ}tjtjjd	i | ¤Žd}tjt	dd | 
¡ |ks,J ‚W d   ƒ d S 1 s7w   Y  d S )
Nr   rr  g¸…ëQ¸ž?g{®Gáz¤?)rj  Úh_padrv  r˜  r   zwill be deprecatedr§   r?   )rU  r   r(   r)   r¹   Úlayout_enginer   rf   rØ   ÚPendingDeprecationWarningÚget_constrained_layout_pads)ÚparamsÚexpectedr:   r?   r?   r@   Ú test_get_constrained_layout_pads  s   "ÿrÌ  )wr¸  r   r7  Úpathlibr   r¼  ÚplatformÚ	threadingr   Útypesr   r  Únumpyr-   rf   ÚPILr   Ú
matplotlibr¹   r   Úmatplotlib.testing.decoratorsr   r	   Úmatplotlib.axesr
   Úmatplotlib.figurer   r   Úmatplotlib.layout_enginer   r   r   Úmatplotlib.tickerr   r   r   Úmatplotlib.pyplotÚpyplotr(   Úmatplotlib.datesÚdatesr  ÚmachinerA   r\   rj   rn   rƒ   rˆ   r”   r   r¦   r­   r³   rÁ   r×   rÛ   rí   ró   rø   rþ   rS  rT  r  rÝ  Úcontextr!  r%  Úinfr"  r&  r.  r1  r9  r=  Úparamr;  rI  rO  rW  rY  r]  rg  rp  rq  rr  rˆ  r”  rŸ  r¤  r¦  rÄ  rÈ  rÓ  rÛ  rá  rå  ræ  rZ  rj  rk  rq  rt  r‚  r‰  r‘  r”  r—  rš  r  rŸ  r®  r±  r²  rµ  r»  r¿  rÅ  rÌ  r?   r?   r?   r@   Ú<module>   s   ÿ
'#

,
ÿü
		

'
ý
	
þ

4




	
Q

ÿý
	
  7ÿ


ÿ
ÿ
(

ÿ




