
    %Wh^                        d dl Z d dl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mZ d dlmZmZ ej"                  j%                  d      gZd[dZd\dZ edgd	      d
        Z edgd	      d        Z edgd	      d        Z edgd	      d        Z edgd	      d        Z edgd	      d        Zd Zd Z edgd	      d        Z edgd	      d        Z edgd ej@                         dk(  rd nd      d        Z! ed gd	      d!        Z" ed"gd	      d#        Z# ed$gd	      d%        Z$ ed&gd	      d'        Z% ed(gd	      d)        Z& ed*gd	      d+        Z' ed,gd	      d-        Z( ed.gd	      d/        Z)d0 Z*d1 Z+d2 Z,d3 Z-d4 Z.d5 Z/ ed6gd7d8      d9        Z0d: Z1d; Z2 ed<gd	      d=        Z3 ed>gd	      d?        Z4d@ Z5 edAgd7ddBdCiD      dE        Z6 edFgd7ddB ejn                  dGd gdHdIgg      iD      dJ        Z8dK Z9dL Z:dM Z;dN Z<dO Z=dP Z>dQ Z?dR Z@ej"                  j                  dSdTdUi d7fdVdid7fg      dW        ZBdX ZCdY ZDdZ ZEy)]    N)image_comparison)gridspectickertext_placeholdersc                 
   | j                  ddg       | j                  d       |s:| j                  d|       | j                  d|       | j	                  d|       y | j                  g        | j                  g        y )	N         nbinsx-labelfontsizey-labelTitle)plotlocator_params
set_xlabel
set_ylabel	set_titleset_xticklabelsset_yticklabels)axr   nodecs      a/var/www/html/jupyter_env/lib/python3.12/site-packages/matplotlib/tests/test_constrainedlayout.pyexample_plotr      sq    GGQFOA
i(3
i(3
Wx0
2
2    c           	         d\  }}t         j                  t        dd|z   |      t        dd|z   |      f   \  }}d|dz  z
  |dz  z   |dz  z   t        j                  |dz   |dz  z
        z  }| j	                  |||d dd df   d	d
dd      }| j                  d|       | j                  d|       | j                  d|       |S )N)333333?r   r
   r          @   r	   RdBu_rg            ?T)cmapvminvmax
rasterizedr   r   r   r   )npmgridsliceexp
pcolormeshr   r   r   )r   r   dxdyyxzpcms           r   example_pcolorr5      s    FB88E"a"fb)"a"fb)* +DAq	
QVa1f	qAv	%a!q&0@)AAA
--1aSbSks#'  )CMM)hM/MM)hM/LL8L,Jr   zconstrained_layout1.pngmpl20)stylec                  j    t        j                  d      } | j                         }t        |d       y)z,Test constrained_layout for a single subplotconstrainedlayout   r   N)pltfigureadd_subplotr   figr   s     r   test_constrained_layout1rB   ,   s(     **M
*C		Bb!r   zconstrained_layout2.pngc                  v    t        j                  ddd      \  } }|j                  D ]  }t        |d        y)z(Test constrained_layout for 2x2 subplotsr	   r9   r:   r<   r   N)r=   subplotsflatr   rA   axsr   s      r   test_constrained_layout2rH   4   s7     ||Aq7HChh &R"%&r   zconstrained_layout3.pngc                      t        j                  ddd      \  } }t        |j                        D ]0  \  }}t	        |d      }|dk(  rd}nd}| j                  |||	       2 y
)z3Test constrained_layout for colorbars with subplotsr	   r9   r:   r<   r   r
   g{Gz?{Gz?)r   padN)r=   rD   	enumeraterE   r5   colorbar)rA   rG   nnr   r4   rK   s         r   test_constrained_layout3rO   <   se     ||Aq7HCCHH% *BR"-7CCSRS)*r   zconstrained_layout4.pngc                      t        j                  ddd      \  } }|j                  D ]  }t        |d      } | j	                  |dd       y	)
