
    (?e&              
       ^	   d dl Z d dlmZ d dlZd dlmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlZd dlZd dlZd dlmZ d dlZd dlmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZmZ d dlm Z m!Z!m"Z" d dl#m$Z$m%Z%m&Z& d dl'm(Z) d dl*m+Z,  edgddg ej-                    dk    rd nd          d             Z.d Z/d Z0d Z1d Z2 edg          d             Z3 edg          d             Z4d Z5d Z6d Z7 ed g          d!             Z8d" Z9d# Z:d$ Z; ed%gddgd&d'd()          d*             Z<d+ Z=d, Z>d- Z?d. Z@d/ ZAejB        C                    d0g d1          d2             ZDejE        F                    d3          d4             ZGejB        C                    d5d6ejH        fd7ejI        d6fg          d8             ZJd9 ZKd: ZLd; ZMd< ZNd= ZOejB        C                    d> ejP        d?ejB        Q                    d?          g@           ejP        dAejB        Q                    dA          g@          g          dB             ZRdC ZSdD ZT ejU        dEdFi           edgG          dH                         ZVdI ZWdJ ZXdK ZY edgG          dL             ZZejB        C                    dMdNdOg          dP             Z[dQ Z\ eddRgG          dS             Z]ejB        C                    dTg dU          dV             Z^dW Z_dX Z`dY ZaejB        C                    dZd[d\g          d]             Zbd^ ZcejE        F                    d_          d`             Zdda Ze edbgd_dcdddedFf          dg             Zf eg dhG          di             Zg G dj dk          Zhdl Zi edmgd_dnddio          dp             Zjdq Zkdr Zl edsgd_dnddidtu          dv             Zm edwgd_dnddio          dx             Zndy ZoejE        F                    d_          dz             Zp ed{gd_dF|          d}             Zqd~ Zrd Zsd Ztd Zud Zvd Zwd Zx edgG          d             Zyd Zzd Z{d Z|ejB        C                    dTg d          d             Z}ejB        C                    dTg d          d             Z~d Zd ZdS )    N)datetime)Path)Timer)SimpleNamespace)Image)gridspec)image_comparisoncheck_figures_equal)Axes)KeyEvent
MouseEvent)Figure
FigureBase)ConstrainedLayoutEngineTightLayoutEnginePlaceHolderLayoutEngine)AutoMinorLocatorFixedFormatterScalarFormatterfigure_align_labelspngsvgx86_64{Gz?)
extensionstolc                     t          j        d          } t          j        dd          }|                     |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      g    .A  z	Ylabel0 0)r   g     @d      z
YLabel1 %dz
XLabel1 %dr   r"   topZ   rightzXLabel2 zYLabel2 
   )pltfigurer   GridSpecadd_subplotplotnparange
set_ylabelrange
set_xlabelxaxisset_label_positiontick_topget_xticklabelsset_rotationyaxis
tick_rightalign_labels)figgsaxiticks        <lib/python3.11/site-packages/matplotlib/tests/test_figure.pytest_align_labelsrD      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!!!**,, & &!!"%%%%    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+   r@   )r,   subplots	enumerateflatr5   r0   r1   r2   align_ylabelsalign_xlabelsdraw_without_renderingzerosr6   labelget_positionr;   testingassert_allclose
pcolormeshrandomrandncolorbar)r>   axsnnr@   xnynpcs          rC   test_align_labels_stray_axesra   F   s!   |Aq!!HC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1rE   c                     t          j        d           t          j        d          } t          j        d           t          j        d           t          j                     t          j        d           t          j        d           t          j        d           t          j                    g dk    sJ t          j                    g dk    sJ t          j        d	           t          j                     t          j        d
           t          j        d           t          j                    ddgk    sJ t          j                    ddgk    sJ t          j        |            t          j                    | k    sJ t          j        t                    5  t          j        t                                 d d d            d S # 1 swxY w Y   d S )Nalltodayr!   tomorrowr   r&   )r   r&   r!   rI      ) rd   rg   re   rg   r+   rf   rg   )
