o
    ˆ‚¡e&Ø  ã                	   @   sX  d dl Z d dlmZ d dlZd dlmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlZd dlZd dlZd dlmZ d dlZd dlmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZmZ 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rd ndddd„ ƒZ.dd„ Z/dd„ Z0dd„ Z1dd„ Z2edgƒdd „ ƒZ3ed!gƒd"d#„ ƒZ4d$d%„ Z5d&d'„ Z6d(d)„ Z7ed*gƒd+d,„ ƒZ8d-d.„ Z9d/d0„ Z:d1d2„ Z;ed3gddgd4d5d6œd7d8d9„ ƒZ<d:d;„ Z=d<d=„ Z>d>d?„ Z?d@dA„ Z@dBdC„ ZAejB CdDg dE¢¡dFdG„ ƒZDejE FdH¡dIdJ„ ƒZGejB CdKdLejHfdMejIdLfg¡dNdO„ ƒZJdPdQ„ ZKdRdS„ ZLdTdU„ ZMdVdW„ ZNdXdY„ ZOejB CdZejPd[ejB Qd[¡gd\ejPd]ejB Qd]¡gd\g¡d^d_„ ƒZRd`da„ ZSdbdc„ ZTe Udddei¡edgdfdgdh„ ƒƒZVdidj„ ZWdkdl„ ZXdmdn„ ZYedgdfdodp„ ƒZZejB Cdqdrdsg¡dtdu„ ƒZ[dvdw„ Z\eddxgdfdydz„ ƒZ]ejB Cd{g d|¢¡d}d~„ ƒZ^dd€„ Z_dd‚„ Z`dƒd„„ ZaejB Cd…d†d‡g¡dˆd‰„ ƒZbdŠd‹„ ZcejE FdŒ¡ddŽ„ ƒZddd„ Zeed‘gdŒd’d“d”œded•d–d—„ ƒZfeg d˜¢dfd™dš„ ƒZgG d›dœ„ dœƒZhddž„ ZiedŸgdŒd d“id¡d¢d£„ ƒZjd¤d¥„ Zkd¦d§„ Zled¨gdŒd d“id©dªd«d¬„ ƒZmed­gdŒd d“id¡d®d¯„ ƒZnd°d±„ ZoejE FdŒ¡d²d³„ ƒZped´gdŒdedµd¶d·„ ƒZqd¸d¹„ Zrdºd»„ Zsd¼d½„ Ztd¾d¿„ ZudÀdÁ„ ZvdÂdÃ„ ZwdÄdÅ„ ZxedgdfdÆdÇ„ ƒZydÈdÉ„ ZzdÊdË„ Z{dÌdÍ„ Z|ejB Cd{g dÎ¢¡dÏdÐ„ ƒZ}ejB Cd{g dÑ¢¡dÒdÓ„ ƒZ~dÔdÕ„ ZdÖd×„ Z€dS )Øé    N)Údatetime)ÚPath)Ú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   é   g    €„.Aéè  z	Ylabel0 0)r   éÿÿÿÿg     ˆÃ@éd   é   z
YLabel1 %dz
XLabel1 %d©r   r    ÚtopéZ   ÚrightzXLabel2 zYLabel2 é
   )ÚpltÚfigurer   ÚGridSpecÚadd_subplotÚplotÚnpÚarangeÚ
set_ylabelÚrangeÚ
set_xlabelÚxaxisÚset_label_positionÚtick_topÚget_xticklabelsÚset_rotationÚyaxisÚ
tick_rightÚalign_labels)ÚfigÚgsÚaxÚiÚtick© rA   úK/var/www/myenv/lib/python3.10/site-packages/matplotlib/tests/test_figure.pyÚtest_align_labels   sB   


€
€rC   c                  C   s
  t  dd¡\} }t|jƒD ]\}}| d¡ | d¡ | t d¡| t d¡| ¡ q|  ¡  |  	¡  |  
¡  t d¡}t d¡}t|jƒD ]\}}|jj ¡ d ||< |jj ¡ d ||< qGtj |d d… |dd … ¡ tj |d d d… |dd d… ¡ t jdddd\} }t|jƒD ]\}}| d¡ | d¡ | tj d	d	¡¡}q| j||d
 |  ¡  |  	¡  |  
¡  t d¡}t d¡}t|jƒD ]\}}|jj ¡ d ||< |jj ¡ d ||< qÊtj |d d… |dd … ¡ tj |d d d… |dd d… ¡ d S )Nr    ÚBooÚWhoé   r$   r   T©Úconstrained_layoutr)   ©r>   )r*   ÚsubplotsÚ	enumerateÚflatr3   r.   r/   r0   Úalign_ylabelsÚalign_xlabelsÚdraw_without_renderingÚzerosr4   ÚlabelÚget_positionr9   ÚtestingÚassert_allcloseÚ
pcolormeshÚrandomÚrandnÚcolorbar)r<   ÚaxsÚnnr>   ÚxnÚynÚpcrA   rA   rB   Útest_align_labels_stray_axesF   s>   

"

"



