
    gt              
       <	   d dl Z d dlmZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	Z	d dl
Zd dlZd dlmZ d dlZd dlmZ d dlmZmZ d dlmZ d d	lmZmZ d d
lmZmZ d dlmZmZm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&Z' d dl(m)Z*  edgddg ejV                         dk(  rd nd      d        Z, eddg ejV                         dk(  rd ndd      d        Z-d Z.d Z/d Z0d Z1d Z2d Z3 ed g ejV                         d!k(  rd"nd #      d$        Z4 ed%g      d&        Z5d' Z6d( Z7d) Z8 ed*g      d+        Z9d, Z:d- Z;d. Z< ed/gddgd0d1d23      d4        Z=d5 Z>d6 Z?d7 Z@d8 ZAd9 ZBej                  j                  d:g d;      d<        ZEd= ZFej                  j                  d>      d?        ZIej                  j                  d@dAej                  fdBej                  dAfg      dC        ZLdD ZMdE ZNdF ZOdG ZPdH ZQej                  j                  dI ej                  dJej                  j                  dJ      gK       ej                  dLej                  j                  dL      gK      g      dM        ZTdN ZUdO ZV ej                  dPdQi       edgR      dS               ZXdT ZYdU ZZdV Z[ edgR      dW        Z\ej                  j                  dXdYdZg      d[        Z]d\ Z^ edd]gR      d^        Z_ej                  j                  d_g d`      da        Z`db Zadc Zbdd Zcej                  j                  dedfdgg      dh        Zddi Zeej                  j                  d      dj        Zfdk Zg edlgddmdndodQp      dq        Zh eg drR      ds        Zi G dt du      Zjdv Zk edwgddxdniy      dz        Zld{ Zmd| Zn ed}gddxdnid~      d        Zo edgddxdniy      d        Zpd Zqej                  j                  d      d        Zr edgddQ      d        Zsd Ztd Zud Zvd Zwd Zxd Zyd Zzd Z{ edgR      d        Z|d Z}d Z~d Zej                  j                  d_g d      d        Zej                  j                  d_g d      d        Zd Zd Zd Zd Zd Zd Zy)    N)datetime)Timer)SimpleNamespace)Image)gridspec)image_comparisoncheck_figures_equal)Axes)KeyEvent
MouseEvent)Figure
FigureBase)ConstrainedLayoutEngineTightLayoutEnginePlaceHolderLayoutEngine)AutoMinorLocatorFixedFormatterScalarFormatterfigure_align_labelspngsvgx86_64{Gz?)
extensionstolc                     t        j                  d      } t        j                  dd      }| j	                  |dd df         }|j                  t        j                  ddd             |j                  d       | j	                  |d	         }|j                  t        j                  dd
d             t        d      D ]  }| j	                  |d|f         }|j                  d|z         |j                  d|z         |dv r5|j                  j                  d       |j                  j                          |dk(  r&|j                         D ]  }|j                  d        |dk(  s|j                   j                  d       |j                   j#                           t        d      D ]  }| j	                  |d|f         }|j                  d|        |j                  d|        |dk(  sG|j                  t        j                  dd
d             |j                   j                  d       |j                   j#                          |j                         D ]  }|j                  d         | j%                          y )Ntightlayout   r          .A  z	Ylabel0 0)r        @d      z
YLabel1 %dz
XLabel1 %dr   r!   topZ   rightzXLabel2 zYLabel2 
   )pltfigurer   GridSpecadd_subplotplotnparange
set_ylabelrange
set_xlabelxaxisset_label_positiontick_topget_xticklabelsset_rotationyaxis
tick_rightalign_labels)figgsaxiticks        Y/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_figure.pytest_align_labelsrE      s    **G
$C			1a	 B	ArrE	#BGGBIIad#$MM+	E	#BGGBIIac"#1X "__R1X&
lQ&'
lQ&';HH''.HH6**, &!!"%&6HH''0HH!" 1X 
&__R1X&
n%
n%6GGBIIab)*HH''0HH!**, &!!"%&
&     zfigure_align_titles_tight.pngz#figure_align_titles_constrained.pnggI+?mpl20)r   stylec                     dD ]=  } t        j                  dd| ddg      \  }}|d   }|j                  t        j                  ddd             |j                  dd	
       |j                  dd
       |j                  dd
       |d   }|j                  t        j                  ddd             |j                  d       |j                  d       |j                  j                  d       |j                  j                          |j                         D ]  }|j                  d        |j                          @ y )N)r   constrainedr'   r!   )r   width_ratiosr   r"   r#   zTitle0 leftleft)loczTitle0 centercenterzTitle0 rightr+   r%   r&   Title1Xlabel0r)   r*   )r-   subplotsr1   r2   r3   	set_titler6   r7   r8   r9   r:   r;   align_titles)r   r?   axsrA   rC   s        rD   test_align_titlesrU   E   s   
 + <<1V1a&ISV
		!S$'(
]/
_(3
^1V
		!S#&'
X
i 
##E*
&&( 	"Db!	" 	%rF   c                     t        j                  dd      \  } }t        |j                        D ]e  \  }}|j	                  d       |j	                  d       |j                  t        j                  d      |z  t        j                  d      |z         g | j                          | j                          | j                          t        j                  d      }t        j                  d      }t        |j                        D ]Y  \  }}|j                  j                  j                         d   ||<   |j                  j                  j                         d   ||<   [ t        j                   j#                  |d d |dd         t        j                   j#                  |d d d   |dd d          t        j                  ddd      \  } }t        |j                        D ]V  \  }}|j	                  d       |j	                  d       |j%                  t        j&                  j)                  d	d	            }X | j+                  
       | j                          | j                          | j                          t        j                  d      }t        j                  d      }t        |j                        D ]Y  \  }}|j                  j                  j                         d   ||<   |j                  j                  j                         d   ||<   [ t        j                   j#                  |d d |dd         t        j                   j#                  |d d d   |dd d          y )Nr!   BooWho   r'   r   Tconstrained_layoutr,   rA   )r-   rQ   	enumerateflatr6   r1   r2   r3   align_ylabelsalign_xlabelsdraw_without_renderingzerosr7   labelget_positionr<   testingassert_allclose
pcolormeshrandomrandncolorbar)r?   rT   nnrA   xnynpcs          rD   test_align_labels_stray_axesro   _   s   ||Aq!HCCHH% 4B
e
e
		!b "))A,"234  	!B	!BCHH% 2B,,.q12,,.q122 JJr"1vr!"v.JJr#A#w14a41||AqT:HCCHH% 4B
e
e]]299??2r234 LLL 	!B	!BCHH% 2B,,.q12,,.q122 JJr"1vr!"v.JJr#A#w14a41rF   c                     t        j                  d       t        j                  d      } t        j                  d       t        j                  d       t        j                          t        j                  d       t        j                  d       t        j                  d       t        j                         g dk(  sJ t        j                         g dk(  sJ t        j                  d	       t        j                          t        j                  d
       t        j                  d       t        j                         ddgk(  sJ t        j                         ddgk(  sJ t        j                  |        t        j
                         | k(  sJ t        j                  t              5  t        j                  t                      d d d        y # 1 sw Y   y xY w)Nalltodayr    tomorrowr   r'   )r   r'   r    rY      ) rr   ru   rs   ru   r,   rt   ru   )
r-   closer.   get_fignumsget_figlabelsgcfpytestraises
ValueErrorr   )	fig_todays    rD   test_figure_labelr~      s8   IIe

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

68  s   .GGc                      t        j                  d       t        j                  d      } t        j                  t
        j                  d      5  d| _        d d d        | j                  dk(  sJ y # 1 sw Y   xY w)Nrq   r'   &Changing 'Figure.number' is deprecatedmatchr!   )r-   rv   r.   rz   warnsmplMatplotlibDeprecationWarningnumberr?   s    rD   test_figure_label_replacedr      sa    IIe
**Q-C	c66D
F 
 ::?? s   A22A;c                  r   t               } t        j                  t              5  | j                   d d d        t        j
                  t        j                  d      5  d| _        d d d        | j                  dk(  sJ t        j                  | j                        rJ y # 1 sw Y   qxY w# 1 sw Y   HxY w)Nr   r   rt   )
r   rz   r{   AttributeErrorr   r   r   r   r-   fignum_existsr   s    rD   test_figure_no_labelr      s    
(C	~	& 

 
c66D
F 
 ::??  ,,,,  s   B!B-!B*-B6c                     t        j                  d       t        j                  d       t        j                  d       t        j                          t        j                  d      sJ t        j                  d      sJ t        j                  d      sJ t        j                  d      sJ t        j                  d       t        j                  d       t        j                  d      rJ t        j                  d      rJ y )Noner!   threerY   )r-   r.   r   rv    rF   rD   test_fignum_existsr      s    JJuJJqMJJwJJLU###QW%%%QIIeIIaL  '''  ####rF   c                  0   d} d}t        j                  d      }|j                  |        |j                  D cg c]  }|j	                          c}| gk(  sJ t        j                  dd      }|j                  dd|       ||u sJ |j                  D cg c]  }|j	                          c}| |gk(  sJ t        j                  dddd	      \  }}||u sJ |j                  D cg c]  }|j	                          c}g k(  sJ y c c}w c c}w c c}w )
NzA fancy plotzReally fancy!r'   )numF)r   clear      ?r!   T)r-   r.   suptitletextsget_texttextrQ   )text1text2fig0tfig1fig2ax2s          rD   test_clf_keywordr      s    EE::!DMM%"&**-QAJJL-%888::!5)DIIc34<<"&**-QAJJL-%???Qq5ID#4<<"&**-QAJJL-333 .
 . .s   D	D)Dfigure_todayarm64gQ?)r   c                     t        j                  d      } | j                         }|j                  | j	                                |j                  t        j                  d             t        j                  d       t        j
                  ddgddgd       t        j                  d       t        j                  d       y )Nrr   rt   rs   r   r'   r)	r-   r.   r0   rR   	get_labelr1   r2   r3   rv   r?   rA   s     rD   test_figurer      s     **W
