
    P/Pht              
       
   d dl 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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j+                    dk    rd nd          d             Z, eddg ej+                    dk    rd ndd          d             Z-d Z.d Z/d Z0d Z1d Z2d Z3 ed g ej+                    d!k    rd"nd #          d$             Z4 ed%g          d&             Z5d' Z6d( Z7d) Z8 ed*g          d+             Z9d, Z:d- Z;d. Z< ed/gddgd0d1d23          d4             Z=d5 Z>d6 Z?d7 Z@d8 ZAd9 ZBejC        D                    d:g d;          d<             ZEd= ZFejG        H                    d>          d?             ZIejC        D                    d@dAejJ        fdBejK        dAfg          dC             ZLdD ZMdE ZNdF ZOdG ZPdH ZQejC        D                    dI ejR        dJejC        S                    dJ          gK           ejR        dLejC        S                    dL          gK          g          dM             ZTdN ZUdO ZV ejW        dPdQi           edgR          dS                         ZXdT ZYdU ZZdV Z[ edgR          dW             Z\ejC        D                    dXdYdZg          d[             Z]d\ Z^ edd]gR          d^             Z_ejC        D                    d_g d`          da             Z`db Zadc Zbdd ZcejC        D                    dedfdgg          dh             Zddi ZeejG        H                    d          dj             Zfdk Zg edlgddmdndodQp          dq             Zh eg drR          ds             Zi G dt du          Zjdv Zk edwgddxdniy          dz             Zld{ Zmd| Zn ed}gddxdnid~          d             Zo edgddxdniy          d             Zpd ZqejG        H                    d          d             Zr edgddQ          d             Zsd Ztd Zud Zvd Zwd Zxd Zyd Zzd Z{ edgR          d             Z|d Z}d Z~d ZejC        D                    d_g d          d             ZejC        D                    d_g d          d             Zd Zd Zd Zd Zd Zd ZdS )    N)datetime)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          }|                     |dd df                   }|                    t          j        ddd                     |                    d           |                     |d	                   }|                    t          j        dd
d                     t          d          D ]}|                     |d|f                   }|                    d|z             |
                    d|z             |dv r3|j                            d           |j                                         |dk    r,|                                D ]}|                    d           |dk    r3|j                            d           |j                                         t          d          D ]}|                     |d|f                   }|
                    d|            |                    d|            |dk    r|                    t          j        dd
d                     |j                            d           |j                                         |                                D ]}|                    d           |                                  d S )Ntightlayout   r          .A  z	Ylabel0 0)r        @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        \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_figure.pytest_align_labelsrE      s    *G
$
$
$C		1a	 	 B	ArrE	#	#BGGBIad##$$$MM+	E	#	#BGGBIac""###1XX " "__R1X&&
lQ&'''
lQ&''';;H''...H66**,, & &!!"%%%%66H''000H!!!1XX 
& 
&__R1X&&
nnn%%%
nnn%%%66GGBIab))***H''000H!!!**,, & &!!"%%%%    zfigure_align_titles_tight.pngz#figure_align_titles_constrained.pnggI+?mpl20)r   stylec                     dD ]d} t          j        dd| ddg          \  }}|d         }|                    t          j        ddd                     |                    dd	
           |                    dd
           |                    dd
           |d         }|                    t          j        ddd                     |                    d           |                    d           |j                            d           |j        	                                 |
                                D ]}|                    d           |                                 fd S )N)r   constrainedr'   r!   )r   width_ratiosr   r"   r#   zTitle0 leftleft)loczTitle0 centercenterzTitle0 rightr+   r%   r&   Title1Xlabel0r)   r*   )r-   subplotsr1   r2   r3   	set_titler6   r7   r8   r9   r:   r;   align_titles)r   r?   axsrA   rC   s        rD   test_align_titlesrU   E   sf   
 +  <1V1a&IIISV
	!S$''(((
]///
_(333
^111V
	!S#&&'''
X
i   
##E***
&&(( 	" 	"Db!!!!% rF   c                  F   t          j        dd          \  } }t          |j                  D ]o\  }}|                    d           |                    d           |                    t          j        d          |z  t          j        d          |z             p|                                  | 	                                 | 
                                 t          j        d          }t          j        d          }t          |j                  D ]S\  }}|j        j                                        d         ||<   |j        j                                        d         ||<   Tt          j                            |d d         |dd                     t          j                            |d d d         |dd d                    t          j        ddd          \  } }t          |j                  D ]b\  }}|                    d           |                    d           |                    t          j                            d	d	                    }c|                     ||
           |                                  | 	                                 | 
                                 t          j        d          }t          j        d          }t          |j                  D ]S\  }}|j        j                                        d         ||<   |j        j                                        d         ||<   Tt          j                            |d d         |dd                     t          j                            |d d d         |dd d                    d S )Nr!   BooWho   r'   r   Tconstrained_layoutr,   rA   )r-   rQ   	enumerateflatr6   r1   r2   r3   align_ylabelsalign_xlabelsdraw_without_renderingzerosr7   labelget_positionr<   testingassert_allclose
pcolormeshrandomrandncolorbar)r?   rT   nnrA   xnynpcs          rD   test_align_labels_stray_axesro   _   s!   |Aq!!HCCH%% 4 4B
e
e
	!b ")A,,"23333   	!B	!BCH%% 2 2B,,..q12,,..q12Jr"1"vr!""v...Jr##A#w14a4111|AqT:::HCCH%% 4 4B
e
e]]29??2r2233LLL   	!B	!BCH%% 2 2B,,..q12,,..q12Jr"1"vr!""v...Jr##A#w14a411111rF   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            d S # 1 swxY w Y   d S )Nalltodayr    tomorrowr   r'   )r   r'   r    rY      ) rr   ru   rs   ru   r,   rt   ru   )
r-   closer.   get_fignumsget_figlabelsgcfpytestraises
ValueErrorr   )	fig_todays    rD   test_figure_labelr~      s   Ie
7##IJqMMMJzJLLLJqMMMJqMMMJqMMM?////"C"C"CCCCCIbMMMIKKKIaLLLIj?A&&&&2w-////Jy799	!!!!	z	"	"  
688                 s   !!GGGc                      t          j        d           t          j        d          } t          j        t
          j        d          5  d| _        d d d            n# 1 swxY w Y   | j        dk    sJ d S )Nrq   r'   &Changing 'Figure.number' is deprecatedmatchr!   )r-   rv   r.   rz   warnsmplMatplotlibDeprecationWarningnumberr?   s    rD   test_figure_label_replacedr      s    Ie
