a
    ض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dgdoddviddydd ZZdd Z[edgdoddviddydd Z\edgdoddviddydd Z]dd Z^ej>?dodd Z_edgdodxddd Z`dd Zadd Zbdd Zcdd Zddd ZedS )    )datetimeN)Path)Timer)SimpleNamespace)Image)cbookrcParams)MatplotlibDeprecationWarning)image_comparisoncheck_figures_equal)Axes)Figure)AutoMinorLocatorFixedFormatterScalarFormatterZfigure_align_labelspngsvgx86_64{Gz?)
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v 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)tight_layout   r      g    .A  z	Ylabel0 0)r   g     @d      z
YLabel1 %dz
XLabel1 %d)r   r   topZ   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 r2   l/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/matplotlib/tests/test_figure.pytest_align_labels   s>    



r4   c                  C   s  t dd\} }t|jD ]<\}}|d |d |td| td|  q|   | 	  | 
  td}td}t|jD ]0\}}|jj d ||< |jj d ||< qtj|d d |dd   tj|d d d |dd d  t jdddd\} }t|jD ]2\}}|d |d |tjd	d	}q| j||d
 |   | 	  | 
  td}td}t|jD ]2\}}|jj d ||< |jj d ||< qtj|d d |dd   tj|d d d |dd d  d S )Nr   ZBooZWho   r   r   Tconstrained_layoutr    r0   )r!   subplots	enumerateflatr*   r%   r&   r'   Zalign_ylabelsZalign_xlabelsdraw_without_renderingzerosr+   labelget_positionr-   testingassert_allclose
pcolormeshrandomrandncolorbar)r.   axsnnr0   ZxnZynpcr2   r2   r3   test_align_labels_stray_axesB   s>    

"

"



rI   c                  C   s  t d t d} t d t d t   t d t d t d t  g dksbJ t  g dksvJ t d	 t   t d
 t d t  ddgksJ t  ddgksJ t |  t  | ksJ tt t t	  W d    n1 s0    Y  d S )Nalltodayr   tomorrowr   r   )r   r   r   r5      ) rK   rN   rL   rN   r    rM   rN   )
r!   closer"   Zget_fignumsZget_figlabelsZgcfpytestraises
ValueErrorr   )Z	fig_todayr2   r2   r3   test_figure_labele   s(    










rS   c                   C   s   t d t d t d t   t ds4J t dsBJ t dsPJ t ds^J t d t d t drJ t drJ d S )NZoner   Zthreer5   )r!   r"   Zfignum_existsrO   r2   r2   r2   r3   test_fignum_exists}   s    




rT   c                  C   s   d} d}t jdd}||  dd |jD | gks8J t jddd}|d	d	| ||u s`J d
d |jD | |gks|J t jddddd\}}||u sJ dd |jD g ksJ d S )NzA fancy plotzReally fancy!r   )numc                 S   s   g | ]}|  qS r2   Zget_text.0tr2   r2   r3   
<listcomp>       z$test_clf_keyword.<locals>.<listcomp>F)rU   clear      ?c                 S   s   g | ]}|  qS r2   rV   rW   r2   r2   r3   rZ      r[   r   Tc                 S   s   g | ]}|  qS r2   rV   rW   r2   r2   r3   rZ      r[   )r!   r"   suptitleZtextstextr9   )Ztext1Ztext2Zfig0Zfig1Zfig2ax2r2   r2   r3   test_clf_keyword   s    
ra   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 )NrK   rM   rL   r   r   r)	r!   r"   r$   	set_title	get_labelr%   r&   r'   rO   r.   r0   r2   r2   r3   test_figure   s    


rf   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yrb   r]   kZ_yzb)r!   r9   r%   Zlegendr.   rF   r2   r2   r3   test_figure_legend   s    ro   c                  C   s  t  } tt  |  d u s$J W d    n1 s80    Y  | g d}tjtdd$ | jdd|u stJ W d    n1 s0    Y  |  |u sJ | jg dd}tjtdd$ | jdd|u sJ W d    n1 s0    Y  |  |u sJ | j	dd	d}|  |u s&J tjtdd& | jd
d|u sLJ W d    n1 sb0    Y  | 	d}|  |u sJ tjtdd& | jd
d|u sJ W d    n1 s0    Y  tjtdd& | jd
d|usJ W d    n1 s
0    Y  |  
  dks.J | | | j||||gksPJ |  |u sbJ | 	| | j||||gksJ |  |u sJ | | tjtdd& | jdd|u sJ W d    n1 s0    Y  |  |u sJ | j||||gksJ d S )Nr   r   r   r   z5Calling gca\(\) with keyword arguments was deprecatedmatchrectilinear