&r^   c                  C   s  t  d¡ t  d¡} t  d¡ t  d¡ t  ¡  t  d¡ t  d¡ t  d¡ t  ¡ g d¢ks1J ‚t  ¡ g d¢ks;J ‚t  d	¡ t  ¡  t  d
¡ t  d¡ t  ¡ ddgksXJ ‚t  ¡ ddgksbJ ‚t  | ¡ t  ¡ | ksoJ ‚t t¡ t  t	ƒ ¡ W d   ƒ d S 1 s†w   Y  d S )NÚallÚtodayr   Útomorrowr   r$   )r   r$   r   rF   é   )Ú r`   rc   ra   rc   r)   rb   rc   )
r*   Úcloser+   Úget_fignumsÚget_figlabelsÚgcfÚpytestÚraisesÚ
ValueErrorr   )Ú	fig_todayrA   rA   rB   Útest_figure_labeli   s*   










"ÿrl   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    ÚthreerF   )r*   r+   Úfignum_existsrd   rA   rA   rA   rB   Útest_fignum_exists   s   




rp   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 rA   ©Úget_text©Ú.0ÚtrA   rA   rB   Ú
<listcomp>˜   ó    z$test_clf_keyword.<locals>.<listcomp>F)rq   Úclearç      à?c                 S   rr   rA   rs   ru   rA   rA   rB   rx      ry   r    Tc                 S   rr   rA   rs   ru   rA   rA   rB   rx   ¡   ry   )r*   r+   ÚsuptitleÚtextsÚtextrJ   )Útext1Útext2Úfig0Úfig1Úfig2Úax2rA   rA   rB   Útest_clf_keyword‘   s   
r…   Úfigure_todayc                  C   sh   t  d¡} |  ¡ }| |  ¡ ¡ | t d¡¡ t  d¡ t  ddgddgd¡ t  d¡ t  d¡ d S )Nr`   rb   ra   r   r$   Úr)	r*   r+   r-   Ú	set_titleÚ	get_labelr.   r/   r0   rd   ©r<   r>   rA   rA   rB   Ú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)rQ   ÚcolorÚyr‡   r{   ÚkÚ_yÚzÚb)r*   rJ   r.   Úlegend©r<   rY   rA   rA   rB   Ú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Úax1rA   rA   rB   Ú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
   rh   ri   rj   Ú	TypeError©r<   rA   rA   rB   Útest_add_subplot_subclassÛ   s   ÿÿÿ"ÿr©   c                  C   sæ  t  ¡ } tjtdd |  ddd¡ W d   ƒ n1 sw   Y  tjtdd |  ddd¡ W d   ƒ n1 s;w   Y  tjtdd |  ddd¡ W d   ƒ n1 sYw   Y  tjtdd |  ddd¡ W d   ƒ n1 sww   Y  tjtdd |  ddd	¡ W d   ƒ n1 s•w   Y  tjtd
d |  d¡ W d   ƒ n1 s±w   Y  tjtd
d |  d¡ W d   ƒ n1 sÍw   Y  tjtdd |  dd¡ W d   ƒ n1 sêw   Y  tjtdd |  dddd¡ W d   ƒ n	1 s
w   Y  tjtdd |  ddd¡ W d   ƒ n	1 s)w   Y  tjtdd |  ddd¡ W d   ƒ n	1 sHw   Y  t  ¡ \}}tjtdd |  |¡ W d   ƒ d S 1 slw   Y  d S )Nz,Number of columns must be a positive integer©Úmatchr    r   r$   z)Number of rows must be a positive integerz)num must be an integer with 1 <= num <= 4rb   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   rF   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+   rh   ri   rj   r-   r§   rJ   )r<   Ú_r>   rA   rA   rB   Ú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*   rJ   r|   )r<   r®   rA   rA   rB   Útest_suptitle  s   rµ   c                  C   sV   t  ¡ \} }tjjddd}| jd|d}| ¡ | ¡ ksJ ‚| ¡ | ¡ ks)J ‚d S )NÚlargeÚbold)ÚsizeÚweightzfontprops title)Úfontproperties)	r*   rJ   ÚmplÚfont_managerÚFontPropertiesr|   Úget_fontsizeÚget_size_in_pointsÚ
get_weight)r<   r>   ÚfpsÚtxtrA   rA   rB   Útest_suptitle_fontproperties  s
   rÃ   c                  C   sd   t jdd} |  dd¡\}}| d¡ | ¡  | ¡  |  d¡ | ¡ dks(J ‚| ¡ dks0J ‚d S )	N)rF   r   ©Úfigsizer$   r    ÚwhitezThis is a visible suptitle.)ç        rÇ   rÇ   rÇ   )ç      ð?rÈ   rÈ   rÈ   )r*   r+   Ú