*Q--C	c6D
F 
F 
F  
               :??????s   	AA!$A!c                  `   t                      } t          j        t                    5  | j         d d d            n# 1 swxY w Y   t          j        t          j        d          5  d| _        d d d            n# 1 swxY w Y   | j        dk    sJ t          j	        | j                  rJ d S )Nr   r   rt   )
r   rz   r{   AttributeErrorr   r   r   r   r-   fignum_existsr   s    rD   test_figure_no_labelr      s'   
((C	~	&	&  

               
c6D
F 
F 
F  
               :???? ,,,,,,,s!   <A A 'A;;A?A?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 d S )Noner!   threerY   )r-   r.   r   rv    rF   rD   test_fignum_existsr      s    JuJqMMMJwJLLLU#####QW%%%%%QIeIaLLL ''''' #######rF   c                     d} d}t          j        d          }|                    |            d |j        D             | gk    sJ t          j        dd          }|                    dd|           ||u sJ d	 |j        D             | |gk    sJ t          j        d
ddd          \  }}||u sJ d |j        D             g k    sJ d S )NzA fancy plotzReally fancy!r'   )numc                 6    g | ]}|                                 S r   get_text.0ts     rD   
<listcomp>z$test_clf_keyword.<locals>.<listcomp>        ---QAJJLL---rF   F)r   clear      ?c                 6    g | ]}|                                 S r   r   r   s     rD   r   z$test_clf_keyword.<locals>.<listcomp>   r   rF   r!   Tc                 6    g | ]}|                                 S r   r   r   s     rD   r   z$test_clf_keyword.<locals>.<listcomp>   r   rF   )r-   r.   suptitletextstextrQ   )text1text2fig0fig1fig2ax2s         rD   test_clf_keywordr      s    EE:!DMM%--$*---%8888:!5)))DIIc34<<<<--$*---%????Qq555ID#4<<<<--$*---333333rF   figure_todayarm64gQ?)r   c                     t          j        d          } |                                 }|                    |                                            |                    t          j        d                     t          j        d           t          j        ddgddgd           t          j        d           t          j        d           d S )Nrr   rt   rs   r   r'   r)	r-   r.   r0   rR   	get_labelr1   r2   r3   rv   r?   rA   s     rD   test_figurer      s     *W

C			BLL!!!GGBIaLLJzHaVaVS!!!JwIjrF   figure_legendc                     t          j        d          \  } }|d                             ddgddgdd           |d                             ddgddgdd           |d                             ddgd	d	gdd
           |d                             ddgddgdd           |d                             ddgddgdd           |                                  d S )Nr!   r   r'   xg)rc   coloryr   r   k_yzb)r-   rQ   r1   legendr?   rT   s     rD   test_figure_legendr      s    |AHCFKKAAcK555FKKAAcK555FKKAc
#SK999FKKAAd#K666FKKAAcK555JJLLLLLrF   c                     t          j                    } |                     g d          }|                                 |u sJ |                     d          }|                                 |u sJ |                     |           | j        ||gk    sJ |                                 |u sJ |                     |           | j        ||gk    sJ |                     |           | j        ||gk    sJ |                                 |u sJ d S )Nr   r   r'   r'   o   )r-   r.   add_axesgcar0   axessca)r?   ax0ax1s      rD   test_gcar      s   
*,,C ,,|||
$
$C7799 //#

C7799 LL8Sz!!!!7799 GGCLLL8Sz!!!! OOC8Sz!!!!7799rF   c                     t          j                    } |                     t                     t	          j        t                    5  |                     t          d           d d d            n# 1 swxY w Y   t	          j        t                    5  |                     t          d           d d d            n# 1 swxY w Y   t	          j        t                    5  |                     dd           d d d            n# 1 swxY w Y   t	          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S )	N)
axes_class3d)r   
projectionT)r   polar)r   r   *   r   )r-   r.   r0   r
   rz   r{   r|   	TypeErrorr   s    rD   test_add_subplot_subclassr     s   
*,,COOtO$$$	z	"	" : :4D999: : : : : : : : : : : : : : :	z	"	" 5 54t4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	z	"	" 5 54t4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	y	!	! ' '2&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'sH   A11A58A5B>>CC"DD
D
*EEEc                  >   t          j                    } t          j        t          d          5  |                     ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     ddd	           d d d            n# 1 swxY w Y   t          j        t          d
          5  |                     d           d d d            n# 1 swxY w Y   t          j        t          d
          5  |                     d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     dddd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     ddd           d d d            n# 1 swxY w Y   t          j                    \  }}t          j        t          d          5  |                     |           d d d            d S # 1 swxY w Y   d S )Nz,Number of columns must be a positive integerr   r!   r   r'   z)Number of rows must be a positive integerz)num must be an integer with 1 <= num <= 4rt   r   zmust be a three-digit integerr   r#   z2takes 1 or 3 positional arguments but 2 were givenz2takes 1 or 3 positional arguments but 4 were givenr    rY   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.   rz   r{   r|   r0   r   rQ   )r?   _rA   s      rD   test_add_subplot_invalidr     s   
*,,C	zK
M 
M 
M ! !1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
zH
J 
J 
J ! !1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
z *9 
: 
: 
: ! !1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
z *9 
: 
: 
: ! !1a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
z *9 
: 
: 
: # #1c"""# # # # # # # # # # # # # # # 
z)H	I	I	I                	z)H	I	I	I                 
y ); 
< 
< 
<  1               
y ); 
< 
< 
< $ $1a###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
z'
( 
( 
( # # 	Q"""# # # # # # # # # # # # # # # 
z'
( 
( 
( # # 	3"""# # # # # # # # # # # # # # # LNNEAr	z.
/ 
/ 
/   	                 s   AAA9BB!$B!C''C+.C+D11D58D5E;;E?E?!GG
G)HHH1III:JJ#&J#K))K-0K-L33L7:L7/NNNfigure_suptitlec                      t          j                    \  } }|                     dd           |                     ddd           d S )Nhellor   )r   titler      )r   rotation)r-   rQ   r   )r?   r   s     rD   test_suptitler   E  sE    \^^FCLLL$$$LLbL11111rF   c                  R   t          j                    \  } }t          j                            dd          }|                     d|          }|                                |                                k    sJ |                                |                                k    sJ d S )Nlargebold)sizeweightzfontprops title)fontproperties)	r-   rQ   r   font_managerFontPropertiesr   get_fontsizeget_size_in_points
get_weight)r?   rA   fpstxts       rD   test_suptitle_fontpropertiesr   L  s    lnnGC


)
)wv
)
F
FC
,,(,
=
=C!7!7!9!99999>>s~~////////rF   c                  n   t          j        d          } |                     dd          \  }}|                    d           |                                 |                                 |                     d           |                                dk    sJ |                                dk    sJ d S )	N)rY   r    figsizer'   r!   whitezThis is a visible suptitle.)        r   r   r   )      ?r   r   r   )r-   r.   
subfiguresset_facecolorrQ   r   get_facecolor)r?   sf1sf2s      rD   test_suptitle_subfiguresr   T  s    
*V
$
$
$C~~a##HCgLLNNNLLNNNLL./// "66666"6666666rF   c                     t          j                    \  } }|                                 dk    sJ |                                 dk    sJ |                                 dk    sJ |                     d           |                                 dk    sJ |                     d           |                                 dk    sJ |                     d           |                                 dk    sJ d S )Nru   r   	supxlabel	supylabel)r-   rQ   get_suptitleget_supxlabelget_supylabelr   r   r   r   s     rD   %test_get_suptitle_supxlabel_supylabelr   b  s    lnnGC####"$$$$"$$$$LL++++MM++----MM++------rF   alpha_backgroundr   r'   皙?none)	facecolor	edgecolor)r   savefig_kwargc                     t          j        ddg          } |                     d           | j                            d           | j                            t          j                            ddgddd	
                     d S )Nr!   r'   r   r   r         333333?red)radiusalphar  )	r-   r.   r   patch	set_alphapatchesappendr   CirclePolygonr   s    rD   
test_alphar  o  s     *aV
$
$
$Ck"""IKs{00	R3% 1 9 9 : : : : :rF   c                      t          j        t                    5  t          t          j        d         dz             D ]} t          j                     	 d d d            d S # 1 swxY w Y   d S )Nzfigure.max_open_warningr'   )rz   r   RuntimeWarningr5   r   rcParamsr-   r.   )rB   s    rD   test_too_many_figuresr  ~  s    	n	%	%  s|$=>BCC 	 	AJLLLL	                 s   9A!!A%(A%c                       G d dt                      G fdd          } t          j                    }|                    ddd |                        t          j        |           d S )Nc                       e Zd ZdddZdS ).test_iterability_axes_argument.<locals>.MyAxesN)myclassc                0    t          j        | g|R i | d S N)r
   __init__)selfr  argskwargss       rD   r  z7test_iterability_axes_argument.<locals>.MyAxes.__init__  s(    M$000000000rF   )__name__
__module____qualname__r  r   rF   rD   MyAxesr    s0        *. 	1 	1 	1 	1 	1 	1 	1rF   r#  c                        e Zd Zd Z fdZdS )/test_iterability_axes_argument.<locals>.MyClassc                 0    |dk    rt          d          d S )Nazitem should be a)r|   )r  items     rD   __getitem__z;test_iterability_axes_argument.<locals>.MyClass.__getitem__  s!    s{{ !3444 {rF   c                     d| ifS )Nr  r   )r  r#  s    rD   _as_mpl_axesz<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axes  s    It,,,rF   N)r   r!  r"  r)  r+  )r#  s   rD   MyClassr%    s=        	5 	5 	5	- 	- 	- 	- 	- 	- 	-rF   r,  r'   r   )r
   r-   r.   r0   rv   )r,  r?   r#  s     @rD   test_iterability_axes_argumentr-    s    1 1 1 1 1 1 1 1- - - - - - - - - - *,,COOAq!		O222IcNNNNNrF   c                     t          j                    } |                     d           |                                 dk    sJ |                     d           |                                 dk    sJ |                     dd           |                                 dk    sJ |                                 dk    sJ |                     d           |                                 dk    sJ |                                 dk    sJ d S )Nrt   r'   r!   rY   )r'   r    r    )r-   r.   set_figwidthget_figwidthset_figheightget_figheightset_size_inchesr   s    rD   test_set_fig_sizer4    s   
*,,C Q"""" a!#### 1""""!#### """"!######rF   c                     t          j        dd          \  } }|d                                          |                                d d         D ]}|| j        v sJ |d         | j        vsJ t          | j                  dk    sJ d S )Nr!   r$   r$   r$   r    )r-   rQ   removeravelr   lenr?   rT   rA   s      rD   test_axes_remover;    s    |Aq!!HCKiikk#2#  SX~~~~~v;ch&&&&sx==ArF   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 d S )Nr!   r'   r'   r!   r   )r!   r!   )r-   	figaspectr2   float64rb   )whs     rD   test_figaspectrB    s    =AA677DAqq5A::::=DAqq5A::::=&))**DAqq5C<<<<=&))**DAqq5A::::::rF   which)bothmajorminorc                    g d}g d}d}g d}t          j        |          }t          j        |          }t          j                    \  }}|                    ||           |                                 |                                 |j                            t          d                     t          j                    5  t          j        dd           |j                            t          |                     d d d            n# 1 swxY w Y   |                    d|d	|            | d
v rK|j        d                             dd          D ])}	t%          |	                                          |k    sJ *| dv rK|j        d                             dd          D ]+}	t%          |	                                          |k    sJ *d S d S )N)z
3 Jan 2013z
4 Jan 2013z
5 Jan 2013z
6 Jan 2013z
7 Jan 2013z
8 Jan 2013z
9 Jan 2013z10 Jan 2013z11 Jan 2013z12 Jan 2013z13 Jan 2013z14 Jan 2013)z16:44:00z16:45:00z16:46:00z16:47:00z16:48:00z16:49:00z16:51:00z16:52:00z16:53:00z16:55:00z16:56:00z16:57:00<   )r'   r!   r    rY   rt         r!   ignorez=FixedFormatter should only be used together with FixedLocator皙?r+   )rD  rE  r   FrE  )rD  rF  TrF  )mdatesdatestr2numr-   rQ   r1   
yaxis_date
xaxis_dater7   set_minor_locatorr   warningscatch_warningsfilterwarningsset_minor_formatterr   autofmt_xdater   r:   intget_rotation)
rC  datetimeangleminorsr   r   r?   rA   rc   s
             rD   test_autofmt_xdater]    s4   H H HD$ $ $D E"""F4  A4  AlnnGCGGAqMMMMMOOOMMOOOH/22333		 	"	" = =K	M 	M 	M 	$$^F%;%;<<<	= = = = = = = = = = = = = = = c5'5111!!!Xa[00@@ 	6 	6Eu))++,,55555!!!Xa[00w?? 	6 	6Eu))++,,55555 "!	6 	6s   =DDDc                  P   t          j        d          \  } }|                    g dg dg          }t          j        |           |                                  |                                  |                    d          d         }|                                dk    sJ d S )	NrJ   r   )r'   rY   rI  )r!   r    rt   rE  rC  r'   g      >@)r-   rQ   imshowrj   rV  ra   r:   rX  )r?   rA   imrc   s       rD   'test_autofmt_xdate_colorbar_constrainedrb    s    
 l-000GC	IIIyyy)	*	*BL   W--a0E4''''''rF   defaultc                  F   t          j        d          } |                                  | j        j        j        dk    sJ | j        j        j        dk    sJ d| _        |                                  | j        j        j        dk    sJ | j        j        j        dk    sJ d S )N)rY   rY   r   i  2      )r-   r.   ra   canvasrendererheightwidthdpir   s    rD   test_change_dpirl    s    
*V
$
$
$C   :%,,,,:$++++CG   :%,,,,:$++++++rF   zwidth, heightr'   )r$   r'   c                 L   t          j        t                    5  t          j        | |f           d d d            n# 1 swxY w Y   t          j                    }t          j        t                    5  |                    | |           d d d            d S # 1 swxY w Y   d S )Nr   )rz   r{   r|   r-   r.   r3  )rj  ri  r?   s      rD   test_invalid_figure_sizern    s    
z	"	" , ,
E6?++++, , , , , , , , , , , , , , , *,,C	z	"	" + +E6***+ + + + + + + + + + + + + + + + + +s!   >AA5BB Bc                     t          j                    } t          j        t          d          5  |                                  d d d            n# 1 swxY w Y   t          j        t                    5  |                     dddt          j        f           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     g dg d           d d d            n# 1 swxY w Y   t          j	                    \  }}t          j        t          d          5  |                     |           d d d            n# 1 swxY w Y   |
                    |           t          j        t          d	          5  |                    |d
           d d d            n# 1 swxY w Y   t          j        t          d	          5  |                     g dd
           d d d            d S # 1 swxY w Y   d S )Nz.missing 1 required positional argument: 'rect'r   皙?r   z#multiple values for argument 'rect'r   )rectr   z)add_axes\(\) takes 1 positional argumentszextra positional argument)r-   r.   rz   r{   r   r   r|   r2   nanrQ   delaxes)r?   r   rA   s      rD   test_invalid_figure_add_axesrt    sr   
*,,C	yM
O 
O 
O                 
z	"	" + +b"b"&)***+ + + + + + + + + + + + + + + 
y(M	N	N	N 6 6\\\5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 |~~HD"	z&
' 
' 
'   	R              
 	LL	y(T	U	U	U 7 7b56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 
y(T	U	U	U @ @\\\#>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @sk   AAA4$B$$B(+B(
C22C69C6.EEEF..F25F2G::G>G>c                     t          j        ddddd          \  } }|j        D ]}|                    g dg d           |                    d           |                    d           |dd d f         D ]0}dt          |j                            d	                    k    sJ 1|d
d d f         D ]0}dt          |j                            d	                    k     sJ 1|d d d
f         D ]0}dt          |j	                            d	                    k    sJ 1|d d df         D ]0}dt          |j	                            d	                    k     sJ 1d S )Nr!   TF)sharexshareysqueeze)r,   r  r   logr   rD  r_  r'   )
r-   rQ   r^   r1   
set_yscale
set_xscaler9  r7   get_ticklabelsr<   r:  s      rD   test_subplots_shareax_loglabelsr}  5  s   |AqdEJJJHCh , ,
lll++++MM%MM%!QQQ$i ? ?C//f/==>>>>>>>!QQQ$i > >3rx..V.<<=======!!!Q$i ? ?C//f/==>>>>>>>!!!Q$i > >3rx..V.<<=======> >rF   c                      t          j                    } d}t          j        t          |          5  |                     dd           d d d            d S # 1 swxY w Y   d S )Nz9savefig\(\) takes 2 positional arguments but 3 were givenr   z
fname1.pngz
fname2.png)r-   r.   rz   r{   r   savefig)r?   msgs     rD   test_savefigr  J  s    
*,,C
FC	y	,	,	, 0 0L,///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   AAAc                      t          j                    } dD ]\}t          j        t                    5  |                     t          j                    |d           d d d            n# 1 swxY w Y   ]d S )N)r   pdfr   tifjpgT)formatnon_existent_kwarg)r-   r.   rz   r{   r   r  ioBytesIO)r?   r  s     rD   test_savefig_warnsr  Q  s    
*,,C5 N N]9%% 	N 	NKK
VKMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	NN Ns   *A''A+	.A+	c                  V   t          j                    } t          j        t          d          5  |                     dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     dd           d d d            d S # 1 swxY w Y   d S )	NzNo module named '@absent'r   testzmodule://@absent)backendz-The 'pdf' backend does not support png outputztest.pngr  )r-   r.   rz   r{   ModuleNotFoundErrorr  r|   r   s    rD   test_savefig_backendr  X  s)   
*,,C	*2M	N	N	N 8 8F$67778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	zL
N 
N 
N / /J.../ / / / / / / / / / / / / / / / / /s#   AAA9BB"%B"r  Agg)marksCairoc                    t          j                    \  }}|                    g d           t          j                    5 }|                    |d           t          j        |          }|                                 d d d            n# 1 swxY w Y   t          j                    \  }}|                    g d           |j	        
                    d           t          j                    5 }|                    |d           t          j        |          }|                                 d d d            n# 1 swxY w Y   ||k    sJ d S )Nr'   r!   r    r   r  r!   )r-   rQ   r1   r  r  r  r   openloadrg  _set_device_pixel_ratio)r  r?   rA   bufratio1ratio2s         rD   test_savefig_pixel_ratior  b  s   
 lnnGCGGIII	 C&&&C              
 lnnGCGGIIIJ&&q)))	 C&&&C              
 Vs&   A BBB2A D>>EEc                      t          j        d          } |                     t          j                    d           |                                 j        sJ d S )N
compressedr   r   bbox_inches)r-   r.   r  r  r  get_layout_engine	_compressr   s    rD   #test_savefig_preserve_layout_enginer  y  sQ    
*L
)
)
)CKK
'K222  "",,,,,,rF   c                     t          j                    \  } }|                    t          j                            dd                    }|                     |d          }|                     t          j	                    t          j                            ddgddgg                     |j                            d          j        |j                            d	          j        k    sJ d S )
Nr!   (   )aspectr   rY   r  T)originalF)r-   rQ   rg   r2   rh   ri   rj   r  r  r  r   
transformsBboxrA   rd   bounds)r?   rA   rn   cbars       rD   test_savefig_locate_colorbarr    s    lnnGC	ryq!,,	-	-B<<2<&&DKK
#.*=*=1v1v>N*O*OKPPP G  $ //6G  % 0078 8 8 8 8 8rF   zsavefig.transparentTr   c                    |                      dddd          }|                     |d d d d f                   }|                    |d                   }|                    |d d d d f                   }|                    |d dd d f                   }|                    g d          }|                    g d          }|                     |dd df                   }	|                     |d                   }
|||||	|
fD ];}|                    g g            |j        d d                              d	           <d S )
Nr    皙?)rL   wspacer   r   r$   )rp  rL  333333?r   r6  )xticksyticksF)add_gridspecadd_subfigurer0   
inset_axessetspinesset_visible)fig_testfig_refgs1f1f2ax12r   iax1iax2r   ax3rA   s               rD   test_savefig_transparentr    s_   
 

14

=
=C			AAAqqqD		*	*B			#d)	$	$B>>#aaad)$$D
..SbS!!!V
%
%C>>***++D??+++,,D


s2ss7|
,
,C


s6{
+
+CS$c3/ ( (
b$$$
	!!!  ''''( (rF   c                  \    t          j        dd          } t          |           dk    sJ d S )N)r,   r  r,   )r   rk  z!<Figure size 100x200 with 0 Axes>)r-   r.   reprr   s    rD   test_figure_reprr    s4    
*X2
.
.
.C99;;;;;;;rF   c                  n   t          d           } |                                 rJ |                                 rJ t          d          } |                                 sJ |                                 rJ t          d          } |                                 rJ |                                 sJ d S )Nr   r   rJ   )r   get_tight_layoutget_constrained_layoutr   s    rD   test_valid_layoutsr    s    



C##%%%%%))+++++

 
 
 C!!!!!))+++++

&
&
&C##%%%%%%%'''''''rF   c                  :	   t          j        d          \  } }t          j        t                    5  |                     d           d d d            n# 1 swxY w Y   t          |                                 t                    sJ d}t          j        t          |          5  t          dd	          } d d d            n# 1 swxY w Y   t          |                                 t                    sJ d
}t          j        t          |          5  t          dd          } d d d            n# 1 swxY w Y   t          |                                 t                    rJ t          |                                 t                    sJ t          j        t          d          5  t          d           d d d            n# 1 swxY w Y   t          j        d          \  } }|                     d           t          |                                 t                    sJ |                     d           t          |                                 t                    sJ t          j        d          \  } }|                    t          j                            dd                    }|                     |           t          j        t&          d          5  |                     d           d d d            n# 1 swxY w Y   |                     d           t          j        t&          d          5  |                     d           d d d            n# 1 swxY w Y   t          j        d          \  } }|                    t          j                            dd                    }|                     |           t          j        t&          d          5  |                     d           d d d            n# 1 swxY w Y   |                     d           t          |                                 t(                    sJ t          j        t&          d          5  |                     d           d d d            d S # 1 swxY w Y   d S )NrJ   r   皙?)r)   z1The Figure parameters 'layout' and 'tight_layout'r   r   F)r   tight_layoutz7The Figure parameters 'layout' and 'constrained_layout')r   r[   zInvalid value for 'layout'foobarr!   zColorbar layout of new layoutr  )r-   rQ   rz   r   UserWarningsubplots_adjust
isinstancer  r   r   r   r{   r|   set_layout_enginerg   r2   rh   ri   rj   RuntimeErrorr   )r?   rA   wstrn   s       rD   test_invalid_layoutsr    s+   l-000GC	k	"	" % %$$$% % % % % % % % % % % % % % % c++--/FGGGGG >C	k	-	-	- 9 9G%8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9c++--/@AAAAA
CC	k	-	-	- E EMeDDDE E E E E E E E E E E E E E E#//113DEEEEEc++--/FGGGGG	z9
; 
; 
;    h                             
 l-000GC'"""c++--/@AAAAA-(((c++--/FGGGGG l-000GC	ryq!,,	-	-BLL	|+J	K	K	K ' 'g&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '&!!!	|+J	K	K	K ' 'g&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' l'***GC	ryq!,,	-	-BLL	|+J	K	K	K - -m,,,- - - - - - - - - - - - - - -&!!!c++--/FGGGGG	|+J	K	K	K - -m,,,- - - - - - - - - - - - - - - - - -s   AAA&CCCD33D7:D7+GGG"LLL?M!!M%(M%'P		PP-RRRc                 @   t          || gddg          D ]\  }}t          j        d|i          5  |                    d          }|                    d           d d d            n# 1 swxY w Y   t          |                                t                    sJ d S )NFTzfigure.autolayoutr!   )ncolsr,   )w_pad)zipr   
rc_contextrQ   r  r  r  r   )r  r  r?   
autolayoutr   s        rD   &test_tightlayout_autolayout_deconflictr    s    2UDMBB L LZ^0*=>> 	' 	'<<a<((D2&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' #//113JKKKKKK	L Ls   -A))A-	0A-	r   rJ   r  c                     t          j        |           \  }}t          j        t          d          5  t          j                     ddd           dS # 1 swxY w Y   dS )zj
    Raise a warning when a previously assigned layout changes to tight using
    plt.tight_layout().
    r   z The figure layout has changed tor   N)r-   rQ   rz   r   r  r  )r   r?   rA   s      rD   test_layout_change_warningr    s     l&)))GC	k)K	L	L	L                   s   AAAc                      t                      } |                                  |                                  |                                  d S r  )r   r  r   s    rD   test_repeated_tightlayoutr    sG    
((CrF   r  c           	         d| _         d|_         |                                  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 ]}|                     |           |                                 |                                }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 ]}|                    |           d S )Nr&   rL  ffffff?l1)gidr  l2)r  r  C1)	transformr  )r  r   r  C2)g      @r  g?crimsonC3)r  r  r     )r  r  zorderFr  )r  clip_onr  r  )r  r  r  r  r  )	rk  rQ   r-   Line2DCircledpi_scale_trans
add_artistr7  transFigure)	r  r  r  r  r1r2r3r'  r   s	            rD   test_add_artistr    s   HLGK	RHr2hD	1	1	1B	RHr2hD	1	1	1B	HcTt	<	<	<B	Hct	,	,	,B	Ish.F'T
3 
3 
3B"b"b!  AIIKKK




C	RHr2h'2ER
) 
) 
)B	HcT5
 
 
B	HcW-@d
 
 
B	Isg.E'rt
M 
M 
MB"b"  q rF   fmt)r   r  psepsr   c                    |d|  z  }t          j        |           |                    d          5 }|                     d          |                    d                                          v sJ 	 d d d            d S # 1 swxY w Y   d S )Nztest.rbasciir&   )r-   r  r  encodereadlower)r  tmp_pathoutfiles       rD   test_fspathr  "  s    
]S]]
"CK	$ =4 zz'""diinn&:&:&<&<<<<<<= = = = = = = = = = = = = = = = = =s   ?A??BBc                  r   t          j                    \  } }|                    dd           |                    ddd          }| j                                        }d}t          |                    |          j        || j	        z  z
            dk     sJ t          |                    |          j        || j	        z  z
            dk     sJ t          |                     |          j        |z
            dk     sJ t          |                     |          j
        d	z
            dk     sJ |                    d
           d}t          |                    |          j        || j	        z  z
            dk     sJ t          |                     |          j        |z
            dk     sJ |                    d           d}t          |                    |          j        || j	        z  z
            dk     sJ t          |                    |g           j        || j	        z  z
            dk     sJ d S )Nr   r'   r   r   zThis dangles over endgR"@r!   r  g|?5^?FgET@T)bbox_extra_artists)r-   rQ   set_xlimr   rg  get_rendererabsget_tightbboxx1rk  x0set_in_layout)r?   rA   r   rh  x1Nom0x1Noms         rD   test_tightbboxr  ,  s9   lnnGCKK1
C011Az&&((HFqx((+fsw.>>??!CCCCr)),v/??@@1DDDDs  **-677$>>>>s  **-566==== OOEEr)),usw>??!CCCCs  **-566====OODEr)),v/??@@1DDDDrR@@C! " "$%& & & & & &rF   c                      t          j        ddd          \  } }|d                                          |d                             t	          ddd          t	          ddd          gddg           t          |d         j                                        t          j	                  sJ t          j        ddd          \  } }|d         j        
                    t                                 |d                                          |d                             t	          ddd          t	          ddd          gddg           t          |d         j                                        t                    sJ d S )Nr'   r!   Trv  r   i  )r-   rQ   r7  r1   r   r  r7   get_major_formatterrM  AutoDateFormatterset_major_formatterr   r   s     rD   test_axes_removalr  E  s_   |Aq...HCFMMOOOFKK$1%%xa';';<q!fEEEc!fl6688.0 0 0 0 0
 |Aq...HCFL$$_%6%6777FMMOOOFKK$1%%xa';';<q!fEEEc!fl6688%' ' ' ' ' ' 'rF   c                      t          j        dd          \  } }|d                                          | j                                         d S )Nr!   Tr  r   )r-   rQ   r7  rg  drawr   s     rD   test_removed_axisr  W  sC    |Ad+++HCFMMOOOJOOrF   
clear_methr   clfc                    t          j                                                     j        g k    sJ                     d          } t          |                        j        g k    sJ fdt          d          D             } t          |                        j        g k    sJ                     dd                              d                   }|                    d          } t          |                        |j	        vsJ j        g k    sJ                     d                   }|                    d          }                    d                   }|
                                 j        |gk    sJ                     d                   }|
                                 j        |gk    sJ |j	        v sJ |                    d          }|j        v sJ |j        v sJ  t          ||                        |j	        v sJ ||j        vsJ |j        vsJ |j        v sJ |                    d          } t          |                        j        g k    sJ j	        g k    sJ fddD             }d	 |D             }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         |                        fddD             }d |D             }t          fd|D                       sJ t          fd|D                       sJ  t          |                        j	        g k    sJ j        g k    sJ d S )Nr   c                 D    g | ]}                     d d|dz             S r!   r'   r0   )r   rB   r?   s     rD   r   z%test_figure_clear.<locals>.<listcomp>m  s-    9991COOAq!A#&&999rF   r!   r'   )r  nrowsr   c                 F    g | ]}                     |                   S r   r  r   rB   r?   r@   s     rD   r   z%test_figure_clear.<locals>.<listcomp>  +    888As  A''888rF   r   r'   c                 8    g | ]}|                     d           S r   r  r   sfigs     rD   r   z%test_figure_clear.<locals>.<listcomp>  &    999t$$999rF   c              3   *   K   | ]}|j         v V  d S r  r   r   rA   r?   s     rD   	<genexpr>z$test_figure_clear.<locals>.<genexpr>  )      00"rSX~000000rF   c              3   *   K   | ]}|j         v V  d S r  subfigsr   r)  r?   s     rD   r.  z$test_figure_clear.<locals>.<genexpr>  *      77tts{"777777rF   c                 F    g | ]}                     |                   S r   r"  r#  s     rD   r   z%test_figure_clear.<locals>.<listcomp>  r$  rF   c                 8    g | ]}|                     d           S r'  r  r(  s     rD   r   z%test_figure_clear.<locals>.<listcomp>  r*  rF   c              3   *   K   | ]}|j         v V  d S r  r,  r-  s     rD   r.  z$test_figure_clear.<locals>.<genexpr>  r/  rF   c              3   *   K   | ]}|j         v V  d S r  r1  r3  s     rD   r.  z$test_figure_clear.<locals>.<genexpr>  r4  rF   )r-   r.   r   r   r0   getattrr5   r  r  r2  r7  rq   )	r  rA   r   subfigsubaxesmainaxesr2  r?   r@   s	          @@rD   test_figure_clearr=  ^  s    *,,C IIKKK8r>>>> 
		BGC8r>>>> :999a999DGC8r>>>> 
				+	+Br!u%%F  %%GGC$$$$8r>>>> r!u%%F  %%Gr!u%%H OO8y     r!u%%HNN8z!!!!S[       %%GsxchGFJ!!!S[    &+%%%%#(""""sx   %%GGC8r>>>>;" 98888888G99999G0000000000007777w77777777 $GGAJ
##%%%1:SX%%%%1:!!!!1:$$$$ $GGAJ
##%%%88888888G99999G0000000000007777w77777777GC;"8r>>>>>>rF   c                  H    t          j                    D ]} d| j        vsJ d S )Nr  )r   __subclasses____dict__)klasss    rD   test_clf_not_redefinedrB    s:    *,, + +EN*****+ +rF   c                  x   t          j                    \  } }|                    dgdgdgd           | j                                         | j        rJ t          |j        j        |j        j	        dz  z   |j        j
        |j        j        dz  z   |d           }|                     |           | j        rJ d S )Nr   r#   T)pickerr!   )r   r   inaxesguiEvent)r-   rQ   scatterrg  r  staler   bboxr  rj  y0ri  pick)r?   rA   mouse_events      rD   test_picking_does_not_stalerM    s    lnnGCJJsQC$J---JOOy!BGJ1B$B$&GJ!1C$C)+d< < <K HH[yrF   c                  F   t          j                    } |                     ddd          }|                                j        t          dd          k    sJ |                                j        t          dd          k    sJ |                     ddd          }|                                j        t          dd          k    sJ |                                j        t          dd          k    sJ |                     ddd          }|                                j        t          dd          k    sJ |                                j        t          dd          k    sJ |                     ddd          }|                                j        t          dd          k    sJ |                                j        t          dd          k    sJ t          j        t                    5  |                     ddd	           d d d            d S # 1 swxY w Y   d S )
Nr    r!   r    rt   r'   r   )rY   rI  )r    rI  )rY   rt   )rI  r    )
r-   r.   r0   get_subplotspecrowspanr5   colspanrz   r{   
IndexError)r?   r   r   r  ax4s        rD   test_add_subplot_twotuplerU    s+   
*,,C
//!Q
'
'C  (E!QKK7777  (E!QKK7777
//!Q
'
'C  (E!QKK7777  (E!QKK7777
//!Q
'
'C  (E!QKK7777  (E!QKK7777
//!Q
'
'C  (E!QKK7777  (E!QKK7777	z	"	" & &1f%%%& & & & & & & & & & & & & & & & & &s   1HHHztightbbox_box_aspect.svgr   teal)r  r  )rH   r  remove_textc                     t          j                    } |                     dd          }|                     |d                   }|                     |d         d          }|                    d           |                    d           d S )	Nr'   r!   r  r%  r   r   r   )r!   r'   r'   )r-   r.   r  r0   set_box_aspect)r?   r@   r   r   s       rD   test_tightbbox_box_aspectrZ    s    
 *,,C			!Q		B
//"T(
#
#C
//"T(t/
4
4Cry!!!!!rF   )r   r  r  r   c                     |                                 }|                    t          d                     |                                  }|                    t          d          d           d S )Nrt   T)animated)rQ   r1   r5   )r  r  ax_refax_tests       rD    test_animated_with_canvas_changer_    s^    F
KKa!!GLLqDL)))))rF   c                      e Zd Z edg          e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                            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                            di ddidg          d                         Z edg          ej                            dd  ed           g          d!                         Zd" Zd# Zd$ Z edg          ej                            d%g d&          d'                         Ze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                            d%g d2          d3             Zd4 Zd5 ZdS )6TestSubplotMosaicr   r  r   Arc  BCDrd  r'   r'   r!   r    rY   r!   )rb  re  )rh  ri  c                    |                     |          }|                                D ]\  }}|                    |           t          t	          j        |                    }t          |          t          |          k    sJ |                    dd          }|                    |d dd df                   }	|	                    |d                    |                    |d d df                   }
|
                    |d                    |                    |d                   }|                    |d                    |                    |d                   }|                    |d                    d S )Nr!   r    r'   r   r'   r   r'   r'   )	subplot_mosaicitemsrR   sortedr2   uniquer9  r  r0   )r  r  r  r   	grid_axesr   rA   labelsr@   axAaxBaxCaxDs                rD   
test_basiczTestSubplotMosaic.test_basic  sZ    ++A..	__&& 	 	EArLLOOOO	!%%6{{c)nn,,,,!!!Q''!!"RaR!V*--fQi   !!"QQQT(++fQi   !!"T(++fQi   !!"T(++fQi     rF   c                 *   ddgddgg}ddgddgg}|                     d	           |                     d	           |                    ||gg          }|                                D ])}|                    |                                           *|                    d
d          }|d                             dd          }t          |          D ]J\  }	}
t          |
          D ]5\  }}|                    ||	|f                                       |           6K|d                             dd          }t          |          D ]J\  }	}
t          |
          D ]5\  }}|                    ||	|f                                       |           6Kd S )Nrc  rd  rf  rg  EFGHrJ   r'   r!   r  r%  )	r  rm  valuesrR   r   r  subgridspecr]   r0   )r  r  r  r   r   rq  rA   r@   gs_leftjr   r   rc   gs_rights                 rD   test_all_nestedz!TestSubplotMosaic.test_all_nested  s   3Z#s$3Z#s$!!-000""=111++aVH55	""$$ 	) 	)BLL((((!!!Q''T(&&q!,,aLL 	D 	DDAq%aLL D D5##GAqDM22<<UCCCCD d8''1--aLL 	E 	EDAq%aLL E E5##HQTN33==eDDDDE	E 	ErF   c                 B   |                     d           |                     d           ddgddgg}dg|gg}|                    |          }|                                D ]\  }}|                    |           |                    dd          }|d	                             dd          }	|                    |	d
                   }
|
                    d           |                    |	d                   }|                    d           |                    |	d	                   }|                    d           |                    |	d                   }|                    d           |                    |d
                   }|                    d           d S )NrJ   rc  rd  rf  rg  rz  r!   r'   rk  r  r%  rl  )r  rm  rn  rR   r  r~  r0   )r  r  r  r   r   rq  r   rA   r@   gs_nrs  rt  ru  rv  axFs                  rD   test_nestedzTestSubplotMosaic.test_nested$  s    	!!-000""=1113Z#s$UQCL++A..	__&& 	 	EArLLOOOO!!!Q''$x##Aq))!!$t*--c!!$t*--c!!$t*--c!!$t*--c!!"T(++crF   c                 ~    g dg dg}d}|                     dg|gg           |                     dg|gg           d S )Nrc  rd  rd  rf  rf  rg  )r  r  rz  )rm  )r  r  r  r   xts        rD   test_nested_tuplez#TestSubplotMosaic.test_nested_tupleF  sW    __ooo./s|,,,#.....rF   c                    ddgdgggg}ddg}t          j        ||          \  }}|d                                                                         |k    sJ |d                                                                         |k    sJ d S )Nrc  rd  rf  r!   r'   )rK   )r-   rm  get_gridspecget_width_ratios)r  r   rK   r?   axds        rD   test_nested_width_ratiosz*TestSubplotMosaic.test_nested_width_ratiosN  s    SEE  1v%alCCCS3x$$&&7799\IIII3x$$&&7799\IIIIIIrF   c                     ddgdgggddgg}ddg}t          j        ||          \  }}|d                                                                         |k    sJ |d                                                                         |k    sJ d S )Nrc  rd  rf  rg  r'   r!   height_ratios)r-   rm  r  get_height_ratios)r  r   r  r?   r  s        rD   test_nested_height_ratiosz+TestSubplotMosaic.test_nested_height_ratiosX  s    SEE !3Z)A%a}EEES3x$$&&88::mKKKK3x$$&&88::mKKKKKKrF   zx, empty_sentinelrc  Nrd  .SKIPr   r'   r!   c                    |dk    rd|i}ni } |j         |fi |}|                                D ]\  }}|                    |           t          d |D             |dhz
            }	t	          |	          t	          |          k    sJ |                    dd          }
|                    |
d                   }|                    |	d                    |                    |
d                   }|                    |	d	                    d S )
Nr  empty_sentinelc                     h | ]	}|D ]}|
S r   r   )r   rownames      rD   	<setcomp>z/TestSubplotMosaic.test_empty.<locals>.<setcomp>y  s%    ///c3//4T////rF   r  r!   r  r   rl  r'   )rm  rn  rR   ro  r9  r  r0   )r  r  r  r   r  r  rq  r   rA   rr  r@   rs  rt  s                rD   
test_emptyzTestSubplotMosaic.test_emptyb  s&    V##&7FFF+H+A8888	__&& 	 	EArLLOOOO//Q///>32GG
 
 6{{c)nn,,,,!!!Q''!!"T(++fQi   !!"T(++fQi     rF   c                 X   t          j        t          d          5  t          j        ddg           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        dg           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        ddgg           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        ddgdd	gg           d d d            d S # 1 swxY w Y   d S )
Nz
must be 2Dr   foobar)r  r'  r   )r'  r   c)rz   r{   r|   r-   rm  r  s    rD   test_fail_list_of_strz'TestSubplotMosaic.test_fail_list_of_str  s-   ]:\::: 	/ 	/u~...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]:\::: 	( 	(w'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(]:\::: 	4 	4 12333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]:\::: 	@ 	@c
Z,=>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@sE   ?AA%BBB-CCC7DD#&D#
subplot_kwr   r   c                     ddgg}|                     ||          }|pi }|                    dd          } |j        |d         fi |} |j        |d         fi |}d S )Nr'   r!   )r  r  r%  )rm  r  r0   )	r  r  r  r  r   rq  r@   rs  rt  s	            rD   test_subplot_kwz!TestSubplotMosaic.test_subplot_kw  s     VH++A*+EE	%2
!!!Q''!g!"T(99j99!g!"T(99j99rF   multi_valueBCc           	          d}|                     |ddidddi|ddii          }|                    dd          }t          g d	|          D ]\  }}|                    ||
           d S )NzAB;CDr  r	  rg  bluegreen)r  per_subplot_kwr!   )r	  r  r  r  r  )rm  r  r  r0   )	r  r  r  r  r   rq  r@   r   specs	            rD   test_per_subplot_kwz%TestSubplotMosaic.test_per_subplot_kw  s     ++#U+k6*k73 , 
 
	 !!!Q''@@@"EE 	7 	7KE46666	7 	7rF   c                 2   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 d S )NABC)rc  rd  rf  zAB;CCrc  rd  rf  zAB;CC;DErg  ry  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   _normalize_grid_stringr  	normalizes     rD   test_string_parserz$TestSubplotMosaic.test_string_parser  sB   1	yOOO#44444y!!sCj3*%=====y$$#sc3Z#s(LLLLLy   "1//!23 3 3 3 y    $'*sCj!9: : : : y    $'*sCj3*!E	F F F F F FrF   c                    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            n# 1 swxY w Y   t          j        t          ddd          5   |i i d           d d d            d S # 1 swxY w Y   d S )Nrc  rd  zThe key rd  z appears multiple timesr   )r  rd  )rd  r  )r   _norm_per_subplot_kwrz   r{   r|   r  s     rD   test_per_subplot_kw_expanderz.TestSubplotMosaic.test_per_subplot_kw_expander  s   /	yr++,,br0B0BBBBBy*b)**BR.@.@@@@@]"KS"K"K"K
 
 
 	1 	1 I2B//000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 ]"KS"K"K"K
 
 
 	1 	1 IBB//000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s$   A44A8;A8B::B>B>c                     t          j        t          dt          d          d          5  t	                                          ddi i           d d d            d S # 1 swxY w Y   d S )Nz	The keys rd  z are inr   rc  )r  )rz   r{   r|   r  r   rm  r  s    rD   test_extra_per_subplot_kwz+TestSubplotMosaic.test_extra_per_subplot_kw  s    ]"Ac#hh"A"A"A
 
 
 	C 	C HH##Cb	#BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   &A  A$'A$str_pattern)zAAA
BBBz	
AAA
BBB
zABC
DEFc                     |                     |          }|                     d |                                                    d          D                       }d S )Nc                 ,    g | ]}t          |          S r   )list)r   lns     rD   r   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>  s    @@@"T"XX@@@rF   
)rm  stripsplit)r  r  r  r  rq  s        rD   test_single_str_inputz'TestSubplotMosaic.test_single_str_input  s[    
 ++K88	**@@ 1 1 3 3 9 9$ ? ?@@@
 
			rF   zx,matchzS(?m)we found that the label .A. specifies a non-rectangular or non-contiguous area.rf  rg  z4There are duplicate keys .* between the outer layout)z	AAA
c
BBB'All of the rows must be the same lengthry  r  c                     t          j                    }t          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   )r-   r.   rz   r{   r|   rm  )r  r   r   r?   s       rD   	test_failzTestSubplotMosaic.test_fail  s    , jll]:U333 	" 	"q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   AAAc                     |                     t                      t                      gg           |                     ddgg           d S )Nrc  rd  )rm  object)r  r  r  s      rD   test_hashable_keysz$TestSubplotMosaic.test_hashable_keys  sF    &((FHH!5 6777c
|,,,,,rF   )abccabbcacbaacbbacc                    t          j                    }|                    |          }t          |          t          |          k    sJ t          |j                  t          |                                          k    sJ d S r  r-   r.   rm  r  r   r}  )r  r  r?   ax_dicts       rD   test_user_orderz!TestSubplotMosaic.test_user_order  sr     jll$$[11K  DMM1111CH~~gnn&6&6!7!7777777rF   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                    }|                    |          }t          |          t          d          k    sJ t          |j                  t          |                                          k    sJ d S )Nrc  rd  rf  rg  ry  rz  r{  r  r|  I	ABCDEFGHIr  r  r   r?   r  s       rD   test_nested_user_orderz(TestSubplotMosaic.test_nested_user_order  s    C::  #JC3%%! " # $	
 jll$$V,,G}}[ 1 11111CH~~gnn&6&6!7!7777777rF   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                    }|                    |dd          }|d                             dd           t	          d |                                D                       sJ d S )Nrc  rd  rf  rg  ry  rz  r{  r  r|  r  T)rv  rw  ry  logit)xscaleyscalec              3   v   K   | ]4}|                                 d k    o|                                dk    V  5dS )ry  r  N)
get_xscale
get_yscale)r   rA   s     rD   r.  z3TestSubplotMosaic.test_share_all.<locals>.<genexpr>  sU       / / ==??e+J70J / / / / / /rF   )r-   r.   rm  r  rq   r}  r  s       rD   test_share_allz TestSubplotMosaic.test_share_all  s    C::  #JC3%%! " # $	
 jll$$VD$FFg666 / /$^^--/ / / / / 	/ 	/ 	/ 	/ 	/rF   )r   r!  r"  r	   rz   markparametrizerw  r  r  r  r  r  r  r  r  tupler  r  r  r  r  r  r  r  r  r  r   rF   rD   ra  ra    s       UG,,,[__ooo.YY			"."	
 ! !  -,!. UG,,,E E -,E, UG,,,  -,B UG,,,/ / -,/J J JL L L UG,,,[DkD#;'.Cj3*%v.AhC!1%$i$#T*#ha!6*!fq!fq!	

 
! !
 
 -,!.@ @ @ UG,,,[\Bw0G+NOO: : PO -,: UG,,,[]T55;;,?@@7 7 A@ -,7F F F&1 1 1C C C UG,,,[]EEE 
 
  -,
 [ sc3Z(@ sdc3Z#s$<=>F Gc
SE*+c3Z89	
 *" "+ *"
 UG,,,- - -,- []GGGI I8 8I I88 8 8/ / / / /rF   ra  c                     t          j                    } |                     ddd          }|                     ddd          }t          j        ddd|           }|                                                                }|                                                                }|                                                                }||k    sJ ||k    sJ dS )	z)Test that these all use the same gridspecr    r!   rO  rY   )r    r!   r  )rR  r?   N)r-   r.   r0   subplot2gridrP  r  )r?   r   r   r  r  gs2gs3s          rD   test_reused_gridspecr  !  s    
*,,C
//!Q
'
'C
//!Q
"
"C

661#
>
>
>C





,
,
.
.C





,
,
.
.C





,
,
.
.C#::::#::::::rF   ztest_subfigure.pngr  )rH   r  c                     t           j                            d           t          j        d          } |                     dd          }|d                             dd          }|j        D ]8}|                    t           j        	                    dd          dd	          }9|d         
                    ||
           |d                             d           |d                             d           |d                             dd          }|j        D ]8}|                    t           j        	                    dd          dd	          }9|d         
                    ||d           |d                             d           |d                             d           |                     dd           |                     d t          d          D             d          }|d                             |                                dz
             |d                             |                                dz              d S )N!N,rJ   r   r'   r!   r   r   vminvmaxr\   	Left Sider   r    bottom)rA   locationz
Right SideFigure suptitlexx-largefontsizec           	      f    g | ].}t          j        d gd gd                    |                    /S )r   zLine{}rc   )r-   r  r  )r   rB   s     rD   r   z"test_subfigure.<locals>.<listcomp>H  sI     ( ( ( "j!qc9K9KLLL ( ( (rF   rt   rN   )handlesrM   )r2   rh   seedr-   r.   r   rQ   r^   rg   ri   rj   r   r   r   r5   
set_zorder
get_zorder)r?   subrT   rA   rn   legs         rD   test_subfigurer   0  s    INN8
*M
*
*
*C
..A

C
a&//!Q

Ch E E]]29??2r22!]DDFOOB3OFOOK   F!!!
a&//!Q

Ch E E]]29??2r22!]DDFOOB3O222FOOL!!!F!!!LL"ZL888 ** ( (#Ahh( ( (-5  7 7CFcnn&&*+++Fcnn&&*+++++rF   c                      t          j        d          } |                     dd          }t          j                            |                     | j                                                  j	        d           d S )NrJ   r   r'   r!   g       @)
r-   r.   r   r2   re   rf   r
  rg  r  rj  )r?   r  s     rD   test_subfigure_tightbboxr  N  sp    
*M
*
*
*C
..A

CJcj557788>    rF   c                  B   t          j        d          } |                                 }|                                |                                 k    sJ |                    d           |                                dk    sJ |                                 dk    sJ d S )Nr&   rk  rf  )r-   r.   r   get_dpiset_dpir?   sub_figs     rD   test_subfigure_dpir	  X  s    
*


CnnG??----OOC??####;;==CrF   ztest_subfigure_ss.png{Gz?)rH   r  r   c                     t           j                            d           t          j        d          } |                     dd          }|                     |d         d          }|                    dd          }|j        D ]8}|	                    t           j        
                    d	d	          d
d          }9|                    ||           |                    d           |                     |d                   }|                    t          j        d                     |                    d           |                     dd           d S )Nr  rJ   r   r'   r!   r   pinkr  r   r  r  r\   r  r  r
   r  r  r  )r2   rh   r  r-   r.   r  r  rQ   r^   rg   ri   rj   r   r0   r1   r3   rR   )r?   r@   r  rT   rA   rn   s         rD   test_subfigure_ssr  b  s0    INN8
*M
*
*
*C			!Q		B


BqEV

4
4C
,,q!

Ch E E]]29??2r22!]DDLLLLL	A		BGGBIbMMLLLL"ZL88888rF   ztest_subfigure_double.pngc                  n   t           j                            d           t          j        dd          } |                     d           |                     ddd	          }|d
                             d           |d
                             d           |d                             d           |d                             d           |d
                             ddddg          }|d
                             d           |d
                             d           |d
                             ddd          }|D ]}d}|	                    t           j        
                    dd          dd          }|                    d|           |                    d|           |                    d|           |d
                             ||           |d                             d           |d                             d           |d                             d dd!          }t          |          D ]\  }}|                    d"|            |d                             d#           |d                             d$           |d                             dd          }	d S )%Nr  rJ   )r,      )r   r   r?   r'   r!   gQ?)r  r   coralz
subfigs[0]z
subfigs[1]gffffff?r  zsubfigsnest[0]r   Trw     r   g      g      @r  zx-labelr  zy-labelTitler\   zsubfigsnest[1]r   r    r  ylabelr   r   )r2   rh   r  r-   r.   r   r   r   rQ   rg   ri   r6   r4   rR   rj   r]   r   r   )
r?   r2  subfigsnestaxsnest0rA   r  rn   axsnest1rk   axsRights
             rD   test_subfigure_doubler  y  s    INN8
*M7
;
;
;CLLnnQ$n//GAJW%%%AJ%%%AJW%%%AJ%%%!*''1QH'EEKN,---N  %%%1~&&q!D&99H 1 1]]29??2r22C]HH
i(333
i(333
Wx0000NB8,,,N,---N  %%%1~&&q!D&99HH%% % %B
mrmm$$$$N[)))N[)))qz""1a((HHHrF   c            	      b   t          j        d          } |                     dd          }|                     |d                   |                     |dddf                   |                     |dddf                   |                     |dd dd f                   g}d}d	}t          j                            |d         j        j        d
|dz  dz  g           t          j                            |d         j        j	        |dz  |g           t          j                            |d         j        j        |dz  |dz  g           t          j                            |d         j        j	        |dz  dz  |g           t          j                            |d         j        j        |dz  dg           t          j                            |d         j        j	        ||dz  g           t          d          D ]}||                                          |                                  d S )NTrZ   r    r  r   r!   r'       r   rY   )r-   r.   r  r  r2   re   rf   rI  minmaxr5   r0   ra   )r?   r@   sub_figsr@  rA  rB   s         rD   test_subfigure_spanningr     s   
*
-
-
-C			!Q		B"T(##"QqS!V*%%"Q!V*%%"QRRV*%%	H 	AAJx{/3b!a%']CCCJx{/3a!eQZ@@@Jx{/3a!eQU^DDDJx{/3a!eAgq\BBBJx{/3a!eQZ@@@Jx{/3aQZ@@@ 1XX " "!!!!     rF   c                     t          j        dd          } |                     dddddg          \  }}|                    dd	
          }|                    |dd df                   }|                    ddgddg           |                    |dddf         |          }|                    ddgddg           |                    |ddd	f         |          }d| _        |                                  |                                }d| _        |                                  |                                }t          j
                            ||           d S )NT)r,   r    )r[   r   r'   r!   r   rJ  )r  rK      )r   r  r   g!<LgkX.8@i  i  )r   r   r    r  g YI_gRϫW@x   i,  )r-   r.   r   r  r0   rG  rk  ra   
get_xticksr2   re   rf   )	r?   	subfig_bl	subfig_brr@   r   r   r  ticks120ticks300s	            rD   test_subfigure_ticksr)    su    *g
>
>
>C ^^Aq:;Q , A AY	 
		ar		2	2B


1bqb5	
*
*CKK%'9:tTlKKKK


1ac6
3

7
7CKK%'89dD\KJJJ


1ad7C

8
8CCG   ~~HCG   ~~HJx22222rF   ztest_subfigure_scatter_size.png)rH   rW  c                     t          j                    } |                     dd          }|                     |d                   }|                    g dg ddd           |                    g dg dg dd           |                     |d	                   }|                    dd          }||d	         fD ]@}|                    g dg dddd
           |                    g dg dg ddd           Ad S )Nr'   r!   r  r   s)r+  marker)r    rY   rt   )r  r   r  r   r   )r+  r,  r   r   )r-   r.   r  r0   rG  r  rQ   )r?   r@   r   r)  rT   rA   s         rD   test_subfigure_scatter_sizer-    s    *,,C			!Q		B
//"Q%
 
 CKK			9993K777KK			999SKAAARU##D
--1

CCFm P P


999iii2c
EEE


999iii<<<3
OOOOP PrF   c                  ,   t          j        d          } |                                 }|                    d          }|                    dd          }|                    |           t          j                    }|                     |d           d S )NrJ   r   r   r'   r  r  )	r-   r.   r   r0   r  	bar_labelr  r  r  )r?   r  rA   r   buffers        rD   test_subfigure_pdfr1    s}    
*M
*
*
*CnnG			S	!	!B
q!ALLOOOZ\\FKKuK%%%%%rF   c                  f   t          j                                        dddd          } d}d}t          j                            | d         j        j        d	|d
z  g           t          j                            | d         j        j        |dz  |g           t          j                            | d         j        j        |dz  |d
z  g           t          j                            | d         j        j        |dz  |g           t          j                            | d         j        j        |dz  |d
z  g           t          j                            | d         j        j        ||g           t          j                            | d         j        j        ddg           t          j                            | d         j        j        |dz  |dz  g           t          j                            | d         j        j        |dz  dg           t          j                            | d         j        j        |dz  |dz  g           t          j                            | d         j        j        |dz  dg           t          j                            | d         j        j        ||dz  g           d S )Nr!   r    r   gUUUUUU?)hspacer  r  r  r  r   r  r  r%  gffffff?g?r(   r  rk  r   r   rl  r=  )	r-   r.   r   r2   re   rf   rI  r  r  )r  r@  rA  s      rD   test_subfigures_wspace_hspacer4    s8   z||&&q!C&EEHAAJx~26QWFFFJx~26S!EEEJx~26T1s78KLLLJx~26T1FFFJx~26S!c'8JKKKJx~26A???Jx~26A???Jx~26S!c'8JKKKJx~26T1FFFJx~26T1s78KLLLJx~26S!EEEJx~26AGEEEEErF   c                      t          j                    } |                     dd          }|d                                          t	          | j                  dk    sJ d S )Nr!   rl  r    )r-   r.   r   r7  r9  r2  )r?   sfss     rD   test_subfigure_remover7    sW    
*,,C
..A

CIs{q      rF   c                  `   t          j                    } |                     ddd          }|                     ddd          }|J ||usJ t          j                     t          j                    } |                     dddd          }|                     dddd          }|J ||usJ t          j                     t          j                    } |                     dddd          }|                     ddd          }|J |j        dk    sJ ||usJ t          j                     d S )Nr'   r   r   rectilinear)r-   r.   r0   rv   r  r?   rA   r   s      rD   test_add_subplot_kwargsr;    s'   
*,,C	Aq	!	!B
//!Q
"
"C>>>b====IKKK
*,,C	AqW	5	5B
//!Qg/
6
6C>>>b====IKKK
*,,C	AqW	5	5B
//!Q
"
"C>>>8}$$$$b====IKKKKKrF   c                  `   t          j                    } |                     g d          }|                     g d          }|J ||usJ t          j                     t          j                    } |                     g dd          }|                     g dd          }|J ||usJ t          j                     t          j                    } |                     g dd          }|                     g d          }|J |j        dk    sJ ||usJ t          j                     d S )Nr   r   r   r9  )r-   r.   r   rv   r  r:  s      rD   test_add_axes_kwargsr=  /  s'   
*,,C	lll	#	#B
,,|||
$
$C>>>b====IKKK
*,,C	lllw	7	7B
,,|||,
8
8C>>>b====IKKK
*,,C	lllw	7	7B
,,|||
$
$C>>>8}$$$$b====IKKKKKrF   c                    t          j        dd           t          j                    \  }|j        j        fd}t          d|                                                                           dgk    sJ fd}t          d|                                           t          j
                                                d          dd	g           d S )
