o
    i&                  	   @   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jBCdDg dEdFdG ZDejEFdHdIdJ ZGejBCdKdLejHfdMejIdLfgdNdO ZJdPdQ ZKdRdS ZLdTdU ZMdVdW ZNdXdY ZOejBCdZejPd[ejBQd[gd\ejPd]ejBQd]gd\gd^d_ ZRd`da ZSdbdc ZTeUdddeiedgdfdgdh ZVdidj ZWdkdl ZXdmdn ZYedgdfdodp ZZejBCdqdrdsgdtdu Z[dvdw Z\eddxgdfdydz Z]ejBCd{g d|d}d~ Z^dd Z_dd Z`dd ZaejBCdddgdd Zbdd ZcejEFddd Zddd Zeedgdddddeddd Zfeg ddfdd ZgG dd dZhdd Ziedgdddiddd Zjdd Zkdd Zledgdddidddd Zmedgdddiddd Zndd ZoejEFddd Zpedgddeddd Zqdd Zrdd Zsdd Ztdd Zudd ZvddÄ Zwddń ZxedgdfddǄ ZyddɄ Zzdd˄ Z{dd̈́ Z|ejBCd{g d΢ddЄ Z}ejBCd{g dѢddӄ Z~ddՄ Zddׄ ZdS )    N)datetime)Path)Timer)SimpleNamespace)Image)gridspec)image_comparisoncheck_figures_equal)Axes)KeyEvent
MouseEvent)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 ]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 qq|   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 r9   k/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/matplotlib/tests/test_figure.pytest_align_labels   sB   



r;   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 ||< qtj|d d |dd   tj|d d d |dd d  d S )Nr   BooZWho   r#   r   Tconstrained_layoutr(   r7   )r)   subplots	enumerateflatr1   r,   r-   r.   Zalign_ylabelsZalign_xlabelsdraw_without_renderingzerosr2   labelget_positionr4   testingassert_allclose
pcolormeshrandomrandncolorbar)r5   axsnnr7   ZxnZynpcr9   r9   r:   test_align_labels_stray_axesF   s>   

"

"



&rQ   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 sw   Y  d S )Nalltodayr   tomorrowr   r#   )r   r#   r   r=      ) rS   rV   rT   rV   r(   rU   rV   )
r)   closer*   Zget_fignumsZget_figlabelsZgcfpytestraises
ValueErrorr   )Z	fig_todayr9   r9   r:   test_figure_labeli   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   threer=   )r)   r*   Zfignum_existsrW   r9   r9   r9   r:   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 r9   Zget_text.0tr9   r9   r:   
<listcomp>       z$test_clf_keyword.<locals>.<listcomp>F)r_   clear      ?c                 S   r`   r9   ra   rb   r9   r9   r:   re      rf   r   Tc                 S   r`   r9   ra   rb   r9   r9   r:   re      rf   )r)   r*   suptitleZtextstextrA   )Ztext1Ztext2Zfig0fig1fig2ax2r9   r9   r:   test_clf_keyword   s   
rn   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 )NrS   rU   rT   r   r#   r)	r)   r*   r+   	set_title	get_labelr,   r-   r.   rW   r5   r7   r9   r9   r:   test_figure   s   


rs   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)rF   coloryro   rh   kZ_yzb)r)   rA   r,   Zlegendr5   rN   r9   r9   r:   test_figure_legend   s   r|   c                  C   s   t  } | g d}|  |u sJ | d}|  |u s J | | | j||gks.J |  |u s6J | | | j||gksDJ | | | j||gksRJ |  |u sZJ d S )Nr   r   r#   r#   o   )r)   r*   add_axesZgcar+   axesZsca)r5   ax0ax1r9   r9   r:   test_gca   s   



r   c                  C   s   t  } | jtd tt | jtdd W d    n1 s!w   Y  tt | jtdd W d    n1 s=w   Y  tt | jddd W d    n1 sYw   Y  tt | jdd W d    d S 1 suw   Y  d S )	N)
axes_class3d)r   
projectionT)r   polar)r   r   *   r   )r)   r*   r+   r
   rX   rY   rZ   	TypeErrorr5   r9   r9   r:   test_add_subplot_subclass   s   "r   c                  C   s  t  } tjtdd | ddd W d    n1 sw   Y  tjtdd | ddd W d    n1 s;w   Y  tjtdd | ddd W d    n1 sYw   Y  tjtdd | ddd W d    n1 sww   Y  tjtdd | ddd	 W d    n1 sw   Y  tjtd