subfiguresÚset_facecolorrJ   r|   Úget_facecolor)r<   Úsf1Úsf2rA   rA   rB   Útest_suptitle_subfigures#  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 )Nrc   r|   Ú	supxlabelÚ	supylabel)r*   rJ   Úget_suptitleÚget_supxlabelÚget_supylabelr|   rÏ   rÐ   rŠ   rA   rA   rB   Ú%test_get_suptitle_supxlabel_supylabel1  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¨   rA   rA   rB   Ú
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$   )rh   ÚwarnsÚRuntimeWarningr2   r»   ÚrcParamsr*   r+   )r?   rA   rA   rB   Útest_too_many_figuresM  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ÚkwargsrA   rA   rB   rî   _  s   z7test_iterability_axes_argument.<locals>.MyAxes.__init__)Ú__name__Ú
__module__Ú__qualname__rî   rA   rA   rA   rB   Ú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)rj   )rï   ÚitemrA   rA   rB   Ú__getitem__d  s   ÿz;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s   ˆ d| ifS )Nrì   rA   ©rï   ©rõ   rA   rB   Ú_as_mpl_axesh  s   z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)rò   ró   rô   rø   rû   rA   rú   rA   rB   ÚMyClassb  s    rü   r$   r¦   )r
   r*   r+   r-   rd   )rü   r<   rA   rú   rB   Útest_iterability_axes_argumentS  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 )Nrb   r$   r    rF   )r$   r   r   )r*   r+   Úset_figwidthÚget_figwidthÚset_figheightÚget_figheightÚset_size_inchesr¨   rA   rA   rB   Útest_set_fig_sizep  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*   rJ   ÚremoveÚravelrœ   Úlen©r<   rY   r>   rA   rA   rB   Ú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*   Ú	figaspectr/   Úfloat64rP   )ÚwÚhrA   rA   rB   Ú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   rF   rb   é   é   r    Úignorez=FixedFormatter should only be used together with FixedLocatorçš™™™™™É?r(   )r  r  r   Fr  )r  r  Tr  )ÚmdatesÚdatestr2numr*   rJ   r.   Ú
yaxis_dateÚ
xaxis_dater4   Úset_minor_locatorr   ÚwarningsÚcatch_warningsÚfilterwarningsÚset_minor_formatterr   Úautofmt_xdaterœ   r7   ÚintÚget_rotation)
r  ÚdateÚtimeÚangleÚminorsr   r   r<   r>   rQ   rA   rA   rB   Útest_autofmt_xdateš  s6   


þüþr)  Údefaultc                  C   sn   t jdd} |  ¡  | jjjdksJ ‚| jjjdksJ ‚d| _|  ¡  | jjjdks,J ‚| jjjdks5J ‚d S )N)rF   rF   rÄ   i  é2   éÈ   )r*   r+   rO   ÚcanvasÚrendererÚheightÚwidthÚdpir¨   rA   rA   rB   Útest_change_dpiÂ  s   r2  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Ä   )rh   ri   rj   r*   r+   r  )r0  r/  r<   rA   rA   rB   Útest_invalid_figure_sizeÎ  s   ÿ"ÿr3  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jd	d | |d
¡ W d   ƒ n1 s w   Y  tjtj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)Passing more than one positional argumentzextra positional argument)r*   r+   rh   ri   r§   rš   rj   r/   ÚnanrJ   Údelaxesrè   r»   ÚMatplotlibDeprecationWarning)r<   rƒ   r>   rA   rA   rB   Útest_invalid_figure_add_axesÜ  s:   ÿ
þÿÿÿý
ÿþÿ"þr9  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*   rJ   rL   r.   Ú
set_yscaleÚ
set_xscaler  r4   Úget_ticklabelsr9   r  rA   rA   rB   Útest_subplots_shareax_loglabelsø  s   


ÿrA  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+   rh   ri   r§   Úsavefig)r<   ÚmsgrA   rA   rB   Útest_savefig  s
   "ÿrD  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+   rh   ri   r§   rB  ÚioÚBytesIO)r<   rH  rA   rA   rB   Útest_savefig_warns  s   ÿ€ÿrL  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.pngrE  )r*   r+   rh   ri   ÚModuleNotFoundErrorrB  rj   r¨   rA   rA   rB   Útest_savefig_backend  s   ÿÿ"þrP  rN  Ú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   ©rH  r    )r*   rJ   r.   rJ  rK  rB  r   ÚopenÚloadr-  Ú_set_device_pixel_ratio)rN  r<   r>   ÚbufÚratio1Úratio2rA   rA   rB   Útest_savefig_pixel_ratio%  s    


ý