NrK  cannot show the figurec                  h    t          d j        g d          dR                                   d S )Nbutton_press_eventrp  rL  r'   )r   rg  _processr?   transs   rD   single_pressz!test_ginput.<locals>.single_pressM  s=    'IeeHooIqIIIRRTTTTTrF   rp  rB  c                     t          d j        g d          dR                                   t          d j        d                                           t          d j        g d          dR                                   t          d j        g d          dR                                   t          d j        g d          d	R                                   d S )
NrA  rB  r'   key_press_event	backspacer  r   r   r  r  r!   )r   rg  rC  r   rD  s   rD   multi_pressesz"test_ginput.<locals>.multi_pressesS  s    'IeeHooIqIIIRRTTT"CJ<<EEGGG'IeeHooIqIIIRRTTT'IeeHooIqIIIRRTTT'GeeFmmGQGGGPPRRRRRrF   r    rJ  rK  )rR  rT  r-   rQ   	transDatar  r   startginputr2   re   rf   )recwarnrA   rF  rL  r?   rE  s       @@rD   test_ginputrQ  H  s    H&>???lnnGCL"EU U U U U U 
"l!!###::<<H:%%%%S S S S S S 
"m""$$$Jszz!}}x.BCCCCCrF   c           
         t          j        dd           t          j                    }|                    d          J t          dt          d|j        d          j                  	                                 |                                du sJ t          dt          d|j        d	d	d
          j                  	                                 |                                du sJ d S )NrK  r?  rp  )timeoutrH  r   TrA  r   r'   F)rR  rT  r-   r.   waitforbuttonpressr   r   rg  rC  rN  r   )rP  r?   s     rD   test_waitforbuttonpressrU  ^  s    H&>???
