
    G8c+              
          d dl Z d dlmZ d dlZd dlmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlZd dlZd dlZd dlmZ d dlZd dlmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZmZmZ d dl m!Z!m"Z"m#Z# d dl$m%Z& d dl'm(Z)  edgddg ejT                         dk(  rd nd      d        Z+d Z,d Z-d Z.d Z/ edg      d        Z0 edg      d        Z1d Z2d Z3d Z4 edg      d         Z5d! Z6 ed"gddgd#d$d%&      d'        Z7d( Z8d) Z9d* Z:d+ Z;d, Z<ejz                  j}                  d-g d.      d/        Z?ej                  j                  d0      d1        ZBejz                  j}                  d2d3ej                  fd4ej                  d3fg      d5        ZEd6 ZFd7 ZGd8 ZHd9 ZId: ZJejz                  j}                  d; ej                  d<ejz                  j                  d<      g=       ej                  d>ejz                  j                  d>      g=      g      d?        ZMd@ ZNdA ZOdB ZP eddCgD      dE        ZQejz                  j}                  dFg dG      dH        ZRdI ZSdJ ZTdK ZUejz                  j}                  dLdMdNg      dO        ZVdP ZWej                  j                  dQ      dR        ZXdS ZY edTgdQdUdVdWdXY      dZ        ZZ eg d[D      d\        Z[ G d] d^      Z\d_ Z] ed`gdQdadVib      dc        Z^dd Z_de Z` edfgdQdadVidgh      di        Za edjgdQdadVib      dk        Zbdl Zcej                  j                  dQ      dm        Zd edngdQdXo      dp        Zedq Zfdr Zgds Zhdt Zidu Zjdv Zk edgD      dw        Zldx Zmdy Zndz Zoy){    N)datetime)Path)Timer)SimpleNamespace)Image)gridspec)image_comparisoncheck_figures_equal)Axes)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        >/usr/lib/python3/dist-packages/matplotlib/tests/test_figure.pytest_align_labelsrA      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flatr2   r-   r.   r/   align_ylabelsalign_xlabelsdraw_without_renderingzerosr3   labelget_positionr8   testingassert_allclose