ýr\  c                  C   s0   t jdd} | jt ¡ dd |  ¡ jsJ ‚d S )NÚ
compressedr   r   ©Úbbox_inches)r*   r+   rB  rJ  rK  Úget_layout_engineÚ	_compressr¨   rA   rA   rB   Ú#test_savefig_preserve_layout_engine<  s   rb  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   rF   r^  T)ÚoriginalF)r*   rJ   rU   r/   rV   rW   rX   rB  rJ  rK  r»   Ú
transformsÚBboxr>   rR   Úbounds)r<   r>   r]   ÚcbarrA   rA   rB   Útest_savefig_locate_colorbarC  s   &ÿrj  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   çš™™™™™©?)ÚleftÚwspace©r   r   r"   )r4  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>   rA   rA   rB   Útest_savefig_transparentN  s   þr‚  c                  C   s"   t jddd} t| ƒdksJ ‚d S )N)r)   rÜ   r)   )rÅ   r1  z!<Figure size 100x200 with 0 Axes>)r*   r+   Úreprr¨   rA   rA   rB   Útest_figure_repre  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   Úconstrained)r   Úget_tight_layoutÚget_constrained_layoutr¨   rA   rA   rB   Útest_valid_layoutsj  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 )Nr…  r   çš™™™™™é?)r&   z1The Figure parameters 'layout' and 'tight_layout'rª   r   F)r   Útight_layoutz7The Figure parameters 'layout' and 'constrained_layout')r   rH   zInvalid value for 'layout'Úfoobarr    zColorbar layout of new layoutrØ   )r*   rJ   rh   rè   ÚUserWarningÚsubplots_adjustÚ
isinstancer`  r   r   r   ri   rj   Úset_layout_enginerU   r/   rV   rW   rX   ÚRuntimeErrorr   )r<   r>   Úwstr]   rA   rA   rB   Útest_invalid_layoutsx  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_contextrJ   rŠ  rŽ  r`  r   )ry  rz  r<   Ú
autolayoutrœ   rA   rA   rB   Ú&test_tightlayout_autolayout_deconflict¬  s   þür˜  r   r…  r]  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*   rJ   rh   rè   rŒ  rŠ  )r   r<   r>   rA   rA   rB   Útest_layout_change_warningµ  s   
"ÿr™  c                  C   s"   t ƒ } |  ¡  |  ¡  |  ¡  d S rí   )r   rŠ  r¨   rA   rA   rB   Útest_repeated_tightlayoutÀ  s   rš  rE  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{   rl  ÚC2)g      @r‰  gš™™™™™á?ÚcrimsonÚC3)r   rÙ   r  é   )r   r  ÚzorderFrÜ   )r   Úclip_onr¥  r  )r   rÙ   r¦  r¥  r  )	r1  rJ   r*   ÚLine2DÚCircleÚdpi_scale_transÚ
add_artistr  ÚtransFigure)	ry  rz  rœ  rž  Úr1Úr2Úr3rö   r„   rA   rA   rB   Útest_add_artistÈ  s:   ÿÿÿÿÿÿr¯  Úfmt)r   rE  ÚpsÚepsr   c                 C   sf   t |d| › ƒ}t |¡ | d¡}|  d¡| d¡ ¡ v s!J ‚W d   ƒ d S 1 s,w   Y  d S )Nztest.ÚrbÚasciir#   )r   r*   rB  rV  ÚencodeÚreadÚlower)r°  ÚtmpdirÚoutÚfilerA   rA   rB   Ú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    rl  gî|?5^ºå?Fg¢E¶óýT@T)Úbbox_extra_artists)r*   rJ   Úset_xlimr~   r-  Úget_rendererÚabsÚget_tightbboxÚx1r1  Úx0Úset_in_layout)r<   r>   rw   r.  Úx1Nom0Úx1NomrA   rA   rB   Útest_tightbboxï  s*   
""
"
"ÿÿrÆ  c                  C   sØ   t jdddd\} }|d  ¡  |d  tdddƒtdddƒgddg¡ t|d j ¡ tj	ƒs1J ‚t jdddd\} }|d j 
tƒ ¡ |d  ¡  |d  tdddƒtdddƒgddg¡ t|d j ¡ tƒsjJ ‚d S )Nr$   r    T©r:  r   iÐ  )r*   rJ   r  r.   r   rŽ  r4   Úget_major_formatterr  ÚAutoDateFormatterÚset_major_formatterr   r–   rA   rA   rB   Útest_axes_removal  s   (ÿ(ÿrË  c                  C   s,   t jddd\} }|d  ¡  | j ¡  d S )Nr    TrÇ  r   )r*   rJ   r  r-  Údrawr–   rA   rA   rB   Útest_removed_axis  s   rÍ  Ú
clear_methrz   Ú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-   ©rv   r?   r¨   rA   rB   rx   0  s    z%test_figure_clear.<locals>.<listcomp>r    r$   )r“  Únrowsr   c                    ó   g | ]	}ˆ   ˆ| ¡‘qS rA   ©rt  rÒ  ©r<   r=   rA   rB   rx   ]  ó    ©r   r$   c                 S   ó   g | ]}|  d ¡‘qS ©r™   rÑ  ©rv   ÚsfigrA   rA   rB   rx   ^  ó    c                 3   ó    | ]}|ˆ j v V  qd S rí   ©rœ   ©rv   r>   r¨   rA   rB   Ú	<genexpr>_  ó   € z$test_figure_clear.<locals>.<genexpr>c                 3   rÞ  rí   ©ÚsubfigsrÛ  r¨   rA   rB   rá  `  râ  c                    rÔ  rA   rÕ  rÒ  rÖ  rA   rB   rx   j  r×  c                 S   rÙ  rÚ  rÑ  rÛ  rA   rA   rB   rx   k  rÝ  c                 3   rÞ  rí   rß  rà  r¨   rA   rB   rá  l  râ  c                 3   rÞ  rí   rã  rÛ  r¨   rA   rB   rá  m  râ  )r*   r+   rz   rœ   r-   Úgetattrr2   rs  rt  rä  r  r_   )rÎ  r>   rœ   ÚsubfigÚsubaxesÚmainaxesrä  rA   rÖ  rB   Útest_figure_clear!  sh   




ré  c                  C   s    t  ¡ D ]	} d| jvsJ ‚qd S )NrÏ  )r   Ú__subclasses__Ú__dict__)ÚklassrA   rA   rB   Útest_clf_not_redefineds  s   þrí  Úmpl20c                  C   s€   t  ¡ \} }|jdgdgdgdd | j ¡  | jrJ ‚t|jj|jj	d  |jj
|jjd  |d d}|  |¡ | jr>J ‚d S )Nr   r!   T)Úpickerr    )r   r   ÚinaxesÚguiEvent)r*   rJ   Úscatterr-  rÌ  Ústaler   ÚbboxrÂ  r0  Úy0r/  Úpick)r<   r>   Úmouse_eventrA   rA   rB   Útest_picking_does_not_staley  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   rb   r$   r   )rF   r  )r   r  )rF   rb   )r  r   )
r*   r+   r-   Úget_subplotspecÚrowspanr2   Úcolspanrh   ri   Ú
IndexError)r<   rŸ   r„   r  Úax4rA   rA   rB   Útest_add_subplot_twotuple‡  s    "ÿrÿ  ztightbbox_box_aspect.svgr   Úteal)r_  rÙ   )ÚstylerÛ   Úremove_textc                  C   sL   t  ¡ } |  dd¡}|  |d ¡}| j|d dd}| d¡ | d¡ d S )	Nr$   r    ro  rØ  r¢   r¦   r{   )r    r$   r$   )r*   r+   rs  r-   Úset_box_aspect)r<   r=   rŸ   r„   rA   rA   rB   Útest_tightbbox_box_aspect™  s   
r  )r   rE  r²  r   c                 C   s4   |  ¡ }| tdƒ¡ |   ¡ }|jtdƒdd d S )Nrb   T)Úanimated)rJ   r.   r2   )ry  rz  Úax_refÚax_testrA   rA   rB   Ú 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   rk  r   ©ÚAr  ÚB©ÚCÚDr  ©r$   r$   r    ©r   rF   r    )r
  r  )r  r  c                 C   sÜ   |  |¡}| ¡ D ]	\}}| |¡ q	tt |¡ƒ}t|ƒt|ƒks$J ‚| dd¡}| |d d…d d…f ¡}	|	 |d ¡ | |d d …df ¡}
|
 |d ¡ | |d ¡}| |d ¡ | |d ¡}| |d ¡ d S )Nr    r   r$   r   ©r$   r   ©r$   r$   )	Úsubplot_mosaicÚitemsrˆ   Úsortedr/   Úuniquer  rs  r-   )rï   ry  rz  r   Ú	grid_axesr‘   r>   Úlabelsr=   ÚaxAÚaxBÚaxCÚaxDrA   rA   rB   Ú
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ÚHr…  r$   r    ro  rØ  )	r  r  Úvaluesrˆ   r‰   rs  ÚsubgridspecrK   r-   )rï   ry  rz  r   r   r  r>   r=   Úgs_leftÚjr‡   r‘   rQ   Úgs_rightrA   rA   rB   Ú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 )Nr…  r  r  r  r  r   r    r$   r  ro  rØ  r  )r  r  r  rˆ   rs  r$  r-   )rï   ry  rz  r   r   r  r‘   r>   r=   Úgs_nr  r  r  r  ÚaxFrA   rA   rB   Útest_nestedç  s&   






zTestSubplotMosaic.test_nestedc                 C   s<   g d¢g d¢g}d}|  dg|gg¡ |  dg|gg¡ d S )N©r  r  r  ©r  r  r  )r,  r-  r   )r  )rï   ry  rz  r   ÚxtrA   rA   rB   Útest_nested_tuple	  s   z#TestSubplotMosaic.test_nested_tuplec                 C   s`   ddgdgggg}ddg}t j||d\}}|d  ¡  ¡ |ks"J ‚|d  ¡  ¡ |ks.J ‚d S )Nr  r  r  r    r$   )Úwidth_ratios)r*   r  Úget_gridspecÚget_width_ratios)rï   r   r0  r<   ÚaxdrA   rA   rB   Útest_nested_width_ratios  s   ÿz*TestSubplotMosaic.test_nested_width_ratiosc                 C   sf   ddgdgggddgg}ddg}t j||d\}}|d  ¡  ¡ |ks%J ‚|d  ¡  ¡ |ks1J ‚d S )Nr  r  r  r  r$   r    ©Úheight_ratios)r*   r  r1  Úget_height_ratios)rï   r   r6  r<   r3  rA   rA   rB   Útest_nested_height_ratios  s   ÿÿz+TestSubplotMosaic.test_nested_height_ratioszx, empty_sentinelr  Nr  Ú.ÚSKIPr   r$   r    c                 C   sº   |dkr	d|i}ni }|j |fi |¤Ž}| ¡ D ]	\}}| |¡ qtdd„ |D ƒ|dh ƒ}	t|	ƒt|ƒks9J ‚| dd¡}
| |
d ¡}| |	d ¡ | |
d	 ¡}| |	d
 ¡ d S )Nr:  Úempty_sentinelc                 S   s   h | ]	}|D ]}|’qqS rA   rA   )rv   ÚrowÚnamerA   rA   rB   Ú	<setcomp><  r×  z/TestSubplotMosaic.test_empty.<locals>.<setcomp>r9  r    ro  r   r  r$   )r  r  rˆ   r  r  rs  r-   )rï   ry  rz  r   r;  rñ   r  r‘   r>   r  r=   r  r  rA   rA   rB   Ú
