a
    
d                  	   @   s  d dl Z d dlmZ d dlZd dlmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlZd dlZd dlZd dlmZ d dlZd dlmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZmZmZ d dl m!Z!m"Z"m#Z# d dl$m%Z& d dl'm(Z) edgddge* dkrd ndddd Z+dd Z,dd Z-dd Z.dd Z/edgdd Z0ed gd!d" Z1d#d$ Z2d%d& Z3d'd( Z4ed)gd*d+ Z5d,d- Z6ed.gddgd/d0d1d2d3d4 Z7d5d6 Z8d7d8 Z9d9d: Z:d;d< Z;d=d> Z<ej=>d?g d@dAdB Z?ej@AdCdDdE ZBej=>dFdGejCfdHejDdGfgdIdJ ZEdKdL ZFdMdN ZGdOdP ZHdQdR ZIdSdT ZJej=>dUejKdVej=LdVgdWejKdXej=LdXgdWgdYdZ ZMd[d\ ZNd]d^ ZOd_d` ZPdadb ZQdcdd ZRedgdedfdg ZSej=>dhdidjgdkdl ZTeddmgdedndo ZUej=>dpg dqdrds ZVdtdu ZWdvdw ZXdxdy ZYej=>dzd{d|gd}d~ ZZdd Z[ej@Addd Z\dd Z]edgdddddddd Z^eg ddedd Z_G dd dZ`dd Zaedgdddiddd Zbdd Zcdd Zdedgdddidddd Zeedgdddiddd Zfdd Zgej@Addd Zhedgddddd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpedgdedd Zqdd Zrdd ZsddÄ Ztddń ZudS )    N)datetime)Path)Timer)SimpleNamespace)Image)gridspec)image_comparisoncheck_figures_equal)Axes)Figure
FigureBase)ConstrainedLayoutEngineTightLayoutEnginePlaceHolderLayoutEngine)AutoMinorLocatorFixedFormatterScalarFormatterZfigure_align_labelspngsvgx86_64{Gz?)
extensionstolc                  C   s  t jdd} tdd}| |dd df }|tddd |d | |d	 }|tdd
d t	dD ]}| |d|f }|d|  |
d|  |dv r|jd |j  |dkr| D ]}|d q|dkrv|jd |j  qvt	dD ]}| |d|f }|
d|  |d|  |dkr|tdd
d |jd |j  | D ]}|d qq|   d S )Ntightlayout   r      g    .A  z	Ylabel0 0)r   g     @d      z
YLabel1 %dz
XLabel1 %dr   r   topZ   rightzXLabel2 zYLabel2 
   )pltfigurer   ZGridSpecadd_subplotplotnparange
set_ylabelrange
set_xlabelxaxisZset_label_positionZtick_topget_xticklabelsZset_rotationyaxisZ
tick_rightZalign_labels)figgsaxiZtick r7   e/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/matplotlib/tests/test_figure.pytest_align_labels   s>    



r9   c                  C   s  t dd\} }t|jD ]<\}}|d |d |td| td|  q|   | 	  | 
  td}td}t|jD ]0\}}|jj d ||< |jj d ||< qtj|d d |dd   tj|d d d |dd d  t jdddd\} }t|jD ]2\}}|d |d |tjd	d	}q| j||d
 |   | 	  | 
  td}td}t|jD ]2\}}|jj d ||< |jj d ||< qtj|d d |dd   tj|d d d |dd d  d S )Nr   ZBooZWho   r!   r   Tconstrained_layoutr&   r5   )r'   subplots	enumerateflatr/   r*   r+   r,   Zalign_ylabelsZalign_xlabelsdraw_without_renderingzerosr0   labelget_positionr2   testingassert_allclose
pcolormeshrandomrandncolorbar)r3   axsnnr5   ZxnZynpcr7   r7   r8   test_align_labels_stray_axesE   s>    

"

"



rN   c                  C   s  t d t d} t d t d t   t d t d t d t  g dksbJ t  g dksvJ t d	 t   t d
 t d t  ddgksJ t  ddgksJ t |  t  | ksJ tt t t	  W d    n1 s0    Y  d S )Nalltodayr   tomorrowr   r!   )r   r!   r   r:      ) rP   rS   rQ   rS   r&   rR   rS   )
r'   closer(   Zget_fignumsZget_figlabelsZgcfpytestraises
ValueErrorr   )Z	fig_todayr7   r7   r8   test_figure_labelh   s(    










rX   c                   C   s   t d t d t d t   t ds4J t dsBJ t dsPJ t ds^J t d t d t drJ t drJ d S )NZoner   Zthreer:   )r'   r(   Zfignum_existsrT   r7   r7   r7   r8   test_fignum_exists   s    