d | d W d    n1 sw   Y  tjtd
d | d W d    n1 sw   Y  tjtdd | dd W d    n1 sw   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 <= 4rU   rh   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*   rX   rY   rZ   r+   r   rA   )r5   _r7   r9   r9   r:   test_add_subplot_invalid   s`   $r   Zfigure_suptitlec                  C   s.   t  \} }| jddd | jdddd d S )NZhelloro   )rv   titleru      )rv   Zrotation)r)   rA   ri   )r5   r   r9   r9   r:   test_suptitle  s   r   c                  C   sV   t  \} }tjjddd}| jd|d}| | ksJ | | ks)J d S )NZlargebold)sizeweightzfontprops title)Zfontproperties)	r)   rA   mplZfont_managerZFontPropertiesri   Zget_fontsizeZget_size_in_pointsZ
get_weight)r5   r7   Zfpstxtr9   r9   r:   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)r=   r   figsizer#   r   whitezThis is a visible suptitle.)        r   r   r   )      ?r   r   r   )r)   r*   
subfiguresset_facecolorrA   ri   Zget_facecolor)r5   Zsf1Zsf2r9   r9   r:   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 )NrV   ri   	supxlabel	supylabel)r)   rA   Zget_suptitleZget_supxlabelZget_supylabelri   r   r   rr   r9   r9   r:   %test_get_suptitle_supxlabel_supylabel1  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#   r   r   r         333333?red)Zradiusalphar   )	r)   r*   r   patchZ	set_alphaZpatchesappendr   ZCirclePolygonr   r9   r9   r:   
test_alpha>  s   
r   c                  C   sP   t t ttjd d D ]} t  qW d    d S 1 s!w   Y  d S )Nzfigure.max_open_warningr#   )rX   warnsRuntimeWarningr0   r   ZrcParamsr)   r*   )r8   r9   r9   r:   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kwargsr9   r9   r:   r   _  s   z7test_iterability_axes_argument.<locals>.MyAxes.__init__)__name__
__module____qualname__r   r9   r9   r9   r:   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)rZ   )r   itemr9   r9   r:   __getitem__d  s   z;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s    d| ifS )Nr   r9   r   r   r9   r:   _as_mpl_axesh  s   z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)r   r   r   r   r   r9   r   r9   r:   MyClassb  s    r   r#   r   )r
   r)   r*   r+   rW   )r   r5   r9   r   r:   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 )NrU   r#   r   r=   )r#   r   r   )r)   r*   Zset_figwidthZget_figwidthZset_figheightZget_figheightset_size_inchesr   r9   r9   r:   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)   rA   removeZravelr   lenr5   rN   r7   r9   r9   r:   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   rh   )r   r   )r)   Z	figaspectr-   Zfloat64rE   )whr9   r9   r:   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sJ qd 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   r=   rU         r   ignorez=FixedFormatter should only be used together with FixedLocator皙?r'   )r   r   r   Fr   )r   r   Tr   )mdatesZdatestr2numr)   rA   r,   Z
yaxis_dateZ
xaxis_dater2   Zset_minor_locatorr   warningscatch_warningsfilterwarningsZset_minor_formatterr   Zautofmt_xdater   r3   intZget_rotation)
r   datetimeZangleZminorsrt   rw   r5   r7   rF   r9   r9   r:   test_autofmt_xdate  s6   


r   defaultc                  C   sn   t jdd} |   | jjjdksJ | jjjdksJ d| _|   | jjjdks,J | jjjdks5J d S )N)r=   r=   r   i  2      )r)   r*   rD   canvasrendererheightwidthdpir   r9   r9   r:   test_change_dpi  s   r   zwidth, heightr#   )r!   r#   c                 C   s~   t t tj| |fd W d    n1 sw   Y  t }t t || | W d    d S 1 s8w   Y  d S )Nr   )rX   rY   rZ   r)   r*   r   )r   r   r5   r9   r9   r:   test_invalid_figure_size  s   "r   c                  C   s  t  } tjtdd |   W d    n1 sw   Y  tt | dddtjf W d    n1 s9w   Y  tjtdd | jg dg dd W d    n1 s[w   Y  t 	 \}}tjtdd | | W d    n1 s}w   Y  |
| tjtjd	d ||d
 W d    n1 sw   Y  tjtjd	d | g dd
 W d    d S 1 sw   Y  d S )Nz.missing 1 required positional argument: 'rect'r   皙?rh   z#multiple values for argument 'rect'r}   )rectr   z)Passing more than one positional argumentzextra positional argument)r)   r*   rX   rY   r   r   rZ   r-   nanrA   Zdelaxesr   r   ZMatplotlibDeprecationWarning)r5   rl   r7   r9   r9   r:   test_invalid_figure_add_axes  s:   

"r   c                  C   s  t jdddddd\} }|jD ]}|g dg d q|d |d |dd d f D ]}dt|jjdd	ks=J q.|d
d d f D ]}dt|jjdd	k sUJ qF|d d d
f D ]}dt|j	jdd	ksmJ q^|d d df D ]}dt|j	jdd	k sJ qvd S )Nr   TF)sharexshareyZsqueeze)r(   r   r   logr   r   )r   r#   )
r)   rA   rC   r,   
set_yscaleZ
set_xscaler   r2   Zget_ticklabelsr4   r   r9   r9   r:   test_subplots_shareax_loglabels  s   


r   c                  C   sL   t  } d}tjt|d | dd W d    d S 1 sw   Y  d S )Nz9savefig\(\) takes 2 positional arguments but 3 were givenr   z
fname1.pngz
fname2.png)r)   r*   rX   rY   r   savefig)r5   msgr9   r9   r:   test_savefig  s
   "r   c               	   C   sT   t  } dD ]!}tt | jt |dd W d    n1 s"w   Y  qd S )N)r   pdfr   tifjpgT)formatZnon_existent_kwarg)r)   r*   rX   rY   r   r   ioBytesIO)r5   r   r9   r9   r:   test_savefig_warns  s   r  c                  C   s   t  } tjtdd | jddd W d    n1 sw   Y  tjtdd | jddd W d    d S 1 s<w   Y  d S )	NzNo module named '@absent'r   testzmodule://@absent)backendz-The 'pdf' backend does not support png outputztest.pngr   )r)   r*   rX   rY   ModuleNotFoundErrorr   rZ   r   r9   r9   r:   test_savefig_backend  s   "r  r  ZAgg)ZmarksZ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)   rA   r,   r   r   r   r   openloadr   _set_device_pixel_ratio)r  r5   r7   bufZratio1Zratio2r9   r9   r:   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   r9   r9   r:   #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s<J d S )
Nr   (   )Zaspectr   r=   r  T)originalF)r)   rA   rJ   r-   rK   rL   rM   r   r   r   r   Z
transformsZBboxr7   rG   Zbounds)r5   r7   rP   Zcbarr9   r9   r:   test_savefig_locate_colorbarC  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   皙?)leftwspacer   r   r!   )r   r   333333?r   r   )ZxticksZyticksF)add_gridspecadd_subfigurer+   Z
inset_axessetZspinesset_visible)fig_testfig_refgs1f1f2Zax12r   Ziax1Ziax2rm   ax3r7   r9   r9   r:   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   r   z!<Figure size 100x200 with 0 Axes>)r)   r*   reprr   r9   r9   r:   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   Zget_tight_layoutZget_constrained_layoutr   r9   r9   r:   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sJ tjtdd t	dd W d    n1 sw   Y  t jdd\} }| d t|  t
sJ | d t|  tsJ t jdd\} }|tjdd}| | tjtdd | d W d    n1 sw   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   r?   zInvalid value for 'layout'Zfoobarr   zColorbar layout of new layoutr   )r)   rA   rX   r   UserWarningZsubplots_adjust
isinstancer  r   r   r   rY   rZ   set_layout_enginerJ   r-   rK   rL   rM   RuntimeErrorr   )r5   r7   ZwstrP   r9   r9   r:   test_invalid_layoutsx  s^   





$r0  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_contextrA   r+  r-  r  r   )r  r   r5   Z
autolayoutr   r9   r9   r:   &test_tightlayout_autolayout_deconflict  s   r5  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)   rA   rX   r   r,  r+  )r   r5   r7   r9   r9   r:   test_layout_change_warning  s   
"r6  c                  C   s"   t  } |   |   |   d S r   )r   r+  r   r9   r9   r:   test_repeated_tightlayout  s   r7  r   c           	   	   C   s.  d| _ d|_ |   tjddgddgdd}tjddgddgdd}tjddd d	d
}tjdddd}tjdd| jddd}|||||fD ]}| | qE|  | }tjddgddg|jddd}tjddd ddd	d}tjdd|jddd}tjdd|jddddd}||||fD ]}|| qd S )Nr"   r   ffffff?l1)gidr*  l2)r   r   ZC1)	transformr:  )r8  rh   r  ZC2)g      @r*  g?ZcrimsonZC3)r<  r   r:     )r<  r:  zorderFr   )r<  clip_onr>  r:  )r<  r   r?  r>  r:  )	r   rA   r)   ZLine2DZCircleZdpi_scale_transZ
add_artistr   ZtransFigure)	r  r   r9  r;  r1r2Zr3r   rm   r9   r9   r:   test_add_artist  s:   rB  fmt)r   r   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)   r   r  encodereadlower)rC  Ztmpdiroutfiler9   r9   r:   test_fspath  s
   
"rM  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 sJ t|j|g dj|| j	  dk sJ d S )Nr   r#   r   rh   zThis dangles over endgR"@r   r  g|?5^?FgET@T)Zbbox_extra_artists)r)   rA   set_xlimrj   r   get_rendererabsget_tightbboxx1r   x0Zset_in_layout)r5   r7   rd   r   Zx1Nom0Zx1Nomr9   r9   r:   test_tightbbox  s*   
""
"
"rT  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)   rA   r   r,   r   r-  r2   Zget_major_formatterr   ZAutoDateFormatterZset_major_formatterr   r{   r9   r9   r:   test_axes_removal  s   ((rV  c                  C   s,   t jddd\} }|d   | j  d S )Nr   TrU  r   )r)   rA   r   r   drawr{   r9   r9   r:   test_removed_axis  s   rX  
clear_methrg   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sJ | j	v sJ |d}| jv sJ | jv sJ t||   | j	v sJ ||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 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sJ d S )Nr~   c                    s   g | ]}  d d|d qS r   r#   r+   rc   r8   r   r9   r:   re   0  s    z%test_figure_clear.<locals>.<listcomp>r   r#   )r1  nrowsr   c                       g | ]	}  | qS r9   r  r]  r5   r6   r9   r:   re   ]      r   r#   c                 S      g | ]}| d qS r~   r\  rc   sfigr9   r9   r:   re   ^      c                 3       | ]}| j v V  qd S r   r   rc   r7   r   r9   r:   	<genexpr>_      z$test_figure_clear.<locals>.<genexpr>c                 3   ri  r   subfigsrf  r   r9   r:   rl  `  rm  c                    r_  r9   r`  r]  ra  r9   r:   re   j  rb  c                 S   rd  re  r\  rf  r9   r9   r:   re   k  rh  c                 3   ri  r   rj  rk  r   r9   r:   rl  l  rm  c                 3   ri  r   rn  rf  r   r9   r:   rl  m  rm  )r)   r*   rg   r   r+   getattrr0   r  r  ro  r   rR   )rY  r7   r   ZsubfigZsubaxesZmainaxesro  r9   ra  r:   test_figure_clear!  sh   




rq  c                  C   s    t  D ]	} d| jvsJ qd S )NrZ  )r   __subclasses____dict__)klassr9   r9   r:   test_clf_not_redefineds  s   ru  Z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)Zpickerr   )rt   rw   ZinaxesZguiEvent)r)   rA   scatterr   rW  staler   bboxrS  r   Zy0r   pick)r5   r7   Zmouse_eventr9   r9   r:   test_picking_does_not_staley  s   


rz  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sJ tt	 | ddd	 W d    d S 1 sw   Y  d S )
Nr   r   r   rU   r#   r   )r=   r   )r   r   )r=   rU   )r   r   )
r)   r*   r+   get_subplotspecZrowspanr0   colspanrX   rY   
IndexError)r5   r   rm   r$  Zax4r9   r9   r:   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   r  rc  r   r   rh   )r   r#   r#   )r)   r*   r  r+   Zset_box_aspect)r5   r6   r   rm   r9   r9   r:   test_tightbbox_box_aspect  s   
r  )r   r   rE  r   c                 C   s4   |  }|td |   }|jtddd d S )NrU   T)Zanimated)rA   r,   r0   )r  r   Zax_refZax_testr9   r9   r:    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  rt   Ar  BCDr  r#   r#   r   r   r=   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itemsrp   sortedr-   uniquer   r  r+   )r   r  r   rt   	grid_axesrx   r7   labelsr6   axAaxBaxCaxDr9   r9   r:   
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   r  rc  )	r.  r  valuesrp   rq   r  subgridspecrB   r+   )r   r  r   rt   rw   r  r7   r6   Zgs_leftjro   rx   rF   Zgs_rightr9   r9   r:   test_all_nested  s&   

z!TestSubplotMosaic.test_all_nestedc                 C   s   | d | d ddgddgg}dg|gg}||}| D ]	\}}|| q!|dd}|d	 dd}	||	d
 }
|
d ||	d }|d ||	d	 }|d ||	d }|d ||d
 }|d d S )Nr(  r  r  r  r  r  r   r#   r  r  rc  r  )r.  r  r  rp   r  r  r+   )r   r  r   rt   rw   r  rx   r7   r6   Zgs_nr  r  r  r  ZaxFr9   r9   r:   test_nested  s&   






zTestSubplotMosaic.test_nestedc                 C   s<   g dg dg}d}| dg|gg | dg|gg d S )Nr  r  r  r  r  r  )r  r  r  )r  )r   r  r   rt   Zxtr9   r9   r:   test_nested_tuple	  s   z#TestSubplotMosaic.test_nested_tuplec                 C   s`   ddgdgggg}ddg}t j||d\}}|d   |ks"J |d   |ks.J d S )Nr  r  r  r   r#   )width_ratios)r)   r  get_gridspecZget_width_ratios)r   rt   r  r5   axdr9   r9   r:   test_nested_width_ratios  s   z*TestSubplotMosaic.test_nested_width_ratiosc                 C   sf   ddgdgggddgg}ddg}t j||d\}}|d   |ks%J |d   |ks1J d S )Nr  r  r  r  r#   r   height_ratios)r)   r  r  Zget_height_ratios)r   rt   r  r5   r  r9   r9   r:   test_nested_height_ratios  s   z+TestSubplotMosaic.test_nested_height_ratioszx, empty_sentinelr  Nr  .SKIPr   r#   r   c                 C   s   |dkr	d|i}ni }|j |fi |}| D ]	\}}|| qtdd |D |dh }	t|	t|ks9J |dd}
||
d }||	d  ||
d	 }||	d
  d S )Nr  empty_sentinelc                 S   s   h | ]	}|D ]}|qqS r9   r9   )rc   rownamer9   r9   r:   	<setcomp><  rb  z/TestSubplotMosaic.test_empty.<locals>.<setcomp>r  r   r  r   r  r#   )r  r  rp   r  r   r  r+   )r   r  r   rt   r  r   r  rx   r7   r  r6   r  r  r9   r9   r:   