test_empty%  s   
ÿzTestSubplotMosaic.test_emptyc                 C   sþ   t jtdd t ddg¡ W d   ƒ n1 sw   Y  t jtdd t dg¡ W d   ƒ n1 s6w   Y  t jtdd t ddgg¡ W d   ƒ n1 sUw   Y  t jtdd t ddgdd	gg¡ W d   ƒ d S 1 sxw   Y  d S )
Nz
must be 2Drª   ÚfooÚbar)rA  rö   r”   )rö   r”   Úc)rh   ri   rj   r*   r  rù   rA   rA   rB   Útest_fail_list_of_strH  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    )rD  ro  rØ  )r  rs  r-   )	rï   ry  rz  rD  r   r  r=   r  r  rA   rA   rB   Útest_subplot_kwR  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)rD  Úper_subplot_kwr    )rß   rI  rI  rH  ©rÙ   )r  rs  r•  r-   )	rï   ry  rz  rF  r   r  r=   r   ÚspecrA   rA   rB   Útest_per_subplot_kw^  s   þý	ÿz%TestSubplotMosaic.test_per_subplot_kwc                 C   s²   t j}|dƒg d¢gksJ ‚|dƒddgddggksJ ‚|dƒddgddgdd	ggks-J ‚|d
ƒg d¢gks8J ‚|dƒddgddggksFJ ‚|dƒddgddgdd	ggksWJ ‚d S )NÚABC)r  r  r  zAB;CCr  r  r  zAB;CC;DEr  r  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Ú_normalize_grid_string©rï   Ú	normalizerA   rA   rB   Útest_string_parsero  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ª   )rS  r  )r  rS  )r   Ú_norm_per_subplot_kwrh   ri   rj   rP  rA   rA   rB   Ú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  )rJ  )rh   ri   rj   rv  r   r  rù   rA   rA   rB   Ú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 rA   )Úlist)rv   ÚlnrA   rA   rB   rx     ry   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>Ú
)r  ÚstripÚsplit)rï   ry  rz  rW  r  rA   rA   rB   Ú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 lengthr  r^  c                 C   sF   t  ¡ }tjt|d | |¡ W d   ƒ d S 1 sw   Y  d S )Nrª   )r*   r+   rh   ri   rj   r  )rï   r   r«   r<   rA   rA   rB   Ú	test_fail   s   "ÿzTestSubplotMosaic.test_failc                 C   s(   |  tƒ tƒ gg¡ |  ddgg¡ d S )Nr  r  )r  Úobject)rï   ry  rz  rA   rA   rB   Ú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  rX  rœ   r#  )rï   rW  r<   Úax_dictrA   rA   rB   Útest_user_order¿  s   
z!TestSubplotMosaic.test_user_orderc                 C   st   dddgddgggddgdd	d
gdgggggg}t  ¡ }| |¡}t|ƒtdƒks+J ‚t|jƒt| ¡ ƒks8J ‚d S )Nr  r  r  r  r  r   r!  r9  r"  ÚIÚ	ABCDEFGHIrh  ©rï   r   r<   ri  rA   rA   rB   Útest_nested_user_orderÇ  s   ÿÿü
z(TestSubplotMosaic.test_nested_user_orderc                 C   sx   dddgddgggddgdd	d
gdgggggg}t  ¡ }|j|ddd}|d jddd tdd„ | ¡ D ƒƒs:J ‚d S )Nr  r  r  r  r  r   r!  r9  r"  rk  T)r:  r;  r=  Úlogit)ÚxscaleÚyscalec                 s   s(    | ]}|  ¡ d ko| ¡ dkV  qdS )r=  ro  N)Ú
get_xscaleÚ
get_yscalerà  rA   rA   rB   rá  à  s   €  ÿz3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r*   r+   r  rv  r_   r#  rm  rA   rA   rB   Útest_share_allÕ  s   ÿÿüÿz TestSubplotMosaic.test_share_all)rò   ró   rô   r	   rh   ÚmarkÚparametrizer  r(  r+  r/  r4  r8  r?  rC  rE  ÚtuplerM  rR  rU  rV  r]  r_  ra  rj  rn  rt  rA   rA   rA   rB   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ù  rF   )r   r    rÐ  )rü  r<   N)r*   r+   r-   Úsubplot2gridrú  r1  )r<   rŸ   r„   r  r{  Úgs2Úgs3rA   rA   rB   Útest_reused_gridspecä  s   r{  ztest_subfigure.pngrÙ   )r  rÛ   c                  C   s   t j d¡ tjdd} |  dd¡}|d  dd¡}|jD ]}|jt j 	dd¡ddd	}q|d j
||d
 |d  d¡ |d  d¡ |d  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 d S )Né!N,r…  r   r$   r    r   r³   éþÿÿÿ©ÚvminÚvmaxrI   ú	Left SiderÆ   r   Úbottom)r>   Úlocationz