rY   c                  C   s   d} d}t jdd}||  dd |jD | gks8J t jddd}|d	d	| ||u s`J d
d |jD | |gks|J t jddddd\}}||u sJ dd |jD g ksJ d S )NzA fancy plotzReally fancy!r!   )numc                 S   s   g | ]}|  qS r7   Zget_text.0tr7   r7   r8   
<listcomp>       z$test_clf_keyword.<locals>.<listcomp>F)rZ   clear      ?c                 S   s   g | ]}|  qS r7   r[   r\   r7   r7   r8   r_      r`   r   Tc                 S   s   g | ]}|  qS r7   r[   r\   r7   r7   r8   r_      r`   )r'   r(   suptitleZtextstextr>   )Ztext1Ztext2Zfig0fig1fig2ax2r7   r7   r8   test_clf_keyword   s    
rh   Zfigure_todayc                  C   sh   t d} |  }||   |td t d t ddgddgd t d t d d S )NrP   rR   rQ   r   r!   r)	r'   r(   r)   	set_title	get_labelr*   r+   r,   rT   )r3   r5   r7   r7   r8   test_figure   s    


rl   Zfigure_legendc                  C   s   t d\} }|d jddgddgddd |d jddgddgddd |d jddgd	d	gdd
d |d jddgddgddd |d jddgddgddd |   d S )Nr   r   r!   xg)rC   coloryri   rb   kZ_yzb)r'   r>   r*   Zlegendr3   rK   r7   r7   r8   test_figure_legend   s    ru   c                  C   s   t  } | g d}|  |u s&J | d}|  |u s@J | | | j||gks\J |  |u slJ | | | j||gksJ | | | j||gksJ |  |u sJ d S )Nr   r   r!   r!   o   )r'   r(   add_axesZgcar)   axesZsca)r3   ax0ax1r7   r7   r8   test_gca   s    



r|   c                  C   s   t  } | jtd tt | jtdd W d    n1 sB0    Y  tt | jtdd W d    n1 sz0    Y  tt | jddd W d    n1 s0    Y  tt | jdd W d    n1 s0    Y  d S )	N)
axes_class3d)r}   
projectionT)r}   polar)r   r   *   r   )r'   r(   r)   r
   rU   rV   rW   	TypeErrorr3   r7   r7   r8   test_add_subplot_subclass   s    ,,,r   c                  C   s  t  } tjtdd | ddd W d    n1 s:0    Y  tjtdd | ddd W d    n1 sv0    Y  tjtdd | ddd W d    n1 s0    Y  tjtdd | ddd W d    n1 s0    Y  tjtdd | ddd	 W d    n1 s,0    Y  tjtd
d | d W d    n1 sf0    Y  tjtd
d | d W d    n1 s0    Y  tjtdd | dd W d    n1 s0    Y  tjtdd  | dddd W d    n1 s0    Y  tjtdd | ddd W d    n1 sZ0    Y  tjtdd | ddd W d    n1 s0    Y  t  \}}tjtdd | | W d    n1 s0    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 <= 4rR   rb   zmust be a three-digit integerr   r   z2takes 1 or 3 positional arguments but 2 were givenz2takes 1 or 3 positional arguments but 4 were givenr   r:   z2Number of rows must be a positive integer, not '2'2z5Number of columns must be a positive integer, not 2.0g       @5The Axes must have been created in the present figure)r'   r(   rU   rV   rW   r)   r   r>   r3   _r5   r7   r7   r8   test_add_subplot_invalid   sH    ,,,,.**,0..r   Zfigure_suptitlec                  C   s.   t  \} }| jddd | jdddd d S )NZhellori   )ro   titlern      )ro   Zrotation)r'   r>   rc   )r3   r   r7   r7   r8   test_suptitle  s    r   c                  C   sV   t  \} }tjjddd}| jd|d}| | ks>J | | ksRJ d S )NZlargebold)sizeweightzfontprops title)Zfontproperties)	r'   r>   mplZfont_managerZFontPropertiesrc   Zget_fontsizeZget_size_in_pointsZ
get_weight)r3   r5   Zfpstxtr7   r7   r8   test_suptitle_fontproperties  s
    r   Zalpha_backgroundr   r!   皙?none)	facecolorZ	edgecolor)r   savefig_kwargc                  C   sJ   t jddgd} | d | jd | jtjjddgddd	d
 d S )Nr   r!   figsizer   r         333333?red)Zradiusalphar   )	r'   r(   set_facecolorpatchZ	set_alphaZpatchesappendr   ZCirclePolygonr   r7   r7   r8   
test_alpha"  s    
r   c                  C   sN   t t0 ttjd d D ]} t  qW d    n1 s@0    Y  d S )Nzfigure.max_open_warningr!   )rU   warnsRuntimeWarningr.   r   ZrcParamsr'   r(   )r6   r7   r7   r8   test_too_many_figures1  s    r   c                     sL   G dd dt  G  fddd} t }|jddd|  d t| d S )Nc                   @   s   e Zd ZddddZdS )z.test_iterability_axes_argument.<locals>.MyAxesN)myclassc                _   s   t j| g|R i | d S N)r
   __init__)selfr   argskwargsr7   r7   r8   r   C  s    z7test_iterability_axes_argument.<locals>.MyAxes.__init__)__name__
__module____qualname__r   r7   r7   r7   r8   MyAxesB  s   r   c                       s    e Zd Zdd Z fddZdS )z/test_iterability_axes_argument.<locals>.MyClassc                 S   s   |dkrt dd S )Nazitem should be a)rW   )r   itemr7   r7   r8   __getitem__H  s    z;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s    d| ifS )Nr   r7   r   r   r7   r8   _as_mpl_axesL  s    z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)r   r   r   r   r   r7   r   r7   r8   MyClassF  s   r   r!   r   )r
   r'   r(   r)   rT   )r   r3   r7   r   r8   test_iterability_axes_argument7  s
    	r   c                  C   s   t  } | d |  dks"J | d |  dks<J | dd |  dksXJ |  dkshJ | d |  dksJ |  dksJ d S )NrR   r!   r   r:   )r!   r   r   )r'   r(   Zset_figwidthZget_figwidthZset_figheightZget_figheightset_size_inchesr   r7   r7   r8   test_set_fig_sizeT  s    


r   c                  C   sh   t dd\} }|d   | d d D ]}|| jv s,J q,|d | jvsRJ t| jdksdJ d S )Nr   )r   r   r   r   )r'   r>   removeZravelry   lenr3   rK   r5   r7   r7   r8   test_axes_removej  s    r   c                  C   s   t tdtd \} }||  dks.J t d\} }||  dksLJ t td\} }||  dkspJ t td\} }||  dksJ d S )Nr   r!   r!   r   rb   )r   r   )r'   Z	figaspectr+   float64rB   )whr7   r7   r8   test_figaspects  s    r   which)bothmajorminorc           
      C   s.  g d}g d}d}g d}t |}t |}t \}}||| |  |  |jt	d t
 , t
dd |jt| W d    n1 s0    Y  |d|d	|  | d
v r|jd ddD ]}	t|	 |ksJ q| dv r*|jd ddD ]}	t|	 |ksJ q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   r:   rR         r   ignorez=FixedFormatter should only be used together with FixedLocator皙?r%   )r   r   r   Fr   )r   r   Tr   )mdatesZdatestr2numr'   r>   r*   Z
yaxis_dateZ
xaxis_dater0   Zset_minor_locatorr   warningscatch_warningsfilterwarningsZset_minor_formatterr   Zautofmt_xdatery   r1   intZget_rotation)
r   datetimeZangleZminorsrm   rp   r3   r5   rC   r7   r7   r8   test_autofmt_xdate~  s0    


.
r   defaultc                  C   sn   t jdd} |   | jjjdks&J | jjjdks8J d| _|   | jjjdksXJ | jjjdksjJ d S )N)r:   r:   r   i  2      )r'   r(   rA   canvasrendererheightwidthdpir   r7   r7   r8   test_change_dpi  s    r   zwidth, heightr!   )r   r!   c                 C   s|   t t  tj| |fd W d    n1 s00    Y  t }t t || | W d    n1 sn0    Y  d S )Nr   )rU   rV   rW   r'   r(   r   )r   r   r3   r7   r7   r8   test_invalid_figure_size  s
    .r   c                  C   s  t  } tjtdd |   W d    n1 s40    Y  tt$ | dddtjf W d    n1 sr0    Y  tjtdd& | jg dg dd W d    n1 s0    Y  t 	 \}}tjtdd | | W d    n1 s0    Y  d S )	Nz.missing 1 required positional argument: 'rect'r   皙?rb   z#multiple values for argument 'rect'rv   )Zrectr   )
r'   r(   rU   rV   r   rx   rW   r+   nanr>   r   r7   r7   r8   test_invalid_figure_add_axes  s    &24r   c                  C   s  t jdddddd\} }|jD ]}|g dg d q|d |d |dd d f D ]}dt|jjdd	ks\J q\|d
d d f D ]}dt|jjdd	k sJ q|d d d
f D ]}dt|j	jdd	ksJ q|d d df D ]}dt|j	jdd	k sJ qd S )Nr   TF)sharexshareyZsqueeze)r&   r   r   logr   r   )r   r!   )
r'   r>   r@   r*   
set_yscaleZ
set_xscaler   r0   Zget_ticklabelsr2   r   r7   r7   r8   test_subplots_shareax_loglabels  s    


r   c                  C   sJ   t  } d}tjt|d | dd W d    n1 s<0    Y  d S )Nz9savefig\(\) takes 2 positional arguments but 3 were givenr   z
fname1.pngz
fname2.png)r'   r(   rU   rV   r   savefig)r3   msgr7   r7   r8   test_savefig  s    r   c               	   C   sT   t  } dD ]B}tt$ | jt |dd W d    q1 sD0    Y  qd S )N)r   pdfr   ZtifZjpgT)formatZnon_existent_kwarg)r'   r(   rU   rV   r   r   ioBytesIO)r3   r   r7   r7   r8   test_savefig_warns  s    r   c                  C   s   t  } tjtdd | jddd W d    n1 s:0    Y  tjtdd | jddd W d    n1 sv0    Y  d S )	NzNo module named '@absent'r   testzmodule://@absent)backendz-The 'pdf' backend does not support png outputztest.pngr   )r'   r(   rU   rV   ModuleNotFoundErrorr   rW   r   r7   r7   r8   test_savefig_backend  s    ,r   r   ZAgg)ZmarksZCairoc                 C   s   t  \}}|g d t 0}|j|dd t|}|  W d    n1 sX0    Y  t  \}}|g d |j	
d t 0}|j|dd t|}|  W d    n1 s0    Y  ||ksJ d S )Nr!   r   r   r   r   r   )r'   r>   r*   r   r   r   r   openloadr   _set_device_pixel_ratio)r   r3   r5   bufZratio1Zratio2r7   r7   r8   test_savefig_pixel_ratio   s    

&

&r   c                  C   s0   t jdd} | jt dd |  js,J d S )N
compressedr   r   bbox_inches)r'   r(   r   r   r   get_layout_engineZ	_compressr   r7   r7   r8   #test_savefig_preserve_layout_engine  s    r   c                  C   s|   t  \} }|tjdd}| j|dd}| jt	 t
jddgddggd |jjddj|jjd	djksxJ d S )
Nr   (   )Zaspectr   r:   r   T)originalF)r'   r>   rG   r+   rH   rI   rJ   r   r   r   r   Z
transformsZBboxr5   rD   Zbounds)r3   r5   rM   Zcbarr7   r7   r8   test_savefig_locate_colorbar  s    &r  c                  C   s"   t jddd} t| dksJ d S )N)r&   r   r&   )r   r   z!<Figure size 100x200 with 0 Axes>)r'   r(   reprr   r7   r7   r8   test_figure_repr)  s    r  c                  C   sj   t d d} |  rJ |  r"J t dd} |  s8J |  rDJ t dd} |  rZJ |  sfJ d S )Nr   r   constrained)r   Zget_tight_layoutZget_constrained_layoutr   r7   r7   r8   test_valid_layouts.  s    


r  c                  C   s  t jdd\} }tt | jdd W d    n1 s<0    Y  t|  tsXJ d}tjt|d t	ddd	} W d    n1 s0    Y  t|  t
sJ d
}tjt|d t	ddd} W d    n1 s0    Y  t|  t
rJ t|  tsJ tjtdd t	dd W d    n1 s<0    Y  t jdd\} }| d t|  t
stJ | d t|  tsJ t jdd\} }|tjdd}| | tjtdd | d W d    n1 s0    Y  | d tjtdd | d W d    n1 s40    Y  t jdd\} }|tjdd}| | tjtdd | d W d    n1 s0    Y  | d t|  tsJ tjtdd | d W d    n1 s0    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   r<   zInvalid value for 'layout'Zfoobarr   zColorbar layout of new layoutr   )r'   r>   rU   r   UserWarningZsubplots_adjust
isinstancer   r   r   r   rV   rW   set_layout_enginerG   r+   rH   rI   rJ   RuntimeErrorr   )r3   r5   ZwstrM   r7   r7   r8   test_invalid_layouts<  sN    ****


*
*
*
r  r   c              	   C   sx   t || gddgD ]`\}}td|i( |jdd}|jdd W d    n1 sV0    Y  t| tsJ qd S )NFTzfigure.autolayoutr   )ncolsr&   )w_pad)zipr   
rc_contextr>   r	  r  r   r   )fig_testfig_refr3   Z
autolayoutry   r7   r7   r8   &test_tightlayout_autolayout_deconflictp  s
    *r  r   r  r   c                 C   sJ   t j| d\}}tjtdd t   W d   n1 s<0    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'   r>   rU   r   r
  r	  )r   r3   r5   r7   r7   r8   test_layout_change_warningy  s    r  r   c           	   	   C   s0  d| _ d|_ |   tjddgddgdd}tjddgddgdd}tjddd d	d
}tjdddd}tjdd| jddd}|||||fD ]}| | q|  | }tjddgddg|jddd}tjddd ddd	d}tjdd|jddd}tjdd|jddddd}||||fD ]}|| qd S )Nr    r   ffffff?l1)gidr  l2)r   r   ZC1)	transformr  )r  rb   皙?ZC2)g      @r  g?ZcrimsonZC3)r  r   r     )r  r  zorderFr   )r  clip_onr  r  )r  r   r   r  r  )	r   r>   r'   ZLine2DZCircleZdpi_scale_transZ
add_artistr   ZtransFigure)	r  r  r  r  Zr1Zr2Zr3r   rg   r7   r7   r8   test_add_artist  s8    r!  fmt)r   r   Zpsepsr   c                 C   sd   t |d| }t| |d,}| d|d v sBJ W d    n1 sV0    Y  d S )Nztest.{}rbasciir    )r   r   r'   r   r   encodereadlower)r"  tmpdiroutfiler7   r7   r8   test_fspath  s    
r,  c                  C   sZ  t  \} }|dd |ddd}| j }d}t||j|| j	  dk sVJ t||j|| j	  dk sxJ t| |j| dk sJ t| |j
d	 dk sJ |d
 d}t||j|| j	  dk sJ t| |j| dk sJ |d d}t||j|| j	  dk s.J t|j|g dj|| j	  dk sVJ d S )Nr   r!   g      ?rb   zThis dangles over endgR"@r   r  g|?5^?FgET@T)Zbbox_extra_artists)r'   r>   set_xlimrd   r   get_rendererabsget_tightbboxx1r   x0Zset_in_layout)r3   r5   r^   r   Zx1Nom0Zx1Nomr7   r7   r8   test_tightbbox  s*    
