
    EVf&              
          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jZ                         dk(  rd nd      d        Z.d Z/d Z0d Z1d Z2 edg      d        Z3 edg      d        Z4d Z5d Z6d Z7 ed g      d!        Z8d" Z9d# Z:d$ Z; ed%gddgd&d'd()      d*        Z<d+ Z=d, Z>d- Z?d. Z@d/ ZAej                  j                  d0g d1      d2        ZDej                  j                  d3      d4        ZGej                  j                  d5d6ej                  fd7ej                  d6fg      d8        ZJd9 ZKd: ZLd; ZMd< ZNd= ZOej                  j                  d> ej                  d?ej                  j                  d?      g@       ej                  dAej                  j                  dA      g@      g      dB        ZRdC ZSdD ZT ej                  dEdFi       edgG      dH               ZVdI ZWdJ ZXdK ZY edgG      dL        ZZej                  j                  dMdNdOg      dP        Z[dQ Z\ eddRgG      dS        Z]ej                  j                  dTg dU      dV        Z^dW Z_dX Z`dY Zaej                  j                  dZd[d\g      d]        Zbd^ Zcej                  j                  d_      d`        Zdda Ze edbgd_dcdddedFf      dg        Zf eg dhG      di        Zg G dj dk      Zhdl Zi edmgd_dnddio      dp        Zjdq Zkdr Zl edsgd_dnddidtu      dv        Zm edwgd_dnddio      dx        Zndy Zoej                  j                  d_      dz        Zp ed{gd_dF|      d}        Zqd~ Zrd Zsd Ztd Zud Zvd Zwd Zx edgG      d        Zyd Zzd Z{d Z|ej                  j                  dTg d      d        Z}ej                  j                  dTg d      d        Z~d Zd Zy)    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{Gz?)
extensionstolc                     t        j                  d      } t        j                  dd      }| j	                  |dd df         }|j                  t        j                  ddd             |j                  d       | j	                  |d	         }|j                  t        j                  dd
d             t        d      D ]  }| j	                  |d|f         }|j                  d|z         |j                  d|z         |dv r5|j                  j                  d       |j                  j                          |dk(  r&|j                         D ]  }|j                  d        |dk(  s|j                   j                  d       |j                   j#                           t        d      D ]  }| j	                  |d|f         }|j                  d|        |j                  d|        |dk(  sG|j                  t        j                  dd
d             |j                   j                  d       |j                   j#                          |j                         D ]  }|j                  d         | j%                          y )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   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ticks        e/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/matplotlib/tests/test_figure.pytest_align_labelsrD      s    **G
$C			1a	 B	ArrE	#BGGBIIad#$MM+	E	#BGGBIIac"#1X "__R1X&
lQ&'
lQ&';HH''.HH6**, &!!"%&6HH''0HH!" 1X 
&__R1X&
n%
n%6GGBIIab)*HH''0HH!**, &!!"%&
&     c                     t        j                  dd      \  } }t        |j                        D ]e  \  }}|j	                  d       |j	                  d       |j                  t        j                  d      |z  t        j                  d      |z         g | j                          | j                          | j                          t        j                  d      }t        j                  d      }t        |j                        D ]Y  \  }}|j                  j                  j                         d   ||<   |j                  j                  j                         d   ||<   [ t        j                   j#                  |d d |dd         t        j                   j#                  |d d d   |dd d          t        j                  ddd      \  } }t        |j                        D ]V  \  }}|j	                  d       |j	                  d       |j%                  t        j&                  j)                  d	d	            }X | j+                  
       | j                          | j                          | j                          t        j                  d      }t        j                  d      }t        |j                        D ]Y  \  }}|j                  j                  j                         d   ||<   |j                  j                  j                         d   ||<   [ t        j                   j#                  |d d |dd         t        j                   j#                  |d d d   |dd d          y )Nr"   BooWho   r&   r   Tconstrained_layoutr+   r@   )r,   subplots	enumerateflatr5   r0   r1   r2   align_ylabelsalign_xlabelsdraw_without_renderingzerosr6   labelget_positionr;   testingassert_allclose
pcolormeshrandomrandncolorbar)r>   axsnnr@   xnynpcs          rC   test_align_labels_stray_axesra   F   s   ||Aq!HCCHH% 4B
e
e
		!b "))A,"234  	!B	!BCHH% 2B,,.q12,,.q122 JJr"1vr!"v.JJr#A#w14a41||AqT:HCCHH% 4B
e
e]]299??2r234 LLL 	!B	!BCHH% 2B,,.q12,,.q122 JJr"1vr!"v.JJr#A#w14a41rE   c                     t        j                  d       t        j                  d      } t        j                  d       t        j                  d       t        j                          t        j                  d       t        j                  d       t        j                  d       t        j                         g dk(  sJ t        j                         g dk(  sJ t        j                  d	       t        j                          t        j                  d
       t        j                  d       t        j                         ddgk(  sJ t        j                         ddgk(  sJ t        j                  |        t        j
                         | k(  sJ t        j                  t              5  t        j                  t                      d d d        y # 1 sw Y   y xY w)Nalltodayr!   tomorrowr   r&   )r   r&   r!   rI      ) rd   rg   re   rg   r+   rf   rg   )
r,   closer-   get_fignumsget_figlabelsgcfpytestraises
ValueErrorr   )	fig_todays    rC   test_figure_labelrp   i   s8   IIe

7#IJJqMJJzJJLJJqMJJqMJJqM??///"CCCCIIbMIIKIIaLIIj??A&&&2w-///JJy779	!!!	z	" 

68  s   .GGc                     t        j                  d       t        j                  d       t        j                  d       t        j                          t        j                  d      sJ t        j                  d      sJ t        j                  d      sJ t        j                  d      sJ t        j                  d       t        j                  d       t        j                  d      rJ t        j                  d      rJ y )Noner"   threerI   )r,   r-   fignum_existsrh    rE   rC   test_fignum_existsrv      s    JJuJJqMJJwJJLU###QW%%%QIIeIIaL  '''  ####rE   c                  0   d} d}t        j                  d      }|j                  |        |j                  D cg c]  }|j	                          c}| gk(  sJ t        j                  dd      }|j                  dd|       ||u sJ |j                  D cg c]  }|j	                          c}| |gk(  sJ t        j                  dddd	      \  }}||u sJ |j                  D cg c]  }|j	                          c}g k(  sJ y c c}w c c}w c c}w )
NzA fancy plotzReally fancy!r&   )numF)rx   clear      ?r"   T)r,   r-   suptitletextsget_texttextrM   )text1text2fig0tfig1fig2ax2s          rC   test_clf_keywordr      s    EE::!DMM%"&**-QAJJL-%888::!5)DIIc34<<"&**-QAJJL-%???Qq5ID#4<<"&**-QAJJL-333 .
 . .s   D	D)Dfigure_todayc                     t        j                  d      } | j                         }|j                  | j	                                |j                  t        j                  d             t        j                  d       t        j
                  ddgddgd       t        j                  d       t        j                  d       y )Nrd   rf   re   r   r&   r)	r,   r-   r/   	set_title	get_labelr0   r1   r2   rh   r>   r@   s     rC   test_figurer      s     **W
C		BLL!GGBIIaLJJzHHaVaVS!JJwIIjrE   figure_legendc                  l   t        j                  d      \  } }|d   j                  ddgddgdd       |d   j                  ddgddgdd       |d   j                  ddgd	d	gdd
       |d   j                  ddgddgdd       |d   j                  ddgddgdd       | j                          y )Nr"   r   r&   xg)rT   coloryr   rz   k_yzb)r,   rM   r0   legendr>   r\   s     rC   test_figure_legendr      s    ||AHCFKKAAcK5FKKAAcK5FKKAc
#SK9FKKAAd#K6FKKAAcK5JJLrE   c                     t        j                         } | j                  g d      }| j                         |u sJ | j	                  d      }| j                         |u sJ | j                  |       | j
                  ||gk(  sJ | j                         |u sJ | j                  |       | j
                  ||gk(  sJ | j	                  |       | j
                  ||gk(  sJ | j                         |u sJ y )Nr   r   r&   r&   o   )r,   r-   add_axesgcar/   axessca)r>   ax0ax1s      rC   test_gcar      s    
**,C ,,|
$C779 //#
C779 LL88Sz!!!779 GGCL88Sz!!! OOC88Sz!!!779rE   c                  n   t        j                         } | j                  t               t	        j
                  t              5  | j                  t        d       d d d        t	        j
                  t              5  | j                  t        d       d d d        t	        j
                  t              5  | j                  dd       d d d        t	        j
                  t              5  | j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   VxY w# 1 sw Y   y xY w)	N)