projection)皙?rv   皙?rw   Zrecty   polarT)rz   z   )r   r   r   r   )r!   r"   rP   rQ   	TypeErroradd_axeswarnsr	   Zgcar$   get_subplotspecZget_geometryaxesZsca)r.   ax0ax1r`   ax3r2   r2   r3   test_gca   sf    .226
66


6r   c                  C   s   t  } | jtd tt | jtdd W d    n1 sB0    Y  tt | jtdd W d    n1 sz0    Y  tt | jddd W d    n1 s0    Y  tt | jdd W d    n1 s0    Y  d S )	N)
axes_class3d)r   ru   T)r   rz   )ru   rz   *   rt   )r!   r"   r$   r   rP   rQ   rR   r|   r.   r2   r2   r3   test_add_subplot_subclass   s    ,,,r   c                  C   s  t  } tjtdd | ddd W d    n1 s:0    Y  tjtdd | ddd W d    n1 sv0    Y  tjtdd | ddd W d    n1 s0    Y  tjtdd | ddd W d    n1 s0    Y  tjtd	d | d
 W d    n1 s(0    Y  tjtd	d | d W d    n1 sb0    Y  tjtdd | dd W d    n1 s0    Y  tjtdd  | dddd W d    n1 s0    Y  tjtdd | ddd W d    n1 s0    Y  tjtdd | ddd W d    n1 sZ0    Y  t  \}}tjtdd | | W d    n1 s0    Y  d S )Nz,Number of columns must be a positive integerrq   r   r   r   z)Number of rows must be a positive integerznum must be 1 <= num <= 4rM   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   r5   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"   rP   rQ   rR   r$   r|   r9   r.   _r0   r2   r2   r3   test_add_subplot_invalid  sD    ,,,,**,0..r   Zfigure_suptitlec                  C   s.   t  \} }| jddd | jdddd d S )NZhellorb   )ri   titlerh   Z30)ri   Zrotation)r!   r9   r^   )r.   r   r2   r2   r3   test_suptitle.  s    r   c                  C   sV   t  \} }tjjddd}| jd|d}| | ks>J | | ksRJ d S )NZlargebold)sizeZweightzfontprops title)Zfontproperties)	r!   r9   mplZfont_managerZFontPropertiesr^   Zget_fontsizeZget_size_in_pointsZ
get_weight)r.   r0   Zfpstxtr2   r2   r3   test_suptitle_fontproperties5  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         333333?red)Zradiusalphar   )	r!   r"   set_facecolorpatchZ	set_alphaZpatchesappendr   ZCirclePolygonr   r2   r2   r3   
test_alpha=  s    
r   c                  C   sL   t t. ttd d D ]} t  qW d    n1 s>0    Y  d S )Nzfigure.max_open_warningr   )rP   r~   RuntimeWarningr)   r   r!   r"   )r1   r2   r2   r3   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kwargsr2   r2   r3   r   ^  s    z7test_iterability_axes_argument.<locals>.MyAxes.__init__)__name__
__module____qualname__r   r2   r2   r2   r3   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)rR   )r   itemr2   r2   r3   __getitem__c  s    z;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s    d| ifS )Nr   r2   r   r   r2   r3   _as_mpl_axesg  s    z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)r   r   r   r   r   r2   r   r2   r3   MyClassa  s   r   r   rt   )r   r!   r"   r$   rO   )r   r.   r2   r   r3   test_iterability_axes_argumentR  s
    	r   c                  C   s   t  } | d |  dks"J | d |  dks<J | dd |  dksXJ |  dkshJ | d |  dksJ |  dksJ d S )NrM   r   r   r5   )r   r   r   )r!   r"   Zset_figwidthZget_figwidthZset_figheightZget_figheightset_size_inchesr   r2   r2   r3   test_set_fig_sizeo  s    