""
"
$r3  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	sbJ 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sJ d S )Nr!   r   Tr   r   i  )r'   r>   r   r*   r   r  r0   Zget_major_formatterr   ZAutoDateFormatterZset_major_formatterr   rt   r7   r7   r8   test_axes_removal  s    ((r5  c                  C   s,   t jddd\} }|d   | j  d S )Nr   Tr4  r   )r'   r>   r   r   drawrt   r7   r7   r8   test_removed_axis  s    r7  
clear_methra   clfc                    s"  t       jg ksJ  d}t |    jg ksBJ  fddtdD }t |    jg ksrJ  jddd d }|d}t |   | j	vsJ  jg ksJ  d }|d} d }|
   j|gksJ  d }|
   j|gks&J | j	v s6J |d}| jv sPJ | jv s`J t||   | j	v s|J ||jvsJ | jvsJ | jv sJ |d}t |    jg ksJ  j	g ksJ  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 stJ |d  j	v sJ t|d |    fddd	D }dd |D }t fdd|D sJ t fdd|D sJ t |    j	g ksJ  jg ksJ d S )Nrw   c                    s   g | ]}  d d|d qS r   r!   r)   r]   r6   r   r7   r8   r_     r`   z%test_figure_clear.<locals>.<listcomp>r   r!   )r  nrowsr   c                    s   g | ]}  | qS r7   add_subfigurer<  r3   r4   r7   r8   r_     r`   r   r!   c                 S   s   g | ]}| d qS rw   r;  r]   sfigr7   r7   r8   r_     r`   c                 3   s   | ]}| j v V  qd S r   ry   r]   r5   r   r7   r8   	<genexpr>  r`   z$test_figure_clear.<locals>.<genexpr>c                 3   s   | ]}| j v V  qd S r   subfigsrC  r   r7   r8   rG    r`   c                    s   g | ]}  | qS r7   r>  r<  r@  r7   r8   r_   &  r`   c                 S   s   g | ]}| d qS rB  r;  rC  r7   r7   r8   r_   '  r`   c                 3   s   | ]}| j v V  qd S r   rE  rF  r   r7   r8   rG  (  r`   c                 3   s   | ]}| j v V  qd S r   rH  rC  r   r7   r8   rG  )  r`   )r'   r(   ra   ry   r)   getattrr.   add_gridspecr?  rI  r   rO   )r8  r5   ry   ZsubfigZsubaxesZmainaxesrI  r7   r@  r8   test_figure_clear  sh    




