o
    ÈPj¥í  ã                	   @   sÒ  d dl 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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 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,eddge +¡ dkržd nddddd„ ƒZ-dd„ Z.dd„ Z/d d!„ Z0d"d#„ Z1d$d%„ Z2d&d'„ Z3ed(ge +¡ dkrÊd nd)d*d+d,„ ƒZ4ed-gƒd.d/„ ƒZ5d0d1„ Z6d2d3„ Z7d4d5„ Z8ed6gƒd7d8„ ƒZ9d9d:„ Z:d;d<„ Z;d=d>„ Z<d?d@„ Z=edAgddgdBdCdDœdEdFdG„ ƒZ>dHdI„ Z?dJdK„ Z@dLdM„ ZAdNdO„ ZBdPdQ„ ZCejD EdRg dS¢¡dTdU„ ƒZFdVdW„ ZGejH IdX¡dYdZ„ ƒZJejD Ed[d\ejKfd]ejLd\fg¡d^d_„ ƒZMd`da„ ZNdbdc„ ZOddde„ ZPdfdg„ ZQdhdi„ ZRejD EdjejSdkejD Tdk¡gdlejSdmejD Tdm¡gdlg¡dndo„ ƒZUdpdq„ ZVdrds„ ZWe Xdtdui¡edgdvdwdx„ ƒƒZYdydz„ ZZd{d|„ Z[d}d~„ Z\edgdvdd€„ ƒZ]ejD Edd‚dƒg¡d„d…„ ƒZ^d†d‡„ Z_eddˆgdvd‰dŠ„ ƒZ`ejD Ed‹g dŒ¢¡ddŽ„ ƒZadd„ Zbd‘d’„ Zcd“d”„ ZdejD Ed•d–d—g¡d˜d™„ ƒZedšd›„ ZfejH Id¡dœd„ ƒZgdždŸ„ Zhed gdd¡d¢d£œdud¤d¥d¦„ ƒZieg d§¢dvd¨d©„ ƒZjG dªd«„ d«ƒZkd¬d­„ Zled®gdd¯d¢id°d±d²„ ƒZmd³d´„ Zndµd¶„ Zoed·gdd¯d¢id¸d¹dºd»„ ƒZped¼gdd¯d¢id°d½d¾„ ƒZqd¿dÀ„ ZrejH Id¡dÁdÂ„ ƒZsedÃgddudÄdÅdÆ„ ƒZtdÇdÈ„ ZudÉdÊ„ ZvdËdÌ„ ZwdÍdÎ„ ZxdÏdÐ„ ZydÑdÒ„ ZzdÓdÔ„ Z{dÕdÖ„ Z|edgdvd×dØ„ ƒZ}dÙdÚ„ Z~dÛdÜ„ ZdÝdÞ„ Z€ejD Ed‹g dß¢¡dàdá„ ƒZejD Ed‹g dâ¢¡dãdä„ ƒZ‚dådæ„ Zƒdçdè„ Z„dédê„ Z…dëdì„ Z†dídî„ Z‡dïdð„ ZˆdS )ñé    N)Údatetime)ÚTimer)ÚSimpleNamespace)ÚImage)Úgridspec)Úimage_comparisonÚcheck_figures_equal)ÚAxes)ÚKeyEventÚ
MouseEvent)Ú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   é   ç    €„.Aéè  z	Ylabel0 0)r   éÿÿÿÿç     ˆÃ@é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© rB   úQ/home/thesage/.local/lib/python3.10/site-packages/matplotlib/tests/test_figure.pyÚtest_align_labels   sB   


€
€rD   zfigure_align_titles_tight.pngz#figure_align_titles_constrained.pnggºI+‡–?Úmpl20)r   Ústylec                  C   sÔ   dD ]e} t jdd| ddgd\}}|d }| t ddd¡¡ |jdd	d
 |jddd
 |jddd
 |d }| t ddd¡¡ | d¡ | d¡ |j d¡ |j 	¡  | 
¡ D ]}| d¡ q[| ¡  qd S )N)r   Úconstrainedr%   r   )r   Úwidth_ratiosr   r    r!   zTitle0 leftÚleft)ÚloczTitle0 centerÚcenterzTitle0 rightr)   r#   r$   ÚTitle1ÚXlabel0r'   r(   )r+   Úsubplotsr/   r0   r1   Ú	set_titler4   r5   r6   r7   r8   r9   Úalign_titles)r   r=   Úaxsr?   rA   rB   rB   rC   Útest_align_titlesE   s"   



îrR   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+   rN   Ú	enumerateÚflatr4   r/   r0   r1   Úalign_ylabelsÚalign_xlabelsÚdraw_without_renderingÚzerosr5   ÚlabelÚget_positionr:   ÚtestingÚassert_allcloseÚ
pcolormeshÚrandomÚrandnÚcolorbar)r=   rQ   Únnr?   ÚxnÚynÚpcrB   rB   rC   Útest_align_labels_stray_axes_   s>   

"

"



&rk   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   rU   é   )Ú rm   rp   rn   rp   r*   ro   rp   )
r+   Úcloser,   Úget_fignumsÚget_figlabelsÚgcfÚpytestÚraisesÚ
ValueErrorr   )Ú	fig_todayrB   rB   rC   Útest_figure_label‚   s*   