axes_class3d)r   
projectionT)r   polar)r   r   *   r   )r,   r-   r/   r   rl   rm   rn   	TypeErrorr>   s    rC   test_add_subplot_subclassr      s    
**,COOtO$	z	" :4D9:	z	" 54t45	z	" 54t45	y	! '2&' ': :5 55 5' 's0   D=D6D+D+DDD(+D4c                     t        j                         } t        j                  t        d      5  | j                  ddd       d d d        t        j                  t        d      5  | j                  ddd       d d d        t        j                  t        d      5  | j                  ddd       d d d        t        j                  t        d      5  | j                  ddd       d d d        t        j                  t        d      5  | j                  ddd	       d d d        t        j                  t        d
      5  | j                  d       d d d        t        j                  t        d
      5  | j                  d       d d d        t        j                  t        d      5  | j                  dd       d d d        t        j                  t        d      5  | j                  dddd       d d d        t        j                  t        d      5  | j                  ddd       d d d        t        j                  t        d      5  | j                  ddd       d d d        t        j                         \  }}t        j                  t        d      5  | j                  |       d d d        y # 1 sw Y   yxY w# 1 sw Y   OxY w# 1 sw Y   %xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   -xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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 <= 4rf   rz   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!   rI   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-   rl   rm   rn   r/   r   rM   )r>   _r@   s      rC   test_add_subplot_invalidr      s   
**,C	zK
M !1a ! 
zH
J !1a ! 
z *9 
: !1a ! 
z *9 
: !1a ! 
z *9 
: #1c"# 
z)H	I 	z)H	I  
y ); 
< 1 
y ); 
< $1a#$ 
z'
( # 	Q"# 
z'
( # 	3"# LLNEAr	z.
/  	 I! !! !! !! !# #   $ $# ## #
 s   J;'KKK"K/K<8L	-L#L#L0L= M	;KKK"K,/K9<L	LL #L-0L:=M	Mfigure_suptitlec                      t        j                         \  } }| j                  dd       | j                  ddd       y )Nhellor   )r   titler      )r   rotation)r,   rM   r{   )r>   r   s     rC   test_suptitler     s3    \\^FCLLL$LLbL1rE   c                  &   t        j                         \  } }t        j                  j	                  dd      }| j                  d|      }|j                         |j                         k(  sJ |j                         |j                         k(  sJ y )Nlargebold)sizeweightzfontprops title)fontproperties)	r,   rM   mplfont_managerFontPropertiesr{   get_fontsizeget_size_in_points
get_weight)r>   r@   fpstxts       rC   test_suptitle_fontpropertiesr     s{    llnGC



)
)wv
)
FC
,,(,
=C!7!7!9999>>s~~////rE   c                  2   t        j                  d      } | j                  dd      \  }}|j                  d       |j	                          |j	                          | j                  d       |j                         dk(  sJ |j                         dk(  sJ y )	N)rI   r!   figsizer&   r"   whitezThis is a visible suptitle.)        r   r   r   )      ?r   r   r   )r,   r-   
subfiguresset_facecolorrM   r{   get_facecolor)r>   sf1sf2s      rC   test_suptitle_subfiguresr   #  s    
**V
$C~~a#HCgLLNLLNLL./ "6666"6666rE   c                     t        j                         \  } }| j                         dk(  sJ | j                         dk(  sJ | j	                         dk(  sJ | j                  d       | j                         dk(  sJ | j                  d       | j                         dk(  sJ | j                  d       | j	                         dk(  sJ y )Nrg   r{   	supxlabel	supylabel)r,   rM   get_suptitleget_supxlabelget_supylabelr{   r   r   r   s     rC   %test_get_suptitle_supxlabel_supylabelr   1  s    llnGC###"$$$"$$$LL+++MM++---MM++---rE   alpha_backgroundr   r&   皙?none)	facecolor	edgecolor)r   savefig_kwargc                     t        j                  ddg      } | j                  d       | j                  j	                  d       | j
                  j                  t        j
                  j                  ddgddd	
             y )Nr"   r&   r   r   r         333333?red)radiusalphar   )	r,   r-   r   patch	set_alphapatchesappendr   CirclePolygonr   s    rC   
test_alphar   >  sk     **aV
$Ck"IIKKs{{00	R3% 1 9 :rE   c                      t        j                  t              5  t        t        j
                  d   dz         D ]  } t        j                           	 d d d        y # 1 sw Y   y xY w)Nzfigure.max_open_warningr&   )rl   warnsRuntimeWarningr4   r   rcParamsr,   r-   )rA   s    rC   test_too_many_figuresr   M  sO    	n	% s||$=>BC 	AJJL	  s   9AA&c                       G d dt                G fdd      } t        j                         }|j                  ddd |               t        j                  |       y )Nc                       e Zd ZdddZy).test_iterability_axes_argument.<locals>.MyAxesN)myclassc                6    t        j                  | g|i | y N)r   __init__)selfr   argskwargss       rC   r   z7test_iterability_axes_argument.<locals>.MyAxes.__init___  s    MM$000rE   )__name__