rL  c                  C   s    t  D ]} d| jvsJ qd S )Nr9  )r   __subclasses____dict__)klassr7   r7   r8   test_clf_not_redefined/  s    rP  Zmpl20c                  C   s   t  \} }|jdgdgdgdd | j  | jr8J t|jj|jj	d  |jj
|jjd  |d d}| | | jr|J d S )Nr   r   T)Zpickerr   )rm   rp   ZinaxesZguiEvent)r'   r>   scatterr   r6  staler   bboxr2  r   Zy0r   Zpick)r3   r5   Zmouse_eventr7   r7   r8   test_picking_does_not_stale5  s    


rT  c                  C   s@  t  } | ddd}| jtddks.J | jtddksFJ | ddd}| jtddkslJ | jtddksJ | ddd}| jtddksJ | jtddksJ | ddd}| jtddksJ | jtddksJ tt	 | ddd	 W d    n1 s20    Y  d S )
Nr   r   r   rR   r!   r   )r:   r   )r   r   )r:   rR   )r   r   )
r'   r(   r)   get_subplotspecZrowspanr.   colspanrU   rV   
IndexError)r3   r{   rg   ax3Zax4r7   r7   r8   test_add_subplot_twotupleC  s    rZ  ztightbbox_box_aspect.svgr   Zteal)r   r   T)styler   remove_textc                  C   sL   t  } | dd}| |d }| j|d dd}|d |d d S )	Nr!   r   r   r   rA  r~   r   rb   )r   r!   r!   )r'   r(   rK  r)   Zset_box_aspect)r3   r4   r{   rg   r7   r7   r8   test_tightbbox_box_aspectU  s    
r^  )r   r   r#  r   c                 C   s4   |  }|td |   }|jtddd d S )NrR   T)Zanimated)r>   r*   r.   )r  r  Zax_refZax_testr7   r7   r8    test_animated_with_canvas_changeb  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  rm   Arb  BCDrc  r!   r!   r   r   r:   r   )ra  rd  )rg  rh  c                 C   s   | |}| D ]\}}|| qtt|}t|t|ksHJ |dd}||d dd df }	|	|d  ||d d df }
|
|d  ||d }||d  ||d }||d  d S )Nr   r   r!   r   r!   r   r!   r!   )	subplot_mosaicitemsrj   sortedr+   uniquer   rK  r)   )r   r  r  rm   	grid_axesrq   r5   labelsr4   axAaxBaxCaxDr7   r7   r8   
test_basicl  s    