"ÿry   c                  C   s\   t  d¡ t  d¡} tjtjdd d| _W d   ƒ n1 s w   Y  | jdks,J ‚d S )Nrl   r%   ú&Changing 'Figure.number' is deprecated©Úmatchr   )r+   rq   r,   ru   ÚwarnsÚmplÚMatplotlibDeprecationWarningÚnumber©r=   rB   rB   rC   Útest_figure_label_replacedš   s   

ÿþr‚   c                  C   sŽ   t ƒ } t t¡ | j W d   ƒ n1 sw   Y  tjtjdd d| _W d   ƒ n1 s1w   Y  | jdks=J ‚t 	| j¡rEJ ‚d S )Nrz   r{   ro   )
r   ru   rv   ÚAttributeErrorr€   r}   r~   r   r+   Úfignum_existsr   rB   rB   rC   Útest_figure_no_label£   s   ÿÿþr…   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   ÚthreerU   )r+   r,   r„   rq   rB   rB   rB   rC   Útest_fignum_exists±   s   




rˆ   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 rB   ©Úget_text©Ú.0ÚtrB   rB   rC   Ú
<listcomp>È   ó    z$test_clf_keyword.<locals>.<listcomp>F)r‰   Úclearç      à?c                 S   rŠ   rB   r‹   r   rB   rB   rC   r   Í   r‘   r   Tc                 S   rŠ   rB   r‹   r   rB   rB   rC   r   Ñ   r‘   )r+   r,   ÚsuptitleÚtextsÚtextrN   )Útext1Útext2Úfig0Úfig1Úfig2Úax2rB   rB   rC   Útest_clf_keywordÁ   s   
r   zfigure_today.pngg¸…ëQ¸Ž?)r   c                  C   sh   t  d¡} |  ¡ }| |  ¡ ¡ | t d¡¡ t  d¡ t  ddgddgd¡ t  d¡ t  d¡ d S )Nrm   ro   rn   r   r%   Úr)	r+   r,   r.   rO   Ú	get_labelr/   r0   r1   rq   ©r=   r?   rB   rB   rC   Útest_figureÔ   s   


