U
    \	¸aÞ  ã                   @   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<dd=d>d?g¡d@dA„ ƒZ:e%j8 ;dB¡dCdD„ ƒZ<e%j8 9dEdFe$j=fdGe$j>dFfg¡dHdI„ ƒZ?dJdK„ Z@dLdM„ ZAdNdO„ ZBdPdQ„ ZCdRdS„ ZDdTdU„ ZEdVdW„ ZFeddXgdYdZd[„ ƒZGe%j8 9d\ddXd]d^dg¡d_d`„ ƒZHdadb„ ZIdcdd„ ZJdedf„ ZKe%j8 ;dg¡dhdi„ ƒZLdjdk„ ZMedlgdgdmdndoœdpdqdrds„ ƒZNeddXd^dgdYdtdu„ ƒZOG dvdw„ dwƒZPdxdy„ ZQedzgdgd{dnid|dqd}d~„ ƒZRdd€„ ZSedgdgd{dnid|dqd‚dƒ„ ƒZTed„gdgd{dnid|dqd…d†„ ƒZUd‡dˆ„ ZVej; Wdg¡d‰dŠ„ ƒZXed‹gdgdpdŒddŽ„ ƒZYdd„ ZZd‘d’„ Z[dS )“é    )Únullcontext)ÚdatetimeN)ÚPath)ÚSimpleNamespace)ÚcbookÚrcParams)Úimage_comparisonÚcheck_figures_equal)ÚAxes)ÚFigure)ÚAutoMinorLocatorÚFixedFormatterÚScalarFormatter)ÚMatplotlibDeprecationWarningZfigure_align_labelsÚpngÚsvgÚ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 ]Ž}|  |d|f ¡}| d| ¡ | 
d| ¡ |dkrÆ|j d¡ |j ¡  |dkræ| ¡ D ]}| d¡ qÖ|dkrv|j d¡ |j ¡  qvt	dƒD ]†}|  |d|f ¡}| 
d|› ¡ | d|› ¡ |dkr| t dd
d¡¡ |j d¡ |j ¡  | ¡ D ]}| d¡ q€q|  ¡  d S )NT)Z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© r0   ú@/tmp/pip-unpacked-wheel-wjyw_3jo/matplotlib/tests/test_figure.pyÚtest_align_labels   s>    



r2   c               	   C   s  t  d¡ t  d¡} t  d¡ t  d¡ t  ¡  t  d¡ t  d¡ t  d¡ t  ¡ dddddgksht‚t  ¡ d	dd	dd	gks‚t‚t  d
¡ t  ¡  t  d¡ t  d¡ t  ¡ ddgks¼t‚t  ¡ d	dgksÐt‚t  | ¡ t  ¡ | ksêt‚t t	¡ t  t
ƒ ¡ W 5 Q R X d S )NÚallÚtodayr   Útomorrowr   r   é   é   Ú r   )r   Úcloser    Zget_fignumsÚAssertionErrorZget_figlabelsZgcfÚpytestÚraisesÚ
ValueErrorr   )Z	fig_todayr0   r0   r1   Útest_figure_label@   s(    










r>   c                   C   s’   t  d¡ t  d¡ t  d¡ t  ¡  t  d¡s4t‚t  d¡sBt‚t  d¡sPt‚t  d¡s^t‚t  d¡ t  d¡ t  d¡r€t‚t  d¡rŽt‚d S )NZoner   Zthreer6   )r   r    Zfignum_existsr:   r9   r0   r0   r0   r1   Útest_fignum_existsX   s    




r?   c                  C   sº   d} d}t jdd}| | ¡ dd„ |jD ƒ| gks8t‚t jddd}| d	d	|¡ ||ks`t‚d
d„ |jD ƒ| |gks|t‚t jddddd\}}||ksžt‚dd„ |jD ƒg ks¶t‚d S )NzA fancy plotzReally fancy!r   )Únumc                 S   s   g | ]}|  ¡ ‘qS r0   ©Zget_text©Ú.0Útr0   r0   r1   Ú
<listcomp>o   s     z$test_clf_keyword.<locals>.<listcomp>F)r@   Úclearç      à?c                 S   s   g | ]}|  ¡ ‘qS r0   rA   rB   r0   r0   r1   rE   t   s     r   Tc                 S   s   g | ]}|  ¡ ‘qS r0   rA   rB   r0   r0   r1   rE   x   s     )r   r    ÚsuptitleZtextsr:   ÚtextÚsubplots)Ztext1Ztext2Zfig0Zfig1Zfig2Úax2r0   r0   r1   Útest_clf_keywordh   s    
rL   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 )Nr4   r7   r5   r   r   Úr)	r   r    r"   Ú	set_titleÚ	get_labelr#   r$   r%   r9   ©r,   r.   r0   r0   r1   Útest_figure{   s    