C		BLL!GGBIIaLJJzHHaVaVS!JJwIIjrF   figure_legendc                  l   t        j                  d      \  } }|d   j                  ddgddgdd       |d   j                  ddgddgdd       |d   j                  ddgd	d	gdd
       |d   j                  ddgddgdd       |d   j                  ddgddgdd       | j                          y )Nr!   r   r'   xg)rc   coloryr   r   k_yzb)r-   rQ   r1   legendr?   rT   s     rD   test_figure_legendr      s    ||AHCFKKAAcK5FKKAAcK5FKKAc
#SK9FKKAAd#K6FKKAAcK5JJLrF   c                     t        j                         } | j                  g d      }| j                         |u sJ | j	                  d      }| j                         |u sJ | j                  |       | j
                  ||gk(  sJ | j                         |u sJ | j                  |       | j
                  ||gk(  sJ | j	                  |       | j
                  ||gk(  sJ | j                         |u sJ y )Nr   r   r'   r'   o   )r-   r.   add_axesgcar0   axessca)r?   ax0ax1s      rD   test_gcar      s    
**,C ,,|
$C779 //#
C779 LL88Sz!!!779 GGCL88Sz!!! OOC88Sz!!!779rF   c                  n   t        j                         } | j                  t               t	        j
                  t              5  | j                  t        d       d d d        t	        j
                  t              5  | j                  t        d       d d d        t	        j
                  t              5  | j                  dd       d d d        t	        j
                  t              5  | j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   VxY w# 1 sw Y   y xY w)	N)
axes_class3d)r   
projectionT)r   polar)r   r   *   r   )r-   r.   r0   r
   rz   r{   r|   	TypeErrorr   s    rD   test_add_subplot_subclassr     s    
**,COOtO$	z	" :4D9:	z	" 54t45	z	" 54t45	y	! '2&' ': :5 55 5' 's0   D=D6D+D+DDD(+D4c                     t        j                         } t        j                  t        d      5  | j                  ddd       d d d        t        j                  t        d      5  | j                  ddd       d d d        t        j                  t        d      5  | j                  ddd       d d d        t        j                  t        d      5  | j                  ddd       d d d        t        j                  t        d      5  | j                  ddd	       d d d        t        j                  t        d
      5  | j                  d       d d d        t        j                  t        d
      5  | j                  d       d d d        t        j                  t        d      5  | j                  dd       d d d        t        j                  t        d      5  | j                  dddd       d d d        t        j                  t        d      5  | j                  ddd       d d d        t        j                  t        d      5  | j                  ddd       d d d        t        j                         \  }}t        j                  t        d      5  | j                  |       d d d        y # 1 sw Y   yxY w# 1 sw Y   OxY w# 1 sw Y   %xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   -xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz,Number of columns must be a positive integerr   r!   r   r'   z)Number of rows must be a positive integerz)num must be an integer with 1 <= num <= 4rt   r   zmust be a three-digit integerr   r#   z2takes 1 or 3 positional arguments but 2 were givenz2takes 1 or 3 positional arguments but 4 were givenr    rY   z2Number of rows must be a positive integer, not '2'2z5Number of columns must be a positive integer, not 2.0g       @5The Axes must have been created in the present figure)r-   r.   rz   r{   r|   r0   r   rQ   )r?   _rA   s      rD   test_add_subplot_invalidr     s   
**,C	zK
M !1a ! 
zH
J !1a ! 
z *9 
: !1a ! 
z *9 
: !1a ! 
z *9 
: #1c"# 
z)H	I 	z)H	I  
y ); 
< 1 
y ); 
< $1a#$ 
z'
( # 	Q"# 
z'
( # 	3"# LLNEAr	z.
/  	 I! !! !! !! !# #   $ $# ## #
 s   J;'KKK"K/K<8L	-L#L#L0L= M	;KKK"K,/K9<L	LL #L-0L:=M	Mfigure_suptitlec                      t        j                         \  } }| j                  dd       | j                  ddd       y )Nhellor   )r   titler      )r   rotation)r-   rQ   r   )r?   r   s     rD   test_suptitler   E  s3    \\^FCLLL$LLbL1rF   c                  &   t        j                         \  } }t        j                  j	                  dd      }| j                  d|      }|j                         |j                         k(  sJ |j                         |j                         k(  sJ y )Nlargebold)sizeweightzfontprops title)fontproperties)	r-   rQ   r   font_managerFontPropertiesr   get_fontsizeget_size_in_points
get_weight)r?   rA   fpstxts       rD   test_suptitle_fontpropertiesr   L  s{    llnGC



)
)wv
)
FC
,,(,
=C!7!7!9999>>s~~////rF   c                  2   t        j                  d      } | j                  dd      \  }}|j                  d       |j	                          |j	                          | j                  d       |j                         dk(  sJ |j                         dk(  sJ y )	N)rY   r    figsizer'   r!   whitezThis is a visible suptitle.)        r   r   r   )      ?r   r   r   )r-   r.   
subfiguresset_facecolorrQ   r   get_facecolor)r?   sf1sf2s      rD   test_suptitle_subfiguresr   T  s    
**V
$C~~a#HCgLLNLLNLL./ "6666"6666rF   c                     t        j                         \  } }| j                         dk(  sJ | j                         dk(  sJ | j	                         dk(  sJ | j                  d       | j                         dk(  sJ | j                  d       | j                         dk(  sJ | j                  d       | j	                         dk(  sJ y )Nru   r   	supxlabel	supylabel)r-   rQ   get_suptitleget_supxlabelget_supylabelr   r   r   r   s     rD   %test_get_suptitle_supxlabel_supylabelr   b  s    llnGC###"$$$"$$$LL+++MM++---MM++---rF   alpha_backgroundr   r'   皙?none)	facecolor	edgecolor)r   savefig_kwargc                     t        j                  ddg      } | j                  d       | j                  j	                  d       | j
                  j                  t        j
                  j                  ddgddd	
             y )Nr!   r'   r   r   r         333333?red)radiusalphar   )	r-   r.   r   patch	set_alphapatchesappendr   CirclePolygonr   s    rD   
test_alphar	  o  sk     **aV
$Ck"IIKKs{{00	R3% 1 9 :rF   c                      t        j                  t              5  t        t        j
                  d   dz         D ]  } t        j                           	 d d d        y # 1 sw Y   y xY w)Nzfigure.max_open_warningr'   )rz   r   RuntimeWarningr5   r   rcParamsr-   r.   )rB   s    rD   test_too_many_figuresr  ~  sO    	n	% s||$=>BC 	AJJL	  s   9AA&c                       G d dt                G fdd      } t        j                         }|j                  ddd |               t        j                  |       y )Nc                       e Zd ZdddZy).test_iterability_axes_argument.<locals>.MyAxesN)myclassc                6    t        j                  | g|i | y N)r
   __init__)selfr  argskwargss       rD   r  z7test_iterability_axes_argument.<locals>.MyAxes.__init__  s    MM$000rF   )__name__