r¡   zfigure_legend.pngc                  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)r_   ÚcolorÚyrž   r“   ÚkÚ_yÚzÚb)r+   rN   r/   Úlegend©r=   rQ   rB   rB   rC   Ú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Úax1rB   rB   rC   Ú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	   ru   rv   rw   Ú	TypeErrorr   rB   rB   rC   Ú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 integerr{   r   r   r%   z)Number of rows must be a positive integerz)num must be an integer with 1 <= num <= 4ro   r“   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   rU   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¼   rN   )r=   Ú_r?   rB   rB   rC   Útest_add_subplot_invalid  s`   ÿþÿþþþþÿÿþþÿýÿýÿ$ýrÁ   zfigure_suptitle.pngc                  C   s.   t  ¡ \} }| jddd | jdddd d S )NÚhellorž   )r¤   Útitler£   é   )r¤   Úrotation)r+   rN   r”   )r=   rÀ   rB   rB   rC   Útest_suptitleE  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+   rN   r~   Úfont_managerÚFontPropertiesr”   Úget_fontsizeÚget_size_in_pointsÚ
get_weight)r=   r?   ÚfpsÚtxtrB   rB   rC   Útest_suptitle_fontpropertiesL  s
   rÓ   c                  C   sd   t jdd} |  dd¡\}}| d¡ | ¡  | ¡  |  d¡ | ¡ dks(J ‚| ¡ dks0J ‚d S )	N)rU   r   ©Úfigsizer%   r   ÚwhitezThis is a visible suptitle.)ç        r×   r×   r×   )ç      ð?rØ   rØ   rØ   )r+   r,   Ú
subfiguresÚset_facecolorrN   r”   Úget_facecolor)r=   Úsf1Úsf2rB   rB   rC   Útest_suptitle_subfiguresT  s   

rÞ   c                  C   sŽ   t  ¡ \} }|  ¡ dksJ ‚|  ¡ dksJ ‚|  ¡ dksJ ‚|  d¡ |  ¡ dks+J ‚|  d¡ |  ¡ dks8J ‚|  d¡ |  ¡ dksEJ ‚d S )Nrp   r”   Ú	supxlabelÚ	supylabel)r+   rN   Úget_suptitleÚget_supxlabelÚget_supylabelr”   rß   rà   r    rB   rB   rC   Ú%test_get_suptitle_supxlabel_supylabelb  s   


rä   c                  C   s²   t  ¡ } |  d¡}|  d¡}|  d¡}t| jƒdksJ ‚| jd us#J ‚| jd us*J ‚| j	d us1J ‚| 
¡  | jd u s<J ‚| 
¡  | jd u sGJ ‚| 
¡  | j	d u sRJ ‚| jrWJ ‚d S )Nr”   rß   rà   r   )r+   r,   r”   rß   rà   Úlenr•   Ú	_suptitleÚ
_supxlabelÚ
_supylabelÚremove)r=   rÃ   ÚxlabelÚylabelrB   rB   rC   Ú(test_remove_suptitle_supxlabel_supylabelo  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%   rÔ   rî   rï   é   é   ç333333ã?Úred)ÚradiusÚalpharñ   )	r+   r,   rÚ   ÚpatchÚ	set_alphaÚpatchesÚappendr~   ÚCirclePolygonr   rB   rB   rC   Ú
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%   )ru   r}   ÚRuntimeWarningr3   r~   ÚrcParamsr+   r,   )r@   rB   rB   rC   Útest_too_many_figures”  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ÚkwargsrB   rB   rC   r  ¦  s   z7test_iterability_axes_argument.<locals>.MyAxes.__init__)Ú__name__Ú
__module__Ú__qualname__r  rB   rB   rB   rC   ÚMyAxes¥  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  ÚitemrB   rB   rC   Ú__getitem__«  s   ÿz;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s   ˆ d| ifS )Nr  rB   ©r  ©r  rB   rC   Ú_as_mpl_axes¯  s   z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)r	  r
  r  r  r  rB   r  rB   rC   ÚMyClass©  s    r  r%   r»   )r	   r+   r,   r.   rq   )r  r=   rB   r  rC   Útest_iterability_axes_argumentš  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 )Nro   r%   r   rU   )r%   r   r   )r+   r,   Úset_figwidthÚget_figwidthÚset_figheightÚget_figheightÚset_size_inchesr   rB   rB   rC   Útest_set_fig_size·  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+   rN   ré   Úravelr±   rå   ©r=   rQ   r?   rB   rB   rC   Útest_axes_removeÍ  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   r“   )r   r   )r+   Ú	figaspectr0   Úfloat64r^   )ÚwÚhrB   rB   rC   Útest_figaspectÖ  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   rU   ro   é   é   r   Úignorez=FixedFormatter should only be used together with FixedLocatorçš™™™™™É?r)   )r&  r'  r   Fr'  )r&  r(  Tr(  )ÚmdatesÚdatestr2numr+   rN   r/   Ú
yaxis_dateÚ
xaxis_dater5   Úset_minor_locatorr   ÚwarningsÚcatch_warningsÚfilterwarningsÚset_minor_formatterr   Úautofmt_xdater±   r8   ÚintÚget_rotation)
r%  ÚdateÚtimeÚangleÚminorsr¢   r¥   r=   r?   r_   rB   rB   rC   Útest_autofmt_xdateá  s6   


þüþr>  c                  C   sd   t jdd\} }| g d¢g d¢g¡}t  |¡ |  ¡  |  ¡  |jddd }| ¡ dks0J ‚d S )	NrG   r   )r%   rU   r*  )r   r   ro   r'  ©r%  r%   g      >@)r+   rN   Úimshowrf   r7  r]   r8   r9  )r=   r?   Úimr_   rB   rB   rC   Ú'test_autofmt_xdate_colorbar_constrained	  s   
rB  Ú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)rU   rU   rÔ   i  é2   éÈ   )r+   r,   r]   ÚcanvasÚrendererÚheightÚwidthÚdpir   rB   rB   rC   Útest_change_dpi  s   rK  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Ô   )ru   rv   rw   r+   r,   r  )rI  rH  r=   rB   rB   rC   Útest_invalid_figure_size#  s   ÿ"ÿrL  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   ƒ n1 s}w   Y  | 
|¡ tjtd	d | |d
¡ W d   ƒ n1 sŸw   Y  tjtd	d |  g d¢d
¡ W d   ƒ d S 1 s¿w   Y  d S )Nz.missing 1 required positional argument: 'rect'r{   çš™™™™™¹?r“   z#multiple values for argument 'rect'r­   )Úrectr¿   z)add_axes\(\) takes 1 positional argumentszextra positional argument)r+   r,   ru   rv   r¼   r¯   rw   r0   ÚnanrN   Údelaxes)r=   r›   r?   rB   rB   rC   Útest_invalid_figure_add_axes1  s2   ÿ
þÿÿÿý
ÿ"ÿrQ  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+   rN   rZ   r/   Ú
set_yscaleÚ
set_xscalerå   r5   Úget_ticklabelsr:   r  rB   rB   rC   Útest_subplots_shareax_loglabelsK  s   


ÿrY  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,   ru   rv   r¼   Úsavefig)r=   ÚmsgrB   rB   rC   Útest_savefig`  s
   "ÿr\  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,   ru   rv   r¼   rZ  ÚioÚBytesIO)r=   r`  rB   rB   rC   Útest_savefig_warnsg  s   ÿ€ÿrd  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.pngr]  )r+   r,   ru   rv   ÚModuleNotFoundErrorrZ  rw   r   rB   rB   rC   Útest_savefig_backendn  s   ÿÿ"þrh  rf  Ú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   ©r`  r   )r+   rN   r/   rb  rc  rZ  r   ÚopenÚloadrF  Ú_set_device_pixel_ratio)rf  r=   r?   ÚbufÚratio1Úratio2rB   rB   rC   Útest_savefig_pixel_ratiox  s    


ý


ýrt  c                  C   s0   t jdd} | jt ¡ dd |  ¡ jsJ ‚d S )NÚ
compressedr   r   ©Úbbox_inches)r+   r,   rZ  rb  rc  Úget_layout_engineÚ	_compressr   rB   rB   rC   Ú#test_savefig_preserve_layout_engine  s   rz  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   rU   rv  T)ÚoriginalF)r+   rN   rc   r0   rd   re   rf   rZ  rb  rc  r~   Ú
transformsÚBboxr?   r`   Úbounds)r=   r?   rj   ÚcbarrB   rB   rC   Útest_savefig_locate_colorbar–  s   &ÿr‚  zsavefig.transparentT©r   c                 C   sê   | j ddddd}|  |d d …d d …f ¡}| |d ¡}| |d d …d d …f ¡}| |d d…d d …f ¡}| g d¢¡}| g d¢¡}|  |dd d…f ¡}	|  |d ¡}
|||||	|
fD ]}|jg g d |jd d …  d	¡ q_d S )
Nr   çš™™™™™©?)rI   Úwspace©r   r   r"   )rM  r-  ç333333Ó?rï   r  )ÚxticksÚyticksF)Úadd_gridspecÚadd_subfigurer.   Ú
inset_axesÚsetÚspinesÚset_visible)Úfig_testÚfig_refÚgs1Úf1Úf2Úax12r´   Úiax1Úiax2rœ   Úax3r?   rB   rB   rC   Útest_savefig_transparent¡  s   þr™  c                  C   s"   t jddd} t| ƒdksJ ‚d S )N)r*   rô   r*   )rÕ   rJ  z!<Figure size 100x200 with 0 Axes>)r+   r,   Úreprr   rB   rB   rC   Útest_figure_repr¸  s   r›  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   rG   )r   Úget_tight_layoutÚget_constrained_layoutr   rB   rB   rC   Ú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 )NrG   r   çš™™™™™é?)r'   z1The Figure parameters 'layout' and 'tight_layout'r{   r   F)r   Útight_layoutz7The Figure parameters 'layout' and 'constrained_layout')r   rW   zInvalid value for 'layout'Úfoobarr   zColorbar layout of new layoutrð   )r+   rN   ru   r}   ÚUserWarningÚsubplots_adjustÚ
isinstancerx  r   r   r   rv   rw   Úset_layout_enginerc   r0   rd   re   rf   ÚRuntimeErrorr   )r=   r?   Úwstrj   rB   rB   rC   Útest_invalid_layoutsË  s^   þÿÿÿþ