z;Test constrained_layout for a single colorbar with subplotsr	   r9   r:   r<   r   {Gz?r   r   rK   shrinkNr=   rD   rE   r5   rM   rA   rG   r   r4   s       r   test_constrained_layout4rV   J   sM     ||Aq7HChh .R"-.LL$sL3r   zconstrained_layout5.pngc                      t        j                  ddd      \  } }|j                  D ]  }t        |d      } | j	                  |dddd	
       y)zZ
    Test constrained_layout for a single colorbar with subplots,
    colorbar bottom
    r	   r9   r:   r<   r   FrQ   r   bottom)r   use_gridspecrK   rS   locationNrT   rU   s       r   test_constrained_layout5r[   T   sX     ||Aq7HChh .R"-.LL#c"  $r   zconstrained_layout6.pngc            
         t        j                  d      } | j                  dd|       }|d   j                  dd      }|d   j                  dd      }g }|D ]&  }| j	                  |      }||gz  }t        |d       ( j                  d	       g }|D ]&  }| j	                  |      }||gz  }t        |d      }( | j                  |d
ddt        j                  d             y)z,Test constrained_layout for nested gridspecsr9   r:   r   r	   r>   r      r   zx-label
MultiLinerQ   gGz?rX   r"   r   )r   rK   rS   rZ   ticksN)r=   r>   add_gridspecsubgridspecr?   r   r   r5   rM   r   MaxNLocator)rA   gsgslgsraxslr   axsrr4   s           r   test_constrained_layout6rh   c   s     **M
*C			!Qs		+B
Q%

Aq
!C
Q%

Aq
!CD &__R R"%& MM&'D .__R R"-.
 LL$))2  4r   c                     t        j                  d      } | j                  dd      }|d   j                  dd      }|d   j                  dd      }g }g }t	        d      D ]2  }|| j                  ||         gz  }|| j                  ||         gz  }4 | j                          |d   j                         j                  |d   j                         j                  kD  sJ y )NTconstrained_layoutr	   r   r   r
   )