r   c                  C   sh   t dd\} }|d   | d d D ]}|| jv s,J q,|d | jvsRJ t| jdksdJ d S )Nr   )r   r   r   r   )r!   r9   removeZravelr   lenr.   rF   r0   r2   r2   r3   test_axes_remove  s    r   c                  C   s   t tdtd \} }||  dks.J t d\} }||  dksLJ t td\} }||  dkspJ t td\} }||  dksJ d S )Nr   r   )r   r   r]   )r   r   )r!   Z	figaspectr&   Zfloat64r=   )whr2   r2   r3   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 s0    Y  |d|d	|  | d
v r|jd ddD ]}	t|	 |ksJ q| dv r*|jd ddD ]}	t|	 |ksJ q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   r5   rM         r   ignorez=FixedFormatter should only be used together with FixedLocator皙?r   )r   r   r   Fr   )r   r   Tr   )mdatesZdatestr2numr!   r9   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minorsrg   rj   r.   r0   r>   r2   r2   r3   test_autofmt_xdate  s0    


.
r   defaultc                  C   sn   t jdd} |   | jjjdks&J | jjjdks8J d| _|   | jjjdksXJ | jjjdksjJ d S )N)r5   r5   r   i  2      )r!   r"   r<   canvasrendererheightwidthdpir   r2   r2   r3   test_change_dpi  s    r   zwidth, heightr   )r   r   c                 C   s|   t t  tj| |fd W d    n1 s00    Y  t }t t || | W d    n1 sn0    Y  d S )Nr   )rP   rQ   rR   r!   r"   r   )r   r   r.   r2   r2   r3   test_invalid_figure_size  s
    .r   c                  C   s   t  } tt$ | dddtjf W d    n1 s<0    Y  tjtdd& | jg dg dd W d    n1 s0    Y  t 	 \}}tjtdd | | W d    n1 s0    Y  d S )Nrv   r]   z#multiple values for argument 'rect'rq   rp   rx   z5The Axes must have been created in the present figure)
r!   r"   rP   rQ   rR   r}   r&   nanr|   r9   r   r2   r2   r3   test_invalid_figure_add_axes  s    24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 sJ q|d d d
f D ]}dt|j	jdd	ksJ q|d d df D ]}dt|j	jdd	k sJ qd S )Nr   TF)sharexshareyZsqueeze)r    r      logr   r   )r   r   )
r!   r9   r;   r%   Z
set_yscaleZ
set_xscaler   r+   Zget_ticklabelsr-   r   r2   r2   r3   test_subplots_shareax_loglabels  s    


r   c                  C   sJ   t  } d}tjt|d | dd W d    n1 s<0    Y  d S )Nz9savefig\(\) takes 2 positional arguments but 3 were givenrq   z
fname1.pngz
fname2.png)r!   r"   rP   rQ   r|   savefig)r.   msgr2   r2   r3   test_savefig  s    r   c               	   C   s^   t  } d}dD ]H}tjtj|d$ | jt |dd W d    q1 sN0    Y  qd S )Nz@savefig\(\) got unexpected keyword argument "non_existent_kwarg")r   pdfr   ZtifZjpgrq   T)formatZnon_existent_kwarg)	r!   r"   rP   r~   r   r	   r   ioBytesIO)r.   r   r   r2   r2   r3   test_savefig_warns  s
    r   c                  C   s   t  } tjtdd | jddd W d    n1 s:0    Y  tjtdd | jddd W d    n1 sv0    Y  d S )	NzNo module named '@absent'rq   testzmodule://@absent)backendz-The 'pdf' backend does not support png outputztest.pngr   )r!   r"   rP   rQ   ModuleNotFoundErrorr   rR   r   r2   r2   r3   test_savefig_backend  s    ,r   r   ZAgg)ZmarksZCairoc                 C   s   t  \}}|g d t 0}|j|dd t|}|  W d    n1 sX0    Y  t  \}}|g d |j	
d t 0}|j|dd t|}|  W d    n1 s0    Y  ||ksJ d S )Nr   r   r   r   )r   r   )r!   r9   r%   r   r   r   r   openloadr   Z_set_device_pixel_ratio)r   r.   r0   bufZratio1Zratio2r2   r2   r3   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   r2   r2   r3   test_figure_repr/  s    r   c                  C   sj   t d d} |  rJ |  r"J t dd} |  s8J |  rDJ t dd} |  rZJ |  sfJ d S )Nlayouttightconstrained)r   get_tight_layoutget_constrained_layoutr   r2   r2   r3   test_valid_layouts4  s    