test_empty%  s   
zTestSubplotMosaic.test_emptyc                 C   s   t jtdd tddg W d    n1 sw   Y  t jtdd tdg W d    n1 s6w   Y  t jtdd tddgg W d    n1 sUw   Y  t jtdd tddgdd	gg W d    d S 1 sxw   Y  d S )
Nz
must be 2Dr   Zfoobar)r  r   rz   )r   rz   c)rX   rY   rZ   r)   r  r   r9   r9   r:   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   )r  r  rc  )r  r  r+   )	r   r  r   r  rt   r  r6   r  r  r9   r9   r:   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)r  per_subplot_kwr   )r   r  r  r  r   )r  r  r3  r+   )	r   r  r   r  rt   r  r6   rv   specr9   r9   r:   test_per_subplot_kw^  s   	z%TestSubplotMosaic.test_per_subplot_kwc                 C   s   t j}|dg dgksJ |dddgddggksJ |dddgddgdd	ggks-J |d
g dgks8J |dddgddggksFJ |dddgddgdd	ggksWJ d S )NABC)r  r  r  zAB;CCr  r  r  zAB;CC;DEr  r  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Z_normalize_grid_stringr   	normalizer9   r9   r:   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   )r  r  )r  r  )r   Z_norm_per_subplot_kwrX   rY   rZ   r  r9   r9   r:   test_per_subplot_kw_expander  s   "z.TestSubplotMosaic.test_per_subplot_kw_expanderc                 C   sT   t jtdtddd t jddi id W d    d S 1 s#w   Y  d S )Nz	The keys r  z are inr   r  )r  )rX   rY   rZ   r  r   r  r   r9   r9   r:   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 r9   )list)rc   lnr9   r9   r:   re     rf   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>
)r  stripsplit)r   r  r   r  r  r9   r9   r:   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*   rX   rY   rZ   r  )r   rt   r   r5   r9   r9   r:   	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   r9   r9   r:   test_hashable_keys  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*   r  r  r   r  )r   r  r5   ax_dictr9   r9   r:   test_user_order  s   
z!TestSubplotMosaic.test_user_orderc                 C   st   dddgddgggddgdd	d
gdgggggg}t  }||}t|tdks+J t|jt| ks8J d S )Nr  r  r  r  r  r  r  r  r  IZ	ABCDEFGHIr  r   r   r5   r  r9   r9   r:   test_nested_user_order  s   
z(TestSubplotMosaic.test_nested_user_orderc                 C   sx   dddgddgggddgdd	d
gdgggggg}t  }|j|ddd}|d jddd tdd | D s:J d S )Nr  r  r  r  r  r  r  r  r  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_yscalerk  r9   r9   r:   rl    s     z3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r)   r*   r  r  rR   r  r  r9   r9   r:   test_share_all  s   z TestSubplotMosaic.test_share_all)r   r   r   r	   rX   markparametrizer  r  r  r  r  r  r  r  r  tupler  r  r  r  r  r  r  r  r  r  r9   r9   r9   r:   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{  r=   )r   r   r[  )r}  r5   N)r)   r*   r+   Zsubplot2gridr|  r  )r5   r   rm   r$  r!  Zgs2Zgs3r9   r9   r:   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   ZvminZvmaxr@   	Left Sider   r   bottom)r7   locationz
Right SideFigure suptitlexx-largefontsize)r-   rK   seedr)   r*   r   rA   rC   rJ   rL   rM   ri   r   )r5   subrN   r7   rP   r9   r9   r:   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-   rH   rI   rQ  r   rO  r   )r5   r  r9   r9   r:   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"   r   r   )r)   r*   r   Zget_dpiZset_dpir5   sub_figr9   r9   r:   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}q$|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-   rK   r  r)   r*   r  r  rA   rC   rJ   rL   rM   ri   r+   r,   r.   rp   )r5   r6   r  rN   r7   rP   r9   r9   r:   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   r5   r#   r   gQ?)r  r   Zcoralz
subfigs[0]z
subfigs[1]gffffff?r  zsubfigsnest[0]ro   Tr      r   g      g      @r  zx-labelr  zy-labelTitler@   zsubfigsnest[1]ru   r   rU  ylabelr   r   )r-   rK   r  r)   r*   ri   r   r   rA   rJ   rL   r1   r/   rp   rM   rB   r   r   )
r5   ro  ZsubfigsnestZaxsnest0r7   r  rP   Zaxsnest1rO   ZaxsRightr9   r9   r:   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 )NTr>   r   r  r   r   r#       r   r=   )r)   r*   r  r  r-   rH   rI   rx  minmaxr0   r+   rD   )r5   r6   sub_figsr   r   r8   r9   r9   r:   test_subfigure_spanning`  s$   """r  c            	      C   s   t jddd} | jdddddgd\}}|jdd	d
}||dd df }|jddgddgd |j|dddf |d}|jddgddgd |j|ddd	f |d}d| _|   | }d| _|   | }t	j
|| d S )NT)r(   r   )r?   r   r#   r   r   r   )r  r     )r^  r1  r   g!<LgkX.8@i  i  )rt   rw   r   r  g YI_gRϫW@x   i,  )r)   r*   r   r  r+   rv  r   rD   Z
get_xticksr-   rH   rI   )	r5   Z	subfig_blZ	subfig_brr6   r   rm   r$  Zticks120Zticks300r9   r9   r:   test_subfigure_ticks}  s"   