rQ   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)ÚlabelÚcolorÚyrM   rG   ÚkZ_yÚzÚb)r   rJ   r#   Zlegend©r,   Úaxsr0   r0   r1   Útest_figure_legendŠ   s    r\   c               	   C   s„  t  ¡ } t t¡ |  ¡ d ks$t‚W 5 Q R X |  ddddg¡}tjtdd | jdd|ksdt‚W 5 Q R X |  ¡ |ks~t‚| jddddgd	}tjtdd | jdd|ks¶t‚W 5 Q R X |  ¡ |ksÐt‚| j	d
dd}|  ¡ |ksît‚tjtdd | jdd|kst‚W 5 Q R X |  	d¡}|  ¡ |ks:t‚tjtdd | jdd|ks`t‚W 5 Q R X tjtdd | jdd|k	st‚W 5 Q R X |  ¡  
¡  ¡ dks´t‚|  |¡ | j||||gksÖt‚|  ¡ |ksèt‚|  	|¡ | j||||gks
t‚|  ¡ |kst‚|  |¡ tjtdd | jdd|ksLt‚W 5 Q R X |  ¡ |ksht‚| j||||gks€t‚d S )Nr   r   z5Calling gca\(\) with keyword arguments was deprecated©ÚmatchÚrectilinear©Ú
projectionçš™™™™™¹?çš™™™™™é?©Zrectéy   ÚpolarT)rf   éz   )r   r   r   r   )r   r    r;   ÚwarnsÚUserWarningÚadd_axesr:   r   Zgcar"   Úget_subplotspecZget_geometryÚaxesZsca)r,   Úax0Úax1rK   Úax3r0   r0   r1   Útest_gca–   sf    þþþ 
þ þ 


þ rp   c               	   C   s¦   t  ¡ } | jtd t t¡ | jtdd W 5 Q R X t t¡ | jtdd W 5 Q R X t t¡ | jddd W 5 Q R X t t¡ | jdd W 5 Q R X d S )	N)Ú
axes_classÚ3d)rq   ra   T)rq   rf   )ra   rf   é*   r`   )r   r    r"   r
   r;   r<   r=   Ú	TypeError©r,   r0   r0   r1   Útest_add_subplot_subclassÖ   s    rv   c               	   C   sÈ  t  ¡ } tjtdd |  ddd¡ W 5 Q R X tjtdd |  ddd¡ W 5 Q R X tjtdd |  ddd¡ W 5 Q R X tjtdd |  ddd¡ W 5 Q R X tjtd	d |  d
¡ W 5 Q R X tjtd	d |  d¡ W 5 Q R X tjtdd |  dd¡ W 5 Q R X tjtdd |  dddd¡ W 5 Q R X tjtj	dd |  ddd¡ W 5 Q R X tjtj	dd |  ddd¡ W 5 Q R X t  
¡ \}}tjtdd |  |¡ W 5 Q R X 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 <= 4r7   zmust be a three-digit integerrs   r   z2takes 1 or 3 positional arguments but 2 were givenz2takes 1 or 3 positional arguments but 4 were givenr   r6   zJPassing non-integers as three-element position specification is deprecatedÚ2g       @z8The Subplot must have been created in the present figure)r   r    r;   r<   r=   r"   rt   rh   r   r   rJ   ©r,   Ú_r.   r0   r0   r1   Útest_add_subplot_invalidã   sD    ÿÿÿÿÿrz   Zfigure_suptitlec                  C   s.   t  ¡ \} }| jddd | jdddd d S )NZhellorM   )rU   ÚtitlerS   Z30)rU   Zrotation)r   rJ   rH   )r,   ry   r0   r0   r1   Útest_suptitle
  s    r|   c                  C   sV   t  ¡ \} }tjjddd}| jd|d}| ¡ | ¡ ks>t‚| 	¡ | 	¡ ksRt‚d S )NZlargeZbold)ÚsizeZweightzfontprops title)Zfontproperties)