__module____qualname__r  r   rF   rD   MyAxesr    s
    *. 	1rF   r  c                       e Zd Zd Z fdZy)/test_iterability_axes_argument.<locals>.MyClassc                 $    |dk7  rt        d      y )Nazitem should be a)r|   )r  items     rD   __getitem__z;test_iterability_axes_argument.<locals>.MyClass.__getitem__  s    s{ !344 rF   c                     d| ifS )Nr  r   )r  r  s    rD   _as_mpl_axesz<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axes  s    It,,,rF   N)r  r  r  r!  r#  )r  s   rD   MyClassr    s    	5	-rF   r$  r'   r   )r
   r-   r.   r0   rv   )r$  r?   r  s     @rD   test_iterability_axes_argumentr%    sG    1 1- - **,COOAq!	O2IIcNrF   c                     t        j                         } | j                  d       | j                         dk(  sJ | j	                  d       | j                         dk(  sJ | j                  dd       | j                         dk(  sJ | j                         dk(  sJ | j                  d       | j                         dk(  sJ | j                         dk(  sJ y )Nrt   r'   r!   rY   )r'   r    r    )r-   r.   set_figwidthget_figwidthset_figheightget_figheightset_size_inchesr   s    rD   test_set_fig_sizer,    s    
**,C Q""" a!### 1"""!### """!###rF   c                     t        j                  dd      \  } }|d   j                          |j                         d d D ]  }|| j                  v rJ  |d   | j                  vsJ t        | j                        dk(  sJ y )Nr!   r$   r$   r$   r    )r-   rQ   removeravelr   lenr?   rT   rA   s      rD   test_axes_remover3    s~    ||Aq!HCKiik#2 SXX~~v;chh&&&sxx=ArF   c                     t        j                  t        j                  d      t        j                  d      z        \  } }|| z  dk(  sJ t        j                  d      \  } }|| z  dk(  sJ t        j                  t        j                  d            \  } }|| z  dk(  sJ t        j                  t        j                  d            \  } }|| z  dk(  sJ y )Nr!   r'   r'   r!   r   )r!   r!   )r-   	figaspectr2   float64rb   )whs     rD   test_figaspectr:    s    ==AA67DAqq5A::==DAqq5A::==&)*DAqq5C<<==&)*DAqq5A::rF   which)bothmajorminorc                 V   g d}g d}d}g d}t        j                  |      }t        j                  |      }t        j                         \  }}|j	                  ||       |j                          |j                          |j                  j                  t        d             t        j                         5  t        j                  dd       |j                  j                  t        |             d d d        |j                  d|d	|        | d
v rB|j                   d   j#                  dd      D ]   }	t%        |	j'                               |k(  r J  | dv rC|j                   d   j#                  dd      D ]   }	t%        |	j'                               |k(  r J  y y # 1 sw Y   xY w)N)z
3 Jan 2013z
4 Jan 2013z
5 Jan 2013z
6 Jan 2013z
7 Jan 2013z
8 Jan 2013z
9 Jan 2013z10 Jan 2013z11 Jan 2013z12 Jan 2013z13 Jan 2013z14 Jan 2013)z16:44:00z16:45:00z16:46:00z16:47:00z16:48:00z16:49:00z16:51:00z16:52:00z16:53:00z16:55:00z16:56:00z16:57:00<   )r'   r!   r    rY   rt         r!   ignorez=FixedFormatter should only be used together with FixedLocator皙?r+   )r<  r=  r   Fr=  )r<  r>  Tr>  )mdatesdatestr2numr-   rQ   r1   
yaxis_date
xaxis_dater7   set_minor_locatorr   warningscatch_warningsfilterwarningsset_minor_formatterr   autofmt_xdater   r:   intget_rotation)
r;  datetimeangleminorsr   r   r?   rA   rc   s
             rD   test_autofmt_xdaterU    s   HD$D E"F4 A4 AllnGCGGAqMMMOMMOHH/23		 	 	" =K	M 	$$^F%;<	= c5'51!!XXa[00@ 	6Eu))+,555	6 !!XXa[00w? 	6Eu))+,555	6 "= =s   :;FF(c                  "   t        j                  d      \  } }|j                  g dg dg      }t        j                  |       | j	                          | j                          |j                  d      d   }|j                         dk(  sJ y )	NrJ   r   )r'   rY   rA  )r!   r    rt   r=  r;  r'   g      >@)r-   rQ   imshowrj   rN  ra   r:   rP  )r?   rA   imrc   s       rD   'test_autofmt_xdate_colorbar_constrainedrZ    s|    
 ll-0GC	Iy)	*BLL W-a0E4'''rF   defaultc                     t        j                  d      } | j                          | j                  j                  j
                  dk(  sJ | j                  j                  j                  dk(  sJ d| _        | j                          | j                  j                  j
                  dk(  sJ | j                  j                  j                  dk(  sJ y )N)rY   rY   r   i  2      )r-   r.   ra   canvasrendererheightwidthdpir   s    rD   test_change_dpird    s    
**V
$C ::%%,,,::$$+++CG ::%%,,,::$$+++rF   zwidth, heightr'   )r$   r'   c                 8   t        j                  t              5  t        j                  | |f       d d d        t        j                         }t        j                  t              5  |j                  | |       d d d        y # 1 sw Y   RxY w# 1 sw Y   y xY w)Nr   )rz   r{   r|   r-   r.   r+  )rb  ra  r?   s      rD   test_invalid_figure_sizerf    sx     
z	" ,

E6?+, **,C	z	" +E6*+ +	, ,+ +s   B(BBBc                     t        j                         } t        j                  t        d      5  | j                          d d d        t        j                  t              5  | j                  dddt        j                  f       d d d        t        j                  t        d      5  | j                  g dg d       d d d        t        j                         \  }}t        j                  t        d      5  | j                  |       d d d        |j                  |       t        j                  t        d	      5  |j                  |d
       d d d        t        j                  t        d	      5  | j                  g dd
       d d d        y # 1 sw Y   VxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   y xY w)Nz.missing 1 required positional argument: 'rect'r   皙?r   z#multiple values for argument 'rect'r   )rectr   z)add_axes\(\) takes 1 positional argumentszextra positional argument)r-   r.   rz   r{   r   r   r|   r2   nanrQ   delaxes)r?   r   rA   s      rD   test_invalid_figure_add_axesrl    sv   
**,C	yM
O  
z	" +b"b"&&)*+ 
y(M	N 6\56 ||~HD"	z&
'  	R
 	LL	y(T	U 7b567 
y(T	U @\#>?@ @) + +6 6 7 7@ @sG   F"$F")F/;F;G7GF"F,/F8;GGGc                     t        j                  ddddd      \  } }|j                  D ]  }|j                  g dg d        j	                  d       |j                  d       |dd d f   D ],  }dt        |j                  j                  d	            k(  r,J  |d
d d f   D ],  }dt        |j                  j                  d	            k  r,J  |d d d
f   D ],  }dt        |j                  j                  d	            k(  r,J  |d d df   D ],  }dt        |j                  j                  d	            k  r,J  y )Nr!   TF)sharexshareysqueeze)r,   r   r   logr   r<  rW  r'   )
r-   rQ   r^   r1   
set_yscale
set_xscaler1  r7   get_ticklabelsr<   r2  s      rD   test_subplots_shareax_loglabelsru  5  sM   ||AqdEJHChh ,
l+, MM%MM%!Q$i ?C//f/=>>>>? !Q$i >3rxx..V.<====> !Q$i ?C//f/=>>>>? !Q$i >3rxx..V.<====>rF   c                      t        j                         } d}t        j                  t        |      5  | j                  dd       d d d        y # 1 sw Y   y xY w)Nz9savefig\(\) takes 2 positional arguments but 3 were givenr   z
fname1.pngz
fname2.png)r-   r.   rz   r{   r   savefig)r?   msgs     rD   test_savefigry  J  sC    
**,C
FC	y	, 0L,/0 0 0s   AAc                      t        j                         } dD ]J  }t        j                  t              5  | j                  t        j                         |d       d d d        L y # 1 sw Y   WxY w)N)r   pdfr   tifjpgT)formatnon_existent_kwarg)r-   r.   rz   r{   r   rw  ioBytesIO)r?   r~  s     rD   test_savefig_warnsr  Q  sa    
**,C5 N]]9% 	NKK

VKM	N 	NN	N 	Ns   'A%%A.	c                  8   t        j                         } t        j                  t        d      5  | j                  dd       d d d        t        j                  t        d      5  | j                  dd       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)	NzNo module named '@absent'r   testzmodule://@absent)backendz-The 'pdf' backend does not support png outputztest.pngr{  )r-   r.   rz   r{   ModuleNotFoundErrorrw  r|   r   s    rD   test_savefig_backendr  X  s    
**,C	*2M	N 8F$678	zL
N /J./ /8 8/ /s   B'BBBr  Agg)marksCairoc                 t   t        j                         \  }}|j                  g d       t        j                         5 }|j                  |d       t        j                  |      }|j                          d d d        t        j                         \  }}|j                  g d       |j                  j                  d       t        j                         5 }|j                  |d       t        j                  |      }|j                          d d d        k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr'   r!   r    r   r~  r!   )r-   rQ   r1   r  r  rw  r   openloadr_  _set_device_pixel_ratio)r  r?   rA   bufratio1ratio2s         rD   test_savefig_pixel_ratior  b  s    
 llnGCGGI	 C&C
 llnGCGGIJJ&&q)	 C&C
 V  s   9D"9D."D+.D7c                      t        j                  d      } | j                  t        j                         d       | j                         j                  sJ y )N
compressedr   r   bbox_inches)r-   r.   rw  r  r  get_layout_engine	_compressr   s    rD   #test_savefig_preserve_layout_enginer  y  s>    
**L
)CKK

'K2  ",,,,rF   c                     t        j                         \  } }|j                  t        j                  j                  dd            }| j                  |d      }| j                  t        j                         t        j                  j                  ddgddgg             |j                  j                  d      j                  |j                  j                  d	      j                  k7  sJ y )
Nr!   (   )aspectr   rY   r  T)originalF)r-   rQ   rg   r2   rh   ri   rj   rw  r  r  r   
transformsBboxrA   rd   bounds)r?   rA   rn   cbars       rD   test_savefig_locate_colorbarr    s    llnGC	ryyq!,	-B<<2<&DKK

#..*=*=1v1v>N*OKP GG  $ /66GG  % 0778 9 8rF   zsavefig.transparentTr   c                    | j                  dddd      }| j                  |d d d d f         }|j                  |d         }|j                  |d d d d f         }|j                  |d dd d f         }|j                  g d      }|j                  g d      }| j                  |dd df         }	| j                  |d         }
|||||	|
fD ]3  }|j	                  g g        |j
                  d d  j                  d	       5 y )
Nr    皙?)rL   wspacer   r   r$   )rh  rD  333333?r   r.  )xticksyticksF)add_gridspecadd_subfigurer0   
inset_axessetspinesset_visible)fig_testfig_refgs1f1f2ax12r   iax1iax2r   ax3rA   s               rD   test_savefig_transparentr    s	   
 

14

=C			AqD		*B			#d)	$B>>#ad)$D
..SbS!V
%C>>*+D??+,D


s2ss7|
,C


s6{
+CS$c3/ (
b$
		!  '(rF   c                  R    t        j                  dd      } t        |       dk(  sJ y )N)r,   r   r,   )r   rc  z!<Figure size 100x200 with 0 Axes>)r-   r.   reprr   s    rD   test_figure_reprr    s%    
**X2
.C9;;;;rF   c                  $   t        d       } | j                         rJ | j                         rJ t        d      } | j                         sJ | j                         rJ t        d      } | j                         rJ | j                         sJ y )Nr   r   rJ   )r   get_tight_layoutget_constrained_layoutr   s    rD   test_valid_layoutsr    s    

C##%%%))+++

 C!!!))+++

&C##%%%%%'''rF   c                     t        j                  d      \  } }t        j                  t              5  | j                  d       d d d        t        | j                         t              sJ d}t        j                  t        |      5  t        dd	      } d d d        t        | j                         t              sJ d
}t        j                  t        |      5  t        dd      } d d d        t        | j                         t              rJ t        | j                         t              sJ t        j                  t        d      5  t        d       d d d        t        j                  d      \  } }| j                  d       t        | j                         t              sJ | j                  d       t        | j                         t              sJ t        j                  d      \  } }|j                  t        j                   j#                  dd            }| j%                  |       t        j                  t&        d      5  | j                  d       d d d        | j                  d       t        j                  t&        d      5  | j                  d       d d d        t        j                  d      \  } }|j                  t        j                   j#                  dd            }| j%                  |       t        j                  t&        d      5  | j                  d       d d d        | j                  d       t        | j                         t(              sJ t        j                  t&        d      5  | j                  d       d d d        y # 1 sw Y   dxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   yxY w# 1 sw Y   @xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrJ   r   皙?)r)   z1The Figure parameters 'layout' and 'tight_layout'r   r   F)r   tight_layoutz7The Figure parameters 'layout' and 'constrained_layout')r   r[   zInvalid value for 'layout'foobarr!   zColorbar layout of new layoutr   )r-   rQ   rz   r   UserWarningsubplots_adjust
isinstancer  r   r   r   r{   r|   set_layout_enginerg   r2   rh   ri   rj   RuntimeErrorr   )r?   rA   wstrn   s       rD   test_invalid_layoutsr    s.   ll-0GC	k	" %$% c++-/FGGG >C	k	- 9G%89c++-/@AAA
CC	k	- EMeDE#//13DEEEc++-/FGGG	z9
;  h 
 ll-0GC'"c++-/@AAA-(c++-/FGGG ll-0GC	ryyq!,	-BLL	|+J	K 'g&'&!	|+J	K 'g&' ll'*GC	ryyq!,	-BLL	|+J	K -m,-&!c++-/FGGG	|+J	K -m,- -]% %9 9E E
   ' '' '- -