r=   r>   r`   ra   ranger?   draw_without_renderingget_positiony0y1)rA   GSGSAGSBaxaaxbis          r   test_identical_subgridspecrw   {   s    
**
-C			!Q	B
Q%

Aq
!C
Q%

Aq
!C
C
C1X )A'((A'(()  q6 ##c!f&9&9&;&>&>>>>r   c                  t   t        j                  t        d      5  t        j                  d      } t        j                  dd      }t        j                  dd|d         }t        j                  dd|d         }|D ]  }| j                  |        | j                          ddd       y# 1 sw Y   yxY w)	z2Test for proper warning if fig not set in GridSpeczhThere are no gridspecs with layoutgrids. Possibly did not call parent GridSpec with the "figure" keywordmatchr9   r:   r   r	   r   N)
pytestwarnsUserWarningr=   r>   r   GridSpecGridSpecFromSubplotSpecr?   rm   )rA   rc   rd   re   s       r   test_constrained_layout7r      s    	 3
5 % jj.q!$..q!RU;..q!RU; 	 BOOB	  	""$% % %s   B	B..B7zconstrained_layout8.pngc                     t        j                  dd      } t        j                  dd|       }g }dD ]|  }|dk(  rd	g}ndd
g}|D ]h  }| j	                  |||f         }||gz  }t        |d       |dkD  r|j                  d       |d	k  r|j                  d       |j                  d       j ~ | j	                  |dddf         }||gz  }t        |d      }| j                  ||dd       y)z/Test for gridspecs that are not completely full)
   r"   r9   figsizer;   r
   r"   r]   r   r   r   r      	   r    r	   NrQ   r   rR   )
r=   r>   r   r~   r?   r5   r   r   r   rM   )rA   rc   rG   jilistrv   r   r4   s           r   test_constrained_layout8r      s    **W]
;C			1a	,B
C 6CEFE 	AAqD*BB4KC2*1ub!1ub!LL	 
AqD	"BB4KC
a
(CLL$sL3r   zconstrained_layout9.pngc                  0   t        j                  ddddd      \  } }|j                  D ]1  }t        |d      }|j	                  d       |j                  d       3 j                  d       | j                  |d	d
       | j                  dd       y)z4Test for handling suptitle and for sharex and shareyr	   r9   Fr;   sharexshareyr<   r   r   r!   rQ   r   rR   zTest Suptitle   N)	r=   rD   rE   r5   r   r   
set_aspectrM   suptitlerU   s       r   test_constrained_layout9r      s     ||Aq#(8HChh R"-
b
b MM"LL$sL3LL2L.r   zconstrained_layout10.pngx86_64gMb?)r7   tolc                      t        j                  ddd      \  } }|j                  D ](  }|j                  t	        j
                  d      d       * j                  dd	       y
)z%Test for handling legend outside axisr	   r9   r:   r^   zThis is a label)labelzcenter left)g?      ?)locbbox_to_anchorN)r=   rD   rE   r   r*   arangelegendrF   s      r   test_constrained_layout10r      sV     ||Aq7HChh 8
		"%678II-
I;r   zconstrained_layout11.pngc                     t        j                  dd      } t        j                  dd|       }t        j                  dd|d         }t        j                  dd|d         }| j                  |d         }t        |d	       g }|D ]&  }| j                  |      }||gz  }t        |d	      }( | j                  |d
d       | j                  |d         }t        |d	       y)z"Test for multiple nested gridspecsr9   )   r
   r;   r   r   r	   r]   r   r   r   r        Q@r   rS   aspectN	r=   r>   r   r~   r   r?   r   r5   rM   rA   gs0rd   gsl0r   rG   rc   r4   s           r   test_constrained_layout11r      s     **M7
;C


Aq
-C

*
*1aQ
8C++Aq#a&9D	Q	 Ba 
C -__R tR!,- LLSL5	Q	 Ba r   zconstrained_layout11rat.pngc                     t        j                  dd      } t        j                  dd| ddg      }t        j                  dd|d         }t        j                  dd|d   ddg	      }| j                  |d         }t        |d
       g }|D ]&  }| j                  |      }||gz  }t        |d
      }( | j                  |dd       | j                  |d         }t        |d
       y)z4Test for multiple nested gridspecs with width_ratiosr9   )r   r
   r   r   r	      )r>   width_ratiosr   )height_ratiosr   r   r   r   r   Nr   r   s           r   test_constrained_layout11ratr      s     **M7
;C


AqAq6
BC

*
*1aQ
8C++Aq#a&AOD	Q	 Ba 
C -__R tR!,- LLSL5	Q	 Ba r   zconstrained_layout12.pngc                     t        j                  dd      } t        j                  dd|       }| j	                  |ddd	f         }| j	                  |ddd	f         }t        |d
       t        |d
       | j	                  |dddf         }t        |d       | j	                  |dddf         }t        |d       | j	                  |dddf         }t        |d       |j                  d       y)z/Test that very unbalanced labeling still works.r9   )r      r   r   r	   r]   Nr
   r      r   r   T)r   r   r   )r=   r>   r   r~   r?   r   r   )rA   r   ax1ax2r   s        r   test_constrained_layout12r      s     **M6
:C


Aq
-C
//#bqb!e*
%C
//#ab!e*
%Cr"r"	QqS!V	%B4 	QqS!V	%B4 	QRU	$B4 MM)r   zconstrained_layout13.pngc                     t        j                  ddd      \  } }|j                  D ]%  }t        |d      }| j	                  ||ddd	       ' t        j                  t              5  | j                         j                  d
d       ddd       | j                         j                  dd       y# 1 sw Y   +xY w)Test that padding works.r	   r9   r:   r^   r   r         4@rJ   r   rS   r   rK   r   )wpadhpadNUUUUUU?w_padh_pad)
r=   rD   rE   r5   rM   r{   raises	TypeErrorget_layout_enginesetrU   s       r   test_constrained_layout13r     s     ||Aq7HChh CR"-SRCTBC 
y	! 4###34gW=4 4s   )"B55B>zconstrained_layout14.pngc                      t        j                  ddd      \  } }|j                  D ]%  }t        |d      }| j	                  ||ddd	       ' | j                         j                  d
d
dd       y)r   r	   r9   r:   r^   r   r   r   rJ   r   gUUUUUU?皙?r   r   hspacewspaceN)r=   rD   rE   r5   rM   r   r   rU   s       r   test_constrained_layout14r     sy     ||Aq7HChh CR"-SRCTBC s   $r   zconstrained_layout15.pngc                      dt         j                  d<   t        j                  dd      \  } }|j                  D ]  }t        |d        y)zTest that rcparams work.Tzfigure.constrained_layout.user	   r^   r   N)mplrcParamsr=   rD   rE   r   rF   s      r   test_constrained_layout15r   *  sD     59CLL01||Aq!HChh &R"%&r   zconstrained_layout16.pngc                  v    t        j                  d      \  } }t        |d       | j                  g d      }y)zTest ax.set_position.r9   r:   r^   r   )r   r   皙?r   N)r=   rD   r   add_axesrA   r   r   s      r   test_constrained_layout16r   3  s/     ll-0GCb!
,,+
,Cr   zconstrained_layout17.pngc                  t   t        j                  d      } t        j                  dd|       }| j	                  |d         }| j	                  |dddf         }| j	                  |dddd	f         }| j	                  |ddd
f         }t        |       t        |       t        |       t        |       y)zTest uneven gridspecsr9   r:   r
   r]   r   r   r   r   Nr	   r#   )r=   r>   r   r~   r?   r   )rA   rc   r   r   ax3ax4s         r   test_constrained_layout17r   ;  s     **M
*C			1a	,B
//"T(
#C
//"QU)
$C
//"QR1W+
&C
//"QRV*
%Cr   c                  &   t        j                  d      \  } }|j                         }t        |       t        |d       | j	                          t        |j                         j                  |j                         j                  k(        sJ y)z
Test twinxr9   r:   r<   r   N)r=   rD   twinxr   rm   allrn   extentsr   s      r   test_constrained_layout18r   L  sl    ll-0GC
((*Cr" r ((C,<,<,>,F,FFGGGr   c                  j   t        j                  d      \  } }|j                         }t        |       t        |d       |j	                  d       |j	                  d       | j                          t        |j                         j                  |j                         j                  k(        sJ y)z
Test twinyr9   r:   r<   r   r   N)	r=   rD   twinyr   r   rm   r   rn   r   r   s      r   test_constrained_layout19r   V  s    ll-0GC
((*Cr"MM"LL r ((C,<,<,>,F,FFGGGr   c                     t        j                  ddd      } t        j                  | | dddf         }t        j                         }|j                  g d      }|j                  | | |ddddf         }|j                  |       y)z)Smoke test cl does not mess up added Axesr"   r   N)r   r   r   r   r#   )r*   linspacehypotr=   r>   r   r.   rM   )gximgrA   r   meshs        r   test_constrained_layout20r   b  ss    	RA	B
((2r!T'{
#C
**,C	l	#B==RSbS#2#X/DLLr   c                     t        j                  d      \  } }| j                  d       | j                          t	        j
                  |j                         j                        }| j                  d       | j                          t	        j
                  |j                         j                        }t        j                  j                  ||       y)z>#11035: repeated calls to suptitle should not alter the layoutr9   r:   	Suptitle0	Suptitle1N)
r=   rD   r   rm   r*   copyrn   r   testingassert_allcloserA   r   extents0extents1s       r   test_constrained_layout21r   m  s    ll-0GCLL wwr(001HLL wwr(001HJJx2r   c                     t        j                  d      \  } }| j                          t        j                  |j                         j                        }| j                  dd       | j                          t        j                  |j                         j                        }t        j                  j                  ||       y)zC#11035: suptitle should not be include in CL if manually positionedr9   r:   Suptitler   r1   N)
r=   rD   rm   r*   r   rn   r   r   r   r   r   s       r   test_constrained_layout22r   |  s    ll-0GC wwr(001HLLsL# wwr(001HJJx2r   c                      t        d      D ]U  } t        j                  ddd      }|j                  dd      }|d   j	                  dd      }|j                  d|         W y	)
zu
    Comment in #11035: suptitle used to cause an exception when
    reusing a figure w/ CL with ``clear=True``.
    r	   r9   T123)r;   clearnumr   r   r   N)rl   r=   r>   r`   ra   r   )rv   rA   rc   subs       r   test_constrained_layout23r     sc     1X %jjTuEa#e1%xs^$	%r   ztest_colorbar_location.pngT)remove_textr7   c                  $   dt         j                  d<   t        j                  ddd      \  } }|j                  D ]/  }t	        |      }|j                  d       |j                  d       1 | j                  |ddd	f   d
       | j                  ||dddf   dd       | j                  ||dddf   ddd       | j                  ||dddf   dd       | j                  ||d   dd       | j                  ||d	ddf   dd       y)zY
    Test that colorbar handling is as expected for various complicated
    cases...
    Fzpcolormesh.snapr   r"   r9   r:   r   Nr   r   )r   rS   r#   r	   r   rX   )r   rS   rZ   r   g?)r   rS   rZ   rK   r
   topr   leftright)r=   r   rD   rE   r5   r   r   rM   rU   s       r   test_colorbar_locationr    s    ',CLL"#||Aq7HChh R 