r   rJ   ÚmplZfont_managerZFontPropertiesrH   Zget_fontsizeZget_size_in_pointsr:   Z
get_weight)r,   r.   ZfpsÚtxtr0   r0   r1   Útest_suptitle_fontproperties  s
    r€   Zalpha_background©r   r   çš™™™™™Ù?Ú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‚   é   é   g333333ã?Zred)ZradiusÚalphar„   )	r   r    Úset_facecolorÚpatchZ	set_alphaZpatchesÚappendr~   ZCirclePolygonru   r0   r0   r1   Ú
test_alpha  s    
   ÿrŽ   c               	   C   s8   t  t¡$ ttd d ƒD ]} t ¡  qW 5 Q R X d S )Nzfigure.max_open_warningr   )r;   rh   ÚRuntimeWarningr'   r   r   r    )r/   r0   r0   r1   Ú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| f|ž|ŽS ©N)r
   Ú__init__)Úselfr‘   ÚargsÚkwargsr0   r0   r1   r“   :  s    z7test_iterability_axes_argument.<locals>.MyAxes.__init__)Ú__name__Ú
__module__Ú__qualname__r“   r0   r0   r0   r1   Ú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)r=   )r”   Úitemr0   r0   r1   Ú__getitem__?  s    z;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s   ˆ d| ifS )Nr‘   r0   ©r”   ©rš   r0   r1   Ú_as_mpl_axesC  s    z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)r—   r˜   r™   r   r    r0   rŸ   r0   r1   ÚMyClass=  s   r¡   r   r`   )r
   r   r    r"   r9   )r¡   r,   r0   rŸ   r1   Útest_iterability_axes_argument.  s
    	r¢   c                  C   s–   t  ¡ } |  d¡ |  ¡ dks"t‚|  d¡ |  ¡ dks<t‚|  dd¡ |  ¡ dksXt‚|  ¡ dksht‚|  d¡ |  ¡ dks‚t‚|  ¡ dks’t‚d S )Nr7   r   r   r6   )r   r   r   )r   r    Zset_figwidthZget_figwidthr:   Zset_figheightZget_figheightÚset_size_inchesru   r0   r0   r1   Útest_set_fig_sizeK  s    


r¤   c                  C   sh   t  dd¡\} }|d  ¡  | ¡ d d… D ]}|| jks,t‚q,|d | jksRt‚t| jƒdksdt‚d S )Nr   )r   r   r   r   )r   rJ   ÚremoveZravelrl   r:   Úlen©r,   r[   r.   r0   r0   r1   Útest_axes_removea  s    r¨   c                  C   s˜   t  t d¡t d¡ ¡\} }||  dks.t‚t  d¡\} }||  dksLt‚t  t d¡¡\} }||  dkspt‚t  t d¡¡\} }||  dks”t‚d S )Nr   r   )r   r   rG   )r   r   )r   Z	figaspectr$   Zfloat64r:   Úzeros)ÚwÚhr0   r0   r1   Útest_figaspectj  s    r¬   ÚwhichÚbothÚmajorÚminorc           
      C   sx  ddddddddd	d
ddg}ddddddddddddg}d}ddddddd g}t  |¡}t  |¡}t ¡ \}}| ||¡ | ¡  | ¡  |j t	dƒ¡ t
 ¡ " t
 d!d"¡ |j t|ƒ¡ W 5 Q R X | d krÞt tj¡ntƒ  | d#|d$| ¡ W 5 Q R X | d%kr:|jd&  d'd(¡D ]}	t|	 ¡ ƒ|kst‚q| d)krt|jd&  d*d+¡D ]}	t|	 ¡ ƒ|ksVt‚qVd S ),Nz
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 2013z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   r6   r7   é   é   Úignorez=FixedFormatter should only be used together with FixedLocatorçš™™™™™É?r   )r®   r¯   Nr   Fr¯   )r®   r°   Tr°   )ÚmdatesZdatestr2numr   rJ   r#   Z
yaxis_dateZ
xaxis_dater)   Zset_minor_locatorr   ÚwarningsÚcatch_warningsÚfilterwarningsZset_minor_formatterr   r;   rh   r~   r   r   Zautofmt_xdaterl   r*   ÚintZget_rotationr:   )
r­   ÚdateÚtimeZangleZminorsrR   rV   r,   r.   rT   r0   r0   r1   Útest_autofmt_xdateu  sX          þ
     þ


þÿ

r½   Údefaultc                  C   sr   t jdd} | j ¡  | jjjdks(t‚| jjjdks:t‚d| _| j ¡  | jjjdks\t‚| jjjdksnt‚d S )N)r6   r6   r†   i  é2   éÈ   )	r   r    ÚcanvasÚdrawÚrendererÚheightr:   ÚwidthÚdpiru   r0   r0   r1   Útest_change_dpiŸ  s    

rÇ   zwidth, heightr   )r   r   c              	   C   sT   t  t¡ tj| |fd W 5 Q R X t ¡ }t  t¡ | | |¡ W 5 Q R X d S )Nr†   )r;   r<   r=   r   r    r£   )rÅ   rÄ   r,   r0   r0   r1   Útest_invalid_figure_size«  s
    rÈ   c               	   C   sž   t  ¡ } t t¡ |  dddtjf¡ W 5 Q R X tjtdd$ | jddddgddddgd W 5 Q R X t  	¡ \}}tjtdd |  |¡ W 5 Q R X d S )	Nrb   rG   z#multiple values for argument 'rect'r]   r   r   rd   z5The Axes must have been created in the present figure)
r   r    r;   r<   r=   rj   r$   Únanrt   rJ   rx   r0   r0   r1   Útest_invalid_figure_add_axes¹  s    (ÿrÊ   c                  C   s  t jdddddd\} }|jD ]}| dddgdddg¡ q| d¡ | d¡ |d	d d …f D ]}d	t|jjd
dƒks`t	‚q`|dd d …f D ]}d	t|jjd
dƒk st	‚q|d d …df D ]}d	t|j
jd
dƒksÀt	‚qÀ|d d …d	f D ]}d	t|j
jd
dƒk sðt	‚qðd S )Nr   TF)ÚsharexÚshareyZsqueezer   rˆ   é   Úlogr   r®   )r­   r   )r   rJ   Úflatr#   Z
set_yscaleZ
set_xscaler¦   r)   Zget_ticklabelsr:   r+   r§   r0   r0   r1   Útest_subplots_shareax_loglabelsÈ  s    


rÐ   c               	   C   s6   t  ¡ } d}tjt|d |  dd¡ W 5 Q R X d S )Nz9savefig\(\) takes 2 positional arguments but 3 were givenr]   z
fname1.pngz
fname2.png)r   r    r;   r<   rt   Úsavefig)r,   Úmsgr0   r0   r1   Útest_savefigÝ  s    rÓ   c               
   C   sJ   t  ¡ } d}dD ]4}tjtj|d | jt ¡ |dd W 5 Q R X qd S )Nz@savefig\(\) got unexpected keyword argument "non_existent_kwarg")r   Úpdfr   ZtifZjpgr]   T)ÚformatZnon_existent_kwarg)	r   r    r;   rh   r   r   rÑ   ÚioÚBytesIO)r,   rÒ   rÕ   r0   r0   r1   Útest_savefig_warnsä  s
    rØ   c               	   C   s\   t  ¡ } tjtdd | jddd W 5 Q R X tjtdd | jddd W 5 Q R X d S )	NzNo module named '@absent'r]   Útestzmodule://@absent)Úbackendz-The 'pdf' backend does not support png outputztest.pngrÔ   )r   r    r;   r<   ÚModuleNotFoundErrorrÑ   r=   ru   r0   r0   r1   Útest_savefig_backendì  s    ÿrÜ   c                  C   s"   t jddd} t| ƒdkst‚d S )N)r   rˆ   r   )r‡   rÆ   z!<Figure size 100x200 with 0 Axes>)r   r    Úreprr:   ru   r0   r0   r1   Útest_figure_reprö  s    rÞ   c               	   C   sB   t jdd\} }t t¡ | jdd W 5 Q R X |  ¡ r>t‚d S )NT©Úconstrained_layoutrc   )r   )r   rJ   r;   rh   ri   Zsubplots_adjustZget_constrained_layoutr:   rP   r0   r0   r1   Útest_warn_cl_plus_tlû  s    rá   rÔ   ©r   c           	   	   C   s8  |   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 ]}|  |¡ q’| ¡  | ¡ }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)Úgidrc   Úl2)rˆ   rˆ   ZC1)Ú	transformrå   )rã   rG   çš™™™™™©?ZC2)g      @rc   gš™™™™™á?ZcrimsonZC3)rç   r„   rå   é   )rç   rå   ÚzorderFrˆ   )rç   Úclip_onrê   rå   )rç   r„   rë   rê   rå   )	Úset_dpirJ   r   ZLine2DZCircleZdpi_scale_transZ
add_artistr¥   ZtransFigure)	Úfig_testÚfig_refrä   ræ   Zr1Zr2Zr3r›   rK   r0   r0   r1   Útest_add_artist  sB    

 ÿ ÿÿÿ   ÿrï   ÚfmtZpsZepsc              	   C   sP   t |d | ¡ƒ}t |¡ | d¡"}|  d¡| d¡ ¡ ksBt‚W 5 Q R X d S )Nztest.{}ÚrbÚasciir   )	r   rÕ   r   rÑ   ÚopenÚencodeÚreadÚlowerr:   )rð   ZtmpdirÚoutÚfiler0   r0   r1   Útest_fspath   s    
rù   c                  C   sZ  t  ¡ \} }| dd¡ | ddd¡}| j ¡ }d}t| |¡j|| j	  ƒdk sVt
‚t| |¡j|| j	  ƒdk sxt
‚t|  |¡j| ƒdk s”t
‚t|  |¡jd	 ƒdk s°t
‚| d
¡ d}t| |¡j|| j	  ƒdk sàt
‚t|  |¡j| ƒdk süt
‚| d¡ d}t| |¡j|| j	  ƒdk s.t
‚t|j|g dj|| j	  ƒdk sVt
‚d S )Nr   r   g      ð?rG   zThis dangles over endgR¸…ë"@r   rè   gî|?5^ºå?Fg¢E¶óýT@T)Zbbox_extra_artists)r   rJ   Zset_xlimrI   rÁ   Úget_rendererÚabsÚget_tightbboxÚx1rÆ   r:   Úx0Zset_in_layout)r,   r.   rD   rÃ   Zx1Nom0Zx1Nomr0   r0   r1   Ú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	ƒsbt
‚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ƒsÔt
‚d S )Nr   r   T©rË   r   iÐ  )r   rJ   r¥   r#   r   Ú
isinstancer)   Zget_major_formatterr¶   ZAutoDateFormatterr:   Zset_major_formatterr   rZ   r0   r0   r1   Útest_axes_removalC  s    (ÿ(ÿr  c                  C   s,   t jddd\} }|d  ¡  | j ¡  d S )Nr   Tr   r   )r   rJ   r¥   rÁ   rÂ   rZ   r0   r0   r1   Útest_removed_axisU  s    r  Zmpl20c                  C   s€   t  ¡ \} }|jdgdgdgdd}| j ¡  | jr8t‚t|jj	|jj
d  |jj|jjd  |d d}|  |¡ | jr|t‚d S )Nr   r   T)Zpickerr   )rR   rV   ZinaxesZguiEvent)r   rJ   ÚscatterrÁ   rÂ   Ústaler:   r   Úbboxrþ   rÅ   Zy0rÄ   Zpick)r,   r.   ÚcolZmouse_eventr0   r0   r1   Útest_picking_does_not_stale\  s    

 þ
r  c               	   C   s*  t  ¡ } |  ddd¡}| ¡ jtddƒks.t‚| ¡ jtddƒksFt‚|  ddd¡}| ¡ jtddƒkslt‚| ¡ jtddƒks„t‚|  ddd¡}| ¡ jtddƒksªt‚| ¡ jtddƒksÂt‚|  ddd¡}| ¡ jtddƒksèt‚| ¡ jtddƒkst‚t 	t
¡ |  ddd	¡ W 5 Q R X d S )
Nr   r   ©r   r7   r   r   )r6   r²   )r   r²   )r6   r7   )r²   r   )r   r    r"   rk   Zrowspanr'   r:   Úcolspanr;   r<   Ú
IndexError)r,   rn   rK   ro   Zax4r0   r0   r1   Útest_add_subplot_twotuplej  s    r  ztightbbox_box_aspect.svgZtightZ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   rr   r`   rG   )r   r   r   )r   r    Úadd_gridspecr"   Zset_box_aspect)r,   r-   rn   rK   r0   r0   r1   Útest_tightbbox_box_aspect|  s    
r  c                 C   s4   |  ¡ }| tdƒ¡ |   ¡ }|jtdƒdd d S )Nr7   T)Zanimated)rJ   r#   r'   )rí   rî   Zax_refZax_testr0   r0   r1   Ú test_animated_with_canvas_change‰  s    r  c                   @   s"  e Zd Zedgdej ddddgdddggddd	gd
dd	g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$d%d&d'g¡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$d4d5d6d7d8d9g¡d:d;„ ƒZd<d=„ ZdS )>ÚTestSubplotMosaicr   râ   rR   ÚAÚBÚCÚDr   r   r   r6   c                 C   sÜ   |  |¡}| ¡ D ]\}}| |¡ qtt |¡ƒ}t|ƒt|ƒksHt‚| 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ÚitemsrN   Úsortedr$   Úuniquer¦   r:   r  r"   )r”   rí   rî   rR   Ú	grid_axesrW   r.   Úlabelsr-   ÚaxAÚaxBÚaxCÚaxDr0   r0   r1   Ú
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 ]}| | ¡ ¡ qL| d
d¡}|d  dd¡}t|ƒD ]2\}	}
t|
ƒD ] \}}| ||	|f ¡ |¡ q”q„|d  dd¡}t|ƒD ]2\}	}
t|
ƒD ] \}}| ||	|f ¡ |¡ qàqÐd S )Nr  r  r  r  ÚEÚFÚGÚHTr   r   r  r  )	Úset_constrained_layoutr  ÚvaluesrN   rO   r  ÚsubgridspecÚ	enumerater"   )r”   rí   rî   rR   rV   r  r.   r-   Zgs_leftÚjrM   rW   rT   Zgs_rightr0   r0   r1   Ú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 ]\}}| |¡ qB| 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  rN   r  r,  r"   )r”   rí   rî   rR   rV   r  rW   r.   r-   Zgs_nr!  r"  r#  r$  ZaxFr0   r0   r1   Útest_nestedÅ  s&    