zTestSubplotMosaic.test_basicc                 C   s  ddgddgg}ddgddgg}| d	 | d	 |||gg}| D ]}||  qL|d
d}|d dd}t|D ]2\}	}
t|
D ] \}}|||	|f | qq|d dd}t|D ]2\}	}
t|
D ] \}}|||	|f | qqd S )Nrb  rc  re  rf  EFGHr  r!   r   r]  rA  )	r  rk  valuesrj   rk   rK  subgridspecr?   r)   )r   r  r  rm   rp   ro  r5   r4   Zgs_leftjri   rq   rC   Zgs_rightr7   r7   r8   test_all_nested  s     

z!TestSubplotMosaic.test_all_nestedc                 C   s   | d | d ddgddgg}dg|gg}||}| D ]\}}|| qB|dd}|d	 dd}	||	d
 }
|
d ||	d }|d ||	d	 }|d ||	d }|d ||d
 }|d d S )Nr  rb  rc  re  rf  rw  r   r!   ri  r]  rA  rj  )r  rk  rl  rj   rK  r{  r)   )r   r  r  rm   rp   ro  rq   r5   r4   Zgs_nrq  rr  rs  rt  ZaxFr7   r7   r8   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rb  rc  rc  re  re  rf  )r  r  rw  )rk  )r   r  r  rm   Zxtr7   r7   r8   test_nested_tuple  s    z#TestSubplotMosaic.test_nested_tuplec                 C   s`   ddgdgggg}ddg}t j||d\}}|d   |ksDJ |d   |ks\J d S )Nrb  rc  re  r   r!   )width_ratios)r'   rk  get_gridspecZget_width_ratios)r   rm   r  r3   axdr7   r7   r8   test_nested_width_ratios  s    z*TestSubplotMosaic.test_nested_width_ratiosc                 C   sf   ddgdgggddgg}ddg}t j||d\}}|d   |ksJJ |d   |ksbJ d S )Nrb  rc  re  rf  r!   r   height_ratios)r'   rk  r  Zget_height_ratios)r   rm   r  r3   r  r7   r7   r8   test_nested_height_ratios  s    z+TestSubplotMosaic.test_nested_height_ratioszx, empty_sentinelrb  Nrc  .SKIPr   r!   r   c                 C   s   |dkrd|i}ni }|j |fi |}| D ]\}}|| q0tdd |D |dh }	t|	t|ksrJ |dd}