b
b LLQT3L/LLR!VS8LDLLQUC(LMLLRVS5LALLT3L@LLQqS!VS7LCr   c                  *   t        j                  ddd      \  } }|d   j                  d       | j                          t	        j
                  |d   j                         j                        }t        j                  j                  |g dd	       y )
Nr	   r9   r:   r   Fr   )g/ע?g<Q?gd:tzލ?g`?h㈵>)rtol)
r=   rD   set_visiblerm   r*   r   rn   r   r   r   )rA   rG   r   s      r   test_hidden_axesr    sy     ||Aq7HCI%  wws4y--/778HJJ:  Gr   c            	         dD ]  } t        j                  ddd      \  }}g }t        |j                        D ]  \  }}|j	                  d       t        |      }|j                  ||| dd	      }||gz  }|j                  j	                  d       |d
k7  sa|j                  j                  j                  g        |j                  j                  j                  g        |j                  g        |j                  g         |j                         j                  dddd       |j                          | dv rt         j"                  j%                  |d   j                  j'                         j(                  |d   j                  j'                         j(                         t         j"                  j%                  |d
   j                  j'                         j(                  |d   j                  j'                         j(                         t         j"                  j%                  |d   j                  j'                         j*                  |d
   j                  j'                         j*                         t         j"                  j%                  |d   j                  j'                         j*                  |d   j                  j'                         j*                          y )N)r   r   r   rX   r	   r9   r:   in)	directionr   g{Gz?)r   rZ   rS   rK   r   gqq?g?r   )r   r   r   r
   )r=   rD   rL   rE   tick_paramsr5   rM   r   xaxis	set_ticksyaxisr   r   r   r   rm   r*   r   r   rn   x0ro   )rZ   rA   rG   cbsrN   r   pccbs           r   test_colorbar_alignr    sG   6 D<<1];S) 	'FBNNTN*#BbR(3"&  (BB4KCEE-Qw%%b)%%b)""2&""2&	' 	##&+.s 	$ 	< 	""$((JJ&&s1vyy'='='?'B'B'*1vyy'='='?'B'BDJJ&&s1vyy'='='?'B'B'*1vyy'='='?'B'BD JJ&&s1vyy'='='?'B'B'*1vyy'='='?'B'BDJJ&&s1vyy'='='?'B'B'*1vyy'='='?'B'BD7Dr   ztest_colorbars_no_overlapV.pngc                  b   t        j                  dd      } | j                  dddd      }|D ]m  }|j                  j	                  t        j                                |j                  dd	
       |j                  ddgddgg      }| j                  ||d       o | j                  d       y )N)r	   r   r9   r   r	   r   Tr   r   bothr  axisr	  r
   r   verticalr   orientationfoo)r=   r>   rD   r  set_major_formatterr   NullFormatterr
  imshowrM   r   rA   rG   r   ims       r   test_colorbars_no_overlapVr!    s    
**VM
:C
,,q!D,
6C 8
$$V%9%9%;<
Fd3YYAA'(RBJ7	8
 LLr   ztest_colorbars_no_overlapH.pngc                  b   t        j                  dd      } | j                  d       | j                  dddd      }|D ]m  }|j                  j                  t        j                                |j                  d	d
       |j                  ddgddgg      }| j                  ||d       o y )N)r   r	   r9   r   r  r   r	   Tr  r  r  r  r
   r   
horizontalr  )r=   r>   r   rD   r  r  r   r  r
  r  rM   r  s       r   test_colorbars_no_overlapHr$    s    
**VM
:CLL
,,q!D,
6C :
$$V%9%9%;<
Fd3YYAA'(RBL9	:r   c                  |   t        j                  ddd      \  } }|d   j                  g d       | j                          |d   j	                         }t
        j                  j                  |ddgddgg       t        j                  ddd      \  } }|d   j                  g d       |d   j                  t
        j                  j                  d	d	            }| j                  ||d   
       | j                          |d   j	                         }t
        j                  j                  |ddgddgg       y )Nr   r	   r9   r:   r   r   r   333333?r'  r   r      r   g)\(?)r=   rD   set_positionrm   rn   r*   r   r   r.   randomrandrM   )rA   rG   ppr  s       r   test_manually_set_positionr.    s	   ||Aq7HCF,- 	Q			BJJrS#Jc
#;<||Aq7HCF,-	Q		299>>"b1	2BLLAL 	Q			BJJrS#Js#<=r   ztest_bboxtight.pngbbox_inchestight)r   r7   savefig_kwargc                  X    t        j                  d      \  } }|j                  d       y Nr9   r:   r%   r=   rD   r   r@   s     r   test_bboxtightr5    s"     ll-0GCMM"r   ztest_bbox.pngr   g      @r	   c                  X    t        j                  d      \  } }|j                  d       y r3  r4  r@   s     r   	test_bboxr7    s"    
 ll-0GCMM"r   c                     t        j                  ddddddi      \  } \  }}}|j                  dd       |j                  d	       |j                  d
d       |j                  d	       |j                  dd       |j                  d	       | j	                  |||f       | j                          |j                  j                  j                         |j                  j                  j                         |j                  j                  j                         g}t        j                  j                  |d   j                  |d   j                  g|d   j                  dd       |d   j                  dk\  sJ y)z
    Tests for a bug in which constrained layout and align_ylabels on
    three unevenly sized subplots, one of whose y tick labels include
    negative numbers, drives the non-negative subplots' y labels off
    the edge of the plot
    r
   r   r9   )g@r   r   )r   r   gffffff?)r;   r   gridspec_kwr   Labelg      g      ?)rG   r	   r  )r  atolN)r=   rD   set_ylimr   align_ylabelsrm   r  r   get_window_extentr*   r   r   r  )rA   r   r   r   after_aligns        r   test_align_labelsr@    sM    <<1]085D GL 5MNC#sC
 LLANN7LLsNN7LLANN73S/* 99??44699??44699??4468K JJA 1 1;q>3D3DE*1~00qu  F q>!!!r   c                     t        j                  d      \  } }| j                          |j                  | j                  j                               }| j                  d       | j                  d       | j                          |j                  | j                  j                               }|j                  |j                  dz   kD  sJ |j                  |j                  dz   kD  sJ t        j                  d      \  } }| j                          |j                  | j                  j                               }| j                  dd       | j                  dd       | j                          |j                  | j                  j                               }|j                  |j                  dz   kD  sJ |j                  |j                  dz   kD  sJ y )	Nr9   r:   BooBooyg      $@r   )r2   r   )
r=   rD   rm   get_tightbboxcanvasget_renderer	supxlabel	supylabelro   r  )rA   r   pos0poss       r   test_suplabelsrK  6  sj   ll-0GC CJJ3356DMM%MM& 


3::224
5C66DGGdN"""66DGGdN"""ll-0GC CJJ3356DMM%3MMM%3M 


3::224
5C66DGGdN"""66DGGdN"""r   c                      t        j                         } | j                  dd      }| j                  |dd dd f         }| j	                          y )Nr
   r   r   )r=   r>   r`   r?   rm   )rA   rc   sps      r   test_gridspec_addressingrN  M  sE    