*,,C!!"!--555	"h(#*c::CDDJJLLL!!##t++++	"j-sz1aCCLMMSSUUU!!##u,,,,,,rF   c                      t          d          } |                     ddd          }|                                 dk    sJ |                                dk    sJ d S )Nzwhole Figurer  r'   z
sub figure)r   r   r   r  s     rD   test_kwargs_passrW  h  se    
~
&
&
&CnnQn66G==??n,,,,,......rF   c                 x   |                     ddd           |                    ddd           |                    ddd           t          j        ddddd	          5  |                      d           |                     d           |                     d           d d d            d S # 1 swxY w Y   d S )
Nxlabelr   r  )r   r   r  r  lightr  )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)r   r   r   r   r  )r  r  s     rD   test_rcparamsr[  p  s   hvB777hvB777WW2666	v-//6-/1 1 
2 
2 # # 	8$$$8$$$'"""# # # # # # # # # # # # # # # # # #s   "A B//B36B3c                     t          j                    \  } }|                    ddgddg           |                    d           t	          j        |           }|j        d         |usJ |j        d                                         dk    sJ |j        d                             d           |                                dk    sJ |                    dd           | 	                                 |	                                 |
                                d	k    sJ |j        d         
                                d
k    sJ d S )Nr   r'   r!   r    ry  linearrp        Y@)rp  r^  r%  )r-   rQ   r1   rz  copydeepcopyr   r  r  ra   get_xlim)r   rA   r   s      rD   test_deepcopyrb  ~  s9   |~~HD"GGQFQFMM%=D 9Q<r!!!!9Q<""$$----IaLH%%%==??e#### KKc!!!!!!;;==K''''9Q<  ""f,,,,,,rF   c                      t          d          } | j                            d           | j        dk    sJ t	          j        t	          j        |                     }|j        dk    sJ d S )Nr   r  rJ  i&  )r   rg  r  rk  pickleloadsdumps)r?   r   s     rD   %test_unpickle_with_device_pixel_ratiorg    s`    
R...CJ&&q)))7d????<S))**D8r>>>>>>rF   c                      ddi} t          |           }t          j        ddddg|            | |k    sJ t          j        dddg|            d S )NrL   rp  r'   r!   )rK   gridspec_kwAB)dictr-   rQ   rm  )r@   gs_origs     rD   test_gridspec_no_mutate_inputrm    sb    
"B2hhGLAQF;;;;====t1a&bAAAAAArF   )r  r  r   r  r   svgzc                 p    t                                          t          j                    | i            d S )Nr  metadata)r   r  r  r  r  s    rD   test_savefig_metadatars    s-    
HHRZ\\#;;;;;rF   )jpegr  r  tiffwebprawrgbac                     t          j        t          d          5  t                                          t          j                    | i            d d d            d S # 1 swxY w Y   d S )Nzmetadata not supportedr   rp  )rz   r{   r|   r   r  r  r  rr  s    rD   test_savefig_metadata_errorrz    s    	z)A	B	B	B @ @cB???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   6AA#&A#c                  J   ddddd} t          g |                                           }t          j        t	          j        j        d	i |           }t          j        t          d          5  |
                                |k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nr   r
  gQ?g{Gz?)r  h_padr  r3  r   zwill be deprecatedr   r   )r  r}  r-   r.   r   layout_enginer   rz   r   PendingDeprecationWarningget_constrained_layout_pads)paramsexpectedr?   s      rD    test_get_constrained_layout_padsr    s    dddKKF'v}}'((H
*C-EOOOO
P
P
PC	/7K	L	L	L = =..00H<<<<<= = = = = = = = = = = = = = = = = =s   /BBBc                     t                      } t          j                    }|                     |d           |                    d           d|                                v sJ |                     d           t          j                    }|                     |d           |                    d           d|                                vsJ d S )Nr   r  r   z<g F)r   r  StringIOr  seekr  r  )r?   r  s     rD   test_not_visible_figurer    s    
((C
+--CKKEK"""HHQKKKCHHJJOOE
+--CKKEK"""HHQKKK

""""""rF   c                      t          j                    \  } }t          j        d          \  }\  }}|                    ddgddgg          }|                     |           t	          j        t          d          5  |                    |           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    ||           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    ||           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    ||           d d d            n# 1 swxY w Y   t          j                    }t          j                    }|                                }|                                }	|                                }
|                                }|                                }|
                                }|                    ddgddgg          }|                    ddgddgg          }|                    ddgddgg          }|                    |           |                    |           |                    |           t	          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )	Nr!   r'   r    rY   zdifferent Figurer   r\   )cax)	r-   rQ   r`  rj   rz   r   r  r.   r   )r   r   r   ax2_1ax2_2ra  fig3fig4	subfig3_1	subfig3_2	subfig4_1ax3_1ax3_2ax4_1im3_1im3_2im4_1s                    rD   test_warn_colorbar_mismatchr    s   ID#<??D.5%	aVaV$	%	%BMM"	k);	<	<	<  b               
k);	<	<	< " "bS!!!" " " " " " " " " " " " " " "	k);	<	<	< $ $bU###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	k);	<	<	< % %be$$$% % % % % % % % % % % % % % % :<<D:<<D!!I!!I!!I  E  E  ELL1a&1a&)**ELL1a&1a&)**ELL1a&1a&)**EMM%uu	k);	<	<	< " "5!!!" " " " " " " " " " " " " " " " " "sZ   <BB"%B"C((C,/C,D22D69D6E<<F F K33K7:K7c                  f   t          j                    } |                                 }|                                }| ||fD ]M}t          j        t
          j                  5  |                    |            d d d            n# 1 swxY w Y   Nt          j        t          d          5  |                    |           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    t          j                               d d d            d S # 1 swxY w Y   d S )Nzcannot be changedr   )
r-   r.   r   rz   r   r   r   
set_figurer{   r|   )r?   sfig1sfig2fs       rD   test_set_figurer    s   
*,,CNNEE%  \#:;; 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
z)<	=	=	=                                  
z)<	=	=	= ' '&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's6   !BB	
B	*CCC2'D&&D*-D*c                      t          j                    } |                     dd          }t          |                                | j                  D ]\  }}||u sJ d S )NrY   r    )r-   r.   r   r  r8  r2  )r?   sf_arrr'  r   s       rD   test_subfigure_row_orderr    s`    
*,,C^^Aq!!FFLLNNCK00  1Avvvvv rF   c                     t          j                    } |                                  | j        rJ |                                 }| j        sJ |                                  | j        rJ |j        rJ |                                }| j        sJ |j        sJ |                                  | j        rJ |j        rJ |j        rJ d|_        |j        sJ | j        sJ d S )NT)r-   r.   ra   rH  r   )r?   r  r  s      rD    test_subfigure_stale_propagationr    s
   
*,,C   yNNE9   y{E9;   y{{EK;9rF   )r_  r   r  rd  platform	threadingr   typesr   rR  numpyr2   rz   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datesrM  machinerE   rU   ro   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r-  r4  r;  rB  r  r  r]  rb  rH   contextrl  rr  infrn  rt  r}  r  r  r  paramr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r=  rB  rM  rU  rZ  r_  ra  r  r   r  r	  r  r  r   r)  r-  r1  r4  r7  r;  r=  rQ  rU  rW  r[  rb  rg  rm  rs  rz  r  r  r  r  r  r  r   rF   rD   <module>r     s          				         ! ! ! ! ! !                       O O O O O O O O             9 9 9 9 9 9 9 9 0 0 0 0 0 0 0 0? ? ? ? ? ? ? ? ? ? P O O O O O O O O O       ! ! ! ! ! ! ()uen+8+--99aatE E E$ $E E$N 28:+8+--99aau! ! ! 	! !, 2  2  2F  0  - - -$ $ $ 4 4 4& >"/x/11W<<ee!E E E E E ?#$$  %$  8
' 
' 
') ) )X $%&&2 2 '&20 0 07 7 7
. 
. 
. %& $U^.9.4!6 !6	7 7 7: :7 7:    :$ $ $,     "<"<"<==$6 $6 >=$6N( ( ( 9, , , KVQK+  
+ + 
+@ @ @4> > >*0 0 0N N N/ / / FLv{22599:;;;FL!4!4W!=!= >???%   	 &- - -9 9 9 &-..(((( ( )( /.(*< < <
( ( (1- 1- 1-h (((L L )(L M<#@AA  BA   ///  0/8  B B BCC= = DC=& & &2' ' '$   '788N N 98Nb+ + + 7
 
 
& & &$ -.g07.4!6 !6"$ $ $" "	$ $"  < < <===* * >=*r/ r/ r/ r/ r/ r/ r/ r/j	   '(!,f 57 7 7, ,7 7,8        *+7!,f 54A A A9 9A A9* ./w!,f 57 7 7$) $)7 7$)N! ! !: 73 3 36 45W#% % %P P% %P& & &F F F2! ! !  2  2D D D,- - -/ / / (((
# 
# )(
#- - -2  B B B  J J JKK< < LK<  U U UVV@ @ WV@
= = =# # #!" !" !"H' ' '       rF   