__module____qualname__r   ru   rE   rC   MyAxesr   ^  s
    *. 	1rE   r  c                       e Zd Zd Z fdZy)/test_iterability_axes_argument.<locals>.MyClassc                 $    |dk7  rt        d      y )Nazitem should be a)rn   )r   items     rC   __getitem__z;test_iterability_axes_argument.<locals>.MyClass.__getitem__d  s    s{ !344 rE   c                     d| ifS )Nr   ru   )r   r  s    rC   _as_mpl_axesz<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesh  s    It,,,rE   N)r  r  r  r  r  )r  s   rC   MyClassr  b  s    	5	-rE   r  r&   r   )r   r,   r-   r/   rh   )r  r>   r  s     @rC   test_iterability_axes_argumentr  S  sG    1 1- - **,COOAq!	O2IIcNrE   c                     t        j                         } | j                  d       | j                         dk(  sJ | j	                  d       | j                         dk(  sJ | j                  dd       | j                         dk(  sJ | j                         dk(  sJ | j                  d       | j                         dk(  sJ | j                         dk(  sJ y )Nrf   r&   r"   rI   )r&   r!   r!   )r,   r-   set_figwidthget_figwidthset_figheightget_figheightset_size_inchesr   s    rC   test_set_fig_sizer  p  s    
**,C Q""" a!### 1"""!### """!###rE   c                     t        j                  dd      \  } }|d   j                          |j                         d d D ]  }|| j                  v rJ  |d   | j                  vsJ t        | j                        dk(  sJ y )Nr"   r$   r$   r$   r!   )r,   rM   removeravelr   lenr>   r\   r@   s      rC   test_axes_remover    s~    ||Aq!HCKiik#2 SXX~~v;chh&&&sxx=ArE   c                     t        j                  t        j                  d      t        j                  d      z        \  } }|| z  dk(  sJ t        j                  d      \  } }|| z  dk(  sJ t        j                  t        j                  d            \  } }|| z  dk(  sJ t        j                  t        j                  d            \  } }|| z  dk(  sJ y )Nr"   r&   r&   r"   rz   )r"   r"   )r,   	figaspectr1   float64rS   )whs     rC   test_figaspectr$    s    ==AA67DAqq5A::==DAqq5A::==&)*DAqq5C<<==&)*DAqq5A::rE   which)bothmajorminorc                 V   g d}g d}d}g d}t        j                  |      }t        j                  |      }t        j                         \  }}|j	                  ||       |j                          |j                          |j                  j                  t        d             t        j                         5  t        j                  dd       |j                  j                  t        |             d d d        |j                  d|d	|        | d
v rB|j                   d   j#                  dd      D ]   }	t%        |	j'                               |k(  r J  | dv rC|j                   d   j#                  dd      D ]   }	t%        |	j'                               |k(  r J  y y # 1 sw Y   xY w)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!   rI   rf         r"   ignorez=FixedFormatter should only be used together with FixedLocator皙?r*   )r&  r'  r   Fr'  )r&  r(  Tr(  )mdatesdatestr2numr,   rM   r0   
yaxis_date
xaxis_dater6   set_minor_locatorr   warningscatch_warningsfilterwarningsset_minor_formatterr   autofmt_xdater   r9   intget_rotation)
r%  datetimeangleminorsr   r   r>   r@   rT   s
             rC   test_autofmt_xdater?    s   HD$D E"F4 A4 AllnGCGGAqMMMOMMOHH/23		 	 	" =K	M 	$$^F%;<	= c5'51!!XXa[00@ 	6Eu))+,555	6 !!XXa[00w? 	6Eu))+,555	6 "= =s   :;FF(defaultc                     t        j                  d      } | j                          | j                  j                  j
                  dk(  sJ | j                  j                  j                  dk(  sJ d| _        | j                          | j                  j                  j
                  dk(  sJ | j                  j                  j                  dk(  sJ y )N)rI   rI   r   i  2      )r,   r-   rR   canvasrendererheightwidthdpir   s    rC   test_change_dpirI    s    
**V
$C ::%%,,,::$$+++CG ::%%,,,::$$+++rE   zwidth, heightr&   )r$   r&   c                 8   t        j                  t              5  t        j                  | |f       d d d        t        j                         }t        j                  t              5  |j                  | |       d d d        y # 1 sw Y   RxY w# 1 sw Y   y xY w)Nr   )rl   rm   rn   r,   r-   r  )rG  rF  r>   s      rC   test_invalid_figure_sizerK    sx     
z	" ,

E6?+, **,C	z	" +E6*+ +	, ,+ +s   B(BBBc                     t        j                         } t        j                  t        d      5  | j                          d d d        t        j                  t              5  | j                  dddt        j                  f       d d d        t        j                  t        d      5  | j                  g dg d       d d d        t        j                         \  }}t        j                  t        d      5  | j                  |       d d d        |j                  |       t        j                  t        j                  d	      5  |j                  |d
       d d d        t        j                  t        j                  d	      5  | j                  g dd
       d d d        y # 1 sw Y   jxY w# 1 sw Y   2xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz.missing 1 required positional argument: 'rect'r   皙?rz   z#multiple values for argument 'rect'r   )rectr   z)Passing more than one positional argumentzextra positional argument)r,   r-   rl   rm   r   r   rn   r1   nanrM   delaxesr   r   MatplotlibDeprecationWarning)r>   r   r@   s      rC   test_invalid_figure_add_axesrR    s   
**,C	yM
O  
z	" +b"b"&&)*+ 
y(M	N 6\56 ||~HD"	z&
'  	R
 	LL	c66G
I 7b567 
c66G
I @\#>?@ @+ + +6 6 7 7@ @sG   F)"$F6)G;GGG()F36G GGG%(G1c                     t        j                  ddddd      \  } }|j                  D ]  }|j                  g dg d        j	                  d       |j                  d       |dd d f   D ],  }dt        |j                  j                  d	            k(  r,J  |d
d d f   D ],  }dt        |j                  j                  d	            k  r,J  |d d d
f   D ],  }dt        |j                  j                  d	            k(  r,J  |d d df   D ],  }dt        |j                  j                  d	            k  r,J  y )Nr"   TF)sharexshareysqueeze)r+   r   r   logr   r&  )r%  r&   )
r,   rM   rO   r0   
set_yscale
set_xscaler  r6   get_ticklabelsr;   r  s      rC   test_subplots_shareax_loglabelsr[    sM   ||AqdEJHChh ,
l+, MM%MM%!Q$i ?C//f/=>>>>? !Q$i >3rxx..V.<====> !Q$i ?C//f/=>>>>? !Q$i >3rxx..V.<====>rE   c                      t        j                         } d}t        j                  t        |      5  | j                  dd       d d d        y # 1 sw Y   y xY w)Nz9savefig\(\) takes 2 positional arguments but 3 were givenr   z
fname1.pngz
fname2.png)r,   r-   rl   rm   r   savefig)r>   msgs     rC   test_savefigr_    sC    
**,C
FC	y	, 0L,/0 0 0s   AAc                      t        j                         } dD ]J  }t        j                  t              5  | j                  t        j                         |d       d d d        L y # 1 sw Y   WxY w)N)r   pdfr   tifjpgT)formatnon_existent_kwarg)r,   r-   rl   rm   r   r]  ioBytesIO)r>   rd  s     rC   test_savefig_warnsrh    sa    
**,C5 N]]9% 	NKK

VKM	N 	NN	N 	Ns   'A%%A.	c                  8   t        j                         } t        j                  t        d      5  | j                  dd       d d d        t        j                  t        d      5  | j                  dd       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)	NzNo module named '@absent'r   testzmodule://@absent)backendz-The 'pdf' backend does not support png outputztest.pngra  )r,   r-   rl   rm   ModuleNotFoundErrorr]  rn   r   s    rC   test_savefig_backendrm    s    
**,C	*2M	N 8F$678	zL
N /J./ /8 8/ /s   B'BBBrk  Agg)marksCairoc                 t   t        j                         \  }}|j                  g d       t        j                         5 }|j                  |d       t        j                  |      }|j                          d d d        t        j                         \  }}|j                  g d       |j                  j                  d       t        j                         5 }|j                  |d       t        j                  |      }|j                          d d d        k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr&   r"   r!   r   rd  r"   )r,   rM   r0   rf  rg  r]  r   openloadrD  _set_device_pixel_ratio)rk  r>   r@   bufratio1ratio2s         rC   test_savefig_pixel_ratiorz  %  s    
 llnGCGGI	 C&C
 llnGCGGIJJ&&q)	 C&C
 V  s   9D"9D."D+.D7c                      t        j                  d      } | j                  t        j                         d       | j                         j                  sJ y )N
compressedr   r   bbox_inches)r,   r-   r]  rf  rg  get_layout_engine	_compressr   s    rC   #test_savefig_preserve_layout_enginer  <  s>    
**L
)CKK

'K2  ",,,,rE   c                     t        j                         \  } }|j                  t        j                  j                  dd            }| j                  |d      }| j                  t        j                         t        j                  j                  ddgddgg             |j                  j                  d      j                  |j                  j                  d	      j                  k7  sJ y )
Nr"   (   )aspectr   rI   r}  T)originalF)r,   rM   rX   r1   rY   rZ   r[   r]  rf  rg  r   
transformsBboxr@   rU   bounds)r>   r@   r`   cbars       rC   test_savefig_locate_colorbarr  C  s    llnGC	ryyq!,	-B<<2<&DKK

#..*=*=1v1v>N*OKP GG  $ /66GG  % 0778 9 8rE   zsavefig.transparentTr   c                    | j                  dddd      }| j                  |d d d d f         }|j                  |d         }|j                  |d d d d f         }|j                  |d dd d f         }|j                  g d      }|j                  g d      }| j                  |dd df         }	| j                  |d         }
|||||	|
fD ]3  }|j	                  g g        |j
                  d d  j                  d	       5 y )
Nr!   皙?)leftwspacer   r   r$   )rM  r.  333333?r   r  )xticksyticksF)add_gridspecadd_subfigurer/   
inset_axessetspinesset_visible)fig_testfig_refgs1f1f2ax12r   iax1iax2r   ax3r@   s               rC   test_savefig_transparentr  N  s	   
 

14

=C			AqD		*B			#d)	$B>>#ad)$D
..SbS!V
%C>>*+D??+,D


s2ss7|
,C


s6{
+CS$c3/ (
b$
		!  '(rE   c                  R    t        j                  dd      } t        |       dk(  sJ y )N)r+   r   r+   )r   rH  z!<Figure size 100x200 with 0 Axes>)r,   r-   reprr   s    rC   test_figure_reprr  e  s%    
**X2
.C9;;;;rE   c                  $   t        d       } | j                         rJ | j                         rJ t        d      } | j                         sJ | j                         rJ t        d      } | j                         rJ | j                         sJ y )Nr   r   constrained)r   get_tight_layoutget_constrained_layoutr   s    rC   test_valid_layoutsr  j  s    

C##%%%))+++

 C!!!))+++

&C##%%%%%'''rE   c                     t        j                  d      \  } }t        j                  t              5  | j                  d       d d d        t        | j                         t              sJ d}t        j                  t        |      5  t        dd	      } d d d        t        | j                         t              sJ d
}t        j                  t        |      5  t        dd      } d d d        t        | j                         t              rJ t        | j                         t              sJ t        j                  t        d      5  t        d       d d d        t        j                  d      \  } }| j                  d       t        | j                         t              sJ | j                  d       t        | j                         t              sJ t        j                  d      \  } }|j                  t        j                   j#                  dd            }| j%                  |       t        j                  t&        d      5  | j                  d       d d d        | j                  d       t        j                  t&        d      5  | j                  d       d d d        t        j                  d      \  } }|j                  t        j                   j#                  dd            }| j%                  |       t        j                  t&        d      5  | j                  d       d d d        | j                  d       t        | j                         t(              sJ t        j                  t&        d      5  | j                  d       d d d        y # 1 sw Y   dxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   yxY w# 1 sw Y   @xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r   皙?)r(   z1The Figure parameters 'layout' and 'tight_layout'r   r   F)r    tight_layoutz7The Figure parameters 'layout' and 'constrained_layout')r    rK   zInvalid value for 'layout'foobarr"   zColorbar layout of new layoutr   )r,   rM   rl   r   UserWarningsubplots_adjust
isinstancer  r   r   r   rm   rn   set_layout_enginerX   r1   rY   rZ   r[   RuntimeErrorr   )r>   r@   wstr`   s       rC   test_invalid_layoutsr  x  s.   ll-0GC	k	" %$% c++-/FGGG >C	k	- 9G%89c++-/@AAA
CC	k	- EMeDE#//13DEEEc++-/FGGG	z9
;  h 
 ll-0GC'"c++-/@AAA-(c++-/FGGG ll-0GC	ryyq!,	-BLL	|+J	K 'g&'&!	|+J	K 'g&' ll'*GC	ryyq!,	-BLL	|+J	K -m,-&!c++-/FGGG	|+J	K -m,- -]% %9 9E E
   ' '' '- -