**,C			!Q	B	ABF	$B r   c                     t        j                  d      \  } }| j                          t        j                  t
        d      5  t        j                         \  } }| j                  d       | j                          d d d        t        j                  t
        d      5  t        j                         \  } }| j                  ddd       | j                          d d d        y # 1 sw Y   ixY w# 1 sw Y   y xY w)NTrj   zwill be deprecatedry   rJ   r   )r=   rD   rm   r{   r|   PendingDeprecationWarningset_constrained_layoutr@   s     r   test_discouraged_apirR  T  s    lld3GC 	/0
2 %,,.R""4(""$	% 
/0
2 %,,.R""TD#AB""$	% %% %% %s   9C&!<C2&C/2C;c                  Z    t        j                  ddi      \  } }| j                          y )Nr   rJ   rj   )r=   rD   rm   r@   s     r   test_kwargsrT  e  s$    llwo>GC r   c                  <   t        j                  d      \  } }| j                         j                  g d       | j	                          |j                         }|j                  dk  sJ |j                  dk  sJ t        j                  d      \  } }| j                         j                  g d       | j	                          |j                         }|j                  dk  sJ |j                  dk  sJ |j                  dkD  sJ |j                  dkD  sJ y )Nr9   r:   )r   r   r   r   )rectr   r&  r   )
r=   rD   r   r   rm   rn   x1rp   r  ro   )rA   r   pposs      r   	test_rectrY  j  s    ll-0GC%56 ??D77S==77S==ll-0GC%9: ??D77S==77S==77S==77S==r   c                     t        j                  ddddd      \  } }|j                  D ]1  }|j                  t        j
                  j                  dd            }3 | j                  |       | j                          |d   j                         }t        j                  j                  |j                  d	d
       |d   j                         }t        j                  j                  |j                  dd       t        j                  dddddd      \  } }|j                  D ]1  }|j                  t        j
                  j                  dd            }3 | j                  ||       | j                          |d   j                         }t        j                  j                  |j                  dd       t        j                  j                  |j                  dd
       |d   j                         }t        j                  j                  |j                  dd       t        j                  j                  |j                  dd
       y )Nr
   r	   
