o
    ÞÁgÞ  ã                   @   s¨  d dl mZ d dlmZ d dlZd dlmZ d dlZd dlmZ d dl	Z	d dl
Zd dl
mZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dl#Z$d dl%Z%edgddge &¡ dkr|d ndddd„ ƒZ'dd„ Z(dd„ Z)dd„ Z*edgƒdd„ ƒZ+edgƒdd„ ƒZ,d d!„ Z-d"d#„ Z.d$d%„ Z/ed&gƒd'd(„ ƒZ0d)d*„ Z1ed+gddgd,d-d.œd/d0d1„ ƒZ2d2d3„ Z3d4d5„ Z4d6d7„ Z5d8d9„ Z6d:d;„ Z7e%j8 9d<g d=¢¡d>d?„ ƒZ:e%j8 ;d@¡dAdB„ ƒZ<e%j8 9dCdDe$j=fdEe$j>dDfg¡dFdG„ ƒZ?dHdI„ Z@dJdK„ ZAdLdM„ ZBdNdO„ ZCdPdQ„ ZDdRdS„ ZEdTdU„ ZFeddVgdWdXdY„ ƒZGe%j8 9dZg d[¢¡d\d]„ ƒZHd^d_„ ZId`da„ ZJdbdc„ ZKe%j8 ;dd¡dedf„ ƒZLdgdh„ ZMedigdddjdkdlœdmdndodp„ ƒZNeg dq¢dWdrds„ ƒZOG dtdu„ duƒZPdvdw„ ZQedxgdddydkidzdnd{d|„ ƒZRd}d~„ ZSedgdddydkidzdnd€d„ ƒZTed‚gdddydkidzdndƒd„„ ƒZUd…d†„ ZVej; Wdd¡d‡dˆ„ ƒZXed‰gdddmdŠd‹dŒ„ ƒZYddŽ„ ZZdd„ Z[dS )‘é    )Únullcontext)ÚdatetimeN)ÚPath)ÚSimpleNamespace)ÚcbookÚrcParams)Úimage_comparisonÚcheck_figures_equal)ÚAxes)ÚFigure)ÚAutoMinorLocatorÚFixedFormatterÚScalarFormatter)ÚMatplotlibDeprecationWarningÚfigure_align_labelsÚpngÚsvgÚx86_64ç{®Gáz„?)Ú
extensionsÚtolc                  C   sœ  t jdd} t dd¡}|  |dd d…f ¡}| t ddd¡¡ | d¡ |  |d	 ¡}| t dd
d¡¡ t	dƒD ]G}|  |d|f ¡}| d| ¡ | 
d| ¡ |dv rc|j d¡ |j ¡  |dkrs| ¡ D ]}| d¡ qk|dkr‚|j d¡ |j ¡  q;t	dƒD ]@}|  |d|f ¡}| 
d|› ¡ | d|› ¡ |dkrÇ| t dd
d¡¡ |j d¡ |j ¡  | ¡ D ]}| d¡ q¿q‡|  ¡  d S )NT)Útight_layouté   r   é   g    €„.Aéè  z	Ylabel0 0)r   éÿÿÿÿg     ˆÃ@éd   é   z
YLabel1 %dz
XLabel1 %d)r   r   ÚtopéZ   ÚrightzXLabel2 zYLabel2 é
   )ÚpltÚfigureÚgridspecÚ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Útick© r:   úZ/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/matplotlib/tests/test_figure.pyÚtest_align_labels   sB   


€
€r<   c                  C   s  t  d¡ t  d¡} t  d¡ t  d¡ t  ¡  t  d¡ t  d¡ t  d¡ t  ¡ g d¢ks1J ‚t  ¡ g d¢ks;J ‚t  d	¡ t  ¡  t  d
¡ t  d¡ t  ¡ ddgksXJ ‚t  ¡ ddgksbJ ‚t  | ¡ t  ¡ | ksoJ ‚t t¡ t  t	ƒ ¡ W d   ƒ d S 1 s†w   Y  d S )NÚallÚtodayr   Útomorrowr   r   )r   r   r   é   é   )Ú r>   rB   r?   rB   r!   rA   rB   )
r"   Úcloser#   Úget_fignumsÚget_figlabelsÚgcfÚpytestÚraisesÚ
ValueErrorr   )Ú	fig_todayr:   r:   r;   Útest_figure_label@   s*   










"ÿrK   c                   C   s’   t  d¡ t  d¡ t  d¡ t  ¡  t  d¡sJ ‚t  d¡s!J ‚t  d¡s(J ‚t  d¡s/J ‚t  d¡ t  d¡ t  d¡r@J ‚t  d¡rGJ ‚d S )NÚoner   Úthreer@   )r"   r#   Úfignum_existsrC   r:   r:   r:   r;   Útest_fignum_existsX   s   




