Ë
    íÍ:jo  ã                   óN  — 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dcd„Zddd„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dSgd¬	«      dT„ «       ZA edUgd¬	«      dV„ «       ZBej"                  j‡                  dWdXdYi d7fdZdid7fg«      d[„ «       ZDd\„ ZEd]„ ZFd^„ ZGd_„ ZHd`„ ZI edagd¬	«      db„ «       ZJy)eé    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      ú|/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/matplotlib/tests/test_constrainedlayout.pyÚexample_plotr      sq   € Ø‡G�GˆQ�ˆF„OØ×Ñ˜AÐÔÙØ
�‰�i¨(ˆÔ3Ø
�‰�i¨(ˆÔ3Ø
�‰�W xˆÕ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ä   € Ø�F€BˆÜ�8‰8”E˜"˜a "™f bÓ)Ü˜"˜a "™f bÓ)ð*ñ +�D€A€qà	
ˆQ�‰V‰�a˜1‘fÑ	˜q A™vÑ	%¬¯©°°a±°¸!¸q¹&Ñ0@Ó)AÑA€AØ
�-‰-˜˜1˜a    S b S ™k°¸sÈØ#'ð ó )€Cà‡M�M�) h€MÔ/Ø‡M�M�) h€MÔ/Ø‡L�L� 8€LÔ,Ø€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   € ô �|‰|˜A˜q¨Ô7�H€CˆØ�h‰hò &ˆÜ�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{®Gáz´?ç{®Gáz”?)r   ÚpadN)r=   rD   Ú	enumeraterE   r5   Úcolorbar)rA   rG   Únnr   r4   rK   s         r   Útest_constrained_layout3rO   <   se   € ô �|‰|˜A˜q¨Ô7�H€CˆÜ˜CŸH™HÓ%ò *‰ˆˆBÜ˜R¨"Ô-ˆØ�Š7Ø‰CàˆCØ�‰�S˜R SˆÕ)ñ*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   ç{®Gáz„?r   ©r   rK   ÚshrinkN©r=   rD   rE   r5   rM   ©rA   rG   r   r4   s       r   Útest_constrained_layout4rV   J   sM   € ô �|‰|˜A˜q¨Ô7�H€CˆØ�h‰hò .ˆÜ˜R¨"Ô-‰ð.à‡L�L�˜ $¨s€LÕ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   € ô �|‰|˜A˜q¨Ô7�H€CˆØ�h‰hò .ˆÜ˜R¨"Ô-‰ð.à‡L�L�˜Ø#¨°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   g®Gáz®ï?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Ø	×	Ñ	˜!˜Q sÐ	Ó	+€BØ
ˆQ‰%×
Ñ
˜A˜qÓ
!€CØ
ˆQ‰%×
Ñ
˜A˜qÓ
!€CØ€DØò &ˆØ�_‰_˜RÓ ˆØ��‰ˆÜ�R "Ö%ð&ð ‡M�MÐ&Ô'Ø€DØò .ˆØ�_‰_˜RÓ ˆØ��‰ˆÜ˜R¨"Ô-‰ð.ð
 ‡L�L�˜Ø $°Ü×)Ñ)°Ô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‰%×