ÿ
ÿ
ÿ
$ÿ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_contextrN   r   r¤  rx  r   )r  r‘  r=   Ú
autolayoutr±   rB   rB   rC   Ú&test_tightlayout_autolayout_deconflictÿ  s   þür®  r   rG   ru  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+   rN   ru   r}   r¢  r   )r   r=   r?   rB   rB   rC   Útest_layout_change_warning  s   
"ÿr¯  c                  C   s"   t ƒ } |  ¡  |  ¡  |  ¡  d S r  )r   r   r   rB   rB   rC   Útest_repeated_tightlayout  s   r°  r]  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)Ú	transformr³  )r±  r“   r„  ÚC2)g      @rŸ  gš™™™™™á?ÚcrimsonÚC3)r¶  rñ   r³  é   )r¶  r³  ÚzorderFrô   )r¶  Úclip_onr»  r³  )r¶  rñ   r¼  r»  r³  )	rJ  rN   r+   ÚLine2DÚCircleÚdpi_scale_transÚ
add_artistré   ÚtransFigure)	r  r‘  r²  r´  Úr1Úr2Úr3r  rœ   rB   rB   rC   Útest_add_artist  s:   ÿÿÿÿÿÿrÅ  Úfmt)r   r]  ÚpsÚepsr   c                 C   sd   |d| ›  }t  |¡ | d¡}|  d¡| d¡ ¡ v s J ‚W d   ƒ d S 1 s+w   Y  d S )Nztest.ÚrbÚasciir$   )r+   rZ  rn  ÚencodeÚreadÚlower)rÆ  Útmp_pathÚoutÚfilerB   rB   rC   Útest_fspath8  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%   rØ   r“   zThis dangles over endgR¸…ë"@r   r„  gî|?5^ºå?Fg¢E¶óýT@T)Úbbox_extra_artists)r+   rN   Úset_xlimr–   rF  Úget_rendererÚabsÚget_tightbboxÚx1rJ  Úx0Úset_in_layout)r=   r?   r   rG  Úx1Nom0Úx1NomrB   rB   rC   Útest_tightbboxB  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©rR  r   iÐ  )r+   rN   ré   r/   r   r¤  r5   Úget_major_formatterr.  ÚAutoDateFormatterÚset_major_formatterr   r«   rB   rB   rC   Útest_axes_removal[  s   (ÿ(ÿrá  c                  C   s,   t jddd\} }|d  ¡  | j ¡  d S )Nr   TrÝ  r   )r+   rN   ré   rF  Údrawr«   rB   rB   rC   Útest_removed_axism  s   rã  Ú
clear_methr’   Ú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.   ©rŽ   r@   r   rB   rC   r   ƒ  s    z%test_figure_clear.<locals>.<listcomp>r   r%   )r©  Únrowsr   c                    ó   g | ]	}ˆ   ˆ| ¡‘qS rB   ©r‹  rè  ©r=   r>   rB   rC   r   °  ó    ©r   r%   c                 S   ó   g | ]}|  d ¡‘qS ©r®   rç  ©rŽ   ÚsfigrB   rB   rC   r   ±  ó    c                 3   ó    | ]}|ˆ j v V  qd S r  ©r±   ©rŽ   r?   r   rB   rC   Ú	<genexpr>²  ó   € z$test_figure_clear.<locals>.<genexpr>c                 3   rô  r  ©Úsubfigsrñ  r   rB   rC   r÷  ³  rø  c                    rê  rB   rë  rè  rì  rB   rC   r   ½  rí  c                 S   rï  rð  rç  rñ  rB   rB   rC   r   ¾  ró  c                 3   rô  r  rõ  rö  r   rB   rC   r÷  ¿  rø  c                 3   rô  r  rù  rñ  r   rB   rC   r÷  À  rø  )r+   r,   r’   r±   r.   Úgetattrr3   rŠ  r‹  rú  ré   rl   )rä  r?   r±   ÚsubfigÚsubaxesÚmainaxesrú  rB   rì  rC   Útest_figure_cleart  sh   