r,   closer-   get_fignumsget_figlabelsgcfpytestraises
ValueErrorr   )	fig_todays    rC   test_figure_labelrp   i   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        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"   threerI   )r,   r-   fignum_existsrh    rE   rC   test_fignum_existsrv      s    JuJqMMMJwJLLLU#####QW%%%%%QIeIaLLL ''''' #######rE   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 ru   get_text.0ts     rC   
<listcomp>z$test_clf_keyword.<locals>.<listcomp>        ---QAJJLL---rE   F)rx   clear      ?c                 6    g | ]}|                                 S ru   rz   r|   s     rC   r   z$test_clf_keyword.<locals>.<listcomp>   r   rE   r"   Tc                 6    g | ]}|                                 S ru   rz   r|   s     rC   r   z$test_clf_keyword.<locals>.<listcomp>   r   rE   )r,   r-   suptitletextstextrM   )text1text2fig0fig1fig2ax2s         rC   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3rE   figure_todayc                     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 )Nrd   rf   re   r   r&   r)	r,   r-   r/   	set_title	get_labelr0   r1   r2   rh   r>   r@   s     rC   test_figurer      s     *W

C			BLL!!!GGBIaLLJzHaVaVS!!!JwIjrE   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)rT   coloryr   r   k_yzb)r,   rM   r0   legendr>   r\   s     rC   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JJLLLLLrE   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gcar/   axessca)r>   ax0ax1s      rC   test_gcar      s   
*,,C ,,|||
$
$C7799 //#

C7799 LL8Sz!!!!7799 GGCLLL8Sz!!!! OOC8Sz!!!!7799rE   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-   r/   r   rl   rm   rn   	TypeErrorr>   s    rC   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 integermatchr"   r   r&   z)Number of rows must be a positive integerz)num must be an integer with 1 <= num <= 4rf   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!   rI   z2Number of rows must be a positive integer, not '2'2z5Number of columns must be a positive integer, not 2.0g       @5The Axes must have been created in the present figure)r,   r-   rl   rm   rn   r/   r   rM   )r>   _r@   s      rC   test_add_subplot_invalidr      s   
*,,C	zK
M 
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,   rM   r   )r>   r   s     rC   test_suptitler     sE    \^^FCLLL$$$LLbL11111rE   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,   rM   mplfont_managerFontPropertiesr   get_fontsizeget_size_in_points
get_weight)r>   r@   fpstxts       rC   test_suptitle_fontpropertiesr     s    lnnGC


)
)wv
)
F
FC
,,(,
=
=C!7!7!9!99999>>s~~////////rE   c                  n   t          j        d          } |                     dd          \  }}|                    d           |                                 |                                 |                     d           |                                dk    sJ |                                dk    sJ d S )	N)rI   r!   figsizer&   r"   whitezThis is a visible suptitle.)        r   r   r   )      ?r   r   r   )r,   r-   
subfiguresset_facecolorrM   r   get_facecolor)r>   sf1sf2s      rC   test_suptitle_subfiguresr   #  s    
*V
$
$
$C~~a##HCgLLNNNLLNNNLL./// "66666"6666666rE   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 )Nrg   r   	supxlabel	supylabel)r,   rM   get_suptitleget_supxlabelget_supylabelr   r   r   r   s     rC   %test_get_suptitle_supxlabel_supylabelr   1  s    lnnGC####"$$$$"$$$$LL++++MM++----MM++------rE   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    rC   
test_alphar   >  s     *aV
$
$
$Ck"""IKs{00	R3% 1 9 9 : : : : :rE   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&   )rl   warnsRuntimeWarningr4   r   rcParamsr,   r-   )rA   s    rC   test_too_many_figuresr   M  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       rC   r  z7test_iterability_axes_argument.<locals>.MyAxes.__init___  s(    M$000000000rE   )__name__
__module____qualname__r  ru   rE   rC   MyAxesr  ^  s0        *. 	1 	1 	1 	1 	1 	1 	1rE   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)rn   )r  items     rC   __getitem__z;test_iterability_axes_argument.<locals>.MyClass.__getitem__d  s!    s{{ !3444 {rE   c                     d| ifS )Nr  ru   )r  r  s    rC   _as_mpl_axesz<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesh  s    It,,,rE   N)r
  r  r  r  r  )r  s   rC   MyClassr  b  s=        	5 	5 	5	- 	- 	- 	- 	- 	- 	-rE   r  r&   r   )r   r,   r-   r/   rh   )r  r>   r  s     @rC   test_iterability_axes_argumentr  S  s    1 1 1 1 1 1 1 1- - - - - - - - - - *,,COOAq!		O222IcNNNNNrE   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 )Nrf   r&   r"   rI   )r&   r!   r!   )r,   r-   set_figwidthget_figwidthset_figheightget_figheightset_size_inchesr   s    rC   test_set_fig_sizer  p  s   
*,,C Q"""" a!#### 1""""!#### """"!######rE   c                     t          j        dd          \  } }|d                                          |                                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,   rM   removeravelr   lenr>   r\   r@   s      rC   test_axes_remover%    s    |Aq!!HCKiikk#2#  SX~~~~~v;ch&&&&sx==ArE   c                     t          j        t          j        d          t          j        d          z            \  } }|| z  dk    sJ t          j        d          \  } }|| z  dk    sJ t          j        t          j        d                    \  } }|| z  dk    sJ t          j        t          j        d                    \  } }|| z  dk    sJ d S )Nr"   r&   r&   r"   r   )r"   r"   )r,   	figaspectr1   float64rS   )whs     rC   test_figaspectr,    s    =AA677DAqq5A::::=DAqq5A::::=&))**DAqq5C<<<<=&))**DAqq5A::::::rE   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!   rI   rf         r"   ignorez=FixedFormatter should only be used together with FixedLocator皙?r*   )r.  r/  r   Fr/  )r.  r0  Tr0  )mdatesdatestr2numr,   rM   r0   
yaxis_date
xaxis_dater6   set_minor_locatorr   warningscatch_warningsfilterwarningsset_minor_formatterr   autofmt_xdater   r9   intget_rotation)
r-  datetimeangleminorsr   r   r>   r@   rT   s
             rC   test_autofmt_xdaterG    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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)rI   rI   r   i  2      )r,   r-   rR   canvasrendererheightwidthdpir   s    rC   test_change_dpirQ    s    