- -s_   N(N5OOOO)'O6P(N25N?OOO&)O36O?Pc                    t        || gddg      D ]i  \  }}t        j                  d|i      5  |j                  d      }|j	                  d       d d d        t        |j                         t              riJ  y # 1 sw Y   ,xY w)NFTzfigure.autolayoutr!   )ncolsr,   )w_pad)zipr   
rc_contextrQ   r  r  r  r   )r  r  r?   
autolayoutr   s        rD   &test_tightlayout_autolayout_deconflictr    s    2UDMB LZ^^0*=> 	'<<a<(D2&	' #//13JKKK	L	' 	's   %A>>B	r   rJ   r  c                     t        j                  |       \  }}t        j                  t        d      5  t        j
                          ddd       y# 1 sw Y   yxY w)zj
    Raise a warning when a previously assigned layout changes to tight using
    plt.tight_layout().
    r   z The figure layout has changed tor   N)r-   rQ   rz   r   r  r  )r   r?   rA   s      rD   test_layout_change_warningr    sF     ll&)GC	k)K	L   s   AAc                  x    t               } | j                          | j                          | j                          y r  )r   r  r   s    rD   test_repeated_tightlayoutr    s-    
(CrF   r{  c           	      &   d| _         d|_         | j                          t        j                  ddgddgd      }t        j                  ddgddgd      }t        j                  ddd d	
      }t        j                  ddd      }t        j                  dd| j
                  dd      }|||||fD ]  }| j                  |        |j                          |j                         }t        j                  ddgddg|j                  dd      }t        j                  ddd ddd	      }t        j                  dd|j                  dd      }t        j                  dd|j
                  dddd      }||||fD ]  }|j                  |        y )Nr&   rD  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  )	rc  rQ   r-   Line2DCircledpi_scale_trans
add_artistr/  transFigure)	r  r  r  r  r1r2r3r  r   s	            rD   test_add_artistr    s}   HLGK	RHr2hD	1B	RHr2hD	1B	HcTt	<B	Hct	,B	Ish.F.F'T
3B"b"b! AIIK



C	RHr2h'2E2ER
)B	HcT5
B	HcW-@-@d
B	Isg.E.E'rt
MB"b" qrF   fmt)r   r{  psepsr   c                     |d|  z  }t        j                  |       |j                  d      5 }| j                  d      |j	                  d      j                         v sJ 	 d d d        y # 1 sw Y   y xY w)Nztest.rbasciir&   )r-   rw  r  encodereadlower)r  tmp_pathoutfiles       rD   test_fspathr  "  sj    
uSE]
"CKK	$ =4 zz'"diin&:&:&<<<<= = =s   3A,,A5c                  F   t        j                         \  } }|j                  dd       |j                  ddd      }| j                  j                         }d}t        |j                  |      j                  || j                  z  z
        dk  sJ t        |j                  |      j                  || j                  z  z
        dk  sJ t        | j                  |      j                  |z
        dk  sJ t        | j                  |      j                  d	z
        dk  sJ |j                  d
       d}t        |j                  |      j                  || j                  z  z
        dk  sJ t        | j                  |      j                  |z
        dk  sJ |j                  d       d}t        |j                  |      j                  || j                  z  z
        dk  sJ t        |j                  |g       j                  || j                  z  z
        dk  sJ y )Nr   r'   r   r   zThis dangles over endgR"@r!   r  g|?5^?FgET@T)bbox_extra_artists)r-   rQ   set_xlimr   r_  get_rendererabsget_tightbboxx1rc  x0set_in_layout)r?   rA   r   r`  x1Nom0x1Noms         rD   test_tightbboxr  ,  s   llnGCKK1
C01Azz&&(HFqx(++fsww.>>?!CCCr),,v/??@1DDDs  *--67$>>>s  *--56=== OOEEr),,usww>?!CCCs  *--56===OODEr),,v/??@1DDDrR@CC! "$%& & &rF   c                     t        j                  ddd      \  } }|d   j                          |d   j                  t	        ddd      t	        ddd      gddg       t        |d   j                  j                         t        j                        sJ t        j                  ddd      \  } }|d   j                  j                  t                      |d   j                          |d   j                  t	        ddd      t	        ddd      gddg       t        |d   j                  j                         t              sJ y )Nr'   r!   Trn  r   i  )r-   rQ   r/  r1   r   r  r7   get_major_formatterrE  AutoDateFormatterset_major_formatterr   r   s     rD   test_axes_removalr  E  s   ||Aq.HCFMMOFKK$1%xa';<q!fEc!fll668..0 0 0
 ||Aq.HCFLL$$_%67FMMOFKK$1%xa';<q!fEc!fll668%' ' 'rF   c                      t        j                  dd      \  } }|d   j                          | j                  j	                          y )Nr!   Tr
  r   )r-   rQ   r/  r_  drawr   s     rD   test_removed_axisr  W  s1    ||Ad+HCFMMOJJOOrF   
clear_methr   clfc           	        
 t        j                         