- -s_   N(N5OOOO)'O6P(N25N?OOO&)O36O?Pc                    t        || gddg      D ]i  \  }}t        j                  d|i      5  |j                  d      }|j	                  d       d d d        t        |j                         t              riJ  y # 1 sw Y   ,xY w)NFTzfigure.autolayoutr"   )ncolsr+   )w_pad)zipr   
rc_contextrM   r  r  r  r   )r  r  r>   
autolayoutr   s        rC   &test_tightlayout_autolayout_deconflictr    s    2UDMB LZ^^0*=> 	'<<a<(D2&	' #//13JKKK	L	' 	's   %A>>B	r    r  r|  c                     t        j                  |       \  }}t        j                  t        d      5  t        j
                          ddd       y# 1 sw Y   yxY w)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,   rM   rl   r   r  r  )r    r>   r@   s      rC   test_layout_change_warningr    sF     ll&)GC	k)K	L   s   AAc                  x    t               } | j                          | j                          | j                          y r   )r   r  r   s    rC   test_repeated_tightlayoutr    s-    
(CrE   ra  c           	      &   d| _         d|_         | j                          t        j                  ddgddgd      }t        j                  ddgddgd      }t        j                  ddd d	
      }t        j                  ddd      }t        j                  dd| j
                  dd      }|||||fD ]  }| j                  |        |j                          |j                         }t        j                  ddgddg|j                  dd      }t        j                  ddd ddd	      }t        j                  dd|j                  dd      }t        j                  dd|j
                  dddd      }||||fD ]  }|j                  |        y )Nr%   r.  ffffff?l1)gidr  l2)r   r   C1)	transformr  )r  rz   r  C2)g      @r  g?crimsonC3)r  r   r     )r  r  zorderFr   )r  clip_onr  r  )r  r   r  r  r  )	rH  rM   r,   Line2DCircledpi_scale_trans
add_artistr  transFigure)	r  r  r  r  r1r2r3r	  r   s	            rC   test_add_artistr    s}   HLGK	RHr2hD	1B	RHr2hD	1B	HcTt	<B	Hct	,B	Ish.F.F'T
3B"b"b! AIIK



C	RHr2h'2E2ER
)B	HcT5
B	HcW-@-@d
B	Isg.E.E'rt
MB"b" qrE   fmt)r   ra  psepsr   c                     t        |d|        }t        j                  |       |j                  d      5 }| j	                  d      |j                  d      j                         v sJ 	 d d d        y # 1 sw Y   y xY w)Nztest.rbasciir%   )r   r,   r]  rt  encodereadlower)r  tmpdiroutfiles       rC   test_fspathr    sl    
vse}
%CKK	$ =4 zz'"diin&:&:&<<<<= = =s   3A33A<c                  F   t        j                         \  } }|j                  dd       |j                  ddd      }| j                  j                         }d}t        |j                  |      j                  || j                  z  z
        dk  sJ t        |j                  |      j                  || j                  z  z
        dk  sJ t        | j                  |      j                  |z
        dk  sJ t        | j                  |      j                  d	z
        dk  sJ |j                  d
       d}t        |j                  |      j                  || j                  z  z
        dk  sJ t        | j                  |      j                  |z
        dk  sJ |j                  d       d}t        |j                  |      j                  || j                  z  z
        dk  sJ t        |j                  |g       j                  || j                  z  z
        dk  sJ y )Nr   r&   r   rz   zThis dangles over endgR"@r"   r  g|?5^?FgET@T)bbox_extra_artists)r,   rM   set_xlimr~   rD  get_rendererabsget_tightbboxx1rH  x0set_in_layout)r>   r@   r   rE  x1Nom0x1Noms         rC   test_tightbboxr    s   llnGCKK1
C01Azz&&(HFqx(++fsww.>>?!CCCr),,v/??@1DDDs  *--67$>>>s  *--56=== OOEEr),,usww>?!CCCs  *--56===OODEr),,v/??@1DDDrR@CC! "$%& & &rE   c                     t        j                  ddd      \  } }|d   j                          |d   j                  t	        ddd      t	        ddd      gddg       t        |d   j                  j                         t        j                        sJ t        j                  ddd      \  } }|d   j                  j                  t                      |d   j                          |d   j                  t	        ddd      t	        ddd      gddg       t        |d   j                  j                         t              sJ y )Nr&   r"   TrT  r   i  )r,   rM   r  r0   r   r  r6   get_major_formatterr/  AutoDateFormatterset_major_formatterr   r   s     rC   test_axes_removalr    s   ||Aq.HCFMMOFKK$1%xa';<q!fEc!fll668..0 0 0
 ||Aq.HCFLL$$_%67FMMOFKK$1%xa';<q!fEc!fll668%' ' 'rE   c                      t        j                  dd      \  } }|d   j                          | j                  j	                          y )Nr"   Tr  r   )r,   rM   r  rD  drawr   s     rC   test_removed_axisr    s1    ||Ad+HCFMMOJJOOrE   
clear_methry   clfc           	        
 t        j                         