pcolormeshrandomrandncolorbar)r;   axsnnr=   xnynpcs          r@   test_align_labels_stray_axesr^   E   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1rB   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   rF      ) ra   rd   rb   rd   r(   rc   rd   )
r)   closer*   get_fignumsget_figlabelsgcfpytestraises
ValueErrorr   )	fig_todays    r@   test_figure_labelrm   h   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    threerF   )r)   r*   fignum_existsre    rB   r@   test_fignum_existsrs      s    JJuJJqMJJwJJLU###QW%%%QIIeIIaL  '''  ####rB   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)ru   clear      ?r    T)r)   r*   suptitletextsget_texttextrJ   )text1text2fig0tfig1fig2ax2s          r@   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 )Nra   rc   rb   r   r$   r)	r)   r*   r,   	set_title	get_labelr-   r.   r/   re   )r;   r=   s     r@   test_figurer      s     **W
C		BLL!GGBIIaLJJzHHaVaVS!JJwIIjrB   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)rQ   coloryr   rw   k_yzb)r)   rJ   r-   legendr;   rY   s     r@   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JJLrB   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      r@   test_gcar      s    
**,C ,,|
$C779 //#
C779 LL88Sz!!!779 GGCL88Sz!!! OOC88Sz!!!779rB   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   ri   rj   rk   	TypeErrorr;   s    r@   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        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   Bx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   txY w# 1 sw Y   Kx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 1 <= num <= 4rc   zmust be a three-digit integerr   r!   z2takes 1 or 3 positional arguments but 2 were givenz2takes 1 or 3 positional arguments but 4 were givenr   rF   z2Number of rows must be a positive integer, not '2'2z5Number of columns must be a positive integer, not 2.0g       @z8The Subplot must have been created in the present figure)r)   r*   ri   rj   rk   r,   r   rJ   r;   _r=   s      r@   test_add_subplot_invalidr      s   
**,C	zK
M !1a ! 
zH
J !1a ! 
z)D	E !1a !	z)D	E !1a ! 
z)H	I 	z)H	I  
y ); 
< 1 
y ); 
< $1a#$ 
z'
( # 	Q"# 
z'
( # 	3"# LLNEAr	z.
/  	 ?! !! !! !! !   $ $# ## #
 s   J'JJJ+J8K6K,K$K,K8)LJJJ(+J58KKKK),K58LLfigure_suptitlec                      t        j                         \  } }| j                  dd       | j                  ddd       y )Nhellor   )r   titler      )r   rotation)r)   rJ   rx   )r;   r   s     r@   test_suptitler     s3    \\^FCLLL$LLbL1rB   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)   rJ   mplfont_managerFontPropertiesrx   get_fontsizeget_size_in_points
get_weight)r;   r=   fpstxts       r@   test_suptitle_fontpropertiesr     s{    llnGC



)
)wv
)
FC
,,(,
=C!7!7!9999>>s~~////rB   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$   figsizer   r         333333?red)radiusalphar   )	r)   r*   set_facecolorpatch	set_alphapatchesappendr   CirclePolygonr   s    r@   
test_alphar     sk     **aV
$Ck"IIKKs{{00	R3% 1 9 :rB   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$   )ri   warnsRuntimeWarningr1   r   rcParamsr)   r*   )r>   s    r@   test_too_many_figuresr   ,  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       r@   r   z7test_iterability_axes_argument.<locals>.MyAxes.__init__>  s    MM$000rB   )__name__
__module____qualname__r   rr   rB   r@   MyAxesr   =  s
    *. 	1rB   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)rk   )r   items     r@   __getitem__z;test_iterability_axes_argument.<locals>.MyClass.__getitem__C  s    s{ !344 rB   c                     d| ifS )Nr   rr   )r   r   s    r@   _as_mpl_axesz<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesG  s    It,,,rB   N)r   r   r   r   r   )r   s   r@   MyClassr   A  s    	5	-rB   r   r$   r   )r   r)   r*   r,   re   )r   r;   r   s     @r@   test_iterability_axes_argumentr   2  sG    1 1- - **,COOAq!	O2IIcNrB   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 )Nrc   r$   r    rF   )r$   r   r   )r)   r*   set_figwidthget_figwidthset_figheightget_figheightset_size_inchesr   s    r@   test_set_fig_sizer  O  s    
**,C Q""" a!### 1"""!### """!###rB   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)   rJ   removeravelr   lenr;   rY   r=   s      r@   test_axes_remover  e  s~    ||Aq!HCKiik#2 SXX~~v;chh&&&sxx=ArB   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    rw   )r    r    )r)   	figaspectr.   float64rP   )whs     r@   test_figaspectr  n  s    ==AA67DAqq5A::==DAqq5A::==&)*DAqq5C<<==&)*DAqq5A::rB   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   rF   rc         r    ignorez=FixedFormatter should only be used together with FixedLocator皙?r'   )r  r  r   Fr  )r  r  Tr  )mdatesdatestr2numr)   rJ   r-   
yaxis_date
xaxis_dater3   set_minor_locatorr   warningscatch_warningsfilterwarningsset_minor_formatterr   autofmt_xdater   r6   intget_rotation)
r  datetimeangleminorsr   r   r;   r=   rQ   s
             r@   test_autofmt_xdater)  y  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)rF   rF   r   i  2      )r)   r*   rO   canvasrendererheightwidthdpir   s    r@   test_change_dpir3    s    