Ñ
˜A˜qÓ
!€CØ
ˆQ‰%×
Ñ
˜A˜qÓ
!€Cà
€CØ
€CÜ�1‹Xò )ˆØ�—‘  A¡Ó'Ð(Ñ(ˆØ�—‘  A¡Ó'Ð(Ñ(‰ð)ð ×ÑÔ àˆq‰6×ÑÓ ×#Ñ# 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ñ %ô �j‰j Ô.ˆÜ×Ñ˜q !Ó$ˆÜ×.Ñ.¨q°!°R¸±UÓ;ˆÜ×.Ñ.¨q°!°R¸±UÓ;ˆØò 	 ˆBØ�O‰O˜BÕð	 ð 	×"Ñ"Ô$÷%÷ %ñ %ú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Ü	×	Ñ	˜1˜a¨Ô	,€BØ
€CØò ˆØ�Š6Ø�C‰Eà˜�FˆEØò 	ˆAØ—‘  A q D¡Ó*ˆBØ�B�4‰KˆCÜ˜2¨Õ*Ø�1ŠuØ—‘˜bÔ!Ø�1ŠuØ—‘˜bÔ!Ø�L‰L˜Õñ	ðð 
�‰˜˜Ašq˜D™Ó	"€BØˆBˆ4�K€CÜ
˜ aÔ
(€Cà‡L�L�˜ $¨s€LÕ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Š   € ô �|‰|˜A˜q¨Ø#(°ô8�H€Cˆà�h‰hò ˆÜ˜R¨"Ô-ˆØ
�‰�bÔØ
�‰�bÕðð ‡M�M�"ÔØ‡L�L�˜ $¨s€LÔ3Ø‡L�L�¨2€LÕ.r   zconstrained_layout10.pngÚx86_64gü©ñÒMb ?)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   € ô �|‰|˜A˜q¨Ô7�H€CˆØ�h‰hò 8ˆØ
�‰”—	‘	˜"“Ð%6ˆÕ7ð8à‡I�I�-°
€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ß   € ô �*‰*˜M°7Ô
;€CÜ
×
Ñ
˜A˜q¨Ô
-€CÜ
×
*Ñ
*¨1¨a°°Q±Ó
8€CÜ×+Ñ+¨A¨q°#°a±&Ó9€DØ	�‰˜˜Q™Ó	 €BÜ�˜aÕ Ø
€CØò -ˆØ�_‰_˜RÓ ˆØ�ˆt‰ˆÜ˜R¨!Ô,‰ð-ð ‡L�L�˜ 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ë   € ô �*‰*˜M°7Ô
;€CÜ
×
Ñ
˜A˜q¨¸A¸q¸6Ô
B€CÜ
×
*Ñ
*¨1¨a°°Q±Ó
8€CÜ×+Ñ+¨A¨q°#°a±&ÈÈAÈÔO€DØ	�‰˜˜Q™Ó	 €BÜ�˜aÕ Ø
€CØò -ˆØ�_‰_˜RÓ ˆØ�ˆt‰ˆÜ˜R¨!Ô,‰ð-ð ‡L�L�˜ 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ä   € ô �*‰*˜M°6Ô
:€Cä
×
Ñ
˜A˜q¨Ô
-€Cà
�/‰/˜#˜b˜q˜b !˜e™*Ó
%€CØ
�/‰/˜#˜a™b !˜e™*Ó
%€Cä�˜rÕ"Ü�˜rÕ"à	�‰˜˜Q˜q˜S !˜V™Ó	%€BÜ�˜4Õ Ø	�‰˜˜Q˜q˜S !˜V™Ó	%€BÜ�˜4Õ Ø	�‰˜˜Q™R ˜U™Ó	$€BÜ�˜4Õ Ø‡M�M�)Õ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ÚhpadNçUUUUUUÕ?©Úw_padÚh_pad)
r=   rD   rE   r5   rM   r{   ÚraisesÚ	TypeErrorÚget_layout_engineÚsetrU   s       r   Útest_constrained_layout13rÂ     s¬   € ô �|‰|˜A˜q¨Ô7�H€CˆØ�h‰hò CˆÜ˜R¨"Ô-ˆØ�‰�S˜R¨°C¸TˆÕBðCô 
�‰”yÓ	!ñ 4Ø×ÑÓ×#Ñ#¨°Ð#Ô3÷4à×ÑÓ×Ñ g°WÐÕ=÷4ð 4ús   Á)"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   € ô �|‰|˜A˜q¨Ô7�H€CˆØ�h‰hò CˆÜ˜R¨"Ô-ˆØ�‰�S˜R¨°C¸TˆÕ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   € ð 59„C‡L�LÐ0Ñ1Ü�|‰|˜A˜qÓ!�H€CˆØ�h‰hò &ˆÜ�R "Ö%ñ&r   zconstrained_layout16.pngc                  ór   — t        j                  d¬«      \  } }t        |d¬«       | j                  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/   € ô �l‰l -Ô0�G€CˆÜ�˜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Ü	×	Ñ	˜1˜a¨Ô	,€Bà
�/‰/˜"˜T™(Ó
#€CØ
�/‰/˜"˜Q ¡˜U™)Ó
$€CØ
�/‰/˜"˜Q™R  1 ˜W™+Ó
&€CØ
�/‰/˜"˜Q™R ˜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   € ä�l‰l -Ô0�G€CˆØ
�(‰(‹*€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„   € ä�l‰l -Ô0�G€CˆØ
�(‰(‹*€CÜ�ÔÜ�˜rÕ"Ø‡M�M�"ÔØ‡L�L�ÔØ×ÑÔ Üˆr�‰Ó ×(Ñ(¨C×,<Ñ,<Ó,>×,FÑ,FÑFÔGÐGÑGr   c                  ó  — t        j                  ddd«      } t        j                  | | dd…df   «      }t        j                  «       }|j                  d«      }|j                  | | |dd…dd…f   «      }|j                  |«       y)z)Smoke test cl does not mess up added Axeséûÿÿÿr"   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Ü
�(‰(�2�rš!˜T˜'‘{Ó
#€Cä
�*‰*‹,€CØ	�‰�lÓ	#€BØ�=‰=˜˜R  S b S¨#¨2¨# X¡Ó/€DØ‡L�L�Õ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Ž   € ä�l‰l -Ô0�G€Cˆà‡L�L�ÔØ×ÑÔ Ü�w‰w�r—‘Ó(×0Ñ0Ó1€Hà‡L�L�ÔØ×ÑÔ Ü�w‰w�r—‘Ó(×0Ñ0Ó1€Hä‡J�J×Ñ˜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†   € ä�l‰l -Ô0�G€Cˆà×ÑÔ Ü�w‰w�r—‘Ó(×0Ñ0Ó1€Hà‡L�L�˜s€LÔ#Ø×ÑÔ Ü�w‰w�r—‘Ó(×0Ñ0Ó1€Hä‡J�J×Ñ˜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   € ô �1‹Xò %ˆÜ�j‰j °T¸uÔEˆØ×Ñ˜a Ó#ˆØ�‰e×Ñ  1Ó%ˆØ�‰�x ˜s�^Õ$ñ	%r   ztest_colorbar_location.pngT)Úremove_textr7   c                  óþ  — 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...
    r†   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=   rD   rE   r5   r   r   rM   rU   s       r   Útest_colorbar_locationr  —  s  € ô �|‰|˜A˜q¨Ô7�H€CˆØ�h‰hò ˆÜ˜RÓ ˆØ
�‰�bÔØ
�‰�bÕðð ‡L�L�˜šQ ˜T™¨3€LÔ/Ø‡L�L�˜˜R  ! ˜V™¨S¸8€LÔDØ‡L�L�˜˜Q ¡˜U™¨C¸(È€LÔMØ‡L�L�˜˜R ¡˜V™¨S¸5€LÔAØ‡L�L�˜˜T™¨3¸€LÔ@Ø‡L�L�˜˜Q˜q˜S !˜V™¨S¸7€LÕ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   € ô �|‰|˜A˜q¨Ô7�H€CˆØˆ�I×Ñ˜%Ô Ø×ÑÔ Ü�w‰w�s˜4‘y×-Ñ-Ó/×7Ñ7Ó8€Hä‡J�J×ÑØÒ:Àð õ 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 rÖ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*                  «       t         j"                  j%                  |d   j                  j'                  «       j*                  |d   j                  j'                  «       j*                  «       �Œè y )N)r   rÿ   rþ   rX   r	   r9   r:   Úin)Ú	directionr   g{®Gáz¤?)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ØˆÜ §¡Ó)ò 	'‰FˆB�Ø�N‰N TˆNÔ*Ü Ó#ˆBØ—‘˜b R°(À3Ø"&ð ó (ˆBà�B�4‰KˆCØ�E‰E×Ñ¨ÐÔ-Ø�Q‹wØ—‘—‘×%Ñ% bÔ)Ø—‘—‘×%Ñ% bÔ)Ø×"Ñ" 2Ô&Ø×"Ñ" 2Õ&ð	'ð 	×ÑÓ×#Ñ#¨&¸Ø+.°sð 	$ô 	<ð 	×"Ñ"Ô$ØÐ(Ñ(Ü�J‰J×&Ñ& s¨1¡v§y¡y×'=Ñ'=Ó'?×'BÑ'BØ'*¨1¡v§y¡y×'=Ñ'=Ó'?×'BÑ'BôDä�J‰J×&Ñ& s¨1¡v§y¡y×'=Ñ'=Ó'?×'BÑ'BØ'*¨1¡v§y¡y×'=Ñ'=Ó'?×'BÑ'BöDô �J‰J×&Ñ& s¨1¡v§y¡y×'=Ñ'=Ó'?×'BÑ'BØ'*¨1¡v§y¡y×'=Ñ'=Ó'?×'BÑ'BôDä�J‰J×&Ñ& s¨1¡v§y¡y×'=Ñ'=Ó'?×'BÑ'BØ'*¨1¡v§y¡y×'=Ñ'=Ó'?×'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�   € ä
�*‰*˜V¨MÔ
:€CØ
�,‰,�q˜! D°ˆ,Ó
6€CØò 8ˆØ
�‰×$Ñ$¤V×%9Ñ%9Ó%;Ô<Ø
�‰˜F¨dˆÔ3Ø�Y‰Y˜˜A˜  A Ð'Ó(ˆØ�‰�R˜B¨JˆÕ7ð	8ð
 ‡L�L�Õ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›   € ä
�*‰*˜V¨MÔ
:€CØ‡L�L�ÔØ
�,‰,�q˜! D°ˆ,Ó
6€CØò :ˆØ
�‰×$Ñ$¤V×%9Ñ%9Ó%;Ô<Ø
�‰˜F¨dˆÔ3Ø�Y‰Y˜˜A˜  A Ð'Ó(ˆØ�‰�R˜B¨LˆÕ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	  € Ü�|‰|˜A˜q¨Ô7�H€CˆØˆ�F×ÑÒ,Ô-Ø×ÑÔ Ø	ˆQ‰×	Ñ	Ó	€BÜ‡J�J×Ñ˜r S¨# J°°c°
Ð#;Ô<ä�|‰|˜A˜q¨Ô7�H€CˆØˆ�F×ÑÒ,Ô-Ø	ˆQ‰×	Ñ	œ2Ÿ9™9Ÿ>™>¨"¨bÓ1Ó	2€BØ‡L�L�˜˜A™€LÔØ×ÑÔ Ø	ˆQ‰×	Ñ	Ó	€BÜ‡J�J×Ñ˜r S¨# 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_bboxtightr6     s"   € ô �l‰l -Ô0�G€CˆØ‡M�M�"Õr   ztest_bbox.pngr˜   g      @r	   c                  óX   — t        j                  d¬«      \  } }|j                  d«       y r4  r5  r@   s     r   Ú	test_bboxr8    s"   € ô
 �l‰l -Ô0�G€CˆØ‡M�M�"Õ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_labelsrA    sM  € ô Ÿ<™<¨¨1°]Ø08Ø5Dð GLð 5MôNÑ€C‰ˆ#ˆs�Cð
 ‡L�L��AÔØ‡N�N�7Ôà‡L�L��sÔØ‡N�N�7Ôà‡L�L��AÔØ‡N�N�7Ôà×Ñ˜3  S˜/ÐÔ*à×ÑÔ Ø—9‘9—?‘?×4Ñ4Ó6Ø—9‘9—?‘?×4Ñ4Ó6Ø—9‘9—?‘?×4Ñ4Ó6ð8€Kô ‡J�J×Ñ ¨A¡× 1Ñ 1°;¸q±>×3DÑ3DÐEØ*¨1™~×0Ñ0°q¸uð ô 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_suplabelsrL  3  sj  € Ü�l‰l -Ô0�G€CˆØ×ÑÔ Ø×Ñ˜CŸJ™J×3Ñ3Ó5Ó6€DØ‡M�M�%ÔØ‡M�M�&ÔØ×ÑÔ Ø
×
Ñ
˜3Ÿ:™:×2Ñ2Ó4Ó
5€CØ�6‰6�D—G‘G˜d‘NÒ"Ð"Ð"Ø�6‰6�D—G‘G˜d‘NÒ"Ð"Ð"ä�l‰l -Ô0�G€CˆØ×ÑÔ Ø×Ñ˜CŸJ™J×3Ñ3Ó5Ó6€Dà‡M�M�%˜3€MÔØ‡M�M�%˜3€MÔØ×ÑÔ Ø
×
Ñ
˜3Ÿ:™:×2Ñ2Ó4Ó
5€CØ�6‰6�D—G‘G˜d‘NÒ"Ð"Ð"Ø�6‰6�D—G‘G˜d‘NÒ"Ð"Ñ"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_addressingrO  J  sE   € Ü
�*‰*‹,€CØ	×	Ñ	˜!˜QÓ	€BØ	�‰˜˜A™B ¡˜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_apirS  Q  sÌ   € Ü�l‰l¨dÔ3�G€CˆØ×ÑÔ ä	�‰Ô/Ø0ô
2ñ %ä—,‘,“.‰ˆˆRØ×"Ñ" 4Ô(Ø×"Ñ"Ô$÷	%ô 
�‰Ô/Ø0ô
2ñ %ä—,‘,“.‰ˆˆRØ×"Ñ"¨T¸DÑ#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_kwargsrU  b  s$   € Ü�l‰l¨w¸¨oÔ>�G€CˆØ×ÑÕ 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_rectrZ  g  sì   € Ü�l‰l -Ô0�G€CˆØ×ÑÓ×ÑÒ%5ÐÔ6Ø×ÑÔ Ø�?‰?Ó€DØ�7‰7�SŠ=Ðˆ=Ø�7‰7�SŠ=Ðˆ=ä�l‰l -Ô0�G€CˆØ×ÑÓ×ÑÒ%9ÐÔ:Ø×ÑÔ Ø�?‰?Ó€DØ�7‰7�SŠ=Ðˆ=Ø�7‰7�SŠ=Ðˆ=Ø�7‰7�SŠ=Ðˆ=Ø�7‰7�SŠ=Ð‰=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„   gÄZ|
€ñ¬?g+ö—Ý“‡ë?)r   r	   g’\þCúíë?gMóŽSt$Ç?)r=   rD   rE   r  r*   r,  ÚrandnrM   rm   rn   rë   rì   r  rX  rp   ro   )rA   rG   r   r  rK  s        r   Útest_compressed1r`  y  sÓ  € Ü�|‰|˜A˜q¨Ø#'°ô6�H€Cˆà�h‰hò 0ˆØ�Y‰Y”r—y‘y—‘ r¨2Ó.Ó/‰ð0ð ‡L�L�˜€LÔØ×ÑÔ à
ˆd‰)×
 Ñ
 Ó
"€CÜ‡J�J×Ñ˜sŸv™v v°DÐÔ9Ø
ˆd‰)×
 Ñ
 Ó
"€CÜ‡J�J×Ñ˜sŸv™v v°DÐÔ9ô �|‰|˜A˜q¨Ø#'°¸fôF�H€Cˆà�h‰hò 0ˆØ�Y‰Y”r—y‘y—‘ r¨2Ó.Ó/‰ð0ð ‡L�L�˜€LÔØ×ÑÔ à
ˆd‰)×
 Ñ
 Ó
"€CÜ‡J�J×Ñ˜sŸv™v w°TÐÔ:Ü‡J�J×Ñ˜sŸv™v v°DÐÔ9Ø
ˆd‰)×
 Ñ
 Ó
"€CÜ‡J�J×Ñ˜sŸv™v v°DÐÔ9Ü‡J�J×Ñ˜sŸv™v v°DÐÕ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;   r:  Ú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_suptitlerj  ˜  s  € Ü—l‘lØ˜¨Ø&4ÀÑBôD�O€C‰ˆ#ˆsð ‡H�HˆWÔØ×Ñ�sÔà‡H�HˆWÔØ×Ñ�qÔà�L‰L˜Ó!€EØ×ÑÔ Ø×ÑÓ Ñ"¤f§m¡m°FÀÔ&EÒEÐEÐEà�L‰L˜ DˆLÓ)€EØ×ÑÔ Ø×ÑÓ Ñ" dÒ*Ð*Ð*à�L‰L˜¨EˆLÓ2€EØ×ÑÔ Ø×ÑÓ Ñ" dÒ*Ð*Ñ*r   z%test_compressed_suptitle_colorbar.pngc                  ó¶  — t        j                  d«      j                  d«      } t        j                  ddd¬«      \  }}|d   j                  | «      }|d   j                  | «      }t        j                  ||d   ¬	«      }t        j                  ||d   ¬	«      }|j                  d
«       |j                  j                  «        t        |||g«      D �]  \  }}|j                  «       }	|j                  j                  «       }
t        |
j                  |	j                  z
  «      dk  s!J d|
j                  › d|	j                  › �«       ‚t        |
j                  |	j                  z
  «      dk  s!J d|
j                  › d|	j                  › �«       ‚t        |
j                   |	j                   z
  «      dk  rŒãJ d|
j                   › d|	j                   › �«       ‚ y)zGTest that colorbars align with axes in compressed layout with suptitle.éd   ©r‚   r‚   r	   r#  r\  )Úncolsr„   r;   r   r   r*  r   rQ   zColorbar height z doesn't match axes height zColorbar y0 z doesn't match axes y0 zColorbar y1 z doesn't match axes y1 N)r*   r›   Úreshaper=   rD   r  rM   r’   rF  ÚdrawÚziprn   r   rd  Úheightro   rp   ©ÚarrrA   rG   Úim0Úim1Úcb0Úcb1r   r  Úax_posÚcb_poss              r   Ú!test_compressed_suptitle_colorbarr{  °  s¢  € ô �)‰)�C‹.×
 Ñ
  Ó
*€CÜ�|‰| !¨V¸LÔI�H€Cˆà
ˆa‰&�-‰-˜Ó
€CØ
ˆa‰&�-‰-˜Ó
€Cä
�,‰,�s˜s 1™vÔ
&€CÜ
�,‰,�s˜s 1™vÔ
&€Cà‡L�L�Ôð ‡J�J‡O�OÔä�c˜C ˜:Ó&ó I‰ˆˆBØ—‘Ó"ˆØ—‘×#Ñ#Ó%ˆô �6—=‘= 6§=¡=Ñ0Ó1°DÒ8ð 	YØ˜vŸ}™}˜oÐ-HÈÏÉÈÐXó	YÐ8ô �6—9‘9˜vŸy™yÑ(Ó)¨DÒ0ð 	IØ˜6Ÿ9™9˜+Ð%<¸V¿Y¹Y¸KÐHó	IÐ0ä�6—9‘9˜vŸy™yÑ(Ó)¨DÓ0ð 	IØ˜6Ÿ9™9˜+Ð%<¸V¿Y¹Y¸KÐHó	IÐ0ñIr   z&test_compressed_supylabel_colorbar.pngc                  óº  — t        j                  d«      j                  d«      } t        j                  ddd¬«      \  }}|d   j                  | «      }|d   j                  | «      }t        j                  ||d   d	¬
«      }t        j                  ||d   d	¬
«      }|j                  d«       |j                  j                  «        t        |||g«      D �]  \  }}|j                  «       }	|j                  j                  «       }
t        |
j                  |	j                  z
  «      dk  s!J d|
j                  › d|	j                  › �«       ‚t        |
j                  |	j                  z
  «      dk  s!J d|
j                  › d|	j                  › �«       ‚t        |
j                   |	j                   z
  «      dk  rŒãJ d|
j                   › d|	j                   › �«       ‚ y)za
    Test that horizontal colorbars align with axes
    in compressed layout with supylabel.
    rl  rm  r	   )r
   r†   r\  )rb  r„   r;   r   r   r$  r  r   rQ   zColorbar width z doesn't match axes width zColorbar x0 z doesn't match axes x0 zColorbar x1 z doesn't match axes x1 N)r*   r›   ro  r=   rD   r  rM   rI  rF  rp  rq  rn   r   rd  Úwidthr  rX  rs  s              r   Ú"test_compressed_supylabel_colorbarr~  Ò  s¦  € ô �)‰)�C‹.×
 Ñ
  Ó
*€CÜ�|‰| !¨V¸LÔI�H€Cˆà
ˆa‰&�-‰-˜Ó
€CØ
ˆa‰&�-‰-˜Ó
€Cä
�,‰,�s˜s 1™v°<Ô
@€CÜ
�,‰,�s˜s 1™v°<Ô
@€Cà‡M�M�'Ôð ‡J�J‡O�OÔä�c˜C ˜:Ó&ó I‰ˆˆBØ—‘Ó"ˆØ—‘×#Ñ#Ó%ˆô �6—<‘< &§,¡,Ñ.Ó/°$Ò6ð 	UØ˜fŸl™l˜^Ð+EÀfÇlÁlÀ^ÐTó	UÐ6ô �6—9‘9˜vŸy™yÑ(Ó)¨DÒ0ð 	IØ˜6Ÿ9™9˜+Ð%<¸V¿Y¹Y¸KÐHó	IÐ0ä�6—9‘9˜vŸy™yÑ(Ó)¨DÓ0ð 	IØ˜6Ÿ9™9˜+Ð%<¸V¿Y¹Y¸KÐHó	IÐ0ñIr   z
arg, state)TT)FFrW  c                 ó^   — t        j                  | ¬«      \  }}|j                  «       |u sJ ‚y )Nrj   )r=   rD   Úget_constrained_layout)ÚargÚstaterA   r   s       r   Útest_set_constrained_layoutrƒ  ÷  s-   € ô �l‰l¨cÔ2�G€CˆØ×%Ñ%Ó'¨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|   rQ  rR  r€  r@   s     r   Útest_constrained_toggler…    s“   € Ü�l‰l‹n�G€CˆÜ	�‰Ô/Ó	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 )NTrm  )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Øô ˜c¤3§?¡?×#=Ñ#=×>ñ 0ùs   ‚.0)	r=   r>   r?   rm   ÚcloseÚgcÚcollectÚanyÚget_objects)rA   s    r   Útest_layout_leakr“    sm   € ô �*‰*¨°hÔ
?€CØ‡O�OÔØ×ÑÔ Ü‡I�IˆeÔØÜ‡J�J„LÜñ 0Ü Ÿn™nÓ.ô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  € ô
 �*‰*˜V¨MÔ
:€CØ�n‰n˜Q Ó"€GØ
€CØ�_‰_Óò 'ˆØ�^‰^˜A˜qÓ!ˆÜ�q“ò 	ˆAØ�A—M‘M " Q¨ T¡(Ó+Ð,Ñ,ˆCØ�‰G�L‰L�Nð	ð 	
�‰�bš˜A˜‘hÓ×$Ñ$Õ&ð'ð ×ÑÔ Ø�!�"ˆgò HˆÜ�{‰{˜2Ÿ?™?Ó,×3Ñ3°BÑ7Ø˜q™6×.Ñ.Ó0×7Ñ7¸Ñ;À$öHð 	Hð HñHr   c                  ó¬  — d} d}t        j                  | d¬«      \  }}t        j                  |d¬«      \  }}||fD ]2  }|j                  «       j                  d¬«       |j	                  «        Œ4 dD ]^  }t
        j                  j                  ||   j                  «       j                  d   ||   j                  «       j                  d   «       Œ` y	)