r   c                  C   s4  t jdd\} }tt | jdd W d    n1 s<0    Y  |  rRJ tjtdd tddd	} W d    n1 s0    Y  |  sJ |  rJ tjtd
d tddd} W d    n1 s0    Y  |  rJ |  sJ tj	t
dd tdd W d    n1 s&0    Y  d S )NTr6   rw   )r   z4Figure parameters 'layout' and 'tight_layout' cannotrq   r   F)r   r   z:Figure parameters 'layout' and 'constrained_layout' cannotr   )r   r7   z('foobar' is not a valid value for layoutZfoobarr   )r!   r9   rP   r~   UserWarningZsubplots_adjustr   r   r   rQ   rR   re   r2   r2   r3   test_invalid_layoutsB  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)gidrw   l2)r   r   ZC1)	transformr  )r  r]   皙?ZC2)g      @rw   g?ZcrimsonZC3)r  r   r     )r  r  zorderFr   )r  clip_onr  r  )r  r   r	  r  r  )	set_dpir9   r!   ZLine2DZCircleZdpi_scale_transZ
add_artistr   ZtransFigure)	fig_testfig_refr  r  Zr1Zr2Zr3r   r`   r2   r2   r3   test_add_artist[  s8    

r  fmt)r   r   Zpsepsr   c                 C   sd   t |d| }t| |d,}| d|d v sBJ W d    n1 sV0    Y  d S )Nztest.{}rbasciir   )r   r   r!   r   r   encodereadlower)r  Ztmpdiroutfiler2   r2   r3   test_fspathx  s    
r  c                  C   sZ  t  \} }|dd |ddd}| j }d}t||j|| j	  dk sVJ t||j|| j	  dk sxJ t| |j| dk sJ t| |j
d	 dk sJ |d
 d}t||j|| j	  dk sJ t| |j| dk sJ |d d}t||j|| j	  dk s.J t|j|g dj|| j	  dk sVJ d S )Nr   r   g      ?r]   zThis dangles over endgR"@r   r  g|?5^?FgET@T)Zbbox_extra_artists)r!   r9   Zset_xlimr_   r   get_rendererabsget_tightbboxx1r   x0Zset_in_layout)r.   r0   rY   r   Zx1Nom0Zx1Nomr2   r2   r3   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	sbJ 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sJ d S )Nr   r   Tr   r   i  )r!   r9   r   r%   r   
isinstancer+   Zget_major_formatterr   ZAutoDateFormatterZset_major_formatterr   rn   r2   r2   r3   test_axes_removal  s    ((r   c                  C   s,   t jddd\} }|d   | j  d S )Nr   Tr  r   )r!   r9   r   r   drawrn   r2   r2   r3   test_removed_axis  s    r"  Zmpl20c                  C   s   t  \} }|jdgdgdgdd}| j  | jr8J t|jj|jj	d  |jj
|jjd  |d d}| | | jr|J d S )Nr   r   T)Zpickerr   )rg   rj   ZinaxesZguiEvent)r!   r9   scatterr   r!  staler   bboxr  r   Zy0r   Zpick)r.   r0   colZmouse_eventr2   r2   r3   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sFJ | ddd}| jtddkslJ | jtddksJ | ddd}| jtddksJ | jtddksJ | ddd}| jtddksJ | jtddksJ tt	 | ddd	 W d    n1 s20    Y  d S )
Nr   r   r   rM   r   r   )r5   r   )r   r   )r5   rM   )r   r   )
r!   r"   r$   r   Zrowspanr)   colspanrP   rQ   
IndexError)r.   r   r`   r   Zax4r2   r2   r3   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   rt   r]   )r   r   r   )r!   r"   add_gridspecr$   Zset_box_aspect)r.   r/   r   r`   r2   r2   r3   test_tightbbox_box_aspect  s    
r1  )r   r   r  r   c                 C   s4   |  }|td |   }|jtddd d S )NrM   T)Zanimated)r9   r%   r)   )r  r  Zax_refZax_testr2   r2   r3    test_animated_with_canvas_change  s    r2  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   rg   )Ar4  B)CDr5  )r   r   r   )r   r5   r   c                 C   s   | |}| D ]\}}|| qtt|}t|t|ksHJ |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itemsrc   sortedr&   uniquer   r0  r$   )r   r  r  rg   	grid_axesrk   r0   labelsr/   axAaxBaxCaxDr2   r2   r3   
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 | qq|d dd}t|D ]2\}	}
t|
D ] \}}|||	|f | qqd S )Nr4  r5  r6  r7  EFGHTr   r   r.  r/  )	set_constrained_layoutr:  valuesrc   rd   r0  subgridspecr:   r$   )r   r  r  rg   rj   r>  r0   r/   Zgs_leftjrb   rk   r>   Zgs_rightr2   r2   r3   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 )NTr4  r5  r6  r7  rF  r   r   r8  r.  r/  r9  )rI  r:  r;  rc   r0  rK  r$   )r   r  r  rg   rj   r>  rk   r0   r/   Zgs_nr@  rA  rB  rC  ZaxFr2   r2   r3   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r4  r5  r5  r6  r6  r7  )rO  rP  rF  )r:  )r   r  r  rg   Zxtr2   r2   r3   test_nested_tuple?  s    z#TestSubplotMosaic.test_nested_tuplezx, empty_sentinelr4  Nr5  .SKIPr   r   r   c                 C   s   |dkrd|i}ni }|j |fi |}| D ]\}}|| q0tdd |D |dh }	t|	t|ksrJ |dd}
||
d }||	d  ||
d	 }||	d
  d S )NrS  empty_sentinelc                 S   s   h | ]}|D ]}|qqS r2   r2   )rX   rownamer2   r2   r3   	<setcomp>^  r[   z/TestSubplotMosaic.test_empty.<locals>.<setcomp>rR  r   r.  r   r9  r   )r:  r;  rc   r<  r   r0  r$   )r   r  r  rg   rT  r   r>  rk   r0   r?  r/   r@  rA  r2   r2   r3   