*V
$
$
$C   :%,,,,:$++++CG   :%,,,,:$++++++rE   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   )rl   rm   rn   r,   r-   r  )rO  rN  r>   s      rC   test_invalid_figure_sizerS    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          j        d	          5  |                    |d
           d d d            n# 1 swxY w Y   t          j        t          j        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)Passing more than one positional argumentzextra positional argument)r,   r-   rl   rm   r   r   rn   r1   nanrM   delaxesr   r   MatplotlibDeprecationWarning)r>   r   r@   s      rC   test_invalid_figure_add_axesrZ    s   
*,,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	c6G
I 
I 
I 7 7b56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 
c6G
I 
I 
I @ @\\\#>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @sk   AAA4$B$$B(+B(
C22C69C6.EEEF33F7:F7HHH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   r.  )r-  r&   )
r,   rM   rO   r0   
set_yscale
set_xscaler#  r6   get_ticklabelsr;   r$  s      rC   test_subplots_shareax_loglabelsrc    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.<<=======> >rE   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-   rl   rm   r   savefig)r>   msgs     rC   test_savefigrg    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-   rl   rm   r   re  ioBytesIO)r>   rl  s     rC   test_savefig_warnsrp    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.pngri  )r,   r-   rl   rm   ModuleNotFoundErrorre  rn   r   s    rC   test_savefig_backendru    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"rs  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   rl  r"   )r,   rM   r0   rn  ro  re  r   openloadrL  _set_device_pixel_ratio)rs  r>   r@   bufratio1ratio2s         rC   test_savefig_pixel_ratior  %  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-   re  rn  ro  get_layout_engine	_compressr   s    rC   #test_savefig_preserve_layout_enginer  <  sQ    
*L
)
)
)CKK
'K222  "",,,,,,rE   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   rI   r  T)originalF)r,   rM   rX   r1   rY   rZ   r[   re  rn  ro  r   
transformsBboxr@   rU   bounds)r>   r@   r`   cbars       rC   test_savefig_locate_colorbarr  C  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 8rE   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!   皙?)leftwspacer   r   r$   )rU  r6  333333?r   r   )xticksyticksF)add_gridspecadd_subfigurer/   
inset_axessetspinesset_visible)fig_testfig_refgs1f1f2ax12r   iax1iax2r   ax3r@   s               rC   test_savefig_transparentr  N  s_   
 

14

=
=C			AAAqqqD		*	*B			#d)	$	$B>>#aaad)$$D
..SbS!!!V
%
%C>>***++D??+++,,D


s2ss7|
,
,C


s6{
+
+CS$c3/ ( (
b$$$
	!!!  ''''( (rE   c                  \    t          j        dd          } t          |           dk    sJ d S )N)r+   r   r+   )r   rP  z!<Figure size 100x200 with 0 Axes>)r,   r-   reprr   s    rC   test_figure_reprr  e  s4    
*X2
.
.
.C99;;;;;;;rE   c                  n   t          d           } |                                 rJ |                                 rJ t          d          } |                                 sJ |                                 rJ t          d          } |                                 rJ |                                 sJ d S )Nr   r   constrained)r   get_tight_layoutget_constrained_layoutr   s    rC   test_valid_layoutsr  j  s    



C##%%%%%))+++++

 
 
 C!!!!!))+++++

&
&
&C##%%%%%%%'''''''rE   c                  :	   t          j        d          \  } }t          j        t                    5  |                     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 )Nr  r   皙?)r(   z1The Figure parameters 'layout' and 'tight_layout'r   r   F)r    tight_layoutz7The Figure parameters 'layout' and 'constrained_layout')r    rK   zInvalid value for 'layout'foobarr"   zColorbar layout of new layoutr   )r,   rM   rl   r   UserWarningsubplots_adjust
isinstancer  r   r   r   rm   rn   set_layout_enginerX   r1   rY   rZ   r[   RuntimeErrorr   )r>   r@   wstr`   s       rC   test_invalid_layoutsr  x  s+   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_contextrM   r  r  r  r   )r  r  r>   
autolayoutr   s        rC   &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    r  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,   rM   rl   r   r  r  )r    r>   r@   s      rC   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    rC   test_repeated_tightlayoutr    sG    
((CrE   ri  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%   r6  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  )	rP  rM   r,   Line2DCircledpi_scale_trans
add_artistr!  transFigure)	r  r  r  r  r1r2r3r  r   s	            rC   test_add_artistr    s   HLGK	RHr2hD	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 rE   fmt)r   ri  psepsr   c                 .   t          |d|            }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,   re  r|  encodereadlower)r  tmpdiroutfiles       rC   test_fspathr    s    
v}s}}
%
%CK	$ =4 zz'""diinn&:&:&<&<<<<<<= = = = = = = = = = = = = = = = = =s   ?B

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,   rM   set_xlimr   rL  get_rendererabsget_tightbboxx1rP  x0set_in_layout)r>   r@   r~   rM  x1Nom0x1Noms         rC   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! " "$%& & & & & &rE   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r\  r   i  )r,   rM   r!  r0   r   r  r6   get_major_formatterr7  AutoDateFormatterset_major_formatterr   r   s     rC   test_axes_removalr    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%' ' ' ' ' ' 'rE   c                      t          j        dd          \  } }|d                                          | j                                         d S )Nr"   Tr  r   )r,   rM   r!  rL  drawr   s     rC   test_removed_axisr    sC    |Ad+++HCFMMOOOJOOrE   
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&   r/   )r}   rA   r>   s     rC   r   z%test_figure_clear.<locals>.<listcomp>0  s-    9991COOAq!A#&&999rE   r"   r&   )r  nrowsr   c                 F    g | ]}                     |                   S ru   r  r}   rA   r>   r?   s     rC   r   z%test_figure_clear.<locals>.<listcomp>]  +    888As  A''888rE   r   r&   c                 8    g | ]}|                     d           S r   r  r}   sfigs     rC   r   z%test_figure_clear.<locals>.<listcomp>^  &    999t$$999rE   c              3   *   K   | ]}|j         v V  d S r  r   r}   r@   r>   s     rC   	<genexpr>z$test_figure_clear.<locals>.<genexpr>_  )      00"rSX~000000rE   c              3   *   K   | ]}|j         v V  d S r  subfigsr}   r  r>   s     rC   r  z$test_figure_clear.<locals>.<genexpr>`  *      77tts{"777777rE   c                 F    g | ]}                     |                   S ru   r
  r  s     rC   r   z%test_figure_clear.<locals>.<listcomp>j  r  rE   c                 8    g | ]}|                     d           S r  r  r  s     rC   r   z%test_figure_clear.<locals>.<listcomp>k  r  rE   c              3   *   K   | ]}|j         v V  d S r  r  r  s     rC   r  z$test_figure_clear.<locals>.<genexpr>l  r  rE   c              3   *   K   | ]}|j         v V  d S r  r  r  s     rC   r  z$test_figure_clear.<locals>.<genexpr>m  r  rE   )r,   r-   r   r   r/   getattrr4   r  r  r  r!  rc   )	r  r@   r   subfigsubaxesmainaxesr  r>   r?   s	          @@rC   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>>>>>>rE   c                  H    t          j                    D ]} d| j        vsJ d S )Nr  )r   __subclasses____dict__)klasss    rC   test_clf_not_redefinedr*  s  s:    *,, + +EN*****+ +rE   mpl20c                  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,   rM   scatterrL  r   staler   bboxr  rO  y0rN  pick)r>   r@   mouse_events      rC   test_picking_does_not_staler6  y  s    lnnGCJJsQC$J---JOOy!BGJ1B$B$&GJ!1C$C)+d< < <K HH[yrE   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!   rf   r&   r   )rI   r3  )r!   r3  )rI   rf   )r3  r!   )