zTestSubplotMosaic.test_nestedc                 C   s@   dddgdddgg}d}|  dg|gg¡ |  dg|gg¡ d S )Nr  r  r  r  ))r  r  r  )r  r  r  r'  )r  )r”   rí   rî   rR   Zxtr0   r0   r1   Útest_nested_tupleç  s    z#TestSubplotMosaic.test_nested_tuplezx, empty_sentinelNÚ.ÚSKIPr   c                 C   s¶   |dkrd|i}ni }|j |f|Ž}| ¡ D ]\}}| |¡ q,tdd„ |D ƒ|dh ƒ}	t|	ƒt|ƒksnt‚| dd¡}
| |
d ¡}| |	d ¡ | |
d	 ¡}| |	d
 ¡ d S )Nr3  Úempty_sentinelc                 S   s   h | ]}|D ]}|’qqS r0   r0   )rC   ÚrowÚnamer0   r0   r1   Ú	<setcomp>  s       z/TestSubplotMosaic.test_empty.<locals>.<setcomp>r2  r   r  r   r  r   )r  r  rN   r  r¦   r:   r  r"   )r”   rí   rî   rR   r4  r–   r  rW   r.   r   r-   r!  r"  r0   r0   r1   Ú
test_emptyï  s    
ÿzTestSubplotMosaic.test_emptyc              	   C   sR   t jtdd t ddg¡ W 5 Q R X t jtdd t dg¡ W 5 Q R X d S )Nz
must be 2Dr]   ZfooÚbar)r;   r<   r=   r   r  rž   r0   r0   r1   Útest_fail_list_of_str  s    z'TestSubplotMosaic.test_fail_list_of_strÚ
subplot_kwra   rf   c           	      C   sT   ddgg}|j ||d}|pi }| dd¡}|j|d f|Ž}|j|d f|Ž}d S )Nr   r   )r;  r  r  )r  r  r"   )	r”   rí   rî   r;  rR   r  r-   r!  r"  r0   r0   r1   Útest_subplot_kw  s    
z!TestSubplotMosaic.test_subplot_kwc                 C   s¶   t j}|dƒdddggkst‚|dƒddgddggks:t‚|dƒddgddgddggks\t‚|d	ƒdddggkstt‚|d
ƒddgddggkst‚|dƒddgddgddggks²t‚d S )NÚABCr  r  r  zAB;CCzAB;CC;DEr  r&  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Z_normalize_grid_stringr:   )r”   Ú	normalizer0   r0   r1   Útest_string_parser$  s    "
þýüz$TestSubplotMosaic.test_string_parserÚstr_patternzAAA
BBBz	
AAA
BBB
zABC
DEFc                 C   s,   |  |¡}|  dd„ | ¡  d¡D ƒ¡}d S )Nc                 S   s   g | ]}t |ƒ‘qS r0   )Úlist)rC   Úlnr0   r0   r1   rE   >  s     z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>Ú
)r  ÚstripÚsplit)r”   rí   rî   r@  r  r0   r0   r1   Ú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.z4There are duplicate keys .* between the outer layout)z	AAA
c
BBBú'All of the rows must be the same lengthr&  rG  c              	   C   s0   t  ¡ }tjt|d | |¡ W 5 Q R X d S )Nr]   )r   r    r;   r<   r=   r  )r”   rR   r^   r,   r0   r0   r1   Ú	test_failA  s    zTestSubplotMosaic.test_failc                 C   s(   |  tƒ tƒ gg¡ |  ddgg¡ d S )Nr  r  )r  Úobject)r”   rí   rî   r0   r0   r1   Útest_hashable_keys[  s    z$TestSubplotMosaic.test_hashable_keysÚabcZcabZbcaZcbaZacbZbacc                 C   sD   t  ¡ }| |¡}t|ƒt|ƒks&t‚t|jƒt| ¡ ƒks@t‚d S r’   ©r   r    r  rA  r:   rl   r+  )r”   r@  r,   Úax_dictr0   r0   r1   Ú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sVt‚t|jƒt| ¡ ƒkspt‚d S )Nr  r  r  r  r&  r'  r(  r2  r)  ÚIZ	ABCDEFGHIrL  )r”   Zlayoutr,   rM  r0   r0   r1   Útest_nested_user_orderh  s    ÿÿü
z(TestSubplotMosaic.test_nested_user_order)r—   r˜   r™   r	   r;   ÚmarkÚparametrizer%  r/  r0  r1  r8  r:  r<  r?  rF  rH  rJ  rN  rP  r0   r0   r0   r1   r  ’  sp   
 &ÿ