r  ztest_subfigure_scatter_size.png)r  r  c                  C   s   t  } | dd}| |d }|jg dg dddd |jg dg dg ddd | |d	 }|dd}||d	 fD ] }|jg dg dddd
d |jg dg dg dddd q@d S )Nr#   r   r  r   s)r  marker)r   r=   rU   )r   r   r  r   ro   )r  r  rv   ru   )r)   r*   r  r+   rv  r  rA   )r5   r6   r   rg  rN   r7   r9   r9   r:   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#   r   r  )	r)   r*   r   r+   r  Z	bar_labelr   r   r   )r5   r  r7   rz   bufferr9   r9   r:   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   rh   gUUUUUU?)hspacer  r  r  r  r   r   r  rc  gffffff?g?r$   r8  r  r   r   r  r   )	r)   r*   r   r-   rH   rI   rx  r  r  )r   r   r   r9   r9   r:   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+   rW   r  r5   r7   r   r9   r9   r:   test_add_subplot_kwargs  &   r  c                  C   s   t  } | g d}| g d}|d usJ ||usJ t   t  } | jg ddd}| jg ddd}|d us>J ||usDJ t   t  } | jg ddd}| g d}|d usbJ |jdksiJ ||usoJ t   d S )Nr}   r   r   r  )r)   r*   r   rW   r  r  r9   r9   r:   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r   r   r#   )r   r   _processr9   r5   Ztransr9   r:   single_press  s   $z!test_ginput.<locals>.single_pressr   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_eventZ	backspacer  r   rh   r   r  r   )r   r   r  r   r9   r  r9   r:   multi_presses
  s
      $z"test_ginput.<locals>.multi_pressesr   r  r  )r   r   r)   rA   Z	transDatar<  r   startZginputr-   rH   rI   )recwarnr7   r  r  r9   r  r:   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  r   )timeoutr  ry   Tr  r   r#   F)r   r   r)   r*   Zwaitforbuttonpressr   r   r   r  r  r   )r  r5   r9   r9   r:   test_waitforbuttonpress  s   r  c                  C   s>   t dd} | jdddd}|  dksJ | dksJ d S )Nzwhole Figure)rF   r#   z