rO   c                  C   sº   d} d}t jdd}| | ¡ dd„ |jD ƒ| gksJ ‚t jddd}| d	d	|¡ ||u s0J ‚d
d„ |jD ƒ| |gks>J ‚t jddddd\}}||u sOJ ‚dd„ |jD ƒg ks[J ‚d S )NzA fancy plotzReally fancy!r   )Únumc                 S   ó   g | ]}|  ¡ ‘qS r:   ©Úget_text©Ú.0Útr:   r:   r;   Ú
<listcomp>o   ó    z$test_clf_keyword.<locals>.<listcomp>F)rP   Úclearç      à?c                 S   rQ   r:   rR   rT   r:   r:   r;   rW   t   rX   r   Tc                 S   rQ   r:   rR   rT   r:   r:   r;   rW   x   rX   )r"   r#   ÚsuptitleÚtextsÚtextÚsubplots)Útext1Útext2Úfig0Úfig1Úfig2Úax2r:   r:   r;   Útest_clf_keywordh   s   
re   Úfigure_todayc                  C   sh   t  d¡} |  ¡ }| |  ¡ ¡ | t d¡¡ t  d¡ t  ddgddgd¡ t  d¡ t  d¡ d S )Nr>   rA   r?   r   r   Úr)	r"   r#   r&   Ú	set_titleÚ	get_labelr'   r(   r)   rC   ©r5   r7   r:   r:   r;   Útest_figure{   s   


rk   Úfigure_legendc                  C   s°   t  d¡\} }|d jddgddgddd |d jddgddgddd |d jddgd	d	gdd
d |d jddgddgddd |d jddgddgddd |  ¡  d S )Nr   r   r   ÚxÚg)ÚlabelÚcolorÚyrg   rZ   ÚkÚ_yÚzÚb)r"   r^   r'   Úlegend©r5   Úaxsr:   r:   r;   Útest_figure_legendŠ   s   ry   c                  C   s  t  ¡ } t t¡ |  ¡ d u sJ ‚W d   ƒ n1 sw   Y  |  g d¢¡}tjtdd | jdd|u s:J ‚W d   ƒ n1 sDw   Y  |  ¡ |u sQJ ‚| jg d¢d}tjtdd | jdd|u skJ ‚W d   ƒ n1 suw   Y  |  ¡ |u s‚J ‚| jdd	d}|  ¡ |u s‘J ‚tjtdd | jd
d|u s£J ‚W d   ƒ n1 s­w   Y  |  d¡}|  ¡ |u s¿J ‚tjtdd | jd
d|u sÑJ ‚W d   ƒ n1 sÛw   Y  tjtdd | jd
d|usòJ ‚W d   ƒ n1 süw   Y  |  ¡  	¡  
¡ dksJ ‚|  |¡ | j||||gksJ ‚|  ¡ |u s(J ‚|  |¡ | j||||gks9J ‚|  ¡ |u sBJ ‚|  |¡ tjtdd | jdd|u sZJ ‚W d   ƒ n	1 sew   Y  |  ¡ |u ssJ ‚| j||||gksJ ‚d S )N©r   r   r   r   z5Calling gca\(\) with keyword arguments was deprecated©ÚmatchÚrectilinear©Ú
projection)çš™™™™™¹?r€   çš™™™™™é?r   ©Úrectéy   ÚpolarT)r…   éz   )r   r   r   r   )r"   r#   rG   ÚwarnsÚUserWarningÚadd_axesr   Úgcar&   Úget_subplotspecÚget_geometryÚaxesÚsca)r5   Úax0Úax1rd   Úax3r:   r:   r;   Útest_gca–   st   þþýþýþý
þýþý


þýr’   c                  C   sø   t  ¡ } | jtd t t¡ | jtdd W d   ƒ n1 s!w   Y  t t¡ | jtdd W d   ƒ n1 s=w   Y  t t¡ | jddd W d   ƒ n1 sYw   Y  t t¡ | jdd W d   ƒ d S 1 suw   Y  d S )	N)Ú
axes_classÚ3d)r“   r   T)r“   r…   )r   r…   é*   r~   )r"   r#   r&   r
   rG   rH   rI   Ú	TypeError©r5   r:   r:   r;   Útest_add_subplot_subclassÖ   s   ÿÿÿ"ÿr˜   c                  C   s¬  t  ¡ } tjtdd |  ddd¡ W d   ƒ n1 sw   Y  tjtdd |  ddd¡ W d   ƒ n1 s;w   Y  tjtdd |  ddd¡ W d   ƒ n1 sYw   Y  tjtdd |  ddd¡ W d   ƒ n1 sww   Y  tjtd	d |  d
¡ W d   ƒ n1 s“w   Y  tjtd	d |  d¡ W d   ƒ n1 s¯w   Y  tjtdd |  dd¡ W d   ƒ n1 sÌw   Y  tjtdd |  dddd¡ W d   ƒ n1 sëw   Y  tjtj	dd |  ddd¡ W d   ƒ n	1 sw   Y  tjtj	dd |  ddd¡ W d   ƒ n	1 s+w   Y  t  
¡ \}}tjtdd |  |¡ W d   ƒ d S 1 sOw   Y  d S )Nz,Number of columns must be a positive integerr{   r   r   r   z)Number of rows must be a positive integerznum must be 1 <= num <= 4rA   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   r@   zJPassing non-integers as three-element position specification is deprecatedÚ2g       @z8The Subplot must have been created in the present figure)r"   r#   rG   rH   rI   r&   r–   r‡   r   r   r^   ©r5   Ú_r7   r:   r:   r;   Útest_add_subplot_invalidã   sZ   ÿþÿþÿÿÿÿþþÿýÿýÿ$ýrœ   Úfigure_suptitlec                  C   s.   t  ¡ \} }| jddd | jdddd d S )NÚhellorg   )rp   Útitlern   Ú30)rp   Úrotation)r"   r^   r[   )r5   r›   r:   r:   r;   Útest_suptitle
  s   r¢   c                  C   sV   t  ¡ \} }tjjddd}| jd|d}| ¡ | ¡ ksJ ‚| ¡ | ¡ ks)J ‚d S )NÚlargeÚbold)ÚsizeÚweightzfontprops title)Úfontproperties)	r"   r^   ÚmplÚfont_managerÚFontPropertiesr[   Úget_fontsizeÚget_size_in_pointsÚ
