o
    îÇhuë  ã                	   @   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<ed?gddgd@dAdBœdCdDdE„ ƒZ=dFdG„ Z>dHdI„ Z?dJdK„ Z@dLdM„ ZAdNdO„ ZBejC DdPg dQ¢¡dRdS„ ƒZEdTdU„ ZFejG HdV¡dWdX„ ƒZIejC DdYdZejJfd[ejKdZfg¡d\d]„ ƒZLd^d_„ ZMd`da„ ZNdbdc„ ZOddde„ ZPdfdg„ ZQejC DdhejRdiejC Sdi¡gdjejRdkejC Sdk¡gdjg¡dldm„ ƒZTdndo„ ZUdpdq„ ZVe Wdrdsi¡edgdtdudv„ ƒƒZXdwdx„ ZYdydz„ ZZd{d|„ Z[edgdtd}d~„ ƒZ\ejC Ddd€dg¡d‚dƒ„ ƒZ]d„d…„ Z^edd†gdtd‡dˆ„ ƒZ_ejC Dd‰g dŠ¢¡d‹dŒ„ ƒZ`ddŽ„ Zadd„ Zbd‘d’„ ZcejC Dd“d”d•g¡d–d—„ ƒZdd˜d™„ ZeejG Hd¡dšd›„ ƒZfdœd„ ZgedžgddŸd d¡œdsd¢d£d¤„ ƒZheg d¥¢dtd¦d§„ ƒZiG d¨d©„ d©ƒZjdªd«„ Zked¬gdd­d id®d¯d°„ ƒZld±d²„ Zmd³d´„ Znedµgdd­d id¶d·d¸d¹„ ƒZoedºgdd­d id®d»d¼„ ƒZpd½d¾„ ZqejG Hd¡d¿dÀ„ ƒZredÁgddsdÂdÃdÄ„ ƒZsdÅdÆ„ ZtdÇdÈ„ ZudÉdÊ„ ZvdËdÌ„ ZwdÍdÎ„ ZxdÏdÐ„ ZydÑdÒ„ ZzdÓdÔ„ Z{edgdtdÕdÖ„ ƒZ|d×dØ„ Z}dÙdÚ„ Z~dÛdÜ„ ZejC Dd‰g dÝ¢¡dÞdß„ ƒZ€ejC Dd‰g dà¢¡dádâ„ ƒZdã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   úp/var/www/html/construction_image-detection-poc/venv/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   Úfigure_todayg¸…ë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¢   Ú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)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Ã   Úfigure_suptitlec                  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ç   Ú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_alphao  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   ÚremoveÚravelr³   Úlen©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   r4  r]   r8   r6  )r=   r?   Úimr_   rB   rB   rC   Ú'test_autofmt_xdate_colorbar_constrainedó  s   
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)rU   rU   r×   i  é2   éÈ   )r+   r,   r]   ÚcanvasÚrendererÚheightÚwidthÚdpir   rB   rB   rC   Útest_change_dpi  s   rH  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  )rF  rE  r=   rB   rB   rC   Útest_invalid_figure_size  s   ÿ"ÿrI  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_axes  s2   ÿ
þÿÿÿý
ÿ"ÿrN  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_loglabels5  s   