**V
$C ::%%,,,::$$+++CG ::%%,,,::$$+++rB   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   )ri   rj   rk   r)   r*   r  )r1  r0  r;   s      r@   test_invalid_figure_sizer5    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        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   nxY w# 1 sw Y   y xY w)	Nz.missing 1 required positional argument: 'rect'r   皙?rw   z#multiple values for argument 'rect'r   )rectz5The Axes must have been created in the present figure)
r)   r*   ri   rj   r   r   rk   r.   nanrJ   r   s      r@   test_invalid_figure_add_axesr:    s    
**,C	yM
O  
z	" +b"b"&&)*+ 
y(M	N 6\56 LLNEAr	z&
'  	R  + +6 6 s/   D"$D")D.;D:D"D+.D7:E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)   rJ   rL   r-   
set_yscale
set_xscaler  r3   get_ticklabelsr8   r  s      r@   test_subplots_shareax_loglabelsrC    sM   ||AqdEJHChh ,
l+, MM%MM%!Q$i ?C//f/=>>>>? !Q$i >3rxx..V.<====> !Q$i ?C//f/=>>>>? !Q$i >3rxx..V.<====>rB   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*   ri   rj   r   savefig)r;   msgs     r@   test_savefigrG    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*   ri   rj   r   rE  ioBytesIO)r;   rL  s     r@   test_savefig_warnsrP    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.pngrI  )r)   r*   ri   rj   ModuleNotFoundErrorrE  rk   r   s    r@   test_savefig_backendrU    s    
**,C	*2M	N 8F$678	zL
N /J./ /8 8/ /s   B'BBBrS  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   rL  r    )r)   rJ   r-   rN  rO  rE  r   openloadr.  _set_device_pixel_ratio)rS  r;   r=   bufratio1ratio2s         r@   test_savefig_pixel_ratiorb    s    
 llnGCGGI	 C&C
 llnGCGGIJJ&&q)	 C&C
 V  s   9D"9D."D+.D7c                  R    t        j                  dd      } t        |       dk(  sJ y )N)r(   r   r(   )r   r2  z!<Figure size 100x200 with 0 Axes>)r)   r*   reprr   s    r@   test_figure_reprre    s%    
**X2
.C9;;;;rB   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    r@   test_valid_layoutsrj    s    

C##%%%))+++

 C!!!))+++