test_emptyG  s    
zTestSubplotMosaic.test_emptyc                 C   sz   t jtdd tddg W d    n1 s20    Y  t jtdd tdg W d    n1 sl0    Y  d S )Nz
must be 2Drq   Zfoobar)rP   rQ   rR   r!   r:  r   r2   r2   r3   test_fail_list_of_strj  s    ,z'TestSubplotMosaic.test_fail_list_of_str
subplot_kwru   rz   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:  r0  r$   )	r   r  r  r[  rg   r>  r/   r@  rA  r2   r2   r3   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s8J |dddgddgdd	ggksZJ |d
g dgkspJ |dddgddggksJ |dddgddgdd	ggksJ d S )NABC)r4  r5  r6  zAB;CCr4  r5  r6  zAB;CC;DEr7  rE  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Z_normalize_grid_string)r   	normalizer2   r2   r3   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 r2   )list)rX   lnr2   r2   r3   rZ     r[   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>
)r:  stripsplit)r   r  r  r`  r>  r2   r2   r3   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.r6  r7  z4There are duplicate keys .* between the outer layout)z	AAA
c
BBB'All of the rows must be the same lengthrE  rg  c                 C   sD   t  }tjt|d || W d    n1 s60    Y  d S )Nrq   )r!   r"   rP   rQ   rR   r:  )r   rg   rr   r.   r2   r2   r3   	test_fail  s    zTestSubplotMosaic.test_failc                 C   s(   | t t gg | ddgg d S )Nr4  r5  )r:  object)r   r  r  r2   r2   r3   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"   r:  ra  r   rJ  )r   r`  r.   ax_dictr2   r2   r3   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sVJ t|jt| kspJ d S )Nr4  r5  r6  r7  rE  rF  rG  rR  rH  IZ	ABCDEFGHIrl  r   r   r.   rm  r2   r2   r3   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 stJ d S )Nr4  r5  r6  r7  rE  rF  rG  rR  rH  ro  T)r   r   r   logit)ZxscaleZyscalec                 s   s&   | ]}|  d ko| dkV  qdS )r   rr  N)Z
get_xscaleZ
get_yscale)rX   r0   r2   r2   r3   	<genexpr>  s   z3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r!   r"   r:  setrJ   rJ  rp  r2   r2   r3   test_share_all  s    z TestSubplotMosaic.test_share_all)r   r   r   r   rP   markparametrizerD  rM  rN  rQ  rX  rZ  r\  r_  rf  rh  rj  rn  rq  ru  r2   r2   r2   r3   r3    sp   
 



!









r3  c                  C   sv   t  } | ddd}| ddd}t jddd| d}|  }|  }|  }||ksfJ ||ksrJ dS )	z)Test that these all use the same gridspecr   r   r(  r5   )r   r   )r   r   )r)  r.   N)r!   r"   r$   Zsubplot2gridr   Zget_gridspec)r.   r   r`   r   Zgs1Zgs2Zgs3r2   r2   r3   test_reused_gridspec  s    rx  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,Tr6   r   r   r   r   ZvminZvmaxr8   	Left Sider   Zbottom)r0   locationz
Right SideFigure suptitlexx-largefontsize)r&   rC   seedr!   r"   
subfiguresr9   r;   rB   rD   rE   r^   )r.   subrF   r0   rH   r2   r2   r3   test_subfigure  s    