Right SideúFigure suptitleúxx-large©Úfontsize)r/   rV   Úseedr*   r+   rÉ   rJ   rL   rU   rW   rX   r|   rÊ   )r<   ÚsubrY   r>   r]   rA   rA   rB   Útest_subfigureó  s    

rŠ  c                  C   s8   t jdd} |  dd¡}tj |  | j ¡ ¡j	d¡ d S )Nr…  r   r$   r    g       @)
r*   r+   rÉ   r/   rS   rT   rÀ  r-  r¾  r0  )r<   r‰  rA   rA   rB   Útest_subfigure_tightbbox  s   þr‹  c                  C   sV   t jdd} |  ¡ }| ¡ |  ¡ ksJ ‚| d¡ | ¡ dks!J ‚|  ¡ dks)J ‚d S )Nr#   ©r1  r,  )r*   r+   rÉ   Úget_dpiÚset_dpi©r<   Úsub_figrA   rA   rB   Útest_subfigure_dpi  s   
r‘  ztest_subfigure_ss.pngç{®Gáz”?)r  rÛ   r   c                  C   sº   t j d¡ tjdd} |  dd¡}| j|d dd}| dd¡}|jD ]}|j	t j 
d	d	¡d
dd}q$|j||d | d¡ |  |d ¡}| t  d¡¡ | d¡ | jddd d S )Nr|  r…  r   r$   r    r   ÚpinkrK  r³   r}  r~  rI   r  rÜ   r
   r„  r…  r†  )r/   rV   rˆ  r*   r+   rs  rt  rJ   rL   rU   rW   rX   r|   r-   r.   r0   rˆ   )r<   r=   r‰  rY   r>   r]   rA   rA   rB   Útest_subfigure_ss  s   