&C##%%%%%'''rB   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)Nrg  r   皙?)r%   z1The Figure parameters 'layout' and 'tight_layout'r   r   F)r   tight_layoutz7The Figure parameters 'layout' and 'constrained_layout')r   rH   zInvalid value for 'layout'foobarr    zColorbar layout of new layoutr   )r)   rJ   ri   r   UserWarningsubplots_adjust
isinstanceget_layout_enginer   r   r   rj   rk   set_layout_enginerU   r.   rV   rW   rX   RuntimeErrorr   )r;   r=   wstr]   s       r@   test_invalid_layoutsrv  %  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rI  r   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)gidrl  l2)r   r   C1)	transformr{  )ry  rw   皙?C2)g      @rl  g?crimsonC3)r~  r   r{     )r~  r{  zorderFr   )r~  clip_onr  r{  )r~  r   r  r  r{  )	r2  rJ   r)   Line2DCircledpi_scale_trans
add_artistr  transFigure)	fig_testfig_refrz  r|  r1r2r3r   r   s	            r@   test_add_artistr  Y  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rB   fmt)r   rI  psepsr   c                    t        |dj                  |             }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   rL  r)   rE  r\  encodereadlower)r  tmpdiroutfiles       r@   test_fspathr  v  sq    
vy'',
-CKK	$ =4 zz'"diin&:&:&<<<<= = =s   3A??B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$   g      ?rw   zThis dangles over endgR"@r    r  g|?5^?FgET@T)bbox_extra_artists)r)   rJ   set_xlimr{   r.  get_rendererabsget_tightbboxx1r2  x0set_in_layout)r;   r=   r   r/  x1Nom0x1Noms         r@   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! "$%& & &rB   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r<  r   i  )r)   rJ   r  r-   r   rq  r3   get_major_formatterr  AutoDateFormatterset_major_formatterr   r   s     r@   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%' ' 'rB   c                      t        j                  dd      \  } }|d   j                          | j                  j	                          y )Nr    Tr  r   )r)   rJ   r  r.  drawr   s     r@   test_removed_axisr    s1    ||Ad+HCFMMOJJOOrB   
clear_methrv   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$   )ncolsnrowsr   r   r$   c              3   :   K   | ]  }|j                   v   y wr   r   .0r=   r;   s     r@   	<genexpr>z$test_figure_clear.<locals>.<genexpr>       0"rSXX~0   c              3   :   K   | ]  }|j                   v   y wr   subfigsr  sfigr;   s     r@   r  z$test_figure_clear.<locals>.<genexpr>       7tts{{"7r  c              3   :   K   | ]  }|j                   v   y wr   r  r  s     r@   r  z$test_figure_clear.<locals>.<genexpr>  r  r  c              3   :   K   | ]  }|j                   v   y wr   r  r  s     r@   r  z$test_figure_clear.<locals>.<genexpr>  r  r  )r)   r*   rv   r   r,   getattrr1   add_gridspecadd_subfigurer  r  r`   )r  r=   r>   r   r<   subfigsubaxesmainaxesr  r  r;   s             @r@   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    r@   test_clf_not_redefinedr    s,    **, +ENN***+rB   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)   rJ   scatterr.  r  staler   bboxr  r1  y0r0  pick)r;   r=   mouse_events      r@   test_picking_does_not_staler  
  s    llnGCJJsQC$J-JJOOyy=!BGGJJ1B$B$&GGJJ!1C$C)+d<K HH[yy=yrB   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   rc   r$   r   )rF   r  )r   r  )rF   rc   )r  r   )
r)   r*   r,   get_subplotspecrowspanr1   colspanri   rj   
IndexError)r;   r   r   ax3ax4s        r@   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)bbox_inchesr   T)styler   remove_textc                      t        j                         } | j                  dd      }| j                  |d         }| j                  |d   d      }|j	                  d       |j	                  d       y )	Nr$   r    r   r   r  r   r   rw   )r    r$   r$   )r)   r*   r  r,   set_box_aspect)r;   r<   r   r   s       r@   test_tightbbox_box_aspectr  *  se    
 **,C			!Q	B
//"T(
#C
//"T(t/
4Cry!rB   )r   rI  r  r   c                     |j                         }|j                  t        d             | j                         }|j                  t        d      d       y )Nrc   T)animated)rJ   r-   r1   )r  r  ax_refax_tests       r@    test_animated_with_canvas_changer  7  sB    F
KKa!GLLqDL)rB   c                      e Zd Z edg      ej
                  j                  dg dg dgg dg dgg      d               Z edg      d	        Z edg      d
        Z	 edg      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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      d'        Z edg      d(        Zej
                  j                  dg d)      d*        Zd+ Zd, Zy)-TestSubplotMosaicr   rw  r   )Ar  B)CDr  )r$   r$   r    )r   rF   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   sortedr.   uniquer  r  r,   )r   r  r  r   	grid_axesr   r=   labelsr<   axAaxBaxCaxDs                r@   
test_basiczTestSubplotMosaic.test_basicA  s   
 ++A.	__& 	EArLLO	 		!%6{c)n,,,!!!Q'!!"RaR!V*-fQi !!"QT(+fQi !!"T(+fQi !!"T(+fQi rB   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Hrg  r$   r    r  r  )	rs  r  valuesr   r   r  subgridspecrK   r,   )r   r  r  r   r   r  r=   r<   gs_leftjr   r   rQ   gs_rights                 r@   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rB   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 )Nrg  r  r  r  r  r  r    r$   r  r  r  r  )rs  r  r   r   r  r  r,   )r   r  r  r   r   r  r   r=   r<   gs_nr  r  r  r  axFs                  r@   test_nestedzTestSubplotMosaic.test_nesteds  s>    	!!-0""=13Z#s$UQCL++A.	__& 	EArLLO	 !!!Q'$x##Aq)!!$t*-c!!$t*-c!!$t*-c!!$t*-c!!"T(+crB   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  r  )r  )r   r  r  r   xts        r@   test_nested_tuplez#TestSubplotMosaic.test_nested_tuple  s=    o./s|,#.rB   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 )	Nr  empty_sentinelr  r    r  r   r  r$   )r  r   r   r  r  r  r,   )r   r  r  r   r!  r   r  r   r=   rownamer  r<   r  r  s                  r@   
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                    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        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nz
must be 2Dr   foobar)ri   rj   rk   r)   r  )r   s    r@   test_fail_list_of_strz'TestSubplotMosaic.test_fail_list_of_str  so    ]]:\: 	/u~.	/]]:\: 	(w'	( 	(	/ 	/	( 	(s   A7B7B B
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  )r  r  r,   )	r   r  r  r)  r   r  r<   r  r  s	            r@   test_subplot_kwz!TestSubplotMosaic.test_subplot_kw  sv     VH++A*+E	%2
!!!Q'!g!!"T(9j9!g!!"T(9j9rB   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  r  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   _normalize_grid_string)r   	normalizes     r@   test_string_parserz$TestSubplotMosaic.test_string_parser  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rB   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
)r  stripsplitlist)r   r  r  r1  r  lns         r@   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 lengthr  r9  c                     t        j                         }t        j                  t        |      5  |j                  |       d d d        y # 1 sw Y   y xY w)Nr   )r)   r*   ri   rj   rk   r  )r   r   r   r;   s       r@   	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  )r  object)r   r  r  s      r@   test_hashable_keysz$TestSubplotMosaic.test_hashable_keys	  s0    &(FH!5 67c
|,rB   )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*   r  r6  r   r  )r   r1  r;   ax_dicts       r@   test_user_orderz!TestSubplotMosaic.test_user_order  sX     jjl$$[1K DM111CHH~gnn&6!7777rB   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  r  r  r  r  r  I	ABCDEFGHIrF  r   r   r;   rG  s       r@   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7rB   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  r  r  r  r  r  rJ  T)r<  r=  r?  logit)xscaleyscalec              3   l   K   | ],  }|j                         d k(  xr |j                         dk(   . yw)r?  rO  N)
get_xscale
get_yscale)r  r=   s     r@   r  z3TestSubplotMosaic.test_share_all.<locals>.<genexpr>/  s6      / ==?e+J70JJ /s   24)r)   r*   r  setr`   r  rL  s       r@   test_share_allz TestSubplotMosaic.test_share_all$  s    C::  #JC3%%! " # $	
 jjl$$VD$Fg6 /$^^-/ / 	/ /rB   )r   r   r   r
   ri   markparametrizer	  r  r  r  r$  r(  r+  r0  r8  r;  r>  rH  rM  rV  rr   rB   r@   r  r  @  s   UG,[[09i2HI! -!. UG,E -E, UG, -B UG,/ -/ UG,[[DkD#;'.Cj3*%v.AhC!1%$i$#T*#ha!6*!fq!fq!	

!
 -!.( UG,[[\Bw0G+NO: P -:F$ UG,[[]E
 -
 [[ sc3Z(@ sdc3Z#s$<=>F Gc
SE*+c3Z89	
*"+*"
 UG,- -- [[]GI8I88/rB   r  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  rF   )r   r    )r    r$   )r  r;   N)r)   r*   r,   subplot2gridr  get_gridspec)r;   r   r   r  gs1gs2gs3s          r@   test_reused_gridspecr_  3  s    
**,C
//!Q
'C
//!Q
"C


661#
>C




,
,
.C




,
,
.C




,
,
.C#::#::rB   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 ]4  }|j                  t         j                  j                  dd      dd	      }6 |d   j                  ||d       |d   j                  d       | j                  dd       y )N!N,rg  r   r$   r    r   r   vminvmaxrI   	Left Sider   bottom)r=   locationz
Right SideFigure suptitlexx-largefontsize)r.   rV   seedr)   r*   
subfiguresrJ   rL   rU   rW   rX   rx   )r;   subrY   r=   r]   s        r@   test_subfigurerp  B  s%    IINN8
**M
*C
..A
C
a&//!Q
Chh E]]299??2r2!]DEFOOB3OFOOK 
a&//!Q
Chh E]]299??2r2!]DEFOOB3O2FOOL!LL"ZL8rB   c                      t        j                  d      } | j                  dd      }t        j                  j                  | j                  | j                  j                               j                  d       y )Nrg  r   r$   r    g       @)
r)   r*   rn  r.   rS   rT   r  r.  r  r1  )r;   ro  s     r@   test_subfigure_tightbboxrr  X  sV    
**M
*C
..A
CJJcjj5578>>rB   c                     t        j                  d      } | j                         }|j                         | j                         k(  sJ |j	                  d       |j                         dk(  sJ | j                         dk(  sJ y )Nr#   r2  r-  )r)   r*   rn  get_dpiset_dpir;   sub_figs     r@   test_subfigure_dpiry  b  sl    
**
CnnG??---OOC??###;;=CrB   ztest_subfigure_ss.pngg{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 )Nra  rg  r   r$   r    r   pink)r   r   rb  rc  rI   rf  r   r   ri  rj  rk  )r.   rV   rm  r)   r*   r  r  rJ   rL   rU   rW   rX   rx   r,   r-   r/   r   )r;   r<   ro  rY   r=   r]   s         r@   test_subfigure_ssr|  l  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8rB   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 )%Nra  rg  )r(      )r   r   r;   r$   r    gQ?)wspacer   coralz
subfigs[0]z
subfigs[1]gffffff?)height_ratioszsubfigsnest[0]r   Tr=     r   g      g      @rc  zx-labelrk  zy-labelTitlerI   zsubfigsnest[1]r   r   r  ylabel	supxlabel	supylabel)r.   rV   rm  r)   r*   rx   rn  r   rJ   rU   rW   r2   r0   r   rX   rK   r  r  )
r;   r  subfigsnestaxsnest0r=   rl  r]   axsnest1rZ   axsRights
             r@   test_subfigure_doubler    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(HrB   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 )NTrG   r   r  r   r    r$   i  i  g        rF   )r)   r*   r  r  r.   rS   rT   r  minmaxr1   r,   rO   )r;   r<   sub_figsr  r  r>   s         r@   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 "!" rB   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   )rH   r   r$   r    r   r  )r  width_ratios   )r  r  r   g!<LgkX.8@i  i  )r   r   r   r  g YI_gRϫW@x   i,  )r)   r*   rn  r  r,   r  r2  rO   