r  c                  C   s8   t jdd} | dd}tj| | j j	d d S )NTr6   r   r   g       @)
r!   r"   r  r&   r@   rA   r  r   r  r   )r.   r  r2   r2   r3   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}qH|j||d |d | |d }|t d |d | jddd d S )Nry  Tr6   r   r   r   Zpink)r   r   rz  r{  r8   r|  r   r   r~  r  r  )r&   rC   r  r!   r"   r0  add_subfigurer9   r;   rB   rD   rE   r^   r$   r%   r'   rc   )r.   r/   r  rF   r0   rH   r2   r2   r3   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 ]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 )$Nry  T)r       r7   r   r.   r   r   gQ?)wspacer   Zcoralz
subfigs[0]z
subfigs[1]gffffff?)Zheight_ratioszsubfigsnest[0]rb   r      r   g      g      @r{  zx-labelr  zy-labelZTitler8   zsubfigsnest[1]rh   r   r  Zylabel	supxlabel	supylabel)r&   rC   r  r!   r"   r^   r  r   r9   rB   rD   r*   r(   rc   rE   r:   r  r  )
r.   ZsubfigsZsubfigsnestZaxsnest0r0   r  rH   Zaxsnest1rG   ZaxsRightr2   r2   r3   test_subfigure_double%  s6    
r  c               	   C   sX  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 ]}||   q8|   d S )NTr6   r   r.  r   r   r   i  i  g        r5   )r!   r"   r0  r  r&   r@   rA   r%  minmaxr)   r$   r<   )r.   r/   Zsub_figsr   r   r1   r2   r2   r3   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!<LgkX.8@i  i  )rg   rj   r   r  g YI_gRϫW@x   i,  )r!   r"   r  r0  r$   r#  r
  r<   Z
get_xticksr&   r@   rA   )	r.   Z	subfig_blZ	subfig_brr/   r   r`   r   Zticks120Zticks300r2   r2   r3   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 qd S )Nr   r   r   r   s)r  marker)r   r5   rM   )r   r   (   r   rb   )r  r  ri   rh   )r!   r"   r0  r$   r#  r  r9   )r.   r/   r   ZsfigrF   r0   r2   r2   r3   test_subfigure_scatter_size  s    r  c                  C   s   t  } | ddd}| ddd}|d us0J ||us<J t   t  } | jddddd}| jddddd}|d us|J ||usJ t   t  } | jddddd}| ddd}|d usJ |jdksJ ||usJ t   d S )Nr   rz   rt   rs   )r!   r"   r$   rO   rV  r.   r0   r   r2   r2   r3   test_add_subplot_kwargs  s&    r  c                  C   s   t  } | g d}| g d}|d us0J ||us<J t   t  } | jg ddd}| jg ddd}|d us|J ||usJ t   t  } | jg ddd}| g d}|d usJ |jdksJ ||usJ t   d S )Nrp   rz   rt   rs   )r!   r"   r}   rO   rV  r  r2   r2   r3   test_add_axes_kwargs  s&    r  c                    s~   t dd t \  fdd}td|   dgksFJ  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rv   r   r   )r   button_press_event	transDatar  r2   r0   r.   r2   r3   single_press  s    z!test_ginput.<locals>.single_pressrv   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_eventr2   r  r2   r3   multi_presses  s
    z"test_ginput.<locals>.multi_pressesr   r  r  )
r   r   r!   r9   r   startZginputr&   r@   rA   )recwarnr  r  r2   r  r3   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 sLJ td|jj	d  | du spJ d S )	Nr   r  rv   )timeout)rl   T)r   r   r   F)
r   r   r!   r"   Zwaitforbuttonpressr   r   r  r  r  )r  r.   r2   r2   r3   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   r  rd   )r.   Zsub_figr2   r2   r3   test_kwargs_pass  s    
r  )fr   r   pathlibr   platform	threadingr   typesr   r   Znumpyr&   rP   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.datesdatesr   Zmatplotlib.gridspecr#   machiner4   rI   rS   rT   ra   rf   ro   r   r   r   r   r   r   r   r   r   r   r   rv  rw  r   r,  contextr   r   infr   r   r   r   r   r   paramr   r   r   r   r   r  r  r  r   r"  r'  r+  r1  r2  r3  rx  r  r  r  r  r  r  r  r  r  r  r  r  r2   r2   r2   r3   <module>   s   
'#

?'

		
'


	



	


	
 t



(