ÿrV  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_savefigJ  s
   "ÿrY  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¾   rW  ÚioÚBytesIO)r=   r]  rB   rB   rC   Útest_savefig_warnsQ  s   ÿ€ÿra  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.pngrZ  )r+   r,   ru   rv   ÚModuleNotFoundErrorrW  rw   r   rB   rB   rC   Útest_savefig_backendX  s   ÿÿ"þre  rc  Ú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/   r_  r`  rW  r   ÚopenÚloadrC  Ú_set_device_pixel_ratio)rc  r=   r?   ÚbufÚratio1Úratio2rB   rB   rC   Útest_savefig_pixel_ratiob  s    


ý


ýrq  c                  C   s0   t jdd} | jt ¡ dd |  ¡ jsJ ‚d S )NÚ
compressedr   r   ©Úbbox_inches)r+   r,   rW  r_  r`  Úget_layout_engineÚ	_compressr   rB   rB   rC   Ú#test_savefig_preserve_layout_enginey  s   rw  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   rs  T)ÚoriginalF)r+   rN   rc   r0   rd   re   rf   rW  r_  r`  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"   )rJ  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Ø   rG  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Ú
isinstanceru  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¡  ru  r   )r  rŽ  r=   Ú
autolayoutr³   rB   rB   rC   Ú&test_tightlayout_autolayout_deconflicté  s   þür«  r   rG   rr  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­  rZ  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°  )	rG  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   rZ  Ú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+   rW  rk  ÚencodeÚreadÚlower)rÃ  Útmp_pathÚoutÚfilerB   rB   rC   Ú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%   rÛ   r“   zThis dangles over endgR¸…ë"@r   r  gî|?5^ºå?Fg¢E¶óýT@T)Úbbox_extra_artists)r+   rN   Úset_xlimr–   rC  Úget_rendererÚabsÚget_tightbboxÚx1rG  Úx0Úset_in_layout)r=   r?   r   rD  Úx1Nom0Úx1NomrB   rB   rC   Ú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©rO  r   iÐ  )r+   rN   r  r/   r   r¡  r5   Úget_major_formatterr+  ÚAutoDateFormatterÚset_major_formatterr   r­   rB   rB   rC   Útest_axes_removalE  s   (ÿ(ÿrÞ  c                  C   s,   t jddd\} }|d  ¡  | j ¡  d S )Nr   TrÚ  r   )r+   rN   r  rC  Údrawr­   rB   rB   rC   Útest_removed_axisW  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   m  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_clear^  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   ÚscatterrC  rß  Ústaler   ÚbboxrÕ  rF  Úy0rE  Ú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)rt  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   rZ  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   r1  r   r%   r#  rƒ  rë  r$  )r¢  r%  r&  rO   r‡  r5  r.   )r  r  rŽ  r¤   r§   r)  r¨   r?   r>   Úgs_nr+  r,  r-  r.  Ú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=  r>  r1  )r%  )r  r  rŽ  r¤   ÚxtrB   rB   rC   Útest_nested_tupleF  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_ratiosN  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%  rA  Úget_height_ratios)r  r¤   rF  r=   rC  rB   rB   rC   Útest_nested_height_ratiosX  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 )NrJ  Úempty_sentinelc                 S   s   h | ]	}|D ]}|’qqS rB   rB   )rŽ   ÚrowÚnamerB   rB   rC   Ú	<setcomp>y  rê  z/TestSubplotMosaic.test_empty.<locals>.<setcomp>rI  r   rƒ  r   r$  r%   )r%  r&  rO   r'  r  r‡  r.   )r  r  rŽ  r¤   rK  r  r)  r¨   r?   r*  r>   r+  r,  rB   rB   rC   Ú
test_emptyb  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)rQ  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   )rT  rƒ  rë  )r%  r‡  r.   )	r  r  rŽ  rT  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)rT  Úper_subplot_kwr   )rò   rY  rY  rX  ©rì   )r%  r‡  r¨  r.   )	r  r  rŽ  rV  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   r0  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{   )rc  r  )r  rc  )r   Ú_norm_per_subplot_kwru   rv   rw   r`  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  )rZ  )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Ž  rg  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 lengthr0  rn  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%  rh  r³   r4  )r  rg  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   r0  r1  r2  rI  r3  ÚIÚ	ABCDEFGHIrx  ©r  r   r=   ry  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   r0  r1  r2  rI  r3  r{  T)rO  rP  rR  Úlogit)ÚxscaleÚyscalec                 s   s(    | ]}|  ¡ d ko| ¡ dkV  qdS )rR  r  N)Ú
get_xscaleÚ
get_yscaleró  rB   rB   rC   rô    s   €  ÿz3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r+   r,   r%  rŠ  rl   r4  r}  rB   rB   rC   Útest_share_all  s   ÿÿüÿz TestSubplotMosaic.test_share_all)r  r  r  r   ru   ÚmarkÚparametrizer/  r9  r<  r@  rD  rH  rO  rS  rU  Útupler]  rb  re  rf  rm  ro  rq  rz  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  rA  )r=   r¶   rœ   r•  r  Úgs2Úgs3rB   rB   rC   Útest_reused_gridspec!  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   H  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_subfigure0  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Ó  rC  rÑ  rF  )r=   r  rB   rB   rC   Útest_subfigure_tightbboxN  s   þr   c                  C   sV   t jdd} |  ¡ }| ¡ |  ¡ ksJ ‚| d¡ | ¡ dks!J ‚|  ¡ dks)J ‚d S )Nr$   ©rG  rB  )r+   r,   rÜ   Úget_dpiÚset_dpi©r=   Úsub_figrB   rB   rC   Útest_subfigure_dpiX  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_ssb  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ö?rE  zsubfigsnest[0]rŸ   T©rP  é   rÇ   g      Àg      @rŽ  zx-labelr–  zy-labelÚTitlerX   zsubfigsnest[1]r¥   r   rÚ  Úylabelrâ   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_doubley  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  rG  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   ri  rÇ   Ús)rÃ  Úmarker)r   rU   ro   )rï   rÇ   rx  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%   rZ  rj  )	r+   r,   rÜ   r.   rQ  Ú	bar_labelr_  r`  rW  )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   s6   t  ¡ } |  dd¡}|d  ¡  t| jƒdksJ ‚d S )Nr   r$  r   )r+   r,   rÜ   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   rM  ©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   rM  rÎ  rB   rB   rC   Útest_add_axes_kwargs/  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©rJ  r*  r%   )r   rC  Ú_processrB   ©r=   ÚtransrB   rC   Úsingle_pressM  s   $z!test_ginput.<locals>.single_pressrJ  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   rC  rÕ  r
   rB   rÖ  rB   rC   Úmulti_pressesS  s
      $z"test_ginput.<locals>.multi_pressesr   rÛ  rÜ  )r0  r2  r+   rN   Ú	transDatar³  r   ÚstartÚginputr0   ra   rb   )Úrecwarnr?   rØ  rÝ  rB   rÖ  rC   Útest_ginputH  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Ò  rJ  )ÚtimeoutrÙ  rª   TrÓ  r   r%   F)r0  r2  r+   r,   Úwaitforbuttonpressr   r
   rC  rÕ  rß  r   )rá  r=   rB   rB   rC   Ú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 Figurer˜  r%   z