get_xticksr.   rS   rT   )	r;   	subfig_bl	subfig_brr<   r   r   r  ticks120ticks300s	            r@   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2rB   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    rZ  r   s)r  marker)r   rF   rc   )r   r   (   r   r   )r  r  r   r   )r)   r*   r  r,   r  r  rJ   )r;   r<   r   r  rY   r=   s         r@   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rB   c                     t        j                  d      } | j                         }|j                  d      }|j	                  dd      }|j                  |       t        j                         }| j                  |d       y )Nrg  r   r   r$   rI  r[  )	r)   r*   rn  r,   r'  	bar_labelrN  rO  rE  )r;   rx  r=   r   buffers        r@   test_subfigure_pdfr    sa    
**M
*CnnG			S	!B
q!ALLOZZ\FKKuK%rB   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,   re   r#  r;   r=   r   s      r@   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==IIKrB   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   re   r#  r  s      r@   test_add_axes_kwargsr    s    
**,C	l	#B
,,|
$C>>b==IIK
**,C	lw	7B
,,|,
8C>>b==IIK
**,C	lw	7B
,,|
$C>>88}$$$b==IIKrB   c                 p   t        j                  dd       t        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     j                   j                  g  j                  j                  d      d  y )Nr7  r  r$   )r.  button_press_event	transDatar~  r=   r;   s   r@   single_pressz!test_ginput.<locals>.single_press7  s.    %