j                          
j                  g k(  sJ 
j	                  d      } t        
|               
j                  g k(  sJ t        d      D cg c]  }
j	                  dd|dz          }} t        
|               
j                  g k(  sJ 
j                  dd      }
j                  |d         }|j	                  d      } t        
|               |
j                  vsJ 
j                  g k(  sJ 
j                  |d         }|j	                  d      }
j	                  |d         }|j                          
j                  |gk(  sJ 
j	                  |d         }|j                          
j                  |gk(  sJ |
j                  v sJ |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 |j	                  d      } t        
|               
j                  g k(  sJ 
j                  g k(  sJ dD cg c]  }
j                  ||          }}|D 	cg c]  }	|	j	                  d       }}	t        
fd|D              sJ t        
fd|D              sJ  t        |d   |               |d   
j                  vsJ |d   
j                  v sJ |d   
j                  v sJ  t        |d   |               dD cg c]  }
j                  ||          }}|D 	cg c]  }	|	j	                  d       }}	t        
fd	|D              sJ t        
fd
|D              sJ  t        
|               
j                  g k(  sJ 
j                  g k(  sJ y c c}w c c}w c c}	w c c}w c c}	w )Nr   r"   r&   )r  nrowsr   r   r&   c              3   :   K   | ]  }|j                   v   y wr   r   .0r@   r>   s     rC   	<genexpr>z$test_figure_clear.<locals>.<genexpr>_       0"rSXX~0   c              3   :   K   | ]  }|j                   v   y wr   subfigsr  sfigr>   s     rC   r  z$test_figure_clear.<locals>.<genexpr>`       7tts{{"7r  c              3   :   K   | ]  }|j                   v   y wr   r   r  s     rC   r  z$test_figure_clear.<locals>.<genexpr>l  r  r  c              3   :   K   | ]  }|j                   v   y wr   r  r	  s     rC   r  z$test_figure_clear.<locals>.<genexpr>m  r  r  )r,   r-   ry   r   r/   getattrr4   r  r  r  r  rc   )r  r@   rA   r   r?   subfigsubaxesmainaxesr  r
  r>   s             @rC   test_figure_clearr  !  s    **,C IIK88r>> 
	BGC88r>> 16a91COOAq!A#&9D9GC88r>> 
				+Br!u%F  %GGC$$$88r>> r!u%F  %Gr!u%H OO88y    r!u%HNN88z!!!S[[      %GsxxchhGFJ!S[[   &++%%%#(("""sxx   %GGC88r>>;;" 288As  A'8G8189t$9G9000007w7777 $GGAJ
#%1:SXX%%%1:!!!1:$$$ $GGAJ
#%178As  A'8G8189t$9G9000007w7777GC;;"88r>>A :Z 99 99s   7O4O9.O>P:Pc                  V    t        j                         D ]  } d| j                  vrJ  y )Nr  )r   __subclasses____dict__)klasss    rC   test_clf_not_redefinedr  s  s,    **, +ENN***+rE   mpl20c                     t        j                         \  } }|j                  dgdgdgd       | j                  j	                          | j
                  rJ t        |j                  j                  |j                  j                  dz  z   |j                  j                  |j                  j                  dz  z   |d       }| j                  |       | j
                  rJ y )Nr   r#   T)pickerr"   )r   r   inaxesguiEvent)r,   rM   scatterrD  r  staler   bboxr  rG  y0rF  pick)r>   r@   mouse_events      rC   test_picking_does_not_staler#  y  s    llnGCJJsQC$J-JJOOyy=!BGGJJ1B$B$&GGJJ!1C$C)+d<K HH[yy=yrE   c                     t        j                         } | j                  ddd      }|j                         j                  t        dd      k(  sJ |j                         j                  t        dd      k(  sJ | j                  ddd      }|j                         j                  t        dd      k(  sJ |j                         j                  t        dd      k(  sJ | j                  ddd      }|j                         j                  t        dd      k(  sJ |j                         j                  t        dd      k(  sJ | j                  ddd      }|j                         j                  t        dd      k(  sJ |j                         j                  t        dd      k(  sJ t        j                  t              5  | j                  ddd	       d d d        y # 1 sw Y   y xY w)
Nr!   r"   r!   rf   r&   r   )rI   r+  )r!   r+  )rI   rf   )r+  r!   )
r,   r-   r/   get_subplotspecrowspanr4   colspanrl   rm   
IndexError)r>   r   r   r  ax4s        rC   test_add_subplot_twotupler+    s   
**,C
//!Q
'C ((E!QK777 ((E!QK777
//!Q
'C ((E!QK777 ((E!QK777
//!Q
'C ((E!QK777 ((E!QK777
//!Q
'C ((E!QK777 ((E!QK777	z	" &1f%& & &s   GG(ztightbbox_box_aspect.svgr   teal)r~  r   )styler   remove_textc                      t        j                         } | j                  dd      }| j                  |d         }| j                  |d   d      }|j	                  d       |j	                  d       y )	Nr&   r"   r  r  r   r   rz   )r"   r&   r&   )r,   r-   r  r/   set_box_aspect)r>   r?   r   r   s       rC   test_tightbbox_box_aspectr1    se    
 **,C			!Q	B
//"T(
#C
//"T(t/
4Cry!rE   )r   ra  r  r   c                     |j                         }|j                  t        d             | j                         }|j                  t        d      d       y )Nrf   T)animated)rM   r0   r4   )r  r  ax_refax_tests       rC    test_animated_with_canvas_changer6    sB    F
KKa!GLLqDL)rE   c                      e Zd Z edg      ej
                  j                  dg dg dgg dg dgdd	g      d
               Z edg      d        Z edg      d        Z	 edg      d        Z
d Zd Z edg      ej
                  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               Zd Z edg      ej
                  j                  di ddidg      d               Z edg      ej
                  j                  dd  ed       g      d!               Zd" Zd# Zd$ Z edg      ej
                  j                  d%g d&      d'               Zej
                  j                  d(ddgddggd)fddgdddgd*d+ggggd,fd-ddd*gd+gggd.d.ggd/fg      d0        Z edg      d1        Zej
                  j                  d%g d2      d3        Zd4 Zd5 Zy)6TestSubplotMosaicr   r  r   Ar:  BCDr;  r&   r&   r"   r!   rI   r"   )r9  r<  )r?  r@  c                 ^   |j                  |      }|j                         D ]  \  }}|j                  |        t        t	        j
                  |            }t        |      t        |      k(  sJ |j                  dd      }|j                  |d dd df         }	|	j                  |d          |j                  |d d df         }
|
j                  |d          |j                  |d         }|j                  |d          |j                  |d         }|j                  |d          y )Nr"   r!   r&   r   r&   r   r&   r&   )	subplot_mosaicitemsr   sortedr1   uniquer  r  r/   )r   r  r  r   	grid_axesr   r@   labelsr?   axAaxBaxCaxDs                rC   
test_basiczTestSubplotMosaic.test_basic  s    ++A.	__& 	EArLLO	 		!%6{c)n,,,!!!Q'!!"RaR!V*-fQi !!"QT(+fQi !!"T(+fQi !!"T(+fQi rE   c                    ddgddgg}ddgddgg}|j                  d	       |j                  d	       |j                  ||gg      }|j                         D ]!  }|j                  |j	                                # |j                  d
d      }|d   j                  dd      }t        |      D ]=  \  }	}
t        |
      D ]*  \  }}|j                  ||	|f         j                  |       , ? |d   j                  dd      }t        |      D ]=  \  }	}
t        |
      D ]*  \  }}|j                  ||	|f         j                  |       , ? y )Nr:  r;  r=  r>  EFGHr  r&   r"   r  r  )	r  rD  valuesr   r   r  subgridspecrN   r/   )r   r  r  r   r   rH  r@   r?   gs_leftjr   r   rT   gs_rights                 rC   test_all_nestedz!TestSubplotMosaic.test_all_nested  sj   3Z#s$3Z#s$!!-0""=1++aVH5	""$ 	)BLL(	) !!!Q'T(&&q!,aL 	DDAq%aL D5##GAqDM2<<UCD	D d8''1-aL 	EDAq%aL E5##HQTN3==eDE	ErE   c                    |j                  d       |j                  d       ddgddgg}dg|gg}|j                  |      }|j                         D ]  \  }}|j                  |        |j	                  dd      }|d	   j                  dd      }	|j                  |	d
         }
|
j                  d       |j                  |	d         }|j                  d       |j                  |	d	         }|j                  d       |j                  |	d         }|j                  d       |j                  |d
         }|j                  d       y )Nr  r:  r;  r=  r>  rQ  r"   r&   rB  r  r  rC  )r  rD  rE  r   r  rU  r/   )r   r  r  r   r   rH  r   r@   r?   gs_nrJ  rK  rL  rM  axFs                  rC   test_nestedzTestSubplotMosaic.test_nested  s>    	!!-0""=13Z#s$UQCL++A.	__& 	EArLLO	 !!!Q'$x##Aq)!!$t*-c!!$t*-c!!$t*-c!!$t*-c!!"T(+crE   c                 l    g dg dg}d}|j                  dg|gg       |j                  dg|gg       y )Nr:  r;  r;  r=  r=  r>  )r_  r`  rQ  )rD  )r   r  r  r   xts        rC   test_nested_tuplez#TestSubplotMosaic.test_nested_tuple	  s=    o./s|,#.rE   c                     ddgdgggg}ddg}t        j                  ||      \  }}|d   j                         j                         |k(  sJ |d   j                         j                         |k7  sJ y )Nr:  r;  r=  r"   r&   )width_ratios)r,   rD  get_gridspecget_width_ratios)r   r   rd  r>   axds        rC   test_nested_width_ratiosz*TestSubplotMosaic.test_nested_width_ratios  s    SEE  1v%%alCS3x$$&779\III3x$$&779\IIIrE   c                     ddgdgggddgg}ddg}t        j                  ||      \  }}|d   j                         j                         |k(  sJ |d   j                         j                         |k7  sJ y )Nr:  r;  r=  r>  r&   r"   height_ratios)r,   rD  re  get_height_ratios)r   r   rk  r>   rg  s        rC   test_nested_height_ratiosz+TestSubplotMosaic.test_nested_height_ratios  s    SEE !3Z)A%%a}ES3x$$&88:mKKK3x$$&88:mKKKrE   zx, empty_sentinelr:  Nr;  .SKIPr   r&   r"   c                    |dk7  rd|i}ni } |j                   |fi |}|j                         D ]  \  }}|j                  |        t        |D 	