rÿ  c                  C   s    t  ¡ D ]	} d| jvsJ ‚qd S )Nrå  )r   Ú__subclasses__Ú__dict__)ÚklassrB   rB   rC   Útest_clf_not_redefinedÆ  s   þr  c                  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+   rN   ÚscatterrF  râ  Ústaler   ÚbboxrØ  rI  Úy0rH  Úpick)r=   r?   Úmouse_eventrB   rB   rC   Ú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   ro   r%   r   )rU   r*  )r   r*  )rU   ro   )r*  r   )
r+   r,   r.   Úget_subplotspecÚrowspanr3   Úcolspanru   rv   Ú
IndexError)r=   r´   rœ   r˜  Úax4rB   rB   rC   Útest_add_subplot_twotupleÚ  s    "ÿr  ztightbbox_box_aspect.svgr   Úteal)rw  rñ   )rF   ró   Úremove_textc                  C   sL   t  ¡ } |  dd¡}|  |d ¡}| j|d dd}| d¡ | d¡ d S )	Nr%   r   r†  rî  r·   r»   r“   )r   r%   r%   )r+   r,   rŠ  r.   Úset_box_aspect)r=   r>   r´   rœ   rB   rB   rC   Útest_tightbbox_box_aspectì  s   
r  )r   r]  rÈ  r   c                 C   s4   |  ¡ }| tdƒ¡ |   ¡ }|jtdƒdd d S )Nro   T)Úanimated)rN   r/   r3   )r  r‘  Úax_refÚax_testrB   rB   rC   Ú test_animated_with_canvas_changeù  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   rƒ  r¢   ©ÚAr  ÚB©ÚCÚDr   ©r%   r%   r   ©r   rU   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ÚitemsrO   Úsortedr0   Úuniquerå   rŠ  r.   )r  r  r‘  r¢   Ú	grid_axesr¦   r?   Úlabelsr>   ÚaxAÚaxBÚaxCÚaxDrB   rB   rC   Ú
test_basic  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ÚHrG   r%   r   r†  rî  )	r¥  r(  ÚvaluesrO   rŸ   rŠ  ÚsubgridspecrY   r.   )r  r  r‘  r¢   r¥   r,  r?   r>   Úgs_leftÚjrž   r¦   r_   Úgs_rightrB   rB   rC   Ú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 )NrG   r  r   r"  r#  r4  r   r%   r&  r†  rî  r'  )r¥  r(  r)  rO   rŠ  r8  r.   )r  r  r‘  r¢   r¥   r,  r¦   r?   r>   Úgs_nr.  r/  r0  r1  ÚaxFrB   rB   rC   Ú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@  rA  r4  )r(  )r  r  r‘  r¢   ÚxtrB   rB   rC   Ú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%   )rH   )r+   r(  Úget_gridspecÚget_width_ratios)r  r¢   rH   r=   ÚaxdrB   rB   rC   Útest_nested_width_ratiosd  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(  rD  Úget_height_ratios)r  r¢   rI  r=   rF  rB   rB   rC   Útest_nested_height_ratiosn  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 )NrM  Úempty_sentinelc                 S   s   h | ]	}|D ]}|’qqS rB   rB   )rŽ   ÚrowÚnamerB   rB   rC   Ú	<setcomp>  rí  z/TestSubplotMosaic.test_empty.<locals>.<setcomp>rL  r   r†  r   r'  r%   )r(  r)  rO   r*  rå   rŠ  r.   )r  r  r‘  r¢   rN  r  r,  r¦   r?   r-  r>   r.  r/  rB   rB   rC   Ú
test_emptyx  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)rT  r  r©   )r  r©   Úc)ru   rv   rw   r+   r(  r  rB   rB   rC   Ú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   )rW  r†  rî  )r(  rŠ  r.   )	r  r  r‘  rW  r¢   r,  r>   r.  r/  rB   rB   rC   Ú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)rW  Úper_subplot_kwr   )r÷   r\  r\  r[  ©rñ   )r(  rŠ  r«  r.   )	r  r  r‘  rY  r¢   r,  r>   r¤   ÚspecrB   rB   rC   Ú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#  r3  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Ú_normalize_grid_string©r  Ú	normalizerB   rB   rC   Útest_string_parserÂ  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{   )rf  r   )r   rf  )r   Ú_norm_per_subplot_kwru   rv   rw   rc  rB   rB   rC   Útest_per_subplot_kw_expanderÕ  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]  )ru   rv   rw   r  r   r(  r  rB   rB   rC   Útest_extra_per_subplot_kwâ  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 rB   )Úlist)rŽ   ÚlnrB   rB   rC   r   ð  r‘   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>Ú
)r(  ÚstripÚsplit)r  r  r‘  rj  r,  rB   rB   rC   Ú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.r"  r#  z4There are duplicate keys .* between the outer layout)z	AAA
c
BBBú'All of the rows must be the same lengthr3  rq  c                 C   sF   t  ¡ }tjt|d | |¡ W d   ƒ d S 1 sw   Y  d S )Nr{   )r+   r,   ru   rv   rw   r(  )r  r¢   r|   r=   rB   rB   rC   Ú	test_failó  s   "ÿzTestSubplotMosaic.test_failc                 C   s(   |  tƒ tƒ gg¡ |  ddgg¡ d S )Nr  r   )r(  Úobject)r  r  r‘  rB   rB   rC   Ú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(  rk  r±   r7  )r  rj  r=   Úax_dictrB   rB   rC   Ú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#  r3  r4  r5  rL  r6  ÚIÚ	ABCDEFGHIr{  ©r  r   r=   r|  rB   rB   rC   Ú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#  r3  r4  r5  rL  r6  r~  T)rR  rS  rU  Úlogit)ÚxscaleÚyscalec                 s   s(    | ]}|  ¡ d ko| ¡ dkV  qdS )rU  r‚  N)Ú
get_xscaleÚ
get_yscalerö  rB   rB   rC   r÷  3  s   €  ÿz3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r+   r,   r(  r  rl   r7  r€  rB   rB   rC   Útest_share_all(  s   ÿÿüÿz TestSubplotMosaic.test_share_all)r	  r
  r  r   ru   ÚmarkÚparametrizer2  r<  r?  rC  rG  rK  rR  rV  rX  Útupler`  re  rh  ri  rp  rr  rt  r}  r  r‡  rB   rB   rB   rC   r    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  rU   )r   r   ræ  )r  r=   N)r+   r,   r.   Úsubplot2gridr  rD  )r=   r´   rœ   r˜  r’  Úgs2Úgs3rB   rB   rC   Útest_reused_gridspec7  s   rŽ  ztest_subfigure.pngrñ   )rF   ró   c                  C   sH  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  dd¡}|jD ]}|jt j 	dd¡ddd	}qO|d j
||dd |d  d¡ |d  d¡ | jddd | jdd„ tdƒD ƒdd}|d  | ¡ d ¡ |d  | ¡ d ¡ d S )Né!N,rG   r   r%   r   r   rÄ   éþÿÿÿ©ÚvminÚvmaxrX   ú	Left SiderÖ   r   Úbottom)r?   Úlocationz
Right SideúFigure suptitleúxx-large©Úfontsizec                 S   s&   g | ]}t jd gd gd |¡d‘qS )r   zLine{}©r_   )r+   r½  r`  rè  rB   rB   rC   r   ^  s    ÿz"test_subfigure.<locals>.<listcomp>ro   rK   )ÚhandlesrJ   )r0   rd   Úseedr+   r,   rÙ   rN   rZ   rc   re   rf   r”   rÚ   rª   r3   Ú
set_zorderÚ
get_zorder)r=   ÚsubrQ   r?   rj   ÚlegrB   rB   rC   Útest_subfigureF  s.   