%%Kr||'='=h'GKKrB   r7  r  c                      j                   j                  g  j                  j                  d      d  j                   j	                  d        j                   j                  g  j                  j                  d      d   j                   j                  g  j                  j                  d      d   j                   j                  g  j                  j                  d      d  y )Nr  r$   	backspaceg333333?r   rw   r   r  r    )r.  r  r  r~  key_press_eventr  s   r@   multi_pressesz"test_ginput.<locals>.multi_presses=  s    %

%%Kr||'='=h'GKK

"";/%

%%Kr||'='=h'GKK%

%%Kr||'='=h'GKK%

%%Ir||'='=f'EIqIrB   r   r  r  )
r  r   r)   rJ   r   startginputr.   rS   rT   )recwarnr  r  r=   r;   s      @@r@   test_ginputr  3  s    H&>?llnGCL 
"l!!#::<H:%%%J 
"m""$JJszz!}x.BCrB   c                    t        j                  dd       t        j                         }|j	                  d      J t        d|j                  j                  d      j                          |j	                         du sJ t        d|j                  j                  d      j                          |j	                         du sJ y )	Nr  r  r7  )timeout)r   T)r   r   r$   F)
r  r   r)   r*   waitforbuttonpressr   r.  r  r  r  )r  r;   s     r@   test_waitforbuttonpressr  H  s    H&>?
**,C!!"!-555	"cjj((&1779!!#t+++	"cjj++Y7==?!!#u,,,rB   c                      t        d      } | j                  ddd      }| j                         dk(  sJ |j                         dk(  sJ y )Nzwhole Figure)rQ   r$   z
sub figure)r   rn  r   rw  s     r@   test_kwargs_passr  R  sK    
~
&CnnQn6G==?n,,,,...rB   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  rx   r   
rc_context)r  r  s     r@   test_rcparamsr  Z  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   r?  linearr7        Y@)r7  r  r  )r)   rJ   r-   r@  copydeepcopyr   rT  r  rO   get_xlim)r   r=   r   s      r@   test_deepcopyr  h  s    ||~HD"GGQFQFMM%==D 99Q<r!!!99Q<""$---IIaLH%==?e### KKc!!;;=K'''99Q<  "f,,,rB   c                      t        d      } | j                  j                  d       | j                  dk(  sJ t	        j
                  t	        j                  |             }|j                  dk(  sJ y )Nr   rt  r  i&  )r   r.  r^  r2  pickleloadsdumps)r;   r   s     r@   %test_unpickle_with_device_pixel_ratior    sT    