compressedTr   r(  r)  r   gz?rQ   r;  r   gz?MbP?)r"   r   )r;   r   r   r   gZ|
?g+ݓ?)r   r	   g\C?gMSt$?)r=   rD   rE   r  r*   r+  randnrM   rm   rn   r   r   r  rW  rp   ro   )rA   rG   r   r  rJ  s        r   test_compressed1r_  |  s   ||Aq#'6HChh 0YYryyr2./0 LLL 
d)
 
 
"CJJsvvvD9
d)
 
 
"CJJsvvvD9 ||Aq#'fFHChh 0YYryyr2./0 LLL 
d)
 
 
"CJJsvvwT:JJsvvvD9
d)
 
 
"CJJsvvvD9JJsvvvD9r   c                  X   t        j                  dddddd      \  } \  }}|j                  d       |j                  d	       |j                  d       |j                  d
       | j	                  d      }| j                          |j                         d
   t        j                  dd      k(  sJ | j	                  dd      }| j                          |j                         d
   dk(  sJ | j	                  dd      }| j                          |j                         d
   dk(  sJ y )Nr	   )r   r   r[  )g      ?g      ?r   )r   r   )nrowsr   r;   r9  equalr   r   r   g-?r]  )absg\(\?r   F)	in_layout)	r=   rD   r  set_box_aspectr   rm   rn   r{   approx)rA   ax0r   titles       r   test_compressed_suptitleri    s   ll&4BDOC#s HHWsHHWqLL!E "fmmF&EEEELLDL)E "d***LLEL2E "d***r   z