r,   r-   r/   get_subplotspecrowspanr4   colspanrl   rm   
IndexError)r>   r   r   r  ax4s        rC   test_add_subplot_twotupler>    s+   
*,,C
//!Q
'
'C  (E!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   )styler   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  r/   set_box_aspect)r>   r?   r   r   s       rC   test_tightbbox_box_aspectrD    s    
 *,,C			!Q		B
//"T(
#
#C
//"T(t/
4
4Cry!!!!!rE   )r   ri  r  r   c                     |                                 }|                    t          d                     |                                  }|                    t          d          d           d S )Nrf   T)animated)rM   r0   r4   )r  r  ax_refax_tests       rC    test_animated_with_canvas_changerI    s^    F
KKa!!GLLqDL)))))rE   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   ArM  BCDrN  r&   r&   r"   r!   rI   r"   )rL  rO  )rR  rS  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itemsr   sortedr1   uniquer#  r  r/   )r  r  r  r   	grid_axesr   r@   labelsr?   axAaxBaxCaxDs                rC   
test_basiczTestSubplotMosaic.test_basic  sZ    ++A..	__&& 	 	EArLLOOOO	!%%6{{c)nn,,,,!!!Q''!!"RaR!V*--fQi   !!"QQQT(++fQi   !!"T(++fQi   !!"T(++fQi     rE   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 )NrM  rN  rP  rQ  EFGHr  r&   r"   r  r  )	r  rW  valuesr   r   r  subgridspecrN   r/   )r  r  r  r   r   r[  r@   r?   gs_leftjr   r   rT   gs_rights                 rC   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rE   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 )Nr  rM  rN  rP  rQ  rd  r"   r&   rU  r  r  rV  )r  rW  rX  r   r  rh  r/   )r  r  r  r   r   r[  r   r@   r?   gs_nr]  r^  r_  r`  axFs                  rC   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rE   c                 ~    g dg dg}d}|                     dg|gg           |                     dg|gg           d S )NrM  rN  rN  rP  rP  rQ  )rr  rs  rd  )rW  )r  r  r  r   xts        rC   test_nested_tuplez#TestSubplotMosaic.test_nested_tuple	  sW    __ooo./s|,,,#.....rE   c                    ddgdgggg}ddg}t          j        ||          \  }}|d                                                                         |k    sJ |d                                                                         |k    sJ d S )NrM  rN  rP  r"   r&   )width_ratios)r,   rW  get_gridspecget_width_ratios)r  r   rw  r>   axds        rC   test_nested_width_ratiosz*TestSubplotMosaic.test_nested_width_ratios  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IrE   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 )NrM  rN  rP  rQ  r&   r"   height_ratios)r,   rW  rx  get_height_ratios)r  r   r~  r>   rz  s        rC   test_nested_height_ratiosz+TestSubplotMosaic.test_nested_height_ratios  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KrE   zx, empty_sentinelrM  NrN  .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 ru   ru   )r}   rownames      rC   	<setcomp>z/TestSubplotMosaic.test_empty.<locals>.<setcomp><  s%    ///c3//4T////rE   r  r"   r  r   rV  r&   )rW  rX  r   rY  r#  r  r/   )r  r  r  r   r  r	  r[  r   r@   r\  r?   r]  r^  s                rC   
test_emptyzTestSubplotMosaic.test_empty%  s&    V##&7FFF+H+A8888	__&& 	 	EArLLOOOO//Q///>32GG
 
 6{{c)nn,,,,!!!Q''!!"T(++fQi   !!"T(++fQi     rE   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)rl   rm   rn   r,   rW  r  s    rC   test_fail_list_of_strz'TestSubplotMosaic.test_fail_list_of_strH  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  )rW  r  r/   )	r  r  r  r  r   r[  r?   r]  r^  s	            rC   test_subplot_kwz!TestSubplotMosaic.test_subplot_kwR  s     VH++A*+EE	%2
!!!Q''!g!"T(99j99!g!"T(99j99rE   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   rQ  bluegreen)r  per_subplot_kwr"   )r   r  r  r  r   )rW  r  r  r/   )	r  r  r  r  r   r[  r?   r   specs	            rC   test_per_subplot_kwz%TestSubplotMosaic.test_per_subplot_kw^  s     ++#U+k6*k73 , 
 
	 !!!Q''@@@"EE 	7 	7KE46666	7 	7rE   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)rM  rN  rP  zAB;CCrM  rN  rP  zAB;CC;DErQ  rc  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   _normalize_grid_stringr  	normalizes     rC   test_string_parserz$TestSubplotMosaic.test_string_parsero  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rE   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rM  rN  zThe key rN  z appears multiple timesr   )r  rN  )rN  r  )r   _norm_per_subplot_kwrl   rm   rn   r  s     rC   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 rN  z are inr   rM  )r  )rl   rm   rn   r  r   rW  r  s    rC   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 ru   )list)r}   lns     rC   r   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>  s    @@@"T"XX@@@rE   
)rW  stripsplit)r  r  r  r  r[  s        rC   test_single_str_inputz'TestSubplotMosaic.test_single_str_input  s[    
 ++K88	**@@ 1 1 3 3 9 9$ ? ?@@@
 
			rE   zx,matchzS(?m)we found that the label .A. specifies a non-rectangular or non-contiguous area.rP  rQ  z4There are duplicate keys .* between the outer layout)z	AAA
c
BBB'All of the rows must be the same lengthrc  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-   rl   rm   rn   rW  )r  r   r   r>   s       rC   	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 )NrM  rN  )rW  object)r  r  r  s      rC   test_hashable_keysz$TestSubplotMosaic.test_hashable_keys  sF    &((FHH!5 6777c
|,,,,,rE   )abccabbcacbaacbbacc                    t          j                    }|                    |          }t          |          t          |          k    sJ t          |j                  t          |                                          k    sJ d S r  r,   r-   rW  r  r   rg  )r  r  r>   ax_dicts       rC   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7rE   c                 <   dddgddgggddgdd	d
gdgggggg}t          j                    }|                    |          }t          |          t          d          k    sJ t          |j                  t          |                                          k    sJ d S )NrM  rN  rP  rQ  rc  rd  re  r  rf  I	ABCDEFGHIr  r  r    r>   r  s       rC   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7rE   c                     dddgddgggddgdd	d
gdgggggg}t          j                    }|                    |dd          }|d                             dd           t	          d |                                D                       sJ d S )NrM  rN  rP  rQ  rc  rd  re  r  rf  r  T)r\  r]  r_  logit)xscaleyscalec              3   v   K   | ]4}|                                 d k    o|                                dk    V  5dS )r_  r  N)
get_xscale
get_yscale)r}   r@   s     rC   r  z3TestSubplotMosaic.test_share_all.<locals>.<genexpr>  sU       / / ==??e+J70J / / / / / /rE   )r,   r-   rW  r  rc   rg  r  s       rC   test_share_allz TestSubplotMosaic.test_share_all  s    C::  #JC3%%! " # $	
 jll$$VD$FFg666 / /$^^--/ / / / / 	/ 	/ 	/ 	/ 	/rE   )r
  r  r  r
   rl   markparametrizera  rl  rp  ru  r{  r  r  r  r  tupler  r  r  r  r  r  r  r  r  r  ru   rE   rC   rK  rK    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/ / / / /rE   rK  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"   r8  rI   )r!   r"   r  )r;  r>   N)r,   r-   r/   subplot2gridr9  rx  )r>   r   r   r  r  gs2gs3s          rC   test_reused_gridspecr    s    
*,,C
//!Q
'
'C
//!Q
"
"C

661#
>
>
>C





,
,
.
.C





,
,
.
.C





,
,
.
.C#::::#::::::rE   ztest_subfigure.pngr   )r@  r   c                     t           j                            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 S )N!N,r  r   r&   r"   r   r   vminvmaxrL   	Left Sider   r!   bottom)r@   locationz
Right SideFigure suptitlexx-largefontsize)r1   rY   seedr,   r-   r   rM   rO   rX   rZ   r[   r   r   )r>   subr\   r@   r`   s        rC   test_subfigurer    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88rE   c                      t          j        d          } |                     dd          }t          j                            |                     | j                                                  j	        d           d S )Nr  r   r&   r"   g       @)
r,   r-   r   r1   rV   rW   r  rL  r  rO  )r>   r  s     rC   test_subfigure_tightbboxr    sp    
*M
*
*
*C
..A