R.CJJ&&q)77d??<<S)*D88r>>rB   c                      ddi} t        |       }t        j                  ddddg|        | |k(  sJ t        j                  dddg|        y )Nleftr7  r$   r    )r  gridspec_kwAB)dictr)   rJ   r  )r<   gs_origs     r@   test_gridspec_no_mutate_inputr    sL    
"B2hGLLAQF;==t1a&bArB   )pr  r   rN  pathlibr   r  platform	threadingr   typesr   r  numpyr.   ri   PILr   
matplotlibr   r   matplotlib.testing.decoratorsr	   r
   matplotlib.axesr   matplotlib.figurer   r   matplotlib.layout_enginer   r   r   matplotlib.tickerr   r   r   matplotlib.pyplotpyplotr)   matplotlib.datesdatesr  machinerA   r^   rm   rs   r   r   r   r   r   r   r   r   r   r   r   r  r  r  rW  rX  r)  r  contextr3  r9  infr5  r:  rC  rG  rP  rU  paramrS  rb  re  rj  rv  r  r  r  r  r  r  r  r  r  r  r  r  r_  rp  rr  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rr   rB   r@   <module>r     s     	     !       O   0? ? P O  ! ()uen+8++-9atE$E$N 2F0$ 4& >"# $ ?#$ %8
'$N $%&2 '20 %& $U^.9.4!6	7:7::$, "<=$6 >$6N 9, , KVVQK+ 
+
+&>*0N/ FLLv{{2259:;FLL!4!4W!= >?% 	&<
(1-h / 08  BC= D=&2'$ '78N 9Nb+ 7
 
&$ -.g07.4!6"$"	$"  <=* >*p/ p/f '(!,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&22D*-/ (
# )
#-2BrB   