sub figure)r   r   rq   r  r9   r9   r:   test_kwargs_pass  s   
r   c                 C   s   |j dddd |jdddd |jdddd tddddd	 |  d | d | d W d    d S 1 s=w   Y  d S )
NZxlabelr   r   )r   r   r  r  Zlightr   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)r   r   ri   r   r4  )r  r   r9   r9   r:   test_rcparams'  s   


"r!  c                  C   s   t  \} }|ddgddg |d t| }|jd |us#J |jd  dks.J |jd d | dks>J |dd | 	  |	  |
 d	ksTJ |jd 
 d
ks_J d S )Nr   r#   r   r   r   Zlinearr         Y@)r   r"  rc  )r)   rA   r,   r   copydeepcopyr   r  rN  rD   Zget_xlim)rk   r7   rl   r9   r9   r:   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   r
  r   pickleloadsdumps)r5   rl   r9   r9   r:   %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 )Nr  r   r#   r   )r  Zgridspec_kwZAB)dictr)   rA   r  )r6   Zgs_origr9   r9   r:   test_gridspec_no_mutate_inputV  s
   r+  )rE  r   r   rD  r   Zsvgzc                 C   s   t  jt | i d d S )Nr   metadata)r   r   r   r   rC  r9   r9   r:   test_savefig_metadata^  s   r/  )Zjpegr   r   ZtiffZwebprawZ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,  )rX   rY   rZ   r   r   r   r   r.  r9   r9   r:   test_savefig_metadata_errorc  s   "r1  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{Gz?)r2  Zh_padr  r
  r   zwill be deprecatedr   r9   )r  r  r)   r*   r   Zlayout_enginer   rX   r   PendingDeprecationWarningZget_constrained_layout_pads)paramsexpectedr5   r9   r9   r:    test_get_constrained_layout_padsi  s   "r5  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   r  r   z<g F)r   r   StringIOr   seekrI  r  )r5   r  r9   r9   r:   test_not_visible_figureq  s   


r8  )r#  r   r   pathlibr   r&  platform	threadingr   typesr   r   numpyr-   rX   ZPILr   Z
matplotlibr   r   Zmatplotlib.testing.decoratorsr   r	   Zmatplotlib.axesr
   Zmatplotlib.backend_basesr   r   Zmatplotlib.figurer   r   Zmatplotlib.layout_enginer   r   r   Zmatplotlib.tickerr   r   r   Zmatplotlib.pyplotZpyplotr)   Zmatplotlib.datesdatesr   machiner;   rQ   r[   r^   rn   rs   r|   r   r   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  r4  r%  r'  r)  r0  r5  r6  r7  rB  rM  rT  rV  rX  rq  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r   r!  r%  r)  r+  r/  r1  r5  r8  r9   r9   r9   r:   <module>   s0   
'#

,

		

'

	



4




	
Q


	
  7




(





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