r”  ztest_subfigure_double.pngc            
      C   sš  t j d¡ tjddd} |  d¡ | jdddd	}|d
  d¡ |d
  d¡ |d  d¡ |d  d¡ |d
 jddddgd}|d
  d¡ |d
  d¡ |d
 jdddd}|D ]&}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|  r…  )r)   é   )r   rÅ   r<   r$   r    gìQ¸…ë±?)rn  r   Úcoralz
subfigs[0]z
subfigs[1]gffffffö?r5  zsubfigsnest[0]r‡   T©r;  é   r³   g      Àg      @r~  zx-labelr†  zy-labelÚTitlerI   zsubfigsnest[1]rŽ   r   rÇ  ÚylabelrÏ   rÐ   )r/   rV   rˆ  r*   r+   r|   rÉ   rÊ   rJ   rU   rW   r3   r1   rˆ   rX   rK   rÏ   rÐ   )
r<   rä  ÚsubfigsnestÚaxsnest0r>   r‡  r]   Úaxsnest1rZ   ÚaxsRightrA   rA   rB   Útest_subfigure_double6  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 )NTrG   r   ro  r   r    r$   é€  éà  rÇ   rF   )r*   r+   rs  rt  r/   rS   rT   rô  ÚminÚmaxr2   r-   rO   )r<   r=   Úsub_figsr  r  r?   rA   rA   rB   Ú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   )rH   rÅ   r$   r    r   r  )rn  r0  é   )rÓ  r“  r   gæû©!<LÀgkâX.8@iÜ  i  )r   r   r   r—  g …ëYI¢_ÀgRã¥óÏ«W@éx   i,  )r*   r+   rÉ   rs  r-   rò  r1  rO   Ú
get_xticksr/   rS   rT   )	r<   Ú	subfig_blÚ	subfig_brr=   rŸ   r„   r  Úticks120Úticks300rA   rA   rB   Útest_subfigure_ticks}  s"   