j                          
j                  g k(  sJ 
j	                  d      } t        
|               
j                  g k(  sJ t        d      D cg c]  }
j	                  dd|dz          }} t        
|               
j                  g k(  sJ 
j                  dd      }
j                  |d         }|j	                  d      } t        
|               |
j                  vsJ 
j                  g k(  sJ 
j                  |d         }|j	                  d      }
j	                  |d         }|j                          
j                  |gk(  sJ 
j	                  |d         }|j                          
j                  |gk(  sJ |
j                  v sJ |j	                  d      }|
j                  v sJ |
j                  v sJ  t        ||               |
j                  v sJ ||j                  vsJ |
j                  vsJ |
j                  v sJ |j	                  d      } t        
|               
j                  g k(  sJ 
j                  g k(  sJ dD cg c]  }
j                  ||          }}|D 	cg c]  }	|	j	                  d       }}	t        
fd|D              sJ t        
fd|D              sJ  t        |d   |               |d   
j                  vsJ |d   
j                  v sJ |d   
j                  v sJ  t        |d   |               dD cg c]  }
j                  ||          }}|D 	cg c]  }	|	j	                  d       }}	t        
fd	|D              sJ t        
fd
|D              sJ  t        
|               
j                  g k(  sJ 
j                  g k(  sJ y c c}w c c}w c c}	w c c}w c c}	w )Nr   r!   r'   )r  nrowsr   r   r'   c              3   :   K   | ]  }|j                   v   y wr  r   .0rA   r?   s     rD   	<genexpr>z$test_figure_clear.<locals>.<genexpr>       0"rSXX~0   c              3   :   K   | ]  }|j                   v   y wr  subfigsr  sfigr?   s     rD   r  z$test_figure_clear.<locals>.<genexpr>       7tts{{"7r  c              3   :   K   | ]  }|j                   v   y wr  r  r  s     rD   r  z$test_figure_clear.<locals>.<genexpr>  r  r  c              3   :   K   | ]  }|j                   v   y wr  r  r!  s     rD   r  z$test_figure_clear.<locals>.<genexpr>  r#  r  )r-   r.   r   r   r0   getattrr5   r  r  r   r/  rq   )r  rA   rB   r   r@   subfigsubaxesmainaxesr   r"  r?   s             @rD   test_figure_clearr*  ^  s    **,C IIK88r>> 
	BGC88r>> 16a91COOAq!A#&9D9GC88r>> 
				+Br!u%F  %GGC$$$88r>> r!u%F  %Gr!u%H OO88y    r!u%HNN88z!!!S[[      %GsxxchhGFJ!S[[   &++%%%#(("""sxx   %GGC88r>>;;" 288As  A'8G8189t$9G9000007w7777 $GGAJ
#%1:SXX%%%1:!!!1:$$$ $GGAJ
#%178As  A'8G8189t$9G9000007w7777GC;;"88r>>A :Z 99 99s   7O4O9.O>P:Pc                  V    t        j                         D ]  } d| j                  vrJ  y )Nr  )r   __subclasses____dict__)klasss    rD   test_clf_not_redefinedr/    s,    **, +ENN***+rF   c                     t        j                         \  } }|j                  dgdgdgd       | j                  j	                          | j
                  rJ t        |j                  j                  |j                  j                  dz  z   |j                  j                  |j                  j                  dz  z   |d       }| j                  |       | j
                  rJ y )Nr   r#   T)pickerr!   )r   r   inaxesguiEvent)r-   rQ   scatterr_  r  staler   bboxr  rb  y0ra  pick)r?   rA   mouse_events      rD   test_picking_does_not_staler:    s    llnGCJJsQC$J-JJOOyy=!BGGJJ1B$B$&GGJJ!1C$C)+d<K HH[yy=yrF   c                     t        j                         } | j                  ddd      }|j                         j                  t        dd      k(  sJ |j                         j                  t        dd      k(  sJ | j                  ddd      }|j                         j                  t        dd      k(  sJ |j                         j                  t        dd      k(  sJ | j                  ddd      }|j                         j                  t        dd      k(  sJ |j                         j                  t        dd      k(  sJ | j                  ddd      }|j                         j                  t        dd      k(  sJ |j                         j                  t        dd      k(  sJ t        j                  t              5  | j                  ddd	       d d d        y # 1 sw Y   y xY w)
Nr    r!   r    rt   r'   r   )rY   rA  )r    rA  )rY   rt   )rA  r    )
r-   r.   r0   get_subplotspecrowspanr5   colspanrz   r{   
IndexError)r?   r   r   r  ax4s        rD   test_add_subplot_twotuplerB    s   
**,C
//!Q
'C ((E!QK777 ((E!QK777
//!Q
'C ((E!QK777 ((E!QK777
//!Q
'C ((E!QK777 ((E!QK777
//!Q
'C ((E!QK777 ((E!QK777	z	" &1f%& & &s   GG(ztightbbox_box_aspect.svgr   teal)r  r   )rH   r   remove_textc                      t        j                         } | j                  dd      }| j                  |d         }| j                  |d   d      }|j	                  d       |j	                  d       y )	Nr'   r!   r  r  r   r   r   )r!   r'   r'   )r-   r.   r  r0   set_box_aspect)r?   r@   r   r   s       rD   test_tightbbox_box_aspectrG    se    
 **,C			!Q	B
//"T(
#C
//"T(t/
4Cry!rF   )r   r{  r  r   c                     |j                         }|j                  t        d             | j                         }|j                  t        d      d       y )Nrt   T)animated)rQ   r1   r5   )r  r  ax_refax_tests       rD    test_animated_with_canvas_changerL    sB    F
KKa!GLLqDL)rF   c                      e Zd Z edg      ej
                  j                  dg dg dgg dg dgdd	g      d
               Z edg      d        Z edg      d        Z	 edg      d        Z
d Zd Z edg      ej
                  j                  dddgddggdfddgddggdfddgddggdfddgddggdfddgddggdfddgddggdfg      d               Zd Z edg      ej
                  j                  di ddidg      d               Z edg      ej
                  j                  dd  ed       g      d!               Zd" Zd# Zd$ Z edg      ej
                  j                  d%g d&      d'               Zej
                  j                  d(ddgddggd)fddgdddgd*d+ggggd,fd-ddd*gd+gggd.d.ggd/fg      d0        Z edg      d1        Zej
                  j                  d%g d2      d3        Zd4 Zd5 Zy)6TestSubplotMosaicr   r  r   ArP  BCDrQ  r'   r'   r!   r    rY   r!   )rO  rR  )rU  rV  c                 ^   |j                  |      }|j                         D ]  \  }}|j                  |        t        t	        j
                  |            }t        |      t        |      k(  sJ |j                  dd      }|j                  |d dd df         }	|	j                  |d          |j                  |d d df         }
|
j                  |d          |j                  |d         }|j                  |d          |j                  |d         }|j                  |d          y )Nr!   r    r'   r   r'   r   r'   r'   )	subplot_mosaicitemsrR   sortedr2   uniquer1  r  r0   )r  r  r  r   	grid_axesr   rA   labelsr@   axAaxBaxCaxDs                rD   
test_basiczTestSubplotMosaic.test_basic  s    ++A.	__& 	EArLLO	 		!%6{c)n,,,!!!Q'!!"RaR!V*-fQi !!"QT(+fQi !!"T(+fQi !!"T(+fQi rF   c                    ddgddgg}ddgddgg}|j                  d	       |j                  d	       |j                  ||gg      }|j                         D ]!  }|j                  |j	                                # |j                  d
d      }|d   j                  dd      }t        |      D ]=  \  }	}
t        |
      D ]*  \  }}|j                  ||	|f         j                  |       , ? |d   j                  dd      }t        |      D ]=  \  }	}
t        |
      D ]*  \  }}|j                  ||	|f         j                  |       , ? y )NrP  rQ  rS  rT  EFGHrJ   r'   r!   r  r  )	r  rZ  valuesrR   r   r  subgridspecr]   r0   )r  r  r  r   r   r^  rA   r@   gs_leftjr   r   rc   gs_rights                 rD   test_all_nestedz!TestSubplotMosaic.test_all_nested  sj   3Z#s$3Z#s$!!-0""=1++aVH5	""$ 	)BLL(	) !!!Q'T(&&q!,aL 	DDAq%aL D5##GAqDM2<<UCD	D d8''1-aL 	EDAq%aL E5##HQTN3==eDE	ErF   c                    |j                  d       |j                  d       ddgddgg}dg|gg}|j                  |      }|j                         D ]  \  }}|j                  |        |j	                  dd      }|d	   j                  dd      }	|j                  |	d
         }
|
j                  d       |j                  |	d         }|j                  d       |j                  |	d	         }|j                  d       |j                  |	d         }|j                  d       |j                  |d
         }|j                  d       y )NrJ   rP  rQ  rS  rT  rg  r!   r'   rX  r  r  rY  )r  rZ  r[  rR   r  rk  r0   )r  r  r  r   r   r^  r   rA   r@   gs_nr`  ra  rb  rc  axFs                  rD   test_nestedzTestSubplotMosaic.test_nested$  s>    	!!-0""=13Z#s$UQCL++A.	__& 	EArLLO	 !!!Q'$x##Aq)!!$t*-c!!$t*-c!!$t*-c!!$t*-c!!"T(+crF   c                 l    g dg dg}d}|j                  dg|gg       |j                  dg|gg       y )NrP  rQ  rQ  rS  rS  rT  )ru  rv  rg  )rZ  )r  r  r  r   xts        rD   test_nested_tuplez#TestSubplotMosaic.test_nested_tupleF  s=    o./s|,#.rF   c                     ddgdgggg}ddg}t        j                  ||      \  }}|d   j                         j                         |k(  sJ |d   j                         j                         |k7  sJ y )NrP  rQ  rS  r!   r'   )rK   )r-   rZ  get_gridspecget_width_ratios)r  r   rK   r?   axds        rD   test_nested_width_ratiosz*TestSubplotMosaic.test_nested_width_ratiosN  s    SEE  1v%%alCS3x$$&779\III3x$$&779\IIIrF   c                     ddgdgggddgg}ddg}t        j                  ||      \  }}|d   j                         j                         |k(  sJ |d   j                         j                         |k7  sJ y )NrP  rQ  rS  rT  r'   r!   height_ratios)r-   rZ  rz  get_height_ratios)r  r   r  r?   r|  s        rD   test_nested_height_ratiosz+TestSubplotMosaic.test_nested_height_ratiosX  s    SEE !3Z)A%%a}ES3x$$&88:mKKK3x$$&88:mKKKrF   zx, empty_sentinelrP  NrQ  .SKIPr   r'   r!   c                    |dk7  rd|i}ni } |j                   |fi |}|j                         D ]  \  }}|j                  |        t        |D 	
ch c]  }	|	D ]  }
|
  c}
}	|dhz
        }t	        |      t	        |      k(  sJ |j                  dd      }|j                  |d         }|j                  |d          |j                  |d         }|j                  |d          y c c}
}	w )	Nr  empty_sentinelr  r!   r  r   rY  r'   )rZ  r[  rR   r\  r1  r  r0   )r  r  r  r   r  r  r^  r   rA   rownamer_  r@   r`  ra  s                  rD   
test_emptyzTestSubplotMosaic.test_emptyb  s     V#&7FF+H++A88	__& 	EArLLO	 /c3/4T/T/>32GG
 6{c)n,,,!!!Q'!!"T(+fQi !!"T(+fQi  0s   C,