ch c]  }	|	D ]  }
|
  c}
}	|dhz
        }t	        |      t	        |      k(  sJ |j                  dd      }|j                  |d         }|j                  |d          |j                  |d         }|j                  |d          y c c}
}	w )	Nro  empty_sentinelrn  r"   r  r   rC  r&   )rD  rE  r   rF  r  r  r/   )r   r  r  r   rq  r  rH  r   r@   rownamerI  r?   rJ  rK  s                  rC   
test_emptyzTestSubplotMosaic.test_empty%  s     V#&7FF+H++A88	__& 	EArLLO	 /c3/4T/T/>32GG
 6{c)n,,,!!!Q'!!"T(+fQi !!"T(+fQi  0s   C,
c                 D   t        j                  t        d      5  t        j                  ddg       d d d        t        j                  t        d      5  t        j                  dg       d d d        t        j                  t        d      5  t        j                  ddgg       d d d        t        j                  t        d      5  t        j                  ddgdd	gg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   y xY w)
Nz
must be 2Dr   foobar)rw  r	  r   )r	  r   c)rl   rm   rn   r,   rD  r   s    rC   test_fail_list_of_strz'TestSubplotMosaic.test_fail_list_of_strH  s    ]]:\: 	/u~.	/]]:\: 	(w'	(]]:\: 	4 123	4]]:\: 	@c
Z,=>?	@ 	@	/ 	/	( 	(	4 	4	@ 	@s/   C2C>D
D2C;>D
DD
subplot_kwr   r   c                     ddgg}|j                  ||      }|xs i }|j                  dd      } |j                  |d   fi |} |j                  |d   fi |}y )Nr&   r"   )r{  r  r  )rD  r  r/   )	r   r  r  r{  r   rH  r?   rJ  rK  s	            rC   test_subplot_kwz!TestSubplotMosaic.test_subplot_kwR  sv     VH++A*+E	%2
!!!Q'!g!!"T(9j9!g!!"T(9j9rE   multi_valueBCc           	          d}|j                  |ddidddi|ddii      }|j                  dd      }t        g d	|      D ]  \  }}|j                  ||
        y )NzAB;CDr   r   r>  bluegreen)r{  per_subplot_kwr"   )r   r  r  r  r   )rD  r  r  r/   )	r   r  r  r~  r   rH  r?   r   specs	            rC   test_per_subplot_kwz%TestSubplotMosaic.test_per_subplot_kw^  s     ++#U+k6*k73 , 
	 !!!Q'@"E 	7KE46	7rE   c                    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(  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 y )NABC)r:  r;  r=  zAB;CCr:  r;  r=  zAB;CC;DEr>  rP  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   _normalize_grid_stringr   	normalizes     rC   test_string_parserz$TestSubplotMosaic.test_string_parsero  s    11	O#4444!sCj3*%====$#sc3Z#s(LLLL  "1!23 	3 3    $'*sCj!9: 	: :    $'*sCj3*!E	F 	F FrE   c                 j   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      5   |i i d       d d d        t        j                  t        ddd      5   |i i d       d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)Nr:  r;  zThe key r;  z appears multiple timesr   )r  r;  )r;  r  )r   _norm_per_subplot_kwrl   rm   rn   r  s     rC   test_per_subplot_kw_expanderz.TestSubplotMosaic.test_per_subplot_kw_expander  s    //	r+,br0BBBB*b)*BR.@@@@]]HSG3J"K
 	1 2B/0	1 ]]HSG3J"K
 	1 BB/0	1 	1		1 	1	1 	1s   BB)B&)B2c                     t        j                  t        dt        d      d      5  t	               j                  ddi i       d d d        y # 1 sw Y   y xY w)Nz	The keys r;  z are inr   r:  )r  )rl   rm   rn   r  r   rD  ry  s    rC   test_extra_per_subplot_kwz+TestSubplotMosaic.test_extra_per_subplot_kw  sT    ]]Ic#h\"A
 	C H##Cb	#B	C 	C 	Cs   AAstr_pattern)zAAA
BBBz	
AAA
BBB
zABC
DEFc                     |j                  |      }|j                  |j                         j                  d      D cg c]  }t        |       c}      }y c c}w )N
)rD  stripsplitlist)r   r  r  r  rH  lns         rC   test_single_str_inputz'TestSubplotMosaic.test_single_str_input  sM    
 ++K8	** + 1 1 3 9 9$ ?@"T"X@
	@s   Az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 lengthrP  r  c                     t        j                         }t        j                  t        |      5  |j                  |       d d d        y # 1 sw Y   y xY w)Nr   )r,   r-   rl   rm   rn   rD  )r   r   r   r>   s       rC   	test_failzTestSubplotMosaic.test_fail  s@    , jjl]]:U3 	"q!	" 	" 	"s   AAc                 t    |j                  t               t               gg       |j                  ddgg       y )Nr:  r;  )rD  object)r   r  r  s      rC   test_hashable_keysz$TestSubplotMosaic.test_hashable_keys  s0    &(FH!5 67c
|,rE   )abccabbcacbaacbbacc                     t        j                         }|j                  |      }t        |      t        |      k(  sJ t        |j                        t        |j                               k(  sJ y r   r,   r-   rD  r  r   rT  )r   r  r>   ax_dicts       rC   test_user_orderz!TestSubplotMosaic.test_user_order  sX     jjl$$[1K DM111CHH~gnn&6!7777rE   c                    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                         }|j                  |      }t        |      t        d      k(  sJ t        |j                        t        |j                               k(  sJ y )Nr:  r;  r=  r>  rP  rQ  rR  rn  rS  I	ABCDEFGHIr  r   r    r>   r  s       rC   test_nested_user_orderz(TestSubplotMosaic.test_nested_user_order  s    C::  #JC3%%! " # $	
 jjl$$V,G}[ 1111CHH~gnn&6!7777rE   c                     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                         }|j                  |dd      }|d   j                  dd       t	        d |j                         D              sJ y )Nr:  r;  r=  r>  rP  rQ  rR  rn  rS  r  T)rT  rU  rW  logit)xscaleyscalec              3   l   K   | ],  }|j                         d k(  xr |j                         dk(   . yw)rW  r  N)
get_xscale
get_yscale)r  r@   s     rC   r  z3TestSubplotMosaic.test_share_all.<locals>.<genexpr>  s6      / ==?e+J70JJ /s   24)r,   r-   rD  r  rc   rT  r  s       rC   test_share_allz TestSubplotMosaic.test_share_all  s    C::  #JC3%%! " # $	
 jjl$$VD$Fg6 /$^^-/ / 	/ /rE   )r  r  r  r
   rl   markparametrizerN  rY  r]  rb  rh  rm  rt  rz  r}  tupler  r  r  r  r  r  r  r  r  r  ru   rE   rC   r8  r8    s   UG,[[o.	"."	
! -!. UG,E -E, UG, -B UG,/ -/JL UG,[[DkD#;'.Cj3*%v.AhC!1%$i$#T*#ha!6*!fq!fq!	

!
 -!.@ UG,[[\Bw0G+NO: P -: UG,[[]T5;,?@7 A -7F&1C UG,[[]E
 -
 [[ sc3Z(@ sdc3Z#s$<=>F Gc
SE*+c3Z89	
*"+*"
 UG,- -- [[]GI8I88/rE   r8  c                  z   t        j                         } | j                  ddd      }| j                  ddd      }t        j                  ddd|       }|j	                         j                         }|j	                         j                         }|j	                         j                         }||k(  sJ ||k(  sJ y)	z)Test that these all use the same gridspecr!   r"   r%  rI   )r!   r"   )r"   r&   )r(  r>   N)r,   r-   r/   subplot2gridr&  re  )r>   r   r   r  r  gs2gs3s          rC   test_reused_gridspecr    s    
**,C
//!Q
'C
//!Q
"C


661#
>C




,
,
.C




,
,
.C




,
,
.C#::#::rE   ztest_subfigure.pngr   )r-  r   c                     t         j                  j                  d       t        j                  d      } | j                  dd      }|d   j                  dd      }|j                  D ]4  }|j                  t         j                  j                  dd      dd	      }6 |d   j                  |
       |d   j                  d       |d   j                  d       |d   j                  dd      }|j                  D ]4  }|j                  t         j                  j                  dd      dd	      }6 |d   j                  ||d       |d   j                  d       |d   j                  d       | j                  dd       y )N!N,r  r   r&   r"   r   r   vminvmaxrL   	Left Sider   r!   bottom)r@   locationz