||
d }||	d  ||
d	 }||	d
  d S )Nr  empty_sentinelc                 S   s   h | ]}|D ]}|qqS r7   r7   )r]   rownamer7   r7   r8   	<setcomp>  r`   z/TestSubplotMosaic.test_empty.<locals>.<setcomp>r  r   r]  r   rj  r!   )rk  rl  rj   rm  r   rK  r)   )r   r  r  rm   r  r   ro  rq   r5   rp  r4   rq  rr  r7   r7   r8   
test_empty  s    
zTestSubplotMosaic.test_emptyc                 C   s   t jtdd tddg W d    n1 s20    Y  t jtdd tdg W d    n1 sl0    Y  t jtdd  tddgg W d    n1 s0    Y  t jtdd& tddgdd	gg W d    n1 s0    Y  d S )
Nz
must be 2Dr   Zfoobar)r  r   rs   )r   rs   c)rU   rV   rW   r'   rk  r   r7   r7   r8   test_fail_list_of_str  s    ,*.z'TestSubplotMosaic.test_fail_list_of_str
subplot_kwr   r   c           	      C   s\   ddgg}|j ||d}|pi }|dd}|j|d fi |}|j|d fi |}d S )Nr!   r   )r  r]  rA  )rk  rK  r)   )	r   r  r  r  rm   ro  r4   rq  rr  r7   r7   r8   test_subplot_kw  s    
z!TestSubplotMosaic.test_subplot_kwmulti_valueZ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
 qBd S )NzAB;CDr   r   rf  bluegreen)r  per_subplot_kwr   )r   r  r  r  r   )rk  rK  r  r)   )	r   r  r  r  rm   ro  r4   ro   specr7   r7   r8   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s8J |dddgddgdd	ggksZJ |d
g dgkspJ |dddgddggksJ |dddgddgdd	ggksJ d S )NABC)rb  rc  re  zAB;CCrb  rc  re  zAB;CC;DErf  rv  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Z_normalize_grid_stringr   	normalizer7   r7   r8   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 sv0    Y  tjtdddd |i i d W d    n1 s0    Y  d S )Nrb  rc  zThe key rc  z appears multiple timesr   )r  rc  )rc  r  )r   Z_norm_per_subplot_kwrU   rV   rW   r  r7   r7   r8   test_per_subplot_kw_expander>  s    ,z.TestSubplotMosaic.test_per_subplot_kw_expanderc                 C   sR   t jtdtddd$ t jddi id W d    n1 sD0    Y  d S )Nz	The keys rc  z are inr   rb  )r  )rU   rV   rW   setr   rk  r   r7   r7   r8   test_extra_per_subplot_kwK  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 r7   )list)r]   lnr7   r7   r8   r_   Y  r`   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>
)rk  stripsplit)r   r  r  r  ro  r7   r7   r8   test_single_str_inputQ  s    
z'TestSubplotMosaic.test_single_str_inputzx,matchzS(?m)we found that the label .A. specifies a non-rectangular or non-contiguous area.re  rf  z4There are duplicate keys .* between the outer layout)z	AAA
c
BBB'All of the rows must be the same lengthrv  r  c                 C   sD   t  }tjt|d || W d    n1 s60    Y  d S )Nr   )r'   r(   rU   rV   rW   rk  )r   rm   r   r3   r7   r7   r8   	test_fail\  s    zTestSubplotMosaic.test_failc                 C   s(   | t t gg | ddgg d S )Nrb  rc  )rk  object)r   r  r  r7   r7   r8   test_hashable_keysv  s    z$TestSubplotMosaic.test_hashable_keys)abcZcabZbcaZcbaZacbZbacc                 C   sD   t  }||}t|t|ks&J t|jt| ks@J d S r   r'   r(   rk  r  ry   rz  )r   r  r3   ax_dictr7   r7   r8   test_user_order{  s    
z!TestSubplotMosaic.test_user_orderc                 C   st   dddgddgggddgdd	d
gdgggggg}t  }||}t|tdksVJ t|jt| kspJ d S )Nrb  rc  re  rf  rv  rw  rx  r  ry  IZ	ABCDEFGHIr  r   r   r3   r  r7   r7   r8   test_nested_user_order  s    
z(TestSubplotMosaic.test_nested_user_orderc                 C   sx   dddgddgggddgdd	d
gdgggggg}t  }|j|ddd}|d jddd tdd | D stJ d S )Nrb  rc  re  rf  rv  rw  rx  r  ry  r  T)r   r   r   logit)ZxscaleZyscalec                 s   s&   | ]}|  d ko| dkV  qdS )r   r  N)Z
get_xscale
get_yscalerF  r7   r7   r8   rG    s   z3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r'   r(   rk  r  rO   rz  r  r7   r7   r8   test_share_all  s    z TestSubplotMosaic.test_share_all)r   r   r   r	   rU   markparametrizeru  r}  r~  r  r  r  r  r  r  tupler  r  r  r  r  r  r  r  r  r  r7   r7   r7   r8   r`  k  s   