arg, state)TT)FFrV  c                 ^    t        j                  |       \  }}|j                         |u sJ y )Nrj   )r=   rD   get_constrained_layout)argstaterA   r   s       r   test_set_constrained_layoutrn    s-     llc2GC%%'5000r   c                  b   t        j                         \  } }t        j                  t              5  | j                  d       | j                         sJ | j                  d       | j                         rJ | j                  d       | j                         sJ 	 d d d        y # 1 sw Y   y xY w)NTF)r=   rD   r{   r|   rP  rQ  rk  r@   s     r   test_constrained_togglerp    s    llnGC	/	0 ,""4())+++""5)--///""4())+++, , ,s   A*B%%B.c                     t        j                  dd      } | j                          | j                          t        j                  d       ~ t        j                          t        d t        j                         D              rJ y )NT)r   r   )rk   r   r   c              3   d   K   | ](  }t        |t        j                  j                         * y w)N)
isinstancer   _layoutgrid
LayoutGrid).0objs     r   	<genexpr>z#test_layout_leak.<locals>.<genexpr>  s)      0 c3??#=#=> 0s   .0)	r=   r>   r?   rm   closegccollectanyget_objects)rA   s    r   test_layout_leakr~    sm     **h
?COO IIeJJL 0 nn.0 0 0 0 0r   c                  H   t        j                  dd      } | j                  dd      }g }|j                         D ]w  }|j	                  dd      }t        d      D ]/  }||j                  ||df         gz  }|d   j                          1 |j                  |d	d	df         j                          y | j                          |dd	 D ]U  }t        j                  |j                         j                  d   |d   j                         j                  d   d
      rUJ  y	)z
    Test that the submerged margin logic does not get called multiple times
    on same axes if it is already in a subfigure
    )r   r"   r9   r   r
   r   r	   r   r#   Ngư>r\  )r=   r>   