c                 D   t        j                  t        d      5  t        j                  ddg       d d d        t        j                  t        d      5  t        j                  dg       d d d        t        j                  t        d      5  t        j                  ddgg       d d d        t        j                  t        d      5  t        j                  ddgdd	gg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   y xY w)
Nz
must be 2Dr   foobar)r  r  r   )r  r   c)rz   r{   r|   r-   rZ  r  s    rD   test_fail_list_of_strz'TestSubplotMosaic.test_fail_list_of_str  s    ]]:\: 	/u~.	/]]:\: 	(w'	(]]:\: 	4 123	4]]:\: 	@c
Z,=>?	@ 	@	/ 	/	( 	(	4 	4	@ 	@s/   C2C>D
D2C;>D
DD
subplot_kwr   r   c                     ddgg}|j                  ||      }|xs i }|j                  dd      } |j                  |d   fi |} |j                  |d   fi |}y )Nr'   r!   )r  r  r  )rZ  r  r0   )	r  r  r  r  r   r^  r@   r`  ra  s	            rD   test_subplot_kwz!TestSubplotMosaic.test_subplot_kw  sv     VH++A*+E	%2
!!!Q'!g!!"T(9j9!g!!"T(9j9rF   multi_valueBCc           	          d}|j                  |ddidddi|ddii      }|j                  dd      }t        g d	|      D ]  \  }}|j                  ||
        y )NzAB;CDr   r  rT  bluegreen)r  per_subplot_kwr!   )r  r  r  r  r   )rZ  r  r  r0   )	r  r  r  r  r   r^  r@   r   specs	            rD   test_per_subplot_kwz%TestSubplotMosaic.test_per_subplot_kw  s     ++#U+k6*k73 , 
	 !!!Q'@"E 	7KE46	7rF   c                    t         j                  } |d      g dgk(  sJ  |d      ddgddggk(  sJ  |d      ddgddgdd	ggk(  sJ  |d
      g dgk(  sJ  |d      ddgddggk(  sJ  |d      ddgddgdd	ggk(  sJ y )NABC)rP  rQ  rS  zAB;CCrP  rQ  rS  zAB;CC;DErT  rf  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   _normalize_grid_stringr  	normalizes     rD   test_string_parserz$TestSubplotMosaic.test_string_parser  s    11	O#4444!sCj3*%====$#sc3Z#s(LLLL  "1!23 	3 3    $'*sCj!9: 	: :    $'*sCj3*!E	F 	F FrF   c                 j   t         j                  } |i i d      i i dk(  sJ  |di i      i i dk(  sJ t        j                  t        ddd      5   |i i d       d d d        t        j                  t        ddd      5   |i i d       d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)NrP  rQ  zThe key rQ  z appears multiple timesr   )r  rQ  )rQ  r  )r   _norm_per_subplot_kwrz   r{   r|   r  s     rD   test_per_subplot_kw_expanderz.TestSubplotMosaic.test_per_subplot_kw_expander  s    //	r+,br0BBBB*b)*BR.@@@@]]HSG3J"K
 	1 2B/0	1 ]]HSG3J"K
 	1 BB/0	1 	1		1 	1	1 	1s   BB)B&)B2c                     t        j                  t        dt        d      d      5  t	               j                  ddi i       d d d        y # 1 sw Y   y xY w)Nz	The keys rQ  z are inr   rP  )r  )rz   r{   r|   r  r   rZ  r  s    rD   test_extra_per_subplot_kwz+TestSubplotMosaic.test_extra_per_subplot_kw  sT    ]]Ic#h\"A
 	C H##Cb	#B	C 	C 	Cs   AAstr_pattern)zAAA
BBBz	
AAA
BBB
zABC
DEFc                     |j                  |      }|j                  |j                         j                  d      D cg c]  }t        |       c}      }y c c}w )N
)rZ  stripsplitlist)r  r  r  r  r^  lns         rD   test_single_str_inputz'TestSubplotMosaic.test_single_str_input  sM    
 ++K8	** + 1 1 3 9 9$ ?@"T"X@
	@s   Azx,matchzS(?m)we found that the label .A. specifies a non-rectangular or non-contiguous area.rS  rT  z4There are duplicate keys .* between the outer layout)z	AAA
c
BBB'All of the rows must be the same lengthrf  r  c                     t        j                         }t        j                  t        |      5  |j                  |       d d d        y # 1 sw Y   y xY w)Nr   )r-   r.   rz   r{   r|   rZ  )r  r   r   r?   s       rD   	test_failzTestSubplotMosaic.test_fail  s@    , jjl]]:U3 	"q!	" 	" 	"s   AAc                 t    |j                  t               t               gg       |j                  ddgg       y )NrP  rQ  )rZ  object)r  r  r  s      rD   test_hashable_keysz$TestSubplotMosaic.test_hashable_keys  s0    &(FH!5 67c
|,rF   )abccabbcacbaacbbacc                     t        j                         }|j                  |      }t        |      t        |      k(  sJ t        |j                        t        |j                               k(  sJ y r  r-   r.   rZ  r  r   rj  )r  r  r?   ax_dicts       rD   test_user_orderz!TestSubplotMosaic.test_user_order  sX     jjl$$[1K DM111CHH~gnn&6!7777rF   c                    dddgddgggddgdd	d
gdgggggg}t        j                         }|j                  |      }t        |      t        d      k(  sJ t        |j                        t        |j                               k(  sJ y )NrP  rQ  rS  rT  rf  rg  rh  r  ri  I	ABCDEFGHIr  r  r   r?   r  s       rD   test_nested_user_orderz(TestSubplotMosaic.test_nested_user_order  s    C::  #JC3%%! " # $	
 jjl$$V,G}[ 1111CHH~gnn&6!7777rF   c                     dddgddgggddgdd	d
gdgggggg}t        j                         }|j                  |dd      }|d   j                  dd       t	        d |j                         D              sJ y )NrP  rQ  rS  rT  rf  rg  rh  r  ri  r  T)rn  ro  rq  logit)xscaleyscalec              3   l   K   | ],  }|j                         d k(  xr |j                         dk(   . yw)rq  r  N)
get_xscale
get_yscale)r  rA   s     rD   r  z3TestSubplotMosaic.test_share_all.<locals>.<genexpr>  s6      / ==?e+J70JJ /s   24)r-   r.   rZ  r  rq   rj  r  s       rD   test_share_allz TestSubplotMosaic.test_share_all  s    C::  #JC3%%! " # $	
 jjl$$VD$Fg6 /$^^-/ / 	/ /rF   )r  r  r  r	   rz   markparametrizerd  ro  rs  rx  r}  r  r  r  r  tupler  r  r  r  r  r  r  r  r  r  r   rF   rD   rN  rN    s   UG,[[o.	"."	
! -!. UG,E -E, UG, -B UG,/ -/JL UG,[[DkD#;'.Cj3*%v.AhC!1%$i$#T*#ha!6*!fq!fq!	

!
 -!.@ UG,[[\Bw0G+NO: P -: UG,[[]T5;,?@7 A -7F&1C UG,[[]E
 -
 [[ sc3Z(@ sdc3Z#s$<=>F Gc
SE*+c3Z89	
*"+*"
 UG,- -- [[]GI8I88/rF   rN  c                  z   t        j                         } | j                  ddd      }| j                  ddd      }t        j                  ddd|       }|j	                         j                         }|j	                         j                         }|j	                         j                         }||k(  sJ ||k(  sJ y)	z)Test that these all use the same gridspecr    r!   r<  rY   )r    r!   )r!   r'   )r?  r?   N)r-   r.   r0   subplot2gridr=  rz  )r?   r   r   r  r  gs2gs3s          rD   test_reused_gridspecr  !  s    
**,C
//!Q
'C
//!Q
"C


661#
>C




,
,
.C




,
,
.C




,
,
.C#::#::rF   ztest_subfigure.pngr   )rH   r   c                  R   t         j                  j                  d       t        j                  d      } | j                  dd      }|d   j                  dd      }|j                  D ]4  }|j                  t         j                  j                  dd      dd	      }6 |d   j                  |
       |d   j                  d       |d   j                  d       |d   j                  dd      }|j                  D ]4  }|j                  t         j                  j                  dd      dd	      }6 |d   j                  ||d       |d   j                  d       |d   j                  d       | j                  dd       | j                  t        d      D cg c]+  }t        j                  dgdgdj!                  |            - c}d      }|d   j#                  |j%                         dz
         |d   j#                  |j%                         dz          y c c}w )N!N,rJ   r   r'   r!   r   r   vminvmaxr\   	Left Sider   r    bottom)rA   locationz
Right SideFigure suptitlexx-largefontsizert   zLine{}rc   rN   )handlesrM   )r2   rh   seedr-   r.   r   rQ   r^   rg   ri   rj   r   r   r   r5   r  r~  
set_zorder
get_zorder)r?   subrT   rA   rn   rB   legs          rD   test_subfigurer  0  s    IINN8
**M
*C
..A
C
a&//!Q
Chh E]]299??2r2!]DEFOOB3OFOOK F!
a&//!Q
Chh E]]299??2r2!]DEFOOB3O2FOOL!F!LL"ZL8 **#Ah( "jj!qc9KL (-5  7CFcnn&*+Fcnn&*+(s    0H$c                      t        j                  d      } | j                  dd      }t        j                  j                  | j                  | j                  j                               j                  d       y )NrJ   r   r'   r!   g       @)
r-   r.   r   r2   re   rf   r  r_  r   rb  )r?   r  s     rD   test_subfigure_tightbboxr  N  sV    
**M
*C
..A
CJJcjj5578>>rF   c                     t        j                  d      } | j                         }|j                         | j                         k(  sJ |j	                  d       |j                         dk(  sJ | j                         dk(  sJ y )Nr&   rc  r^  )r-   r.   r   get_dpiset_dpir?   sub_figs     rD   test_subfigure_dpir  X  sl    
**
CnnG??---OOC??###;;=CrF   ztest_subfigure_ss.png{Gz?)rH   r   r   c                  h   t         j                  j                  d       t        j                  d      } | j                  dd      }| j                  |d   d      }|j                  dd      }|j                  D ]4  }|j                  t         j                  j                  d	d	      d
d      }6 |j                  |       |j                  d       | j                  |d         }|j                  t        j                  d             |j!                  d       | j                  dd       y )Nr  rJ   r   r'   r!   r   pinkr  r   r  r  r\   r  r   r
   r  r  r  )r2   rh   r  r-   r.   r  r  rQ   r^   rg   ri   rj   r   r0   r1   r3   rR   )r?   r@   r  rT   rA   rn   s         rD   test_subfigure_ssr  b  s     IINN8