get_weight)r5   r7   ÚfpsÚtxtr:   r:   r;   Útest_suptitle_fontproperties  s
   r°   Úalpha_background©r   r   çš™™™™™Ù?Únone)Ú	facecolorÚ	edgecolor)r   Úsavefig_kwargc                  C   sJ   t jddgd} |  d¡ | j d¡ | j tjjddgddd	d
¡ d S )Nr   r   ©Úfigsizer²   r³   é   é   g333333ã?Úred)ÚradiusÚalpharµ   )	r"   r#   Úset_facecolorÚpatchÚ	set_alphaÚpatchesÚappendr¨   ÚCirclePolygonr—   r:   r:   r;   Ú
test_alpha  s   
ÿrÅ   c                  C   sN   t  t¡ ttd d ƒD ]} t ¡  qW d   ƒ d S 1 s w   Y  d S )Nzfigure.max_open_warningr   )rG   r‡   ÚRuntimeWarningr+   r   r"   r#   )r8   r:   r:   r;   Útest_too_many_figures(  s
   
ÿ"ÿrÇ   c                     sL   G dd„ dt ƒ‰ G ‡ fdd„dƒ} t ¡ }|jddd| ƒ d t |¡ d S )Nc                   @   s   e Zd Zddœdd„ZdS )z.test_iterability_axes_argument.<locals>.MyAxesN)Úmyclassc                _   s   t j| g|¢R i |¤ŽS ©N)r
   Ú__init__)ÚselfrÈ   ÚargsÚkwargsr:   r:   r;   rÊ   :  s   z7test_iterability_axes_argument.<locals>.MyAxes.__init__)Ú__name__Ú
__module__Ú__qualname__rÊ   r:   r:   r:   r;   ÚMyAxes9  s    rÑ   c                       s    e Zd Zdd„ Z‡ fdd„ZdS )z/test_iterability_axes_argument.<locals>.MyClassc                 S   s   |dkrt dƒ‚d S )NÚazitem should be a)rI   )rË   Úitemr:   r:   r;   Ú__getitem__?  s   ÿz;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s   ˆ d| ifS )NrÈ   r:   ©rË   ©rÑ   r:   r;   Ú_as_mpl_axesC  s   z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)rÎ   rÏ   rÐ   rÔ   r×   r:   rÖ   r:   r;   ÚMyClass=  s    rØ   r   r~   )r
   r"   r#   r&   rC   )rØ   r5   r:   rÖ   r;   Útest_iterability_axes_argument.  s
   	rÙ   c                  C   s–   t  ¡ } |  d¡ |  ¡ dksJ ‚|  d¡ |  ¡ dksJ ‚|  dd¡ |  ¡ dks,J ‚|  ¡ dks4J ‚|  d¡ |  ¡ dksAJ ‚|  ¡ dksIJ ‚d S )NrA   r   r   r@   )r   r   r   )r"   r#   Úset_figwidthÚget_figwidthÚset_figheightÚget_figheightÚset_size_inchesr—   r:   r:   r;   Útest_set_fig_sizeK  s   


