o
    ¡:´a7£  ã                	   @   s  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mZ d dl	Z	d dl
Zd dlZd dlmZ d dlZd dlmZmZ d dl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' 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,dd„ Z-edgƒdd„ ƒZ.ed gƒd!d"„ ƒZ/d#d$„ Z0d%d&„ Z1d'd(„ Z2ed)gƒd*d+„ ƒZ3d,d-„ Z4ed.gddgd/d0d1œd2d3d4„ ƒZ5d5d6„ Z6d7d8„ Z7d9d:„ Z8d;d<„ Z9d=d>„ Z:ej; <d?g d@¢¡dAdB„ ƒZ=ej> ?dC¡dDdE„ ƒZ@ej; <dFdGejAfdHejBdGfg¡dIdJ„ ƒZCdKdL„ ZDdMdN„ ZEdOdP„ ZFdQdR„ ZGdSdT„ ZHej; <dUejIdVej; JdV¡gdWejIdXej; JdX¡gdWg¡dYdZ„ ƒZKd[d\„ ZLd]d^„ ZMd_d`„ ZNeddagdbdcdd„ ƒZOej; <deg df¢¡dgdh„ ƒZPdidj„ ZQdkdl„ ZRdmdn„ ZSej> ?do¡dpdq„ ƒZTdrds„ ZUedtgdodudvdwœdxdydzd{„ ƒZVeg d|¢dbd}d~„ ƒZWG dd€„ d€ƒZXdd‚„ ZYedƒgdod„dvid…dyd†d‡„ ƒZZdˆd‰„ Z[edŠgdod„dvid…dyd‹dŒ„ ƒZ\edgdod„dvid…dydŽd„ ƒZ]dd‘„ Z^ej> ?do¡d’d“„ ƒZ_ed”gdodxd•d–d—„ ƒZ`d˜d™„ Zadšd›„ Zbdœd„ ZcdždŸ„ Zdd d¡„ ZedS )¢é    )ÚdatetimeN)ÚPath)ÚTimer)ÚSimpleNamespace)ÚImage)ÚcbookÚrcParams)ÚMatplotlibDeprecationWarning)Úimage_comparisonÚcheck_figures_equal)ÚAxes)ÚFigure)ÚAutoMinorLocatorÚFixedFormatterÚScalarFormatterZfigure_align_labelsÚpngÚsvgZx86_64ç{®Gáz„?)Ú
extensionsZ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ÚgridspecZGridSpecÚadd_subplotÚplotÚnpÚarangeÚ
set_ylabelÚrangeÚ
set_xlabelÚxaxisZset_label_positionZtick_topÚget_xticklabelsZset_rotationÚyaxisZ
tick_rightZalign_labels)ÚfigÚgsÚaxÚiZtick© r1   ú>/usr/lib/python3/dist-packages/matplotlib/tests/test_figure.pyÚtest_align_labels   sB   


€
€r3   c                  C   s
  t  dd¡\} }t|jƒD ]\}}| d¡ | d¡ | t d¡| t d¡| ¡ q|  ¡  |  	¡  |  
¡  t d¡}t d¡}t|jƒD ]\}}|jj ¡ d ||< |jj ¡ d ||< qGtj |d d… |dd … ¡ tj |d d d… |dd d… ¡ t jdddd\} }t|jƒD ]\}}| d¡ | d¡ | tj d	d	¡¡}q| j||d
 |  ¡  |  	¡  |  
¡  t d¡}t d¡}t|jƒD ]\}}|jj ¡ d ||< |jj ¡ d ||< qÊtj |d d… |dd … ¡ tj |d d d… |dd d… ¡ d S )Nr   ZBooZWhoé   r   r   T©Úconstrained_layoutr   ©r/   )r    ÚsubplotsÚ	enumerateÚflatr)   r$   r%   r&   Zalign_ylabelsZalign_xlabelsÚdraw_without_renderingÚzerosr*   ÚlabelZget_positionr,   ÚtestingÚassert_allcloseÚ
pcolormeshÚrandomÚrandnÚcolorbar)r-   ÚaxsÚnnr/   ZxnZynÚpcr1   r1   r2   Útest_align_labels_stray_axesB   s>   