**M
*C			!Q	B


BqEV

4C
,,q!
Chh E]]299??2r2!]DELLLLL	A	BGGBIIbMLLLL"ZL8rF   ztest_subfigure_double.pngc                  d   t         j                  j                  d       t        j                  dd      } | j                  d       | j                  ddd	      }|d
   j                  d       |d
   j                  d       |d   j                  d       |d   j                  d       |d
   j                  ddddg      }|d
   j                  d       |d
   j                  d       |d
   j                  ddd      }|D ]o  }d}|j                  t         j                  j                  dd      dd      }|j                  d|       |j                  d|       |j                  d|       q |d
   j                  |       |d   j                  d       |d   j                  d       |d   j                  d dd!      }t        |      D ]  \  }}|j                  d"|         |d   j!                  d#       |d   j#                  d$       |d   j                  dd      }	y )%Nr  rJ   )r,      )r   r   r?   r'   r!   gQ?)r  r   coralz
subfigs[0]z
subfigs[1]gffffff?r  zsubfigsnest[0]r   Tro     r   g      g      @r  zx-labelr  zy-labelTitler\   zsubfigsnest[1]r   r    r
  ylabelr   r   )r2   rh   r  r-   r.   r   r   r   rQ   rg   ri   r6   r4   rR   rj   r]   r   r   )
r?   r   subfigsnestaxsnest0rA   r  rn   axsnest1rk   axsRights
             rD   test_subfigure_doubler  y  s    IINN8
**M7
;CLLnnQ$n/GAJW%AJ%AJW%AJ%!*''1QH'EKN,-N  %1~&&q!D&9H 1]]299??2r2C]H
i(3
i(3
Wx01 NB8,N,-N  %1~&&q!D&9HH% %B
rdm$%N[)N[)qz""1a(HrF   c            	      \   t        j                  d      } | j                  dd      }| j                  |d         | j                  |dddf         | j                  |dddf         | j                  |dd dd f         g}d}d	}t        j
                  j                  |d   j                  j                  d
|dz  dz  g       t        j
                  j                  |d   j                  j                  |dz  |g       t        j
                  j                  |d   j                  j                  |dz  |dz  g       t        j
                  j                  |d   j                  j                  |dz  dz  |g       t        j
                  j                  |d   j                  j                  |dz  dg       t        j
                  j                  |d   j                  j                  ||dz  g       t        d      D ]  }||   j                           | j                          y )NTrZ   r    r  r   r!   r'       r   rY   )r-   r.   r  r  r2   re   rf   r6  minmaxr5   r0   ra   )r?   r@   sub_figsr8  r9  rB   s         rD   test_subfigure_spanningr	    s   
**
-C			!Q	B"T(#"QqS!V*%"Q!V*%"QRV*%	H 	AAJJx{//33b!a%']CJJx{//33a!eQZ@JJx{//33a!eQU^DJJx{//33a!eAgq\BJJx{//33a!eQZ@JJx{//33aQZ@ 1X "!" rF   c                  \   t        j                  dd      } | j                  dddddg      \  }}|j                  dd	
      }|j	                  |dd df         }|j                  ddgddg       |j	                  |dddf   |      }|j                  ddgddg       |j	                  |ddd	f   |      }d| _        | j                          |j                         }d| _        | j                          |j                         }t        j                  j                  ||       y )NT)r,   r    )r[   r   r'   r!   r   rB  )r  rK      )r  r  r   g!<LgkX.8@i  i  )r   r   r    r  g YI_gRϫW@x   i,  )r-   r.   r   r  r0   r4  rc  ra   
get_xticksr2   re   rf   )	r?   	subfig_bl	subfig_brr@   r   r   r  ticks120ticks300s	            rD   test_subfigure_ticksr    s7    **g
>C ^^Aq:;Q , AY	 
		ar		2B


1bqb5	
*CKK%'9:tTlKK


1ac6
3

7CKK%'89dD\KJ


1ad7C

8CCG ~~HCG ~~HJJx2rF   ztest_subfigure_scatter_size.png)rH   rD  c                     t        j                         } | j                  dd      }| j                  |d         }|j	                  g dg ddd       |j	                  g dg dg dd       | j                  |d	         }|j                  dd      }||d	   fD ]8  }|j	                  g dg dddd
       |j	                  g dg dg ddd       : y )Nr'   r!   r  r   s)r  marker)r    rY   rt   )r   r   r  r   r   )r  r  r   r   )r-   r.   r  r0   r4  r  rQ   )r?   r@   r   r"  rT   rA   s         rD   test_subfigure_scatter_sizer    s     **,C			!Q	B
//"Q%
 CKK	93K7KK	9SKARU#D
--1
CCFm P


9i2c
E


9i<3
OPrF   c                     t        j                  d      } | j                         }|j                  d      }|j	                  dd      }|j                  |       t        j                         }| j                  |d       y )NrJ   r   r   r'   r{  r  )	r-   r.   r   r0   r  	bar_labelr  r  rw  )r?   r  rA   r   buffers        rD   test_subfigure_pdfr    sa    
**M
*CnnG			S	!B
q!ALLOZZ\FKKuK%rF   c                     t        j                         j                  dddd      } d}d}t        j                  j                  | d   j                  j                  d	|d
z  g       t        j                  j                  | d   j                  j                  |dz  |g       t        j                  j                  | d   j                  j                  |dz  |d
z  g       t        j                  j                  | d   j                  j                  |dz  |g       t        j                  j                  | d   j                  j                  |dz  |d
z  g       t        j                  j                  | d   j                  j                  ||g       t        j                  j                  | d   j                  j                  ddg       t        j                  j                  | d   j                  j                  |dz  |dz  g       t        j                  j                  | d   j                  j                  |dz  dg       t        j                  j                  | d   j                  j                  |dz  |dz  g       t        j                  j                  | d   j                  j                  |dz  dg       t        j                  j                  | d   j                  j                  ||dz  g       y )Nr!   r    r   gUUUUUU?)hspacer  r  r  r  r   r   r  r  gffffff?g?r(   r  rX  r   r   rY  r5  )	r-   r.   r   r2   re   rf   r6  r  r  )r  r8  r9  s      rD   test_subfigures_wspace_hspacer    sG   zz|&&q!C&EHAAJJx~2266QWFJJx~2266S!EJJx~2266T1s78KLJJx~2266T1FJJx~2266S!c'8JKJJx~2266A?JJx~2266A?JJx~2266S!c'8JKJJx~2266T1FJJx~2266T1s78KLJJx~2266S!EJJx~2266AGErF   c                      t        j                         } | j                  dd      }|d   j                          t	        | j
                        dk(  sJ y )Nr!   rY  r    )r-   r.   r   r/  r1  r   )r?   sfss     rD   test_subfigure_remover     sD    
**,C
..A
CIs{{q   rF   c                  B   t        j                         } | j                  ddd      }| j                  ddd      }|J ||usJ t        j                          t        j                         } | j                  dddd      }| j                  dddd      }|J ||usJ t        j                          t        j                         } | j                  dddd      }| j                  ddd      }|J |j                  dk(  sJ ||usJ t        j                          y )Nr'   r   r   rectilinear)r-   r.   r0   rv   r  r?   rA   r   s      rD   test_add_subplot_kwargsr$    s
   
**,C	Aq	!B
//!Q
"C>>b==IIK
**,C	AqW	5B
//!Qg/
6C>>b==IIK
**,C	AqW	5B
//!Q
"C>>88}$$$b==IIKrF   c                  B   t        j                         } | j                  g d      }| j                  g d      }|J ||usJ t        j                          t        j                         } | j                  g dd      }| j                  g dd      }|J ||usJ t        j                          t        j                         } | j                  g dd      }| j                  g d      }|J |j                  dk(  sJ ||usJ t        j                          y )Nr   r   r   r"  )r-   r.   r   rv   r  r#  s      rD   test_add_axes_kwargsr&  /  s    
**,C	l	#B
,,|
$C>>b==IIK
**,C	lw	7B
,,|,
8C>>b==IIK
**,C	lw	7B
,,|
$C>>88}$$$b==IIKrF   c                    t        j                  dd       t        j                         \  }|j                  j
                  fd}t        d|      j                          j                         dgk(  sJ fd}t        d|      j                          t        j                  j                  j                  d      dd	g       y )