!


úþ


ÿýþþóþ


ÿ
r  c                  C   sv   t  ¡ } |  ddd¡}|  ddd¡}t jddd| d}| ¡  ¡ }| ¡  ¡ }| ¡  ¡ }||ksft‚||ksrt‚dS )	z)Test that these all use the same gridspecr   r   r	  r6   )r   r   )r   r   )r
  r,   N)r   r    r"   Zsubplot2gridrk   Zget_gridspecr:   )r,   rn   rK   ro   Zgs1Zgs2Zgs3r0   r0   r1   Útest_reused_gridspecw  s    rS  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	}q|d j
||dd |d  d¡ | jddd d S )Né!N,Trß   r   r   r   rÍ   éþÿÿÿ©ZvminZvmax©r.   ú	Left Sider   Zbottom)r.   Úlocationz
Right SideúFigure suptitleúxx-large©Úfontsize)r$   ÚrandomÚseedr   r    Ú
subfiguresrJ   rÏ   Ú
pcolormeshÚrandnÚcolorbarrH   )r,   Úsubr[   r.   Úpcr0   r0   r1   Útest_subfigure†  s    

rf  c                  C   s8   t jdd} |  dd¡}tj |  | j ¡ ¡j	d¡ d S )NTrß   r   r   rb   )
r   r    r`  r$   ÚtestingÚassert_allcloserü   rÁ   rú   rÅ   )r,   rd  r0   r0   r1   Útest_subfigure_tightbbox  s     ÿri  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}qH|j||d | d¡ |  |d ¡}| t  d¡¡ | d¡ | jddd d S )NrT  Trß   r   r   r   Zpink)r„   rÍ   rU  rV  rW  rX  rˆ   r
   rZ  r[  r\  )r$   r^  r_  r   r    r  Úadd_subfigurerJ   rÏ   ra  rb  rc  rH   r"   r#   r%   rN   )r,   r-   rd  r[   r.   re  r0   r0   r1   Útest_subfigure_ss¦  s    


rk  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 ]L}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!|› ¡ qP|d  d"¡ |d  d#¡ |d  dd¡}	d S )$NrT  T)r   é   ©rà   r‡   r,   r   r   gìQ¸…ë±?)Úwspacer   Zcoralz
subfigs[0]z
subfigs[1]gffffffö?)Zheight_ratioszsubfigsnest[0]rM   ©rÌ   é   rÍ   g      Àg      @rV  zx-labelr\  zy-labelZTitlerW  zsubfigsnest[1]rS   r   r   ZylabelÚ	supxlabelÚ	supylabel)r$   r^  r_  r   r    rH   r`  r‹   rJ   ra  rb  r(   r&   rN   rc  r-  rq  rr  )
r,   ZsubfigsZsubfigsnestZaxsnest0r.   r]  re  Zaxsnest1ÚnnZaxsRightr0   r0   r1   Útest_subfigure_double¾  s6    
rt  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  rj  r$   rg  rh  r  ÚminÚmax)r,   r-   Zsub_figsrª   r«   r0   r0   r1   Útest_subfigure_spanningé  s    ý"""rw  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   rm  r   r   r   r³   )rn  Zwidth_ratiosé   )ZnrowsZncolsr   gæû©!<LÀgkâX.8@iÜ  i  )rR   rV   r   ro  g …ëYI¢_ÀgRã¥óÏ«W@éx   i,  )r   r    r`  r  r"   r  rì   rÁ   rÂ   Z
get_xticksr$   rg  rh  )	r,   Z	subfig_blZ	subfig_brr-   rn   rK   ro   Zticks120Zticks300r0   r0   r1   Útest_subfigure_ticksÿ  s"    
ÿ




rz  ztest_subfigure_scatter_size.png)r  r  c                  C   sÚ   t  ¡ } |  dd¡}|  |d ¡}|jdddgdddgddd |jdddgdddgd	dd
gdd |  |d ¡}| dd¡}||d fD ]J}|jdddgdddgdddd |jdddgdddgd	dd
gddd qŠd S )Nr   r   r   rÍ   Ús)r{  Úmarkerr6   r7   rˆ   é(   r   rM   )r{  r|  rU   rS   )r   r    r  r"   r  rj  rJ   )r,   r-   rm   Zsfigr[   r.   r0   r0   r1   Útest_subfigure_scatter_size  s    $ r~  c                  C   sê   t  ¡ } |  ddd¡}|  ddd¡}|d k	s0t‚||k	s<t‚t  ¡  t  ¡ } | jddddd}| jddddd}|d k	s|t‚||k	sˆt‚t  ¡  t  ¡ } | jddddd}|  ddd¡}|d k	sÄt‚|jdksÒt‚||k	sÞt‚t  ¡  d S )Nr   rf   r`   r_   )r   r    r"   r:   r9   r6  ©r,   r.   rn   r0   r0   r1   Útest_add_subplot_kwargs,  s&    r€  c                  C   s  t  ¡ } |  ddddg¡}|  ddddg¡}|d k	s8t‚||k	sDt‚t  ¡  t  ¡ } | jddddgdd}| jddddgdd}|d k	sŒt‚||k	s˜t‚t  ¡  t  ¡ } | jddddgdd}|  ddddg¡}|d k	sÜt‚|jdksêt‚||k	söt‚t  ¡  d S )Nr   r   rf   r`   r_   )r   r    rj   r:   r9   r6  r  r0   r0   r1   Útest_add_axes_kwargsE  s&    r  )\Ú
contextlibr   r   rÖ   Úpathlibr   ÚplatformÚtypesr   r·   Z
matplotlibr~   r   r   Zmatplotlib.testing.decoratorsr   r	   Zmatplotlib.axesr
   Zmatplotlib.figurer   Zmatplotlib.tickerr   r   r   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.datesÚdatesr¶   Zmatplotlib.gridspecr!   Zmatplotlib.cbookr   Znumpyr$   r;   Úmachiner2   r>   r?   rL   rQ   r\   rp   rv   rz   r|   r€   rŽ   r   r¢   r¤   r¨   r¬   rQ  rR  r½   r  rÇ   rÉ   ÚinfrÈ   rÊ   rÐ   rÓ   rØ   rÜ   rÞ   rá   rï   rù   rÿ   r  r  r  r  r  r  r  rS  rf  ri  rk  rt  rw  Úcontextrz  r~  r€  r  r0   r0   r0   r1   Ú<module>   sÞ   ÿ
'

@'
ÿü
		
)

ý
	


	

ÿý
	
 fþ
	þ
þ
(

ÿ