!













r`  c                  C   sv   t  } | ddd}| ddd}t jddd| d}|  }|  }|  }||ksfJ ||ksrJ dS )	z)Test that these all use the same gridspecr   r   rU  r:   )r   r   r:  )rW  r3   N)r'   r(   r)   Zsubplot2gridrV  r  )r3   r{   rg   rY  Zgs1Zgs2Zgs3r7   r7   r8   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}|jD ]}|jt j	ddddd	}q|d j
||dd |d d | jddd d S )N!N,r  r   r!   r   r   r   ZvminZvmaxr=   	Left Sider   Zbottom)r5   locationz
Right SideFigure suptitlexx-largefontsize)r+   rH   seedr'   r(   
subfiguresr>   r@   rG   rI   rJ   rc   )r3   subrK   r5   rM   r7   r7   r8   test_subfigure  s    

r  c                  C   s8   t jdd} | dd}tj| | j j	d d S )Nr  r   r!   r   g       @)
r'   r(   r  r+   rE   rF   r0  r   r.  r   )r3   r  r7   r7   r8   test_subfigure_tightbbox  s    r  c                  C   sV   t jdd} |  }| |  ks(J |d | dksBJ |  dksRJ d S )Nr    r   r   )r'   r(   r  Zget_dpiZset_dpir3   sub_figr7   r7   r8   test_subfigure_dpi  s    
r  ztest_subfigure_ss.png{Gz?)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}qH|j||d |d | |d }|t d |d | jddd d S )Nr  r  r   r!   r   r   Zpinkr  r   r  r  r=   r  r   r
   r  r  r  )r+   rH   r  r'   r(   rK  r?  r>   r@   rG   rI   rJ   rc   r)   r*   r,   rj   )r3   r4   r  rK   r5   rM   r7   r7   r8   test_subfigure_ss  s    


r  ztest_subfigure_double.pngc            
      C   s  t jd tjddd} | d | jdddd	}|d
 d |d
 d |d d |d d |d
 jddddgd}|d
 d |d
 d |d
 jdddd}|D ]L}d}|j	t j
ddddd}|jd|d |jd|d |jd|d q|d
 j||d |d d |d d |d jd ddd!}t|D ]\}}|d"|  qP|d d# |d d$ |d dd}	d S )%Nr  r  )r&      )r   r   r3   r!   r   gQ?)wspacer   Zcoralz
subfigs[0]z
subfigs[1]gffffff?r  zsubfigsnest[0]ri   Tr      r   g      g      @r  zx-labelr  zy-labelTitler=   zsubfigsnest[1]rn   r   r4  ylabel	supxlabel	supylabel)r+   rH   r  r'   r(   rc   r  r   r>   rG   rI   r/   r-   rj   rJ   r?   r  r  )
r3   rI  ZsubfigsnestZaxsnest0r5   r  rM   Zaxsnest1rL   ZaxsRightr7   r7   r8   test_subfigure_double  s6    
r  c               	   C   sX  t jdd} | dd}| |d | |dddf | |dddf | |dd dd f g}d}d	}tj|d jjd
|d d g tj|d jj	|d |g tj|d jj|d |d g tj|d jj	|d d |g tj|d jj|d dg tj|d jj	||d g t
dD ]}||   q8|   d S )NTr;   r   r]  r   r   r!               r:   )r'   r(   rK  r?  r+   rE   rF   rS  minmaxr.   r)   rA   )r3   r4   sub_figsr   r   r6   r7   r7   r8   test_subfigure_spanning  s$    """r  c            	      C   s   t jddd} | jdddddgd\}}|jdd	d
}||dd df }|jddgddgd |j|dddf |d}|jddgddgd |j|ddd	f |d}d| _|   | }d| _|   | }t	j
|| d S )NT)r&   r   )r<   r   r!   r   r   r   )r  r     )r=  r  r   g!<LgkX.8@i  i  )rm   rp   r   r  g YI_gRϫW@x   i,  )r'   r(   r  rK  r)   rQ  r   rA   Z
get_xticksr+   rE   rF   )	r3   Z	subfig_blZ	subfig_brr4   r{   rg   rY  Zticks120Zticks300r7   r7   r8   test_subfigure_ticks7  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 qd S )Nr!   r   r   r   s)r  marker)r   r:   rR   )r   r   r  r   ri   )r  r  ro   rn   )r'   r(   rK  r)   rQ  r?  r>   )r3   r4   rz   rD  rK   r5   r7   r7   r8   test_subfigure_scatter_sizeS  s    r  c                  C   sN   t jdd} |  }|d}|dd}|| t }| j|dd d S )Nr  r   rw   r!   r   r   )	r'   r(   r  r)   r  Z	bar_labelr   r   r   )r3   r  r5   rs   bufferr7   r7   r8   test_subfigure_pdfd  s    

r  c                  C   s  t  jddddd} d}d}tj| d jjd	|d
 g tj| d jj|d |g tj| d jj|d |d
 g tj| d jj|d |g tj| d jj|d |d
 g tj| d jj||g tj| d jjddg tj| d jj|d |d g tj| d jj|d dg tj| d jj|d |d g tj| d jj|d dg tj| d jj||d g d S )Nr   r   rb   gUUUUUU?)hspacer  r  r  r]  r  r   333333?rA  gffffff?g?r"   r  ri  r   r   rj  r   )	r'   r(   r  r+   rE   rF   rS  r  r  )r  r   r   r7   r7   r8   test_subfigures_wspace_hspacen  s    """"r  c                  C   s   t  } | ddd}| ddd}|d us0J ||us<J t   t  } | jddddd}| jddddd}|d us|J ||usJ t   t  } | jddddd}| ddd}|d usJ |jdksJ ||usJ t   d S )Nr!   r   r   rectilinear)r'   r(   r)   rT   r  r3   r5   r{   r7   r7   r8   test_add_subplot_kwargs  s&    r  c                  C   s   t  } | g d}| g d}|d us0J ||us<J t   t  } | jg ddd}| jg ddd}|d us|J ||usJ t   t  } | jg ddd}| g d}|d usJ |jdksJ ||usJ t   d S )Nrv   r   r   r  )r'   r(   rx   rT   r  r  r7   r7   r8   test_add_axes_kwargs  s&    r  c                    s~   t dd t \  fdd}td|   dgksFJ  fdd}td|  tj	d	d
dg d S )Nr   cannot show the figurec                      s"   j jg  jddR   d S )Nr   r   r!   )r   button_press_event	transDatar  r7   r5   r3   r7   r8   single_press  s    z!test_ginput.<locals>.single_pressr   r  c                      s   j jg  jddR   j d j jg  jddR   j jg  jddR   j jg  jddR   d S )Nr  r!   Z	backspacer  r   rb   r   r]  r   )r   r  r  r  key_press_eventr7   r  r7   r8   multi_presses  s
    z"test_ginput.<locals>.multi_pressesr   r  r  )
r   r   r'   r>   r   startZginputr+   rE   rF   )recwarnr  r  r7   r  r8   test_ginput  s    r  c                 C   st   t dd t }|jddd u s(J td|jjd  | du sLJ td|jj	d  | du spJ d S )	Nr   r  r   )timeout)rr   T)r   r   r!   F)
r   r   r'   r(   Zwaitforbuttonpressr   r   r  r  r  )r  r3   r7   r7   r8   test_waitforbuttonpress  s    r  c                  C   s>   t dd} | jdddd}|  dks*J | dks:J d S )Nzwhole Figure)rC   r!   z
sub figure)r   r  rk   r  r7   r7   r8   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    n1 sx0    Y  d S )
NZxlabelr   r   )r   r   r  r  lightr   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)r  r  rc   r   r  )r  r  r7   r7   r8   test_rcparams  s    


r  c                  C   s   t  \} }|ddgddg |d t| }|jd |usFJ |jd  dks\J |jd d | dks|J |dd | 	  |	  |
 d	ksJ |jd 
 d
ksJ d S )Nr   r!   r   r   r   Zlinearr         Y@)r   r  rA  )r'   r>   r*   r   copydeepcopyry   r  r-  rA   Zget_xlim)re   r5   rf   r7   r7   r8   test_deepcopy  s    

r  c                  C   sF   t dd} | jd | jdks$J tt| }|jdksBJ d S )Nr   r  r   i&  )r   r   r   r   pickleloadsdumps)r3   rf   r7   r7   r8   %test_unpickle_with_device_pixel_ratio  s
    
r	  c                  C   sJ   ddi} t | }tjddddg| d | |ks2J tjdddg| d d S )Nleftr   r!   r   )r  Zgridspec_kwZAB)dictr'   r>   rk  )r4   Zgs_origr7   r7   r8   test_gridspec_no_mutate_input  s
    r  c                  C   sz   ddddd} t g |  }tjtjjf i | d}tjt	dd  |
 |ksXJ W d    n1 sl0    Y  d S )	Nr   r  gQ?g{Gz?)r  Zh_padr  r  r   zwill be deprecatedr   )r  rz  r'   r(   r   Zlayout_enginer   rU   r   PendingDeprecationWarningZget_constrained_layout_pads)paramsexpectedr3   r7   r7   r8    test_get_constrained_layout_pads  s
    r  )vr  r   r   pathlibr   r  platform	threadingr   typesr   r   numpyr+   rU   ZPILr   Z
matplotlibr   r   Zmatplotlib.testing.decoratorsr   r	   Zmatplotlib.axesr
   Zmatplotlib.figurer   r   Zmatplotlib.layout_enginer   r   r   Zmatplotlib.tickerr   r   r   Zmatplotlib.pyplotZpyplotr'   Zmatplotlib.datesdatesr   machiner9   rN   rX   rY   rh   rl   ru   r|   r   r   r   r   r   r   r   r   r   r   r  r  r   r[  contextr   r   infr   r   r   r   r   r   paramr   r   r   r  r  r  r  r  r  r!  r,  r3  r5  r7  rL  rP  rT  rZ  r^  r_  r`  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r7   r7   r7   r8   <module>   s  
'#

,

		
'


	

4



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