NrC  cannot show the figurec                  `    t        d j                  g d      d j                          y )Nbutton_press_eventrh  rD  r'   )r   r_  _processr?   transs   rD   single_pressz!test_ginput.<locals>.single_pressM  s)    'IeHoIqIRRTrF   rh  r+  c                     t        d j                  g d      d j                          t        d j                  d      j                          t        d j                  g d      d j                          t        d j                  g d      d j                          t        d j                  g d      d	 j                          y )
Nr*  r+  r'   key_press_event	backspacer  r   r   r   r  r!   )r   r_  r,  r   r-  s   rD   multi_pressesz"test_ginput.<locals>.multi_pressesS  s    'IeHoIqIRRT"CJJ<EEG'IeHoIqIRRT'IeHoIqIRRT'GeFmGQGPPRrF   r    r3  r4  )rJ  rL  r-   rQ   	transDatar  r   startginputr2   re   rf   )recwarnrA   r/  r5  r?   r.  s       @@rD   test_ginputr:  H  s    H&>?llnGCLL""EU 
"l!!#::<H:%%%S 
"m""$JJszz!}x.BCrF   c           
         t        j                  dd       t        j                         }|j	                  d      J t        dt        d|j                  d      j                        j                          |j	                         du sJ t        dt        d|j                  d	d	d
      j                        j                          |j	                         du sJ y )NrC  r(  rh  )timeoutr1  r   Tr*  r   r'   F)rJ  rL  r-   r.   waitforbuttonpressr   r   r_  r,  r7  r   )r9  r?   s     rD   test_waitforbuttonpressr>  ^  s    H&>?
**,C!!"!-555	"h(#**c:CCDJJL!!#t+++	"j-szz1aCLLMSSU!!#u,,,rF   c                      t        d      } | j                  ddd      }| j                         dk(  sJ |j                         dk(  sJ y )Nzwhole Figurer  r'   z
sub figure)r   r   r   r  s     rD   test_kwargs_passr@  h  sK    
~
&CnnQn6G==?n,,,,...rF   c                 @   |j                  ddd       |j                  ddd       |j                  ddd       t        j                  ddddd	      5  | j                  d       | j                  d       | j                  d       d d d        y # 1 sw Y   y xY w)
Nxlabelr   r   )r   r   r  r  lightr   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)r   r   r   r   r  )r  r  s     rD   test_rcparamsrD  p  s    hvB7hvB7WW26	v-//6-/1 
2 # 	8$8$'"# # #s   4BBc                  L   t        j                         \  } }|j                  ddgddg       |j                  d       t	        j
                  |       }|j                  d   |usJ |j                  d   j                         dk(  sJ |j                  d   j                  d       |j                         dk(  sJ |j                  dd       | j                          |j                          |j                         d	k(  sJ |j                  d   j                         d
k(  sJ y )Nr   r'   r!   r    rq  linearrh        Y@)rh  rG  r  )r-   rQ   r1   rr  copydeepcopyr   r  r  ra   get_xlim)r   rA   r   s      rD   test_deepcopyrK  ~  s    ||~HD"GGQFQFMM%==D 99Q<r!!!99Q<""$---IIaLH%==?e### KKc!!;;=K'''99Q<  "f,,,rF   c                      t        d      } | j                  j                  d       | j                  dk(  sJ t	        j
                  t	        j                  |             }|j                  dk(  sJ y )Nr   r  rB  i&  )r   r_  r  rc  pickleloadsdumps)r?   r   s     rD   %test_unpickle_with_device_pixel_ratiorP    sT    
R.CJJ&&q)77d??<<S)*D88r>>rF   c                      ddi} t        |       }t        j                  ddddg|        | |k(  sJ t        j                  dddg|        y )NrL   rh  r'   r!   )rK   gridspec_kwAB)dictr-   rQ   rZ  )r@   gs_origs     rD   test_gridspec_no_mutate_inputrV    sL    
"B2hGLLAQF;==t1a&bArF   )r  r{  r   r  r   svgzc                 `    t               j                  t        j                         | i        y )Nr~  metadata)r   rw  r  r  r  s    rD   test_savefig_metadatar\    s    
HRZZ\#;rF   )jpegr}  r|  tiffwebprawrgbac                     t        j                  t        d      5  t               j	                  t        j                         | i        d d d        y # 1 sw Y   y xY w)Nzmetadata not supportedr   rY  )rz   r{   r|   r   rw  r  r  r[  s    rD   test_savefig_metadata_errorrc    sG    	z)A	B @cB?@ @ @s   /AAc                  :   ddddd} t        g | j                               }t        j                  t	        j
                  j                  d	i |       }t        j                  t        d      5  |j                         |k(  sJ 	 d d d        y # 1 sw Y   y xY w)
Nr   r  gQ?g{Gz?)r  h_padr  r  r   zwill be deprecatedr   r   )r  rj  r-   r.   r   layout_enginer   rz   r   PendingDeprecationWarningget_constrained_layout_pads)paramsexpectedr?   s      rD    test_get_constrained_layout_padsrk    s    dddKF'v}}'(H
**C--EEOO
PC	/7K	L =..0H<<<= = =s   1BBc                  j   t               } t        j                         }| j                  |d       |j	                  d       d|j                         v sJ | j                  d       t        j                         }| j                  |d       |j	                  d       d|j                         vsJ y )Nr   r  r   z<g F)r   r  StringIOrw  seekr  r  )r?   r  s     rD   test_not_visible_figurero    s    
(C
++-CKKEK"HHQKCHHJOOE
++-CKKEK"HHQK
"""rF   c                  V   t        j                         \  } }t        j                  d      \  }\  }}|j                  ddgddgg      }| j                  |       t	        j
                  t        d      5  |j                  |       d d d        t	        j
                  t        d      5  |j                  ||       d d d        t	        j
                  t        d      5  |j                  ||       d d d        t	        j
                  t        d      5  |j                  ||       d d d        t        j                         }t        j                         }|j                         }|j                         }	|j                         }
|j                         }|j                         }|
j                         }|j                  ddgddgg      }|j                  ddgddgg      }|j                  ddgddgg      }|j                  |       |j                  |       |j                  |       t	        j
                  t        d      5  |j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   y xY w)	Nr!   r'   r    rY   zdifferent Figurer   r\   )cax)	r-   rQ   rX  rj   rz   r   r  r.   r   )r   r   r   ax2_1ax2_2rY  fig3fig4	subfig3_1	subfig3_2	subfig4_1ax3_1ax3_2ax4_1im3_1im3_2im4_1s                    rD   test_warn_colorbar_mismatchr    s2   ID#<<?D.5%	aVaV$	%BMM"	k);	< b 
k);	< "bS!"	k);	< $bU#$	k);	< %be$% ::<D::<D!I!I!I E E ELL1a&1a&)*ELL1a&1a&)*ELL1a&1a&)*EMM%uu	k);	< "5!" "5 " "$ $% %&" "s<   6I++I8"JJJ+I58JJJJ(c                  :   t        j                         } | j                         }|j                         }| ||fD ]?  }t        j                  t
        j                        5  |j                  |        d d d        A t        j                  t        d      5  |j                  |       d d d        t        j                  t        d      5  |j                  t        j                                d d d        y # 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   y xY w)Nzcannot be changedr   )
r-   r.   r   rz   r   r   r   
set_figurer{   r|   )r?   sfig1sfig2fs       rD   test_set_figurer    s    
**,CNNEE% \\#::; 	LL	 	 
z)<	=    
z)<	= '&' '	 	   ' 's$    C9D$D9D	DDc                      t        j                         } | j                  dd      }t        |j	                         | j
                        D ]  \  }}||u rJ  y )NrY   r    )r-   r.   r   r  r0  r   )r?   sf_arrr  r   s       rD   test_subfigure_row_orderr    sL    
**,C^^Aq!FFLLNCKK0 1AvvrF   c                     t        j                         } | j                          | j                  rJ | j	                         }| j                  sJ | j                          | j                  rJ |j                  rJ |j	                         }| j                  sJ |j                  sJ | j                          | j                  rJ |j                  rJ |j                  rJ d|_        |j                  sJ | j                  sJ y )NT)r-   r.   ra   r5  r   )r?   r  r  s      rD    test_subfigure_stale_propagationr    s    
**,C yy=NNE999 yy={{?E999;;; yy={{?{{?EK;;;999rF   )rH  r   r  rM  platform	threadingr   typesr   rJ  numpyr2   rz   PILr   
matplotlibr   r   matplotlib.testing.decoratorsr   r	   matplotlib.axesr
   matplotlib.backend_basesr   r   matplotlib.figurer   r   matplotlib.layout_enginer   r   r   matplotlib.tickerr   r   r   matplotlib.pyplotpyplotr-   matplotlib.datesdatesrE  machinerE   rU   ro   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r%  r,  r3  r:  r  r  rU  rZ  rH   contextrd  rj  infrf  rl  ru  ry  r  r  paramr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*  r/  r:  rB  rG  rL  rN  r  r  r  r  r  r  r	  r  r  r  r  r   r$  r&  r:  r>  r@  rD  rK  rP  rV  r\  rc  rk  ro  r  r  r  r  r   rF   rD   <module>r     s"     	    !       O   9 0? ? P O  ! ()uen+8++-9atE$E$N 28:+8++-9au!	!, 2F0-$ 4& >"/x//1W<e!EE ?#$ %8
')X $%&2 '207
. %& $U^.9.4!6	7:7::$, "<=$6 >$6N( 9, , KVVQK+ 
+
+@4>*0N/ FLLv{{2259:;FLL!4!4W!= >?% 	&-9 &-.(( ) /(*<
(1-h (L )L M<#@A B / 08  BC= D=&2'$ '78N 9Nb+ 7
 
&$ -.g07.4!6"$"	$"  <=* >*r/ r/j	 '(!,f 57,7,8  *+7!,f 54A9A9* ./w!,f 57$)7$)N!: 73 36 45W#%P%P&F2!22D,-/ (
# )
#-2B  JK< L<  UV@ W@
=#!"H' rF   