rß   c                  C   sh   t  dd¡\} }|d  ¡  | ¡ d d… D ]	}|| jv sJ ‚q|d | jvs)J ‚t| jƒdks2J ‚d S )Nr   )r   r   r   r   )r"   r^   ÚremoveÚravelr   Úlen©r5   rx   r7   r:   r:   r;   Útest_axes_removea  s   rä   c                  C   s˜   t  t d¡t d¡ ¡\} }||  dksJ ‚t  d¡\} }||  dks&J ‚t  t d¡¡\} }||  dks8J ‚t  t d¡¡\} }||  dksJJ ‚d S )Nr   r   )r   r   rZ   )r   r   )r"   Ú	figaspectr(   Úfloat64Úzeros)ÚwÚhr:   r:   r;   Útest_figaspectj  s   rê   Úwhich)NÚbothÚmajorÚminorc           
      C   sf  g d¢}g d¢}d}g d¢}t  |¡}t  |¡}t ¡ \}}| ||¡ | ¡  | ¡  |j t	dƒ¡ t
 ¡  t
 dd¡ |j t|ƒ¡ W d   ƒ n1 sQw   Y  | d u r`t tj¡ntƒ  | d|d	| ¡ W d   ƒ n1 svw   Y  | d
v r•|jd  dd¡D ]}	t|	 ¡ ƒ|ks”J ‚qˆ| dv r¯|jd  dd¡D ]}	t|	 ¡ ƒ|ks®J ‚q¢d S d S )N)z
3 Jan 2013z
4 Jan 2013z
5 Jan 2013z
6 Jan 2013z
7 Jan 2013z
8 Jan 2013z
9 Jan 2013z10 Jan 2013z11 Jan 2013z12 Jan 2013z13 Jan 2013z14 Jan 2013)z16:44:00z16:45:00z16:46:00z16:47:00z16:48:00z16:49:00z16:51:00z16:52:00z16:53:00z16:55:00z16:56:00z16:57:00é<   )r   r   r   r@   rA   é   é   r   Úignorez=FixedFormatter should only be used together with FixedLocatorçš™™™™™É?r    )rì   rí   Nr   Frí   )rì   rî   Trî   )ÚmdatesÚdatestr2numr"   r^   r'   Ú
yaxis_dateÚ
xaxis_dater-   Úset_minor_locatorr   ÚwarningsÚcatch_warningsÚfilterwarningsÚset_minor_formatterr   rG   r‡   r¨   r   r   Úautofmt_xdater   r0   ÚintÚget_rotation)
rë   ÚdateÚtimeÚangleÚminorsrm   rq   r5   r7   ro   r:   r:   r;   Útest_autofmt_xdateu  s>   


þüÿþþr  Údefaultc                  C   sr   t jd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s7J ‚d S )N)r@   r@   r¸   i  é2   éÈ   )r"   r#   ÚcanvasÚdrawÚrendererÚheightÚwidthÚdpir—   r:   r:   r;   Útest_change_dpiŸ  s   

r  zwidth, heightr   )r   r   c                 C   s~   t  t¡ tj| |fd W d   ƒ n1 sw   Y  t ¡ }t  t¡ | | |¡ W d   ƒ d S 1 s8w   Y  d S )Nr¸   )rG   rH   rI   r"   r#   rÞ   )r  r  r5   r:   r:   r;   Útest_invalid_figure_size«  s   ÿ"ÿr  c                  C   sÔ   t  ¡ } t t¡ |  dddtjf¡ W d   ƒ n1 sw   Y  tjtdd | jg d¢g d¢d W d   ƒ n1 s@w   Y  t  	¡ \}}tjtdd |  |¡ W d   ƒ d S 1 scw   Y  d S )Nr€   rZ   z#multiple values for argument 'rect'r{   rz   r‚   z5The Axes must have been created in the present figure)
r"   r#   rG   rH   rI   r‰   r(   Únanr–   r^   rš   r:   r:   r;   Útest_invalid_figure_add_axes¹  s   ÿÿÿ"ýr  c                  C   s  t jdddddd\} }|jD ]}| g d¢g d¢¡ q| d¡ | d¡ |dd d …f D ]}dt|jjdd	ƒks=J ‚q.|d
d d …f D ]}dt|jjdd	ƒk sUJ ‚qF|d d …d
f D ]}dt|j	jdd	ƒksmJ ‚q^|d d …df D ]}dt|j	jdd	ƒk s…J ‚qvd S )Nr   TF)ÚsharexÚshareyÚsqueeze)r!   rº   é   Úlogr   rì   )rë   r   )
r"   r^   Úflatr'   Ú
set_yscaleÚ
set_xscalerâ   r-   Úget_ticklabelsr2   rã   r:   r:   r;   Útest_subplots_shareax_loglabelsÈ  s   


ÿr  c                  C   sL   t  ¡ } d}tjt|d |  dd¡ W d   ƒ d S 1 sw   Y  d S )Nz9savefig\(\) takes 2 positional arguments but 3 were givenr{   z
fname1.pngz
fname2.png)r"   r#   rG   rH   r–   Úsavefig)r5   Úmsgr:   r:   r;   Útest_savefigÝ  s
   "ÿr  c               	   C   s^   t  ¡ } d}dD ]$}tjtj|d | jt ¡ |dd W d   ƒ n1 s'w   Y  qd S )Nz@savefig\(\) got unexpected keyword argument "non_existent_kwarg")r   Úpdfr   ÚtifÚjpgr{   T)ÚformatÚnon_existent_kwarg)	r"   r#   rG   r‡   r   r   r  ÚioÚBytesIO)r5   r  r"  r:   r:   r;   Útest_savefig_warnsä  s   ÿ€ÿr&  c                  C   s†   t  ¡ } tjtdd | jddd W d   ƒ n1 sw   Y  tjtdd | jddd W d   ƒ d S 1 s<w   Y  d S )	NzNo module named '@absent'r{   Útestzmodule://@absent)Úbackendz-The 'pdf' backend does not support png outputztest.pngr  )r"   r#   rG   rH   ÚModuleNotFoundErrorr  rI   r—   r:   r:   r;   Útest_savefig_backendì  s   ÿÿ"þr*  c                  C   s"   t jddd} t| ƒdksJ ‚d S )N)r!   rº   r!   )r¹   r  z!<Figure size 100x200 with 0 Axes>)r"   r#   Úreprr—   r:   r:   r;   Útest_figure_reprö  s   r,  c                  C   sV   t jdd\} }t t¡ | jdd W d   ƒ n1 sw   Y  |  ¡ r)J ‚d S )NT©Úconstrained_layoutr   )r   )r"   r^   rG   r‡   rˆ   Úsubplots_adjustÚget_constrained_layoutrj   r:   r:   r;   Útest_warn_cl_plus_tlû  s
   þr1  r  ©r   c           	   	   C   s6  |   d¡ |  d¡ |  ¡  tjddgddgdd}tjddgddgdd}tjddd d	d
}tjdddd}tjdd| jddd}|||||fD ]}|  |¡ qI| ¡  | ¡ }tjddgddg|jddd}tjddd ddd	d}tjdd|jddd}tjdd|jddddd}||||fD ]}| |¡ q‘d S )Nr   ró   çffffffæ?Úl1)Úgidr   Úl2)rº   rº   ÚC1)Ú	transformr5  )r3  rZ   çš™™™™™©?ÚC2)g      @r   gš™™™™™á?ÚcrimsonÚC3)r8  rµ   r5  é   )r8  r5  ÚzorderFrº   )r8  Úclip_onr>  r5  )r8  rµ   r?  r>  r5  )	Úset_dpir^   r"   ÚLine2DÚCircleÚdpi_scale_transÚ
add_artistrà   ÚtransFigure)	Úfig_testÚfig_refr4  r6  Úr1Úr2Úr3rÒ   rd   r:   r:   r;   Útest_add_artist  s:   

ÿÿÿÿÿÿrK  Úfmt)r   r  ÚpsÚepsr   c                 C   sf   t |d | ¡ƒ}t |¡ | d¡}|  d¡| d¡ ¡ v s!J ‚W d   ƒ d S 1 s,w   Y  d S )Nztest.{}ÚrbÚasciir   )r   r"  r"   r  ÚopenÚencodeÚreadÚlower)rL  ÚtmpdirÚoutÚfiler:   r:   r;   Útest_fspath   s
   
"ýrX  c                  C   sV  t  ¡ \} }| dd¡ | ddd¡}| j ¡ }d}t| |¡j|| j	  ƒdk s+J ‚t| |¡j|| j	  ƒdk s<J ‚t|  |¡j| ƒdk sJJ ‚t|  |¡j
d	 ƒdk sXJ ‚| d
¡ d}t| |¡j|| j	  ƒdk spJ ‚t|  |¡j| ƒdk s~J ‚| d¡ d}t| |¡j|| j	  ƒdk s–J ‚t|j|g dj|| j	  ƒdk s©J ‚d S )Nr   r   g      ð?rZ   zThis dangles over endgR¸…ë"@r   r9  gî|?5^ºå?Fg¢E¶óýT@T)Úbbox_extra_artists)r"   r^   Úset_xlimr]   r  Úget_rendererÚabsÚget_tightbboxÚx1r  Úx0Úset_in_layout)r5   r7   rV   r
  Úx1Nom0Úx1Nomr:   r:   r;   Útest_tightbbox*  s*   
""
"
"ÿÿrc  c                  C   sØ   t jdddd\} }|d  ¡  |d  tdddƒtdddƒgddg¡ t|d j ¡ tj	ƒs1J ‚t jdddd\} }|d j 
tƒ ¡ |d  ¡  |d  tdddƒtdddƒgddg¡ t|d j ¡ tƒsjJ ‚d S )Nr   r   T©r  r   iÐ  )r"   r^   rà   r'   r   Ú
isinstancer-   Úget_major_formatterrô   ÚAutoDateFormatterÚset_major_formatterr   rw   r:   r:   r;   Útest_axes_removalC  s   (ÿ(ÿri  c                  C   s,   t jddd\} }|d  ¡  | j ¡  d S )Nr   Trd  r   )r"   r^   rà   r  r	  rw   r:   r:   r;   Útest_removed_axisU  s   rj  Úmpl20c                  C   s€   t  ¡ \} }|jdgdgdgdd}| j ¡  | jrJ ‚t|jj|jj	d  |jj
|jjd  |d d}|  |¡ | jr>J ‚d S )Nr   r   T)Úpickerr   )rm   rq   ÚinaxesÚguiEvent)r"   r^   Úscatterr  r	  Ústaler   Úbboxr_  r  Úy0r  Úpick)r5   r7   ÚcolÚmouse_eventr:   r:   r;   Útest_picking_does_not_stale\  s   

þ
rv  c                  C   s>  t  ¡ } |  ddd¡}| ¡ jtddƒksJ ‚| ¡ jtddƒks#J ‚|  ddd¡}| ¡ jtddƒks6J ‚| ¡ jtddƒksBJ ‚|  ddd¡}| ¡ jtddƒksUJ ‚| ¡ jtddƒksaJ ‚|  ddd¡}| ¡ jtddƒkstJ ‚| ¡ jtddƒks€J ‚t t	¡ |  ddd	¡ W d   ƒ d S 1 s˜w   Y  d S )
Nr   r   ©r   rA   r   r   )r@   rð   )r   rð   )r@   rA   )rð   r   )
r"   r#   r&   r‹   Úrowspanr+   ÚcolspanrG   rH   Ú
IndexError)r5   r   rd   r‘   Úax4r:   r:   r;   Útest_add_subplot_twotuplej  s    "ÿr|  ztightbbox_box_aspect.svgÚtightÚteal)Úbbox_inchesrµ   T)Ústyler·   Úremove_textc                  C   sL   t  ¡ } |  dd¡}|  |d ¡}| j|d dd}| d¡ | d¡ d S )	Nr   r   ©r   r   ©r   r   r”   r~   rZ   )r   r   r   )r"   r#   Úadd_gridspecr&   Úset_box_aspect)r5   r6   r   rd   r:   r:   r;   Útest_tightbbox_box_aspect|  s   
r†  )r   r  rN  r   c                 C   s4   |  ¡ }| tdƒ¡ |   ¡ }|jtdƒdd d S )NrA   T)Úanimated)r^   r'   r+   )rF  rG  Úax_refÚax_testr:   r:   r;   Ú test_animated_with_canvas_change‰  s   rŠ  c                   @   s  e Zd Zedgdej dg d¢g d¢gg d¢g d¢gg¡dd	„ ƒƒZedgdd
d„ ƒZedgddd„ ƒZ	edgddd„ ƒZ
edgdej dddgddggdfddgddggdfddgddggdfddgddggdfddgddggdfddgddggdfg¡dd„ ƒƒZdd„ Zedgdej di ddidg¡d d!„ ƒƒZd"d#„ Zedgdej d$g d%¢¡d&d'„ ƒƒZej d(ddgddggd)fddgdddgd*d+ggggd,fd-ddd*gd+gggd.d.ggd/fg¡d0d1„ ƒZedgdd2d3„ ƒZej d$g d4¢¡d5d6„ ƒZd7d8„ ZdS )9ÚTestSubplotMosaicr   r2  rm   )ÚArŒ  ÚB)ÚCÚDr  )r   r   r   )r   r@   r   c                 C   sÜ   |  |¡}| ¡ D ]	\}}| |¡ q	tt |¡ƒ}t|ƒt|ƒks$J ‚| dd¡}| |d d…d d…f ¡}	|	 |d ¡ | |d d …df ¡}
|
 |d ¡ | |d ¡}| |d ¡ | |d ¡}| |d ¡ d S )Nr   r   r   r   ©r   r   ©r   r   )	Úsubplot_mosaicÚitemsrh   Úsortedr(   Úuniquerâ   r„  r&   )rË   rF  rG  rm   Ú	grid_axesrr   r7   Úlabelsr6   ÚaxAÚaxBÚaxCÚaxDr:   r:   r;   Ú
test_basic“  s   
zTestSubplotMosaic.test_basicc                 C   s  ddgddgg}ddgddgg}|  d	¡ |  d	¡ | ||gg¡}| ¡ D ]	}| | ¡ ¡ q&| d
d¡}|d  dd¡}t|ƒD ]\}	}
t|
ƒD ]\}}| ||	|f ¡ |¡ qJqB|d  dd¡}t|ƒD ]\}	}
t|
ƒD ]\}}| ||	|f ¡ |¡ qpqhd S )NrŒ  r  rŽ  r  ÚEÚFÚGÚHTr   r   r‚  rƒ  )	Úset_constrained_layoutr’  Úvaluesrh   ri   r„  ÚsubgridspecÚ	enumerater&   )rË   rF  rG  rm   rq   r–  r7   r6   Úgs_leftÚjrg   rr   ro   Úgs_rightr:   r:   r;   Útest_all_nested®  s&   

ÿÿÿz!TestSubplotMosaic.test_all_nestedc                 C   sî   |  d¡ |  d¡ ddgddgg}dg|gg}| |¡}| ¡ D ]	\}}| |¡ q!| dd¡}|d	  dd¡}	| |	d
 ¡}
|
 d¡ | |	d ¡}| d¡ | |	d	 ¡}| d¡ | |	d ¡}| d¡ | |d
 ¡}| d¡ d S )NTrŒ  r  rŽ  r  rž  r   r   r  r‚  rƒ  r‘  )r¡  r’  r“  rh   r„  r£  r&   )rË   rF  rG  rm   rq   r–  rr   r7   r6   Úgs_nr˜  r™  rš  r›  ÚaxFr:   r:   r;   Útest_nestedÅ  s&   






zTestSubplotMosaic.test_nestedc                 C   s<   g d¢g d¢g}d}|  dg|gg¡ |  dg|gg¡ d S )N©rŒ  r  r  ©rŽ  rŽ  r  )r¬  r­  rž  )r’  )rË   rF  rG  rm   Úxtr:   r:   r;   Útest_nested_tupleç  s   z#TestSubplotMosaic.test_nested_tuplezx, empty_sentinelrŒ  Nr  Ú.ÚSKIPr   r   r   c                 C   sº   |dkr	d|i}ni }|j |fi |¤Ž}| ¡ D ]	\}}| |¡ qtdd„ |D ƒ|dh ƒ}	t|	ƒt|ƒks9J ‚| dd¡}
| |
d ¡}| |	d ¡ | |
d	 ¡}| |	d
 ¡ d S )Nr±  Úempty_sentinelc                 S   s   h | ]	}|D ]}|’qqS r:   r:   )rU   ÚrowÚnamer:   r:   r;   Ú	<setcomp>  s    z/TestSubplotMosaic.test_empty.<locals>.<setcomp>r°  r   r‚  r   r‘  r   )r’  r“  rh   r”  râ   r„  r&   )rË   rF  rG  rm   r²  rÍ   r–  rr   r7   r—  r6   r˜  r™  r:   r:   r;   Ú
test_emptyï  s   
ÿzTestSubplotMosaic.test_emptyc                 C   s|   t jtdd t ddg¡ W d   ƒ n1 sw   Y  t jtdd t dg¡ W d   ƒ d S 1 s7w   Y  d S )Nz
must be 2Dr{   ÚfooÚbar)rG   rH   rI   r"   r’  rÕ   r:   r:   r;   Útest_fail_list_of_str  s   ÿ"ÿz'TestSubplotMosaic.test_fail_list_of_strÚ
subplot_kwr   r…   c           	      C   s\   ddgg}|j ||d}|pi }| dd¡}|j|d fi |¤Ž}|j|d fi |¤Ž}d S )Nr   r   )rº  r‚  rƒ  )r’  r„  r&   )	rË   rF  rG  rº  rm   r–  r6   r˜  r™  r:   r:   r;   Útest_subplot_kw  s   
z!TestSubplotMosaic.test_subplot_kwc                 C   s²   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s8J ‚|dƒddgddggksFJ ‚|dƒddgddgdd	ggksWJ ‚d S )NÚABC)rŒ  r  rŽ  zAB;CCrŒ  r  rŽ  zAB;CC;DEr  r  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Ú_normalize_grid_string)rË   Ú	normalizer:   r:   r;   Útest_string_parser$  s   "þýüz$TestSubplotMosaic.test_string_parserÚstr_pattern)zAAA
BBBz	
AAA
BBB
zABC
DEFc                 C   s,   |  |¡}|  dd„ | ¡  d¡D ƒ¡}d S )Nc                 S   s   g | ]}t |ƒ‘qS r:   )Úlist)rU   Úlnr:   r:   r;   rW   >  rX   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>Ú
)r’  ÚstripÚsplit)rË   rF  rG  rÀ  r–  r:   r:   r;   Útest_single_str_input6  s   
ÿz'TestSubplotMosaic.test_single_str_inputzx,matchzS(?m)we found that the label .A. specifies a non-rectangular or non-contiguous area.rŽ  r  z4There are duplicate keys .* between the outer layout)z	AAA
c
BBBú'All of the rows must be the same lengthr  rÇ  c                 C   sF   t  ¡ }tjt|d | |¡ W d   ƒ d S 1 sw   Y  d S )Nr{   )r"   r#   rG   rH   rI   r’  )rË   rm   r|   r5   r:   r:   r;   Ú	test_failA  s   "ÿzTestSubplotMosaic.test_failc                 C   s(   |  tƒ tƒ gg¡ |  ddgg¡ d S )NrŒ  r  )r’  Úobject)rË   rF  rG  r:   r:   r;   Útest_hashable_keys[  s   z$TestSubplotMosaic.test_hashable_keys)ÚabcÚcabÚbcaÚcbaÚacbÚbacc                 C   sD   t  ¡ }| |¡}t|ƒt|ƒksJ ‚t|jƒt| ¡ ƒks J ‚d S rÉ   ©r"   r#   r’  rÁ  r   r¢  )rË   rÀ  r5   Úax_dictr:   r:   r;   Útest_user_order`  s   
z!TestSubplotMosaic.test_user_orderc                 C   st   dddgddgggddgdd	d
gdgggggg}t  ¡ }| |¡}t|ƒtdƒks+J ‚t|jƒt| ¡ ƒks8J ‚d S )NrŒ  r  rŽ  r  r  rž  rŸ  r°  r   ÚIÚ	ABCDEFGHIrÑ  )rË   Úlayoutr5   rÒ  r:   r:   r;   Útest_nested_user_orderh  s   ÿÿü
z(TestSubplotMosaic.test_nested_user_order)rÎ   rÏ   rÐ   r	   rG   ÚmarkÚparametrizerœ  r¨  r«  r¯  r¶  r¹  r»  r¿  rÆ  rÈ  rÊ  rÓ  r×  r:   r:   r:   r;   r‹  ’  sp    
 ÿ