ÿÿr¢  c                  C   s8   t jdd} |  dd¡}tj |  | j ¡ ¡j	d¡ d S )NrG   r   r%   r   g       @)
r+   r,   rÙ   r0   ra   rb   rÖ  rF  rÔ  rI  )r=   r   rB   rB   rC   Útest_subfigure_tightbboxd  s   þr£  c                  C   sV   t jdd} |  ¡ }| ¡ |  ¡ ksJ ‚| d¡ | ¡ dks!J ‚|  ¡ dks)J ‚d S )Nr$   ©rJ  rE  )r+   r,   rÙ   Úget_dpiÚset_dpi©r=   Úsub_figrB   rB   rC   Útest_subfigure_dpin  s   
r©  ztest_subfigure_ss.pngç{®Gáz”?)rF   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  rG   r   r%   r   r   Úpinkr^  rÄ   r  r‘  rX   r”  rô   r	   r—  r˜  r™  )r0   rd   r  r+   r,   rŠ  r‹  rN   rZ   rc   re   rf   r”   r.   r/   r1   rO   )r=   r>   r   rQ   r?   rj   rB   rB   rC   Útest_subfigure_ssx  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 ]&}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  rG   )r*   é   )r   rÕ   r=   r%   r   gìQ¸…ë±?)r…  r   Úcoralz
subfigs[0]z
subfigs[1]gffffffö?rH  zsubfigsnest[0]rž   T©rS  é   rÄ   g      Àg      @r‘  zx-labelr™  zy-labelÚTitlerX   zsubfigsnest[1]r£   r   rÝ  rë   rß   rà   )r0   rd   r  r+   r,   r”   rÙ   rÚ   rN   rc   re   r4   r2   rO   rf   rY   rß   rà   )
r=   rú  ÚsubfigsnestÚaxsnest0r?   rš  rj   Úaxsnest1rg   ÚaxsRightrB   rB   rC   Ú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 )NTrV   r   r†  r   r   r%   é€  éà  r×   rU   )r+   r,   rŠ  r‹  r0   ra   rb   r	  ÚminÚmaxr3   r.   r]   )r=   r>   Úsub_figsr"  r#  r@   rB   rB   rC   Ú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   )rW   rÕ   r%   r   r   r+  )r…  rH   é   )ré  r©  r   gæû©!<LÀgkâX.8@iÜ  i  )r¢   r¥   r   r¯  g …ëYI¢_ÀgRã¥óÏ«W@éx   i,  )r+   r,   rÙ   rŠ  r.   r  rJ  r]   Ú
get_xticksr0   ra   rb   )	r=   Ú	subfig_blÚ	subfig_brr>   r´   rœ   r˜  Úticks120Úticks300rB   rB   rC   Útest_subfigure_ticksÕ  s"   