zHTest that the gap between rows does not depend on the number of columns.zAC;BCz	ACDE;BCDEr9   r:   rÄ   )r½   ©ÚAÚBr#   N©
r=   Úsubplot_mosaicrÀ   rÁ   rm   r*   rë   rì   rn   r˜  ©Úmosaic1Úmosaic2Úfig1Úax_dict1Úfig2Úax_dict2rA   r—   s           r   Útest_submerged_height_gapr©  .  sÎ   € ð €GØ€Gä×'Ñ'¨¸ÔF�N€Dˆ(Ü×'Ñ'¨¸ÔF�N€Dˆ(Ø�Tˆzò %ˆØ×ÑÓ×#Ñ#¨#Ð#Ô.Ø×"Ñ"Õ$ð%ð ò NˆÜ
�
‰
×"Ñ" 8¨E¡?×#?Ñ#?Ó#A×#HÑ#HÈÑ#LØ#+¨E¡?×#?Ñ#?Ó#A×#HÑ#HÈÑ#Lõ	NñNr   c                  ó¬  — d} d}t        j                  | d¬«      \  }}t        j                  |d¬«      \  }}||fD ]2  }|j                  «       j                  d¬«       |j	                  «        Œ4 dD ]^  }t
        j                  j                  ||   j                  «       j                  d   ||   j                  «       j                  d   «       Œ` y	)
zHTest that the gap between columns does not depend on the number of rows.zAB;CCzAB;CC;DDr9   r:   rÄ   )r¼   r�  rý   Nr   r¢  s           r   Útest_submerged_width_gapr«  ?  sÎ   € ð €GØ€Gä×'Ñ'¨¸ÔF�N€Dˆ(Ü×'Ñ'¨¸ÔF�N€Dˆ(Ø�Tˆzò %ˆØ×ÑÓ×#Ñ#¨#Ð#Ô.Ø×"Ñ"Õ$ð%ð ò NˆÜ
�
‰
×"Ñ" 8¨E¡?×#?Ñ#?Ó#A×#HÑ#HÈÑ#LØ#+¨E¡?×#?Ñ#?Ó#A×#HÑ#HÈÑ#Lõ	NñNr   z test_submerged_with_colorbar.pngc                  ó’   — d} t        j                  | d¬«      \  }}|d   j                  ddgddgg«      }|j                  |«       y )	NzAABBCC;DDDEEEr9   r:   rž  r   r   r	   r
   )r=   r¡  ÚcontourfrM   )ÚmosaicrA   Úax_dictÚcfs       r   Útest_submerged_with_colorbarr±  P  sJ   € à€Fä×%Ñ% f°]ÔC�L€Cˆà	�‰×	Ñ	  A ¨¨A¨Ð/Ó	0€BØ‡L�L�Õr   )r^   F)r^   )Kr�  Ú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/  r6  ÚBboxr8  rA  rL  rO  rS  rU  rZ  r`  rj  r{  r~  Úparametrizerƒ  r…  r“  r›  r©  r«  r±  © r   r   ú<module>rÂ     sx  ðÛ 	Û ã Û ã Ý :Ý Ý +ß 'ð ‡K�K×ÑÐ/Ó0ð€
ó
	ó
ñ Ð,Ð-°WÔ=ñ"ó >ð"ñ Ð,Ð-°WÔ=ñ&ó >ð&ñ Ð,Ð-°WÔ=ñ
*ó >ð
*ñ Ð,Ð-°WÔ=ñ4ó >ð4ñ Ð,Ð-°WÔ=ñ$ó >ð$ñ Ð,Ð-°WÔ=ñ4ó >ð4ò.?ò(%ñ  Ð,Ð-°WÔ=ñ4ó >ð4ñ6 Ð,Ð-°WÔ=ñ/ó >ð/ñ Ð-Ð.°gØ+˜8×+Ñ+Ó-°Ò9‘a¸uô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Ð4¸GÔDñó Eðñ Ð3Ð4¸GÔDñ:ó Eð:ò>ñ  Ð'Ð(Ø"¨'Ø!.°Ð 8ô:ñó:ðñ
 �?Ð#Ø"¨'Ø!.Ø!1 ×!1Ñ!1°C¸°8¸cÀ1¸XÐ2FÓ!Gð!IôJñó	Jðò
"òD#ò.!ò%ò"!ò
ò$:ò>+ñ0 Ð:Ð;À7ÔKñIó LðIñB Ð;Ð<ÀGÔLñ!Ió Mð!IðH ‡�×Ñ˜ØØØˆ€JØˆd€^�TÐð	(ó ñ1óð1ò
,ò
0òHò(Nò"Nñ" Ð5Ð6¸gÔFñó Gñr   