sub figure)r   rÜ   r    r¤  rB   rB   rC   Útest_kwargs_passh  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¯  r®  Úlightrï   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)râ   rã   r”   r~   r©  )r  rŽ  rB   rB   rC   Útest_rcparamsp  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   rR  ÚlinearrJ  ç      Y@)rJ  rë  rë  )r+   rN   r/   rS  Ú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   rC  rm  rG  Ú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   rJ  r%   r   )rH   Úgridspec_kwÚAB)Údictr+   rN   r%  )r>   Úgs_origrB   rB   rC   Útest_gridspec_no_mutate_inputŸ  s
   rø  )rÅ  rZ  r   rÄ  r   Úsvgzc                 C   s   t ƒ jt ¡ | i d d S )N©r]  Úmetadata)r   rW  r_  r`  ©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   rW  r_  r`  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‡  r4  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   rj  r   z<g F)r   r_  ÚStringIOrW  ÚseekrÉ  rŒ  )r=   rn  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_2r>  Ú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   r_  rð  ÚplatformÚ	threadingr   Útypesr   r0  Ú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?  rF   ÚcontextrH  rL  ÚinfrI  rN  rV  rY  ra  re  Úparamrc  rq  rw  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>   sP   ÿ
'ÿý
#	ÿ

,
ÿü
		
'

ý
	
þ


4




	
Q

ÿý
	
  7ÿ


ÿ
ÿ
'

ÿ



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