!

úþ


ÿýþþóþ


ÿ
r‹  c                  C   sv   t  ¡ } |  ddd¡}|  ddd¡}t jddd| d}| ¡  ¡ }| ¡  ¡ }| ¡  ¡ }||ks3J ‚||ks9J ‚dS )	z)Test that these all use the same gridspecr   r   rw  r@   )r   r   )r   r   )ry  r5   N)r"   r#   r&   Úsubplot2gridr‹   Úget_gridspec)r5   r   rd   r‘   Úgs1Úgs2Úgs3r:   r:   r;   Útest_reused_gridspecw  s   rß  ztest_subfigure.pngrµ   Fc                  C   sä   t j d¡ tjdd} |  dd¡}|d  dd¡}|jD ]}|jt j 	dd¡ddd	}q|d j
||d
 |d  d¡ |d  dd¡}|jD ]}|jt j 	dd¡ddd	}qH|d j
||dd |d  d¡ | jddd d S )Né!N,Tr-  r   r   r   r  éþÿÿÿ©ÚvminÚvmax©r7   ú	Left Sider   Úbottom)r7   Úlocationz
Right SideúFigure suptitleúxx-large©Úfontsize)r(   ÚrandomÚseedr"   r#   Ú
subfiguresr^   r  Ú
pcolormeshÚrandnÚcolorbarr[   )r5   Úsubrx   r7   Úpcr:   r:   r;   Útest_subfigure†  s   

rõ  c                  C   s8   t jdd} |  dd¡}tj |  | j ¡ ¡j	d¡ d S )NTr-  r   r   r€   )
r"   r#   rï  r(   ÚtestingÚassert_allcloser]  r  r[  r  )r5   ró  r:   r:   r;   Útest_subfigure_tightbbox  s
   ÿrø  ztest_subfigure_ss.pngc                  C   sº   t j d¡ tjdd} |  dd¡}| j|d dd}| dd¡}|jD ]}|j	t j 