Right SideFigure suptitlexx-largefontsize)r1   rY   seedr,   r-   r   rM   rO   rX   rZ   r[   r{   r   )r>   subr\   r@   r`   s        rC   test_subfigurer    sI    IINN8
**M
*C
..A
C
a&//!Q
Chh E]]299??2r2!]DEFOOB3OFOOK F!
a&//!Q
Chh E]]299??2r2!]DEFOOB3O2FOOL!F!LL"ZL8rE   c                      t        j                  d      } | j                  dd      }t        j                  j                  | j                  | j                  j                               j                  d       y )Nr  r   r&   r"   g       @)
r,   r-   r   r1   rV   rW   r  rD  r  rG  )r>   r  s     rC   test_subfigure_tightbboxr    sV    
**M
*C
..A
CJJcjj5578>>rE   c                     t        j                  d      } | j                         }|j                         | j                         k(  sJ |j	                  d       |j                         dk(  sJ | j                         dk(  sJ y )Nr%   rH  rC  )r,   r-   r   get_dpiset_dpir>   sub_figs     rC   test_subfigure_dpir    sl    
**
CnnG??---OOC??###;;=CrE   ztest_subfigure_ss.png{Gz?)r-  r   r   c                  h   t         j                  j                  d       t        j                  d      } | j                  dd      }| j                  |d   d      }|j                  dd      }|j                  D ]4  }|j                  t         j                  j                  d	d	      d
d      }6 |j                  |       |j                  d       | j                  |d         }|j                  t        j                  d             |j!                  d       | j                  dd       y )Nr  r  r   r&   r"   r   pinkr  r   r  r  rL   r  r   r   r  r  r  )r1   rY   r  r,   r-   r  r  rM   rO   rX   rZ   r[   r{   r/   r0   r2   r   )r>   r?   r  r\   r@   r`   s         rC   test_subfigure_ssr    s     IINN8
**M
*C			!Q	B


BqEV

4C
,,q!
Chh E]]299??2r2!]DELLLLL	A	BGGBIIbMLLLL"ZL8rE   ztest_subfigure_double.pngc                  d   t         j                  j                  d       t        j                  dd      } | j                  d       | j                  ddd	      }|d
   j                  d       |d
   j                  d       |d   j                  d       |d   j                  d       |d
   j                  ddddg      }|d
   j                  d       |d
   j                  d       |d
   j                  ddd      }|D ]o  }d}|j                  t         j                  j                  dd      dd      }|j                  d|       |j                  d|       |j                  d|       q |d
   j                  |       |d   j                  d       |d   j                  d       |d   j                  d dd!      }t        |      D ]  \  }}|j                  d"|         |d   j!                  d#       |d   j#                  d$       |d   j                  dd      }	y )%Nr  r  )r+      )r    r   r>   r&   r"   gQ?)r  r   coralz
subfigs[0]z
subfigs[1]gffffff?rj  zsubfigsnest[0]r   TrU     r   g      g      @r  zx-labelr  zy-labelTitlerL   zsubfigsnest[1]r   r!   r  ylabelr   r   )r1   rY   r  r,   r-   r{   r   r   rM   rX   rZ   r5   r3   r   r[   rN   r   r   )
r>   r  subfigsnestaxsnest0r@   r  r`   axsnest1r]   axsRights
             rC   test_subfigure_doubler  6  s    IINN8
**M7
;CLLnnQ$n/GAJW%AJ%AJW%AJ%!*''1QH'EKN,-N  %1~&&q!D&9H 1]]299??2r2C]H
i(3
i(3
Wx01 NB8,N,-N  %1~&&q!D&9HH% %B
rdm$%N[)N[)qz""1a(HrE   c            	      \   t        j                  d      } | j                  dd      }| j                  |d         | j                  |dddf         | j                  |dddf         | j                  |dd dd f         g}d}d	}t        j
                  j                  |d   j                  j                  d
|dz  dz  g       t        j
                  j                  |d   j                  j                  |dz  |g       t        j
                  j                  |d   j                  j                  |dz  |dz  g       t        j
                  j                  |d   j                  j                  |dz  dz  |g       t        j
                  j                  |d   j                  j                  |dz  dg       t        j
                  j                  |d   j                  j                  ||dz  g       t        d      D ]  }||   j                           | j                          y )NTrJ   r!   r  r   r"   r&       r   rI   )r,   r-   r  r  r1   rV   rW   r  minmaxr4   r/   rR   )r>   r?   sub_figsr"  r#  rA   s         rC   test_subfigure_spanningr  `  s   
**
-C			!Q	B"T(#"QqS!V*%"Q!V*%"QRV*%	H 	AAJJx{//33b!a%']CJJx{//33a!eQZ@JJx{//33a!eQU^DJJx{//33a!eAgq\BJJx{//33a!eQZ@JJx{//33aQZ@ 1X "!" rE   c                  \   t        j                  dd      } | j                  dddddg      \  }}|j                  dd	
      }|j	                  |dd df         }|j                  ddgddg       |j	                  |dddf   |      }|j                  ddgddg       |j	                  |ddd	f   |      }d| _        | j                          |j                         }d| _        | j                          |j                         }t        j                  j                  ||       y )NT)r+   r!   )rK   r   r&   r"   r   r,  )r  rd     )r  r  r   g!<LgkX.8@i  i  )r   r   r!   r  g YI_gRϫW@x   i,  )r,   r-   r   r  r/   r  rH  rR   
get_xticksr1   rV   rW   )	r>   	subfig_bl	subfig_brr?   r   r   r  ticks120ticks300s	            rC   test_subfigure_ticksr  }  s7    **g
>C ^^Aq:;Q , AY	 
		ar		2B


1bqb5	
*CKK%'9:tTlKK


1ac6
3

7CKK%'89dD\KJ


1ad7C

8CCG ~~HCG ~~HJJx2rE   ztest_subfigure_scatter_size.png)r-  r.  c                     t        j                         } | j                  dd      }| j                  |d         }|j	                  g dg ddd       |j	                  g dg dg dd       | j                  |d	         }|j                  dd      }||d	   fD ]8  }|j	                  g dg dddd
       |j	                  g dg dg ddd       : y )Nr&   r"   rr  r   s)r  marker)r!   rI   rf   )r   r   r  r   r   )r  r  r   r   )r,   r-   r  r/   r  r  rM   )r>   r?   r   r
  r\   r@   s         rC   test_subfigure_scatter_sizer    s     **,C			!Q	B
//"Q%
 CKK	93K7KK	9SKARU#D
--1
CCFm P


9i2c
E


9i<3
OPrE   c                     t        j                  d      } | j                         }|j                  d      }|j	                  dd      }|j                  |       t        j                         }| j                  |d       y )Nr  r   r   r&   ra  rs  )	r,   r-   r   r/   rw  	bar_labelrf  rg  r]  )r>   r  r@   r   buffers        rC   test_subfigure_pdfr     sa    
**M
*CnnG			S	!B
q!ALLOZZ\FKKuK%rE   c                     t        j                         j                  dddd      } d}d}t        j                  j                  | d   j                  j                  d	|d
z  g       t        j                  j                  | d   j                  j                  |dz  |g       t        j                  j                  | d   j                  j                  |dz  |d
z  g       t        j                  j                  | d   j                  j                  |dz  |g       t        j                  j                  | d   j                  j                  |dz  |d
z  g       t        j                  j                  | d   j                  j                  ||g       t        j                  j                  | d   j                  j                  ddg       t        j                  j                  | d   j                  j                  |dz  |dz  g       t        j                  j                  | d   j                  j                  |dz  dg       t        j                  j                  | d   j                  j                  |dz  |dz  g       t        j                  j                  | d   j                  j                  |dz  dg       t        j                  j                  | d   j                  j                  ||dz  g       y )Nr"   r!   rz   gUUUUUU?)hspacer  r  r  r  r   r   r  r  gffffff?g?r'   r  rB  r   r   rC  r  )	r,   r-   r   r1   rV   rW   r  r  r  )r  r"  r#  s      rC   test_subfigures_wspace_hspacer    sG   zz|&&q!C&EHAAJJx~2266QWFJJx~2266S!EJJx~2266T1s78KLJJx~2266T1FJJx~2266S!c'8JKJJx~2266A?JJx~2266A?JJx~2266S!c'8JKJJx~2266T1FJJx~2266T1s78KLJJx~2266S!EJJx~2266AGErE   c                  B   t        j                         } | j                  ddd      }| j                  ddd      }|J ||usJ t        j                          t        j                         } | j                  dddd      }| j                  dddd      }|J ||usJ t        j                          t        j                         } | j                  dddd      }| j                  ddd      }|J |j                  dk(  sJ ||usJ t        j                          y )Nr&   r   r   rectilinear)r,   r-   r/   rh   rs  r>   r@   r   s      rC   test_add_subplot_kwargsr    s
   