CJcj557788>    rE   c                  B   t          j        d          } |                                 }|                                |                                 k    sJ |                    d           |                                dk    sJ |                                 dk    sJ d S )Nr%   rP  rK  )r,   r-   r   get_dpiset_dpir>   sub_figs     rC   test_subfigure_dpir    s    
*


CnnG??----OOC??####;;==CrE   ztest_subfigure_ss.png{Gz?)r@  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  r  r   r&   r"   r   pinkr  r   r  r  rL   r  r   r   r  r  r  )r1   rY   r  r,   r-   r  r  rM   rO   rX   rZ   r[   r   r/   r0   r2   r   )r>   r?   r  r\   r@   r`   s         rC   test_subfigure_ssr    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8rE   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  r  )r+      )r    r   r>   r&   r"   gQ?)r  r   coralz
subfigs[0]z
subfigs[1]gffffff?r}  zsubfigsnest[0]r   Tr]     r   g      g      @r  zx-labelr  zy-labelTitlerL   zsubfigsnest[1]r   r!   r  ylabelr   r   )r1   rY   r  r,   r-   r   r   r   rM   rX   rZ   r5   r3   r   r[   rN   r   r   )
r>   r  subfigsnestaxsnest0r@   r  r`   axsnest1r]   axsRights
             rC   test_subfigure_doubler  6  s    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((HHHrE   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 )NTrJ   r!   r  r   r"   r&       r   rI   )r,   r-   r  r  r1   rV   rW   r2  minmaxr4   r/   rR   )r>   r?   sub_figsr*  r+  rA   s         rC   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 " "!!!!     rE   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!   )rK   r   r&   r"   r   r4  )r  rw     )r  r  r   g!<LgkX.8@i  i  )r   r   r!   r  g YI_gRϫW@x   i,  )r,   r-   r   r  r/   r0  rP  rR   
get_xticksr1   rV   rW   )	r>   	subfig_bl	subfig_brr?   r   r   r  ticks120ticks300s	            rC   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2rE   ztest_subfigure_scatter_size.png)r@  rA  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"   rz  r   s)r  marker)r!   rI   rf   )r   r   r  r   r   )r  r  r   r   )r,   r-   r  r/   r0  r  rM   )r>   r?   r   r  r\   r@   s         rC   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rE   c                  ,   t          j        d          } |                                 }|                    d          }|                    dd          }|                    |           t          j                    }|                     |d           d S )Nr  r   r   r&   ri  r{  )	r,   r-   r   r/   r  	bar_labelrn  ro  re  )r>   r  r@   r   buffers        rC   test_subfigure_pdfr    s}    
*M
*
*
*CnnG			S	!	!B
q!ALLOOOZ\\FKKuK%%%%%rE   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  rU  r   r   rV  r'  )	r,   r-   r   r1   rV   rW   r2  r  r  )r  r*  r+  s      rC   test_subfigures_wspace_hspacer    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ErE   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-   r/   rh   r  r>   r@   r   s      rC   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====IKKKKKrE   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   r  )r,   r-   r   rh   r  r  s      rC   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====IKKKKKrE   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 )
Nr5  cannot show the figurec                  h    t          d j        g d          dR                                   d S )Nbutton_press_eventrU  r6  r&   )r   rL  _processr>   transs   rC   single_pressz!test_ginput.<locals>.single_press  s=    'IeeHooIqIIIRRTTTTTrE   rU  r$  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 )
Nr#  r$  r&   key_press_event	backspacer  r   r   r   r  r"   )r   rL  r%  r   r&  s   rC   multi_pressesz"test_ginput.<locals>.multi_presses
  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RrE   r!   r,  r-  )r<  r>  r,   rM   	transDatar  r   startginputr1   rV   rW   )recwarnr@   r(  r.  r>   r'  s       @@rC   test_ginputr3    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CrE   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 )Nr5  r!  rU  )timeoutr*  r   Tr#  r   r&   F)r<  r>  r,   r-   waitforbuttonpressr   r   rL  r%  r0  r   )r2  r>   s     rC   test_waitforbuttonpressr7    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,,,,,,rE   c                      t          d          } |                     ddd          }|                                 dk    sJ |                                dk    sJ d S )Nzwhole Figure)rT   r&   z
sub figure)r   r   r   r  s     rC   test_kwargs_passr9    se    
~
&
&
&CnnQn66G==??n,,,,,......rE   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     rC   test_rcparamsr=  '  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!   r_  linearrU        Y@)rU  r@  r  )r,   rM   r0   r`  copydeepcopyr   r  r  rR   get_xlim)r   r@   r   s      rC   test_deepcopyrD  5  s9   |~~HD"GGQFQFMM%=D 9Q<r!!!!9Q<""$$----IaLH%%%==??e#### KKc!!!!!!;;==K''''9Q<  ""f,,,,,,rE   c                      t          d          } | j                            d           | j        dk    sJ t	          j        t	          j        |                     }|j        dk    sJ d S )Nr   r  r4  i&  )r   rL  r~  rP  pickleloadsdumps)r>   r   s     rC   %test_unpickle_with_device_pixel_ratiorI  N  s`    
R...CJ&&q)))7d????<S))**D8r>>>>>>rE   c                      ddi} t          |           }t          j        ddddg|            | |k    sJ t          j        dddg|            d S )Nr  rU  r&   r"   )rw  gridspec_kwAB)dictr,   rM   rW  )r?   gs_origs     rC   test_gridspec_no_mutate_inputrO  V  sb    
"B2hhGLAQF;;;;====t1a&bAAAAAArE   )r  ri  r   r  r   svgzc                 p    t                                          t          j                    | i            d S )Nrl  metadata)r   re  rn  ro  r  s    rC   test_savefig_metadatarU  ^  s-    
HHRZ\\#;;;;;rE   )jpegrk  rj  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   rR  )rl   rm   rn   r   re  rn  ro  rT  s    rC   test_savefig_metadata_errorr\  c  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  r  r   zwill be deprecatedr   ru   )r  rg  r,   r-   r   layout_enginer   rl   r   PendingDeprecationWarningget_constrained_layout_pads)paramsexpectedr>   s      rC    test_get_constrained_layout_padsrd  i  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   rn  StringIOre  seekr  r  )r>   r  s     rC   test_not_visible_figurerh  q  s    
((C
+--CKKEK"""HHQKKKCHHJJOOE
+--CKKEK"""HHQKKK

""""""rE   )rA  r   rn  pathlibr   rF  platform	threadingr   typesr   r<  numpyr1   rl   PILr   
matplotlibr   r   matplotlib.testing.decoratorsr	   r
   matplotlib.axesr   matplotlib.backend_basesr   r   matplotlib.figurer   r   matplotlib.layout_enginer   r   r   matplotlib.tickerr   r   r   matplotlib.pyplotpyplotr,   matplotlib.datesdatesr7  machinerD   ra   rp   rv   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r%  r,  r  r  rG  r@  contextrQ  rW  infrS  rZ  rc  rg  rp  ru  paramrs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r*  r6  r>  rD  rI  rK  r  r  r  r  r  r  r  r  r  r  r  r  r  r3  r7  r9  r=  rD  rI  rO  rU  r\  rd  rh  ru   rE   rC   <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  2  2F  0$ $ $ 4 4 4& >"##  $# ?#$$  %$  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+  
+ + 
+@ @ @8> > >*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9 97 79,        *+7!,f 54A A A9 9A A9* ./w!,f 57 7 7%) %)7 7%)P! ! !: 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@
= = =# # # # #rE   