d	d	¡d
dd}q$|j||d | d¡ |  |d ¡}| t  d¡¡ | d¡ | jddd d S )Nrà  Tr-  r   r   r   Úpink)rµ   r  rá  râ  rå  ræ  rº   r
   ré  rê  rë  )r(   rí  rî  r"   r#   r„  Úadd_subfigurer^   r  rð  rñ  rò  r[   r&   r'   r)   rh   )r5   r6   ró  rx   r7   rô  r:   r:   r;   Útest_subfigure_ss¦  s   


rû  ztest_subfigure_double.pngc            
      C   sš  t j d¡ tjddd} |  d¡ | jdddd	}|d
  d¡ |d
  d¡ |d  d¡ |d  d¡ |d
 jddddgd}|d
  d¡ |d
  d¡ |d
 jdddd}|D ]&}d}|j	t j 
dd¡ddd}|jd|d |jd|d |jd|d q\|d
 j||d |d  d¡ |d  d¡ |d jdddd }t|ƒD ]\}}| d!|› ¡ q¨|d  d"¡ |d  d#¡ |d  dd¡}	d S )$Nrà  T)r!   é   ©r.  r¹   r5   r   r   gìQ¸…ë±?)Úwspacer   Úcoralz
subfigs[0]z
subfigs[1]gffffffö?)Úheight_ratioszsubfigsnest[0]rg   ©r  é   r  g      Àg      @râ  zx-labelrë  zy-labelÚTitlerå  zsubfigsnest[1]rn   r   rd  ÚylabelÚ	supxlabelÚ	supylabel)r(   rí  rî  r"   r#   r[   rï  r¿   r^   rð  rñ  r,   r*   rh   rò  r¤  r  r  )
r5   ÚsubfigsÚsubfigsnestÚaxsnest0r7   rì  rô  Úaxsnest1ÚnnÚaxsRightr:   r:   r;   Útest_subfigure_double¾  s6   
r  c                  C   s  t jdd} |  dd¡}|  |d ¡|  |dd…df ¡|  |ddd…f ¡g}d}d	}tj |d jjd
|d d g¡ tj |d jj	|d |g¡ tj |d jj|d |d g¡ tj |d jj	|d d |g¡ tj |d jj|d dg¡ tj |d jj	||d g¡ d S )NTr-  r   r‚  r   r   r   i€  ià  g        )
r"   r#   r„  rú  r(   rö  r÷  rq  ÚminÚmax)r5   r6   Úsub_figsrè   ré   r:   r:   r;   Útest_subfigure_spanningé  s   ý""""r  c            	      C   sö   t jddd} | jdddddgd\}}|jdd	d
}| |dd d…f ¡}|jddgddgd |j|ddd…f |d}|jddgddgd |j|ddd	…f |d}|  d¡ | j ¡  | 	¡ }|  d¡ | j ¡  | 	¡ }t
j ||¡ d S )NT)r!   r   rý  r   r   r   rñ   )rþ  Úwidth_ratiosé   )ÚnrowsÚncolsr   gæû©!<LÀgkâX.8@iÜ  i  )rm   rq   r   r  g …ëYI¢_ÀgRã¥óÏ«W@éx   i,  )r"   r#   rï  r„  r&   ro  r@  r  r	  Ú
get_xticksr(   rö  r÷  )	r5   Ú	subfig_blÚ	subfig_brr6   r   rd   r‘   Úticks120Úticks300r:   r:   r;   Útest_subfigure_ticksÿ  s"   

ÿ



r  ztest_subfigure_scatter_size.png)r€  r  c                  C   sÆ   t  ¡ } |  dd¡}|  |d ¡}|jg d¢g d¢ddd |jg d¢g d¢g d¢dd |  |d	 ¡}| dd¡}||d	 fD ] }|jg d¢g d¢ddd
d |jg d¢g d¢g d¢ddd q@d S )Nr   r   )r   r   r   r  Ús)r  Úmarker)r   r@   rA   )rº   r  é(   r   rg   )r  r  rp   rn   )r"   r#   r„  r&   ro  rú  r^   )r5   r6   r   Úsfigrx   r7   r:   r:   r;   Útest_subfigure_scatter_size  s   "þr!  c                  C   sê   t  ¡ } |  ddd¡}|  ddd¡}|d usJ ‚||usJ ‚t  ¡  t  ¡ } | jddddd}| jddddd}|d us>J ‚||usDJ ‚t  ¡  t  ¡ } | jddddd}|  ddd¡}|d usbJ ‚|jdksiJ ‚||usoJ ‚t  ¡  d S )Nr   r…   r~   r}   )r"   r#   r&   rC   r´  ©r5   r7   r   r:   r:   r;   Útest_add_subplot_kwargs,  ó&   r#  c                  C   sê   t  ¡ } |  g d¢¡}|  g d¢¡}|d usJ ‚||usJ ‚t  ¡  t  ¡ } | jg d¢dd}| jg d¢dd}|d us>J ‚||usDJ ‚t  ¡  t  ¡ } | jg d¢dd}|  g d¢¡}|d usbJ ‚|jdksiJ ‚||usoJ ‚t  ¡  d S )Nrz   r…   r~   r}   )r"   r#   r‰   rC   r´  r"  r:   r:   r;   Útest_add_axes_kwargsE  r$  r%  )\Ú
contextlibr   r   r$  Úpathlibr   ÚplatformÚtypesr   rù   Ú
matplotlibr¨   r   r   Úmatplotlib.testing.decoratorsr   r	   Úmatplotlib.axesr
   Úmatplotlib.figurer   Úmatplotlib.tickerr   r   r   Úmatplotlib.pyplotÚpyplotr"   Úmatplotlib.datesÚdatesrô   Úmatplotlib.gridspecr$   Úmatplotlib.cbookr   Únumpyr(   rG   Úmachiner<   rK   rO   re   rk   ry   r’   r˜   rœ   r¢   r°   rÅ   rÇ   rÙ   rß   rä   rê   rØ  rÙ  r  r€  r  r  Úinfr  r  r  r  r&  r*  r,  r1  rK  rX  rc  ri  rj  rv  r|  r†  rŠ  r‹  rß  rõ  rø  rû  r  r  Úcontextr  r!  r#  r%  r:   r:   r:   r;   Ú<module>   sà    ÿ
'

@'
ÿü
		

)
ý
	


	

ÿý
	
 fþ
	þ
þ
(

ÿ