**,C	Aq	!B
//!Q
"C>>b==IIK
**,C	AqW	5B
//!Qg/
6C>>b==IIK
**,C	AqW	5B
//!Q
"C>>88}$$$b==IIKrE   c                  B   t        j                         } | j                  g d      }| j                  g d      }|J ||usJ t        j                          t        j                         } | j                  g dd      }| j                  g dd      }|J ||usJ t        j                          t        j                         } | j                  g dd      }| j                  g d      }|J |j                  dk(  sJ ||usJ t        j                          y )Nr   r   r   r  )r,   r-   r   rh   rs  r  s      rC   test_add_axes_kwargsr	    s    
**,C	l	#B
,,|
$C>>b==IIK
**,C	lw	7B
,,|,
8C>>b==IIK
**,C	lw	7B
,,|
$C>>88}$$$b==IIKrE   c                    t        j                  dd       t        j                         \  }|j                  j
                  fd}t        d|      j                          j                         dgk(  sJ fd}t        d|      j                          t        j                  j                  j                  d      dd	g       y )
Nr-  cannot show the figurec                  `    t        d j                  g d      d j                          y )Nbutton_press_eventrM  r.  r&   )r   rD  _processr>   transs   rC   single_pressz!test_ginput.<locals>.single_press  s)    'IeHoIqIRRTrE   rM  r  c                     t        d j                  g d      d j                          t        d j                  d      j                          t        d j                  g d      d j                          t        d j                  g d      d j                          t        d j                  g d      d	 j                          y )
Nr  r  r&   key_press_event	backspacer  r   rz   r   r  r"   )r   rD  r  r   r  s   rC   multi_pressesz"test_ginput.<locals>.multi_presses
  s    'IeHoIqIRRT"CJJ<EEG'IeHoIqIRRT'IeHoIqIRRT'GeFmGQGPPRrE   r!   r  r  )r4  r6  r,   rM   	transDatar  r   startginputr1   rV   rW   )recwarnr@   r  r  r>   r  s       @@rC   test_ginputr    s    H&>?llnGCLL""EU 
"l!!#::<H:%%%S 
"m""$JJszz!}x.BCrE   c           
         t        j                  dd       t        j                         }|j	                  d      J t        dt        d|j                  d      j                        j                          |j	                         du sJ t        dt        d|j                  d	d	d
      j                        j                          |j	                         du sJ y )Nr-  r  rM  )timeoutr  r   Tr  r   r&   F)r4  r6  r,   r-   waitforbuttonpressr   r   rD  r  r  r   )r  r>   s     rC   test_waitforbuttonpressr!    s    H&>?
**,C!!"!-555	"h(#**c:CCDJJL!!#t+++	"j-szz1aCLLMSSU!!#u,,,rE   c                      t        d      } | j                  ddd      }| j                         dk(  sJ |j                         dk(  sJ y )Nzwhole Figure)rT   r&   z
sub figure)r   r   r   r  s     rC   test_kwargs_passr#    sK    
~
&CnnQn6G==?n,,,,...rE   c                 @   |j                  ddd       |j                  ddd       |j                  ddd       t        j                  ddddd	      5  | j                  d       | j                  d       | j                  d       d d d        y # 1 sw Y   y xY w)
Nxlabelr   r   )r   r   r  r  lightr   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)r   r   r{   r   r  )r  r  s     rC   test_rcparamsr'  '  s    hvB7hvB7WW26	v-//6-/1 
2 # 	8$8$'"# # #s   4BBc                  L   t        j                         \  } }|j                  ddgddg       |j                  d       t	        j
                  |       }|j                  d   |usJ |j                  d   j                         dk(  sJ |j                  d   j                  d       |j                         dk(  sJ |j                  dd       | j                          |j                          |j                         d	k(  sJ |j                  d   j                         d
k(  sJ y )Nr   r&   r"   r!   rW  linearrM        Y@)rM  r*  r  )r,   rM   r0   rX  copydeepcopyr   r  r  rR   get_xlim)r   r@   r   s      rC   test_deepcopyr.  5  s    ||~HD"GGQFQFMM%==D 99Q<r!!!99Q<""$---IIaLH%==?e### KKc!!;;=K'''99Q<  "f,,,rE   c                      t        d      } | j                  j                  d       | j                  dk(  sJ t	        j
                  t	        j                  |             }|j                  dk(  sJ y )Nr   r  r,  i&  )r   rD  rv  rH  pickleloadsdumps)r>   r   s     rC   %test_unpickle_with_device_pixel_ratior3  N  sT    
R.CJJ&&q)77d??<<S)*D88r>>rE   c                      ddi} t        |       }t        j                  ddddg|        | |k(  sJ t        j                  dddg|        y )Nr  rM  r&   r"   )rd  gridspec_kwAB)dictr,   rM   rD  )r?   gs_origs     rC   test_gridspec_no_mutate_inputr9  V  sL    
"B2hGLLAQF;==t1a&bArE   )r  ra  r   r  r   svgzc                 `    t               j                  t        j                         | i        y )Nrd  metadata)r   r]  rf  rg  r  s    rC   test_savefig_metadatar?  ^  s    
HRZZ\#;rE   )jpegrc  rb  tiffwebprawrgbac                     t        j                  t        d      5  t               j	                  t        j                         | i        d d d        y # 1 sw Y   y xY w)Nzmetadata not supportedr   r<  )rl   rm   rn   r   r]  rf  rg  r>  s    rC   test_savefig_metadata_errorrF  c  sG    	z)A	B @cB?@ @ @s   /AAc                  :   ddddd} t        g | j                               }t        j                  t	        j
                  j                  d	i |       }t        j                  t        d      5  |j                         |k(  sJ 	 d d d        y # 1 sw Y   y xY w)
Nr   r  gQ?g{Gz?)r  h_padr  r  r   zwill be deprecatedr   ru   )r  rT  r,   r-   r   layout_enginer   rl   r   PendingDeprecationWarningget_constrained_layout_pads)paramsexpectedr>   s      rC    test_get_constrained_layout_padsrN  i  s    dddKF'v}}'(H
**C--EEOO
PC	/7K	L =..0H<<<= = =s   1BBc                  j   t               } t        j                         }| j                  |d       |j	                  d       d|j                         v sJ | j                  d       t        j                         }| j                  |d       |j	                  d       d|j                         vsJ y )Nr   rs  r   z<g F)r   rf  StringIOr]  seekr  r  )r>   rw  s     rC   test_not_visible_figurerR  q  s    
(C
++-CKKEK"HHQKCHHJOOE
++-CKKEK"HHQK
"""rE   )r+  r   rf  pathlibr   r0  platform	threadingr   typesr   r4  numpyr1   rl   PILr   
matplotlibr   r   matplotlib.testing.decoratorsr	   r
   matplotlib.axesr   matplotlib.backend_basesr   r   matplotlib.figurer   r   matplotlib.layout_enginer   r   r   matplotlib.tickerr   r   r   matplotlib.pyplotpyplotr,   matplotlib.datesdatesr/  machinerD   ra   rp   rv   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r$  r  r  r?  r-  contextrI  rO  infrK  rR  r[  r_  rh  rm  paramrk  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r+  r1  r6  r8  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r!  r#  r'  r.  r3  r9  r?  rF  rN  rR  ru   rE   rC   <module>rh     s     	     !       O   9 0? ? P O  ! ()uen+8++-9atE$E$N 2F0$ 4& >"# $ ?#$ %8
')X $%&2 '207
. %& $U^.9.4!6	7:7::$, "<=$6 >$6N 9, , KVVQK+ 
+
+@8>*0N/ FLLv{{2259:;FLL!4!4W!= >?% 	&-9 &-.(( ) /(*<
(1-h (L )L M<#@A B / 08  BC= D=&2'$ '78N 9Nb+ 7
 
&$ -.g07.4!6"$"	$"  <=* >*r/ r/j	 '(!,f 57979,  *+7!,f 54A9A9* ./w!,f 57%)7%)P!: 73 36 45W#%P%P&F222D,-/ (
# )
#-2B  JK< L<  UV@ W@
=#rE   