ÿr­  ztest_subfigure_scatter_size.png)r  r  c                  C   sÆ   t  ¡ } |  dd¡}|  |d ¡}|jg d¢g d¢ddd |jg d¢g d¢g d¢dd |  |d	 ¡}| dd¡}||d	 fD ] }|jg d¢g d¢ddd
d |jg d¢g d¢g d¢ddd q@d S )Nr$   r    rT  r³   Ús)r®  Úmarker)r   rF   rb   )rÜ   r³   rc  r   r‡   )r®  r¯  r   rŽ   )r*   r+   rs  r-   rò  rt  rJ   )r<   r=   rž   rÜ  rY   r>   rA   rA   rB   Útest_subfigure_scatter_size™  s   "þr°  c                  C   sN   t jdd} |  ¡ }| d¡}| dd¡}| |¡ t ¡ }| j|dd d S )Nr…  r   r™   r$   rE  rU  )	r*   r+   rÉ   r-   rA  Ú	bar_labelrJ  rK  rB  )r<   r  r>   r”   ÚbufferrA   rA   rB   Ú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Å?)Úhspacern  r   r¡  ro  rÇ   rÞ   rp  rØ  gffffffÖ?gÍÌÌÌÌÌä?r%   r›  r  r   r×   r  r
  )	r*   r+   rÉ   r/   rS   rT   rô  r¢  r£  )r¤  r  r  rA   rA   rB   Útest_subfigures_wspace_hspace´  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-   rd   r=  ©r<   r>   rŸ   rA   rA   rB   Ú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š   rd   r=  r·  rA   rA   rB   Ú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©r4  r  r$   )r   r-  Ú_processrA   ©r<   ÚtransrA   rB   Úsingle_press  s   $z!test_ginput.<locals>.single_pressr4  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©rp  r×   ©r{   rÞ   ro  r    )r   r-  r¾  r   rA   r¿  rA   rB   Úmulti_presses
  s
      $z"test_ginput.<locals>.multi_pressesr   rÄ  rÅ  )r  r   r*   rJ   Ú	transDatar   r   ÚstartÚginputr/   rS   rT   )Úrecwarnr>   rÁ  rÆ  rA   r¿  rB   Ú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»  r4  )ÚtimeoutrÂ  r“   Tr¼  r   r$   F)r  r   r*   r+   Úwaitforbuttonpressr   r   r-  r¾  rÈ  r   )rÊ  r<   rA   rA   rB   Útest_waitforbuttonpress  s   rÎ  c                  C   s>   t dd} | jdddd}|  ¡ dksJ ‚| ¡ dksJ ‚d S )Nzwhole Figure)rQ   r$   z
sub figure)r   rÉ   r‰   r  rA   rA   rB   Útest_kwargs_pass  s   
rÏ  c                 C   sˆ   |j dddd |jdddd |jdddd t ddddd	œ¡ |   d¡ |  d¡ |  d¡ W d   ƒ d S 1 s=w   Y  d S )
NÚxlabelr·   rÝ   )r¹   r¸   rš  r™  ÚlightrÜ   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)rÏ   rÐ   r|   r»   r–  )ry  rz  rA   rA   rB   Útest_rcparams'  s   
ý

"úrÒ  c                  C   sÂ   t  ¡ \} }| ddgddg¡ | d¡ t | ¡}|jd |us#J ‚|jd  ¡ dks.J ‚|jd  d¡ | ¡ dks>J ‚| dd¡ |  	¡  | 	¡  | 
¡ d	ksTJ ‚|jd  
¡ d
ks_J ‚d S )Nr   r$   r    r   r=  Úlinearr4  ç      Y@)r4  rÔ  rØ  )r*   rJ   r.   r>  ÚcopyÚdeepcopyrœ   rs  r½  rO   Úget_xlim)r‚   r>   rƒ   rA   rA   rB   Útest_deepcopy5  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   r-  rX  r1  ÚpickleÚloadsÚdumps)r<   rƒ   rA   rA   rB   Ú%test_unpickle_with_device_pixel_ratioN  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 )Nrm  r4  r$   r    )r0  Úgridspec_kwÚAB)Údictr*   rJ   r  )r=   Úgs_origrA   rA   rB   Útest_gridspec_no_mutate_inputV  s
   rá  )r²  rE  r   r±  r   Úsvgzc                 C   s   t ƒ jt ¡ | i d d S )N©rH  Úmetadata)r   rB  rJ  rK  ©r°  rA   rA   rB   Útest_savefig_metadata^  s   ræ  )ÚjpegrG  rF  Ú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ã  )rh   ri   rj   r   rB  rJ  rK  rå  rA   rA   rB   Útest_savefig_metadata_errorc  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_padrn  r´  r   zwill be deprecatedrª   rA   )rw  r#  r*   r+   r»   Úlayout_enginer   rh   rè   ÚPendingDeprecationWarningÚget_constrained_layout_pads)ÚparamsÚexpectedr<   rA   rA   rB   Ú test_get_constrained_layout_padsi  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   rU  r   z<g F)r   rJ  ÚStringIOrB  Úseekr¶  rx  )r<   rY  rA   rA   rB   Útest_not_visible_figureq  s   


rö  )rÕ  r   rJ  Úpathlibr   rÙ  ÚplatformÚ	threadingr   Útypesr   r  Únumpyr/   rh   Ú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  ÚmachinerC   r^   rl   rp   r…   r‹   r—   r    r©   r¯   rµ   rÃ   rÎ   rÔ   rç   rë   rý   r  r	  r  ru  rv  r)  r  Úcontextr2  r6  Úinfr3  r9  rA  rD  rL  rP  ÚparamrN  r\  rb  rj  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ö  rA   rA   rA   rB   Ú<module>   s0   ÿ
'#

,
ÿü
		

'
ý
	
þ


4




	
Q

ÿý
	
  7ÿ


ÿ
ÿ
(

ÿ