subfiguresflattenr`   rl   r?   r   rm   r*   allclosern   bounds)rA   figuresrG   frc   rv   r   s          r   test_submerged_subfigr    s   
 **VM
:CnnQ"G
C__ '^^Aq!q 	AAMM"QT(+,,CGLLN	 	
bAh$$&'  !"g H{{2??,33B7q6..077;$H 	H HHr   )r^   F)r^   )Frz  platformnumpyr*   r{   
matplotlibr   matplotlib.testing.decoratorsr   matplotlib.pyplotpyplotr=   matplotlib.transforms
transformsmtransformsr   r   markusefixtures
pytestmarkr   r5   rB   rH   rO   rV   r[   rh   rw   r   r   r   machiner   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r!  r$  r.  r5  Bboxr7  r@  rK  rN  rR  rT  rY  r_  ri  parametrizern  rp  r~  r   r   r   <module>r     s   	     :  + ' KK/0

	
 ,-W=" >" ,-W=& >& ,-W=
* >
* ,-W=4 >4 ,-W=$ >$ ,-W=4 >4.?(%  ,-W=4 >46 ,-W=/ >/ -.g+8++-9auF<F< -.g>! ?!& 01A! B!& -.g> ?* -.g>> ?> -.g>$ ?$ -.g>& ?& -.g>- ?- -.g> ? H	H33
% /0"'3D3D*
GD@ 34GD E 34GD: E:>  '("'!. 8::
 ?#"'!.!1!1!1C8c1X2F!G!IJ	J
"D#.!%"!
$:>+0 Jd^T	( 11
,
0Hr   