ÿrÄ  ztest_subfigure_scatter_size.png)rF   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   rl  rÄ   Ús)rÅ  Úmarker)r   rU   ro   )rô   rÄ   r{  r   rž   )rÅ  rÆ  r¤   r£   )r+   r,   rŠ  r.   r  r‹  rN   )r=   r>   r³   rò  rQ   r?   rB   rB   rC   Útest_subfigure_scatter_sizeñ  s   "þrÇ  c                  C   sN   t jdd} |  ¡ }| d¡}| dd¡}| |¡ t ¡ }| j|dd d S )NrG   r   r®   r%   r]  rm  )	r+   r,   rÙ   r.   rT  Ú	bar_labelrb  rc  rZ  )r=   r¨  r?   r©   ÚbufferrB   rB   rC   Útest_subfigure_pdf  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   r“   gUUUUUUÅ?)Úhspacer…  r·  r¸  r†  r×   rö   r‡  rî  gffffffÖ?gÍÌÌÌÌÌä?r&   r±  r&  r   rï   r'  r  )	r+   r,   rÙ   r0   ra   rb   r	  r¹  rº  )r»  r"  r#  rB   rB   rC   Útest_subfigures_wspace_hspace  s   """""rÌ  c                  C   sB   t  ¡ } |  dd¡}|d  ¡  |d  ¡  t| jƒdksJ ‚d S )Nr   r'  r   )r+   r,   rÙ   rN   ré   rå   rú  )r=   ÚsfsrB   rB   rC   Útest_subfigure_remove%  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.   rq   rP  ©r=   r?   r´   rB   rB   rC   Ú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¯   rq   rP  rÐ  rB   rB   rC   Útest_add_axes_kwargsF  rÒ  rÓ  c                    s†   t  dd¡ t ¡ \‰ }|jj‰‡ ‡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$   t dˆ jgˆdƒ¢d‘R Ž  ¡  d S )NÚbutton_press_event©rM  r-  r%   )r   rF  Ú_processrB   ©r=   ÚtransrB   rC   Úsingle_pressd  s   $z!test_ginput.<locals>.single_pressrM  rÖ  c                      s–   t dˆ jgˆdƒ¢d‘R Ž  ¡  tdˆ jdƒ ¡  t dˆ jgˆdƒ¢d‘R Ž  ¡  t dˆ jgˆdƒ¢d‘R Ž  ¡  t dˆ jgˆdƒ¢d	‘R Ž  ¡  d S )
NrÕ  rÖ  r%   Úkey_press_eventÚ	backspace©r‡  rï   ©r“   rö   r†  r   )r   rF  r×  r
   rB   rØ  rB   rC   Úmulti_pressesj  s
      $z"test_ginput.<locals>.multi_pressesr   rÝ  rÞ  )r3  r5  r+   rN   Ú	transDatar¶  r   ÚstartÚginputr0   ra   rb   )Úrecwarnr?   rÚ  rß  rB   rØ  rC   Útest_ginput_  s   rä  c                 C   s„   t  dd¡ t ¡ }|jddd u sJ ‚tdtd|jdƒjƒ 	¡  | ¡ du s)J ‚tdt
d|jd	d	d
ƒjƒ 	¡  | ¡ du s@J ‚d S )Nr,  rÔ  rM  )ÚtimeoutrÛ  r¨   TrÕ  r   r%   F)r3  r5  r+   r,   Úwaitforbuttonpressr   r
   rF  r×  rá  r   )rã  r=   rB   rB   rC   Útest_waitforbuttonpressu  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 Figurer›  r%   z