"

"



&rG   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   r4   é   )Ú rI   rL   rJ   rL   r   rK   rL   )
r    Úcloser!   Zget_fignumsZget_figlabelsZgcfÚpytestÚraisesÚ
ValueErrorr   )Z	fig_todayr1   r1   r2   Útest_figure_labele   s*   










"ÿrQ   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 )NZoner   Zthreer4   )r    r!   Zfignum_existsrM   r1   r1   r1   r2   Útest_fignum_exists}   s   




rR   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 r1   ©Zget_text©Ú.0Útr1   r1   r2   Ú
<listcomp>”   ó    z$test_clf_keyword.<locals>.<listcomp>F)rS   Úclearç      à?c                 S   rT   r1   rU   rV   r1   r1   r2   rY   ™   rZ   r   Tc                 S   rT   r1   rU   rV   r1   r1   r2   rY      rZ   )r    r!   ÚsuptitleZtextsÚtextr8   )Ztext1Ztext2Zfig0Zfig1Zfig2Úax2r1   r1   r2   Útest_clf_keyword   s   
r`   Zfigure_todayc                  C   sh   t  d¡} |  ¡ }| |  ¡ ¡ | t d¡¡ t  d¡ t  ddgddgd¡ t  d¡ t  d¡ d S )NrI   rK   rJ   r   r   Úr)	r    r!   r#   Ú	set_titleÚ	get_labelr$   r%   r&   rM   ©r-   r/   r1   r1   r2   Útest_figure    s   


re   Z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)r=   ÚcolorÚyra   r\   ÚkZ_yÚzÚb)r    r8   r$   Zlegend©r-   rD   r1   r1   r2   Útest_figure_legend¯   s   rn   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)çš™™™™™¹?ru   çš™™™™™é?rv   ©Zrectéy   ÚpolarT)ry   éz   )r   r   r   r   )r    r!   rN   rO   Ú	TypeErrorÚadd_axesÚwarnsr	   Zgcar#   Úget_subplotspecZget_geometryÚaxesZsca)r-   Úax0Úax1r_   Úax3r1   r1   r2   Ú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„   rt   T)r„   ry   )rt   ry   é*   rs   )r    r!   r#   r   rN   rO   rP   r{   ©r-   r1   r1   r2   Ú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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  ¡ \}}tjtdd |  |¡ W d   ƒ d S 1 sMw   Y  d S )Nz,Number of columns must be a positive integerrp   r   r   r   z)Number of rows must be a positive integerznum must be 1 <= num <= 4rK   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   r4   z2Number of rows must be a positive integer, not '2'Ú2z5Number of columns must be a positive integer, not 2.0g       @z8The Subplot must have been created in the present figure)r    r!   rN   rO   rP   r#   r{   r8   ©r-   Ú_r/   r1   r1   r2   Útest_add_subplot_invalid  sZ   ÿþÿþÿÿÿÿþþÿýÿýÿ$ýrŒ   Zfigure_suptitlec                  C   s.   t  ¡ \} }| jddd | jdddd d S )NZhellora   )rh   Útitlerg   Z30)rh   Zrotation)r    r8   r]   )r-   r‹   r1   r1   r2   Ú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 )NZlargeZbold)ÚsizeZweightzfontprops title)Zfontproperties)	r    r8   ÚmplZfont_managerZFontPropertiesr]   Zget_fontsizeZget_size_in_pointsZ
get_weight)r-   r/   ZfpsZtxtr1   r1   r2   Útest_suptitle_fontproperties5  s
   r‘   Zalpha_background©r   r   çš™™™™™Ù?Znone)Ú	facecolorZ	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“   é   é   ç333333ã?Zred)ZradiusZalphar”   )	r    r!   Úset_facecolorZpatchZ	set_alphaZpatchesÚappendr   ZCirclePolygonr‡   r1   r1   r2   Ú
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   )rN   r}   ÚRuntimeWarningr(   r   r    r!   )r0   r1   r1   r2   Útest_too_many_figuresL  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Úkwargsr1   r1   r2   r¢   ^  s   z7test_iterability_axes_argument.<locals>.MyAxes.__init__)Ú__name__Ú
__module__Ú__qualname__r¢   r1   r1   r1   r2   ÚMyAxes]  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)rP   )r£   Úitemr1   r1   r2   Ú__getitem__c  s   ÿz;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s   ˆ d| ifS )Nr    r1   ©r£   ©r©   r1   r2   Ú_as_mpl_axesg  s   z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)r¦   r§   r¨   r¬   r¯   r1   r®   r1   r2   ÚMyClassa  s    r°   r   rs   )r   r    r!   r#   rM   )r°   r-   r1   r®   r2   Útest_iterability_axes_argumentR  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 )NrK   r   r   r4   )r   r   r   )r    r!   Zset_figwidthZget_figwidthZset_figheightZget_figheightÚset_size_inchesr‡   r1   r1   r2   Útest_set_fig_sizeo  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    r8   ÚremoveZravelr   Úlen©r-   rD   r/   r1   r1   r2   Útest_axes_remove…  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   r\   )r   r   )r    Z	figaspectr%   Zfloat64r<   )ÚwÚhr1   r1   r2   Útest_figaspectŽ  s   rº   Úwhich)ÚbothÚmajorÚminorc           
      C   s,  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|d	| ¡ | d
v rx|jd  dd¡D ]}	t|	 ¡ ƒ|kswJ ‚qk| 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   r4   rK   é   é   r   Úignorez=FixedFormatter should only be used together with FixedLocatorçš™™™™™É?r   )r¼   r½   r   Fr½   )r¼   r¾   Tr¾   )ÚmdatesZdatestr2numr    r8   r$   Z
yaxis_dateZ
xaxis_dater*   Zset_minor_locatorr   ÚwarningsÚcatch_warningsÚfilterwarningsZset_minor_formatterr   Zautofmt_xdater   r+   ÚintZget_rotation)
r»   ÚdateÚtimeZangleZminorsrf   ri   r-   r/   r=   r1   r1   r2   Útest_autofmt_xdate™  s6   


þüþrË   Údefaultc                  C   sn   t jdd} |  ¡  | jjjdksJ ‚| jjjdksJ ‚d| _|  ¡  | jjjdks,J ‚| jjjdks5J ‚d S )N)r4   r4   r–   i  é2   éÈ   )r    r!   r;   ÚcanvasÚrendererÚheightÚwidthÚdpir‡   r1   r1   r2   Ú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–   )rN   rO   rP   r    r!   r²   )rÒ   rÑ   r-   r1   r1   r2   Ú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 )Nru   r\   z#multiple values for argument 'rect'rp   ro   rw   z5The Axes must have been created in the present figure)
r    r!   rN   rO   rP   r|   r%   Únanr{   r8   rŠ   r1   r1   r2   Ú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ÚshareyZsqueeze)r   r˜   é   Úlogr   r¼   )r»   r   )
r    r8   r:   r$   Z
set_yscaleZ
set_xscalerµ   r*   Zget_ticklabelsr,   r¶   r1   r1   r2   Ú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 givenrp   z
fname1.pngz
fname2.png)r    r!   rN   rO   r{   Úsavefig)r-   Úmsgr1   r1   r2   Ú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   ZtifZjpgrp   T)ÚformatZnon_existent_kwarg)	r    r!   rN   r}   r   r	   rÝ   ÚioÚBytesIO)r-   rÞ   rá   r1   r1   r2   Ú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'rp   Útestzmodule://@absent)Úbackendz-The 'pdf' backend does not support png outputztest.pngrà   )r    r!   rN   rO   ÚModuleNotFoundErrorrÝ   rP   r‡   r1   r1   r2   Útest_savefig_backend  s   ÿÿ"þrè   ræ   ZAgg)ZmarksZCairoc                 C   sà   t  ¡ \}}| g d¢¡ t ¡ }|j|dd t |¡}| ¡  W d   ƒ n1 s,w   Y  t  ¡ \}}| g d¢¡ |j	 
d¡ t ¡ }|j|dd t |¡}| ¡  W d   ƒ n1 scw   Y  ||ksnJ ‚d S )N©r   r   r   r   )rá   r   )r    r8   r$   râ   rã   rÝ   r   ÚopenÚloadrÏ   Z_set_device_pixel_ratio)ræ   r-   r/   ÚbufZratio1Zratio2r1   r1   r2   Útest_savefig_pixel_ratio  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‡   r1   r1   r2   Útest_figure_repr/  s   rï   c                  C   sj   t d d} |  ¡ rJ ‚|  ¡ rJ ‚t dd} |  ¡ sJ ‚|  ¡ r"J ‚t dd} |  ¡ r-J ‚|  ¡ s3J ‚d S )N©ÚlayoutÚtightÚconstrained)r   Úget_tight_layoutÚget_constrained_layoutr‡   r1   r1   r2   Útest_valid_layouts4  s   


rö   c                  C   s4  t jdd\} }t t¡ | jdd W d   ƒ n1 sw   Y  |  ¡ r)J ‚tjtdd tddd	} W d   ƒ n1 sAw   Y  |  ¡ sLJ ‚|  ¡ rRJ ‚tjtd
d tddd} W d   ƒ n1 sjw   Y  |  ¡ ruJ ‚|  ¡ s{J ‚tj	t
dd tdd W d   ƒ d S 1 s“w   Y  d S )NTr5   rv   )r   z4Figure parameters 'layout' and 'tight_layout' cannotrp   rò   F)rñ   r   z:Figure parameters 'layout' and 'constrained_layout' cannotró   )rñ   r6   z('foobar' is not a valid value for layoutZfoobarrð   )r    r8   rN   r}   ÚUserWarningZsubplots_adjustrõ   r   rô   rO   rP   rd   r1   r1   r2   Útest_invalid_layoutsB  s(   þþþÿ"þrø   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)Úgidrv   Úl2)r˜   r˜   ZC1)Ú	transformrü   )rú   r\   çš™™™™™©?ZC2)g      @rv   gš™™™™™á?ZcrimsonZC3)rþ   r”   rü   é   )rþ   rü   ÚzorderFr˜   )rþ   Úclip_onr  rü   )rþ   r”   r  r  rü   )	Úset_dpir8   r    ZLine2DZCircleZdpi_scale_transZ
add_artistr´   ZtransFigure)	Úfig_testÚfig_refrû   rý   Zr1Zr2Zr3rª   r_   r1   r1   r2   Útest_add_artist[  s:   

ÿÿÿÿÿÿr  Úfmt)r   rà   Z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Ý   rê   ÚencodeÚreadÚlower)r  ZtmpdirÚoutÚfiler1   r1   r2   Útest_fspathx  s
   
"ýr  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      ð?r\   zThis dangles over endgR¸…ë"@r   rÿ   gî|?5^ºå?Fg¢E¶óýT@T)Zbbox_extra_artists)r    r8   Zset_xlimr^   rÏ   Úget_rendererÚabsÚget_tightbboxZx1rÓ   Úx0Zset_in_layout)r-   r/   rX   rÐ   Zx1Nom0Zx1Nomr1   r1   r2   Útest_tightbbox‚  s*   
""
"
"ÿÿr  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    r8   r´   r$   r   Ú
isinstancer*   Zget_major_formatterrÄ   ZAutoDateFormatterZset_major_formatterr   rm   r1   r1   r2   Útest_axes_removal›  s   (ÿ(ÿr  c                  C   s,   t jddd\} }|d  ¡  | j ¡  d S )Nr   Tr  r   )r    r8   r´   rÏ   Údrawrm   r1   r1   r2   Útest_removed_axis­  s   r  Z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)Zpickerr   )rf   ri   ZinaxesZguiEvent)r    r8   ÚscatterrÏ   r  Zstaler   Úbboxr  rÒ   Zy0rÑ   Zpick)r-   r/   ÚcolZmouse_eventr1   r1   r2   Útest_picking_does_not_stale´  s   

þ
r  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   rK   r   r   )r4   rÀ   )r   rÀ   )r4   rK   )rÀ   r   )
r    r!   r#   r~   Zrowspanr(   ÚcolspanrN   rO   Ú
IndexError)r-   r   r_   r‚   Zax4r1   r1   r2   Útest_add_subplot_twotupleÂ  s    "ÿr"  ztightbbox_box_aspect.svgrò   Zteal)Z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…   rs   r\   )r   r   r   )r    r!   Úadd_gridspecr#   Zset_box_aspect)r-   r.   r   r_   r1   r1   r2   Útest_tightbbox_box_aspectÔ  s   
r(  )r   rà   r  r   c                 C   s4   |  ¡ }| tdƒ¡ |   ¡ }|jtdƒdd d S )NrK   T)Zanimated)r8   r$   r(   )r  r  Zax_refZax_testr1   r1   r2   Ú 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d9d:„ ZdS );ÚTestSubplotMosaicr   rù   rf   )ÚAr+  ÚB)ÚCÚDr,  )r   r   r   )r   r4   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Úitemsrb   Úsortedr%   Úuniquerµ   r'  r#   )r£   r  r  rf   Ú	grid_axesrj   r/   Úlabelsr.   ÚaxAÚaxBÚaxCÚaxDr1   r1   r2   Ú
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_layoutr1  Úvaluesrb   rc   r'  Úsubgridspecr9   r#   )r£   r  r  rf   ri   r5  r/   r.   Zgs_leftÚjra   rj   r=   Zgs_rightr1   r1   r2   Ú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&  r0  )r@  r1  r2  rb   r'  rB  r#   )r£   r  r  rf   ri   r5  rj   r/   r.   Zgs_nr7  r8  r9  r:  ZaxFr1   r1   r2   Ú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.  )rF  rG  r=  )r1  )r£   r  r  rf   Zxtr1   r1   r2   Ú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 )NrJ  Úempty_sentinelc                 S   s   h | ]	}|D ]}|’qqS r1   r1   )rW   ÚrowÚnamer1   r1   r2   Ú	<setcomp>^  s    z/TestSubplotMosaic.test_empty.<locals>.<setcomp>rI  r   r%  r   r0  r   )r1  r2  rb   r3  rµ   r'  r#   )r£   r  r  rf   rK  r¥   r5  rj   r/   r6  r.   r7  r8  r1   r1   r2   Ú
test_emptyG  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 2Drp   ZfooZbar)rN   rO   rP   r    r1  r­   r1   r1   r2   Útest_fail_list_of_strj  s   ÿ"ÿz'TestSubplotMosaic.test_fail_list_of_strÚ
subplot_kwrt   ry   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   )rQ  r%  r&  )r1  r'  r#   )	r£   r  r  rQ  rf   r5  r.   r7  r8  r1   r1   r2   Útest_subplot_kwp  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   Z_normalize_grid_string)r£   Ú	normalizer1   r1   r2   Ú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 r1   )Úlist)rW   Zlnr1   r1   r2   rY   –  rZ   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>Ú
)r1  ÚstripÚsplit)r£   r  r  rV  r5  r1   r1   r2   Útest_single_str_inputŽ  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 )Nrp   )r    r!   rN   rO   rP   r1  )r£   rf   rq   r-   r1   r1   r2   Ú	test_fail™  s   "ÿzTestSubplotMosaic.test_failc                 C   s(   |  tƒ tƒ gg¡ |  ddgg¡ d S )Nr+  r,  )r1  Úobject)r£   r  r  r1   r1   r2   Útest_hashable_keys³  s   z$TestSubplotMosaic.test_hashable_keys)ÚabcZcabZbcaZcbaZacbZbacc                 C   sD   t  ¡ }| |¡}t|ƒt|ƒksJ ‚t|jƒt| ¡ ƒks J ‚d S r¡   ©r    r!   r1  rW  r   rA  )r£   rV  r-   Úax_dictr1   r1   r2   Ú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>  rI  r?  ÚIZ	ABCDEFGHIra  ©r£   rñ   r-   rb  r1   r1   r2   Útest_nested_user_orderÀ  s   ÿÿü
z(TestSubplotMosaic.test_nested_user_orderc                 C   sx   dddgddgggddgdd	d
gdgggggg}t  ¡ }|j|ddd}|d jddd tdd„ | ¡ D ƒƒs:J ‚d S )Nr+  r,  r-  r.  r<  r=  r>  rI  r?  rd  T)rØ   rÙ   rÛ   Úlogit)ZxscaleZyscalec                 s   s(    | ]}|  ¡ d ko| ¡ dkV  qdS )rÛ   rg  N)Z
get_xscaleZ
get_yscale)rW   r/   r1   r1   r2   Ú	<genexpr>Ù  s   €  ÿz3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r    r!   r1  ÚsetrH   rA  re  r1   r1   r2   Útest_share_allÎ  s   ÿÿüÿz TestSubplotMosaic.test_share_all)r¦   r§   r¨   r   rN   ÚmarkÚparametrizer;  rD  rE  rH  rO  rP  rR  rU  r[  r]  r_  rc  rf  rj  r1   r1   r1   r2   r*  ê  sr    
 ÿ




!

úþ


ÿýþþóþ


ÿ
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   r  r4   )r   r   )r   r   )r   r-   N)r    r!   r#   Zsubplot2gridr~   Zget_gridspec)r-   r   r_   r‚   Zgs1Zgs2Zgs3r1   r1   r2   Útest_reused_gridspecÝ  s   rm  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,Tr5   r   r   r   rÚ   éþÿÿÿ©ZvminZvmaxr7   ú	Left Sider   Zbottom)r/   Úlocationz
Right SideúFigure suptitleúxx-large©Úfontsize)r%   rA   Úseedr    r!   Ú
subfiguresr8   r:   r@   rB   rC   r]   )r-   ÚsubrD   r/   rF   r1   r1   r2   Útest_subfigureì  s   

rz  c                  C   s8   t jdd} |  dd¡}tj |  | j ¡ ¡j	d¡ d S )NTr5   r   r   g       @)
r    r!   rx  r%   r>   r?   r  rÏ   r  rÒ   )r-   ry  r1   r1   r2   Ú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 )Nrn  Tr5   r   r   r   Zpink)r”   rÚ   ro  rp  r7   rq  r˜   r   rs  rt  ru  )r%   rA   rw  r    r!   r'  Úadd_subfigurer8   r:   r@   rB   rC   r]   r#   r$   r&   rb   )r-   r.   ry  rD   r/   rF   r1   r1   r2   Ú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 )$Nrn  T)r   é   ©r6   r—   r-   r   r   gìQ¸…ë±?)Úwspacer   Zcoralz
subfigs[0]z
subfigs[1]gffffffö?)Zheight_ratioszsubfigsnest[0]ra   ©rÙ   é   rÚ   g      Àg      @rp  zx-labelru  zy-labelZTitler7   zsubfigsnest[1]rg   r   r  ZylabelÚ	supxlabelÚ	supylabel)r%   rA   rw  r    r!   r]   rx  r›   r8   r@   rB   r)   r'   rb   rC   r9   rƒ  r„  )
r-   ZsubfigsZsubfigsnestZaxsnest0r/   rv  rF   Zaxsnest1rE   ZaxsRightr1   r1   r2   Útest_subfigure_double%  s6   
r…  c               	   C   sV  t jdd} |  dd¡}|  |d ¡|  |dd…df ¡|  |ddd…f ¡|  |dd …dd …f ¡g}d}d	}tj |d jjd
|d 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¡ t
dƒD ]}||  ¡  qœ|  ¡  d S )NTr5   r   r%  r   r   r   i€  ià  g        r4   )r    r!   r'  r|  r%   r>   r?   r  ÚminÚmaxr(   r#   r;   )r-   r.   Zsub_figsr¸   r¹   r0   r1   r1   r2   Útest_subfigure_spanningP  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¡ |  ¡  | ¡ }|  d¡ |  ¡  | ¡ }t	j
 ||¡ d S )NT)r   r   r  r   r   r   rÁ   )r€  Zwidth_ratiosé   )ZnrowsZncolsr   gæû©!<LÀgkâX.8@iÜ  i  )rf   ri   r   r  g …ëYI¢_ÀgRã¥óÏ«W@éx   i,  )r    r!   rx  r'  r#   r  r  r;   Z
get_xticksr%   r>   r?   )	r-   Z	subfig_blZ	subfig_brr.   r   r_   r‚   Zticks120Zticks300r1   r1   r2   Útest_subfigure_ticksm  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Ú   Ús)rŒ  Úmarker)r   r4   rK   )r˜   rÚ   é(   r   ra   )rŒ  r  rh   rg   )r    r!   r'  r#   r  r|  r8   )r-   r.   r€   ZsfigrD   r/   r1   r1   r2   Ú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   ry   rs   rr   )r    r!   r#   rM   rM  ©r-   r/   r   r1   r1   r2   Ú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 )Nro   ry   rs   rr   )r    r!   r|   rM   rM  r  r1   r1   r2   Útest_add_axes_kwargs³  r’  r“  c                    s~   t  dd¡ t ¡ \‰‰ ‡ ‡fdd„}td|ƒ ¡  ˆ ¡ dgks#J ‚‡ ‡fdd„}td|ƒ ¡  tj 	ˆ d	¡d
dg¡ d S )NrÂ   úcannot show the figurec                      s"   ˆj jg ˆ j d¡¢d‘R Ž  d S )N©ru   rÃ   r   )rÏ   Úbutton_press_eventÚ	transDatarþ   r1   ©r/   r-   r1   r2   Úsingle_pressÐ  s   "z!test_ginput.<locals>.single_pressru   r•  c                      sˆ   ˆj jg ˆ j d¡¢d‘R Ž  ˆj  d¡ ˆj jg ˆ j d¡¢d‘R Ž  ˆj jg ˆ j d¡¢d‘R Ž  ˆj jg ˆ j d¡¢d‘R Ž  d S )Nr•  r   Z	backspace©g333333Ó?r“   ©r\   rš   r%  r   )rÏ   r–  r—  rþ   Úkey_press_eventr1   r˜  r1   r2   Úmulti_pressesÖ  s
   "z"test_ginput.<locals>.multi_pressesr   rš  r›  )
rÅ   rÇ   r    r8   r   ÚstartZginputr%   r>   r?   )Úrecwarnr™  r  r1   r˜  r2   Útest_ginputÌ  s   r   c                 C   st   t  dd¡ t ¡ }|jddd u sJ ‚td|jjdƒ ¡  | ¡ du s&J ‚td|jj	dƒ ¡  | ¡ du s8J ‚d S )	NrÂ   r”  ru   )Ztimeout)rk   T)r   r   r   F)
rÅ   rÇ   r    r!   Zwaitforbuttonpressr   rÏ   rœ  rž  r–  )rŸ  r-   r1   r1   r2   Útest_waitforbuttonpressá  s   r¡  c                  C   s>   t dd} | jdddd}|  ¡ dksJ ‚| ¡ dksJ ‚d S )Nzwhole Figure)r=   r   z
sub figure)r   rx  rc   )r-   Zsub_figr1   r1   r2   Útest_kwargs_passë  s   
r¢  )fr   râ   Zpathlibr   ÚplatformZ	threadingr   Útypesr   rÅ   Znumpyr%   rN   ZPILr   Z
matplotlibr   r   r   Zmatplotlib._api.deprecationr	   Zmatplotlib.testing.decoratorsr
   r   Zmatplotlib.axesr   Zmatplotlib.figurer   Zmatplotlib.tickerr   r   r   Zmatplotlib.pyplotZpyplotr    Zmatplotlib.datesZdatesrÄ   Zmatplotlib.gridspecr"   Úmachiner3   rG   rQ   rR   r`   re   rn   rƒ   rˆ   rŒ   rŽ   r‘   r   rŸ   r±   r³   r·   rº   rk  rl  rË   r#  ÚcontextrÔ   rÖ   ÚinfrÕ   r×   rÜ   rß   rä   rè   Zparamræ   rí   rï   rö   rø   r  r  r  r  r  r  r"  r(  r)  r*  rm  rz  r{  r}  r…  rˆ  r‹  r  r‘  r“  r   r¡  r¢  r1   r1   r1   r2   Ú<module>   sö    ÿ
'#

?'
ÿü
		

'
ý
	
þ


	

ÿý
	
 tþ

þ
þ
(

ÿ