sub figure)r   rÙ   rŸ   r§  rB   rB   rC   Ú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 )
Nrê   rÈ   rõ   )rÊ   rÉ   rë   r±  Úlightrô   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)rß   rà   r”   r~   r¬  )r  r‘  rB   rB   rC   Ú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   rU  ÚlinearrM  ç      Y@)rM  rì  rî  )r+   rN   r/   rV  ÚcopyÚdeepcopyr±   r†  rÓ  r]   Úget_xlim)rš   r?   r›   rB   rB   rC   Ú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º   r¤  r+  i&  )r   rF  rp  rJ  ÚpickleÚloadsÚdumps)r=   r›   rB   rB   rC   Ú%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 )NrI   rM  r%   r   )rH   Úgridspec_kwÚAB)Údictr+   rN   r(  )r>   Úgs_origrB   rB   rC   Útest_gridspec_no_mutate_input¶  s
   rù  )rÈ  r]  r   rÇ  r   Úsvgzc                 C   s   t ƒ jt ¡ | i d d S )N©r`  Úmetadata)r   rZ  rb  rc  ©rÆ  rB   rB   rC   Útest_savefig_metadata¾  s   rþ  )Újpegr_  r^  ÚtiffÚwebpÚrawÚrgbac                 C   sJ   t jtdd tƒ jt ¡ | i d W d   ƒ d S 1 sw   Y  d S )Nzmetadata not supportedr{   rû  )ru   rv   rw   r   rZ  rb  rc  rý  rB   rB   rC   Útest_savefig_metadata_errorÃ  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   rª  g¸…ëQ¸ž?g{®Gáz¤?)rª  Úh_padr…  rË  r   zwill be deprecatedr{   rB   )rŠ  r7  r+   r,   r~   Úlayout_enginer   ru   r}   ÚPendingDeprecationWarningÚget_constrained_layout_pads)ÚparamsÚexpectedr=   rB   rB   rC   Ú test_get_constrained_layout_padsÉ  s   "ÿr  c                  C   st   t ƒ } t ¡ }| j|dd | d¡ d| ¡ v sJ ‚|  d¡ t ¡ }| j|dd | d¡ d| ¡ vs8J ‚d S )Nr   rm  r   z<g F)r   rb  ÚStringIOrZ  ÚseekrÌ  r  )r=   rq  rB   rB   rC   Útest_not_visible_figureÑ  s   


r  c                  C   s  t  ¡ \} }t  d¡\}\}}| ddgddgg¡}|  |¡ tjtdd | |¡ W d   ƒ n1 s6w   Y  tjtdd |j||d W d   ƒ n1 sTw   Y  tjtdd |j||d W d   ƒ n1 srw   Y  tjtdd |j||d W d   ƒ n1 sw   Y  t  ¡ }t  ¡ }| ¡ }| ¡ }	| ¡ }
| ¡ }| ¡ }|
 ¡ }| ddgddgg¡}| ddgddgg¡}| ddgddgg¡}| |¡ | |¡ | |¡ tjtdd | |¡ W d   ƒ d S 1 sýw   Y  d S )	Nr   r%   r   rU   zdifferent Figurer{   rX   )Úcax)	r+   rN   r@  rf   ru   r}   r¢  r,   rÙ   )rš   r´   r›   Úax2_1Úax2_2rA  Úfig3Úfig4Ú	subfig3_1Ú	subfig3_2Ú	subfig4_1Úax3_1Úax3_2Úax4_1Úim3_1Úim3_2Úim4_1rB   rB   rC   Útest_warn_colorbar_mismatchà  sB   
ÿÿÿÿ


"ÿr  c               	   C   sØ   t  ¡ } |  ¡ }| ¡ }| ||fD ]}t tj¡ | | ¡ W d   ƒ n1 s)w   Y  qtjt	dd | |¡ W d   ƒ n1 sFw   Y  tjt	dd | t  ¡ ¡ W d   ƒ d S 1 sew   Y  d S )Nzcannot be changedr{   )
r+   r,   rÙ   ru   r}   r~   r   Ú
set_figurerv   rw   )r=   Úsfig1Úsfig2ÚfrB   rB   rC   Útest_set_figure  s   ÿ€ÿ"ÿr"  c                  C   s>   t  ¡ } |  dd¡}t| ¡ | jƒD ]
\}}||u sJ ‚qd S )NrU   r   )r+   r,   rÙ   r«  r  rú  )r=   Úsf_arrr  r©   rB   rB   rC   Útest_subfigure_row_order  s
   ÿr$  c                  C   s¨   t  ¡ } |  ¡  | jrJ ‚|  ¡ }| jsJ ‚|  ¡  | jrJ ‚|jr$J ‚| ¡ }| js-J ‚|js2J ‚|  ¡  | jr;J ‚|jr@J ‚|jrEJ ‚d|_|jsMJ ‚| jsRJ ‚d S )NT)r+   r,   r]   r  rÙ   )r=   r  r   rB   rB   rC   Ú test_subfigure_stale_propagation  s$   









r%  )‰rí  r   rb  rñ  ÚplatformÚ	threadingr   Útypesr   r3  Únumpyr0   ru   ÚPILr   Ú
matplotlibr~   r   Úmatplotlib.testing.decoratorsr   r   Úmatplotlib.axesr	   Úmatplotlib.backend_basesr
   r   Úmatplotlib.figurer   r   Úmatplotlib.layout_enginer   r   r   Úmatplotlib.tickerr   r   r   Úmatplotlib.pyplotÚpyplotr+   Úmatplotlib.datesÚdatesr.  ÚmachinerD   rR   rk   ry   r‚   r…   rˆ   r   r¡   r¬   rµ   r½   rÁ   rÆ   rÓ   rÞ   rä   rì   rÿ   r  r  r  r  r$  rˆ  r‰  r>  rB  rF   ÚcontextrK  rO  ÚinfrL  rQ  rY  r\  rd  rh  Úparamrf  rt  rz  r‚  r¬  r™  r›  rž  r¨  r®  r¯  r°  rÅ  rÑ  rÜ  rá  rã  rÿ  r  r  r  r  r  r  rŽ  r¢  r£  r©  r¬  r¶  r¼  rÄ  rÇ  rÊ  rÌ  rÎ  rÑ  rÓ  rä  rç  rè  rê  rð  rô  rù  rþ  r  r  r  r  r"  r$  r%  rB   rB   rB   rC   Ú<module>   sR   ÿ
'ÿý
#	ÿ

,
ÿü
		
'

ý
	
þ


4




	
Q

ÿý
	
  7ÿ


ÿ
ÿ
'

ÿ






$