a
    s=ic@                  	   @   s~  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 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 d dlmZmZ d d	lmZ d d
lmZmZ d dlmZmZmZ d dl m!Z!m"Z"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 Z0ed gd!d" Z1d#d$ Z2d%d& Z3d'd( Z4ed)gd*d+ Z5d,d- Z6ed.gddgd/d0d1d2d3d4 Z7d5d6 Z8d7d8 Z9d9d: Z:d;d< Z;d=d> Z<ej=>d?g d@dAdB Z?ej@AdCdDdE ZBej=>dFdGejCfdHejDdGfgdIdJ ZEdKdL ZFdMdN ZGdOdP ZHdQdR ZIdSdT ZJej=>dUejKdVej=LdVgdWejKdXej=LdXgdWgdYdZ ZMd[d\ ZNd]d^ ZOd_d` ZPeddagdbdcdd ZQej=>deg dfdgdh ZRdidj ZSdkdl ZTdmdn ZUej=>dodpdqgdrds ZVdtdu ZWej@Advdwdx ZXdydz ZYed{gdvd|d}d~dddd ZZeg ddbdd Z[G dd dZ\dd Z]edgdvdd}iddd Z^dd Z_dd Z`edgdvdd}idddd Zaedgdvdd}iddd Zbdd Zcej@Advdd Zdedgdvdddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkedgdbdd Zldd Zmdd ZndS )    N)datetime)Path)Timer)SimpleNamespace)Image)gridspec)image_comparisoncheck_figures_equal)Axes)Figure
FigureBase)ConstrainedLayoutEngineTightLayoutEnginePlaceHolderLayoutEngine)AutoMinorLocatorFixedFormatterScalarFormatterZfigure_align_labelspngsvgx86_64{Gz?)
extensionstolc                  C   s  t jdd} tdd}| |dd df }|tddd |d | |d	 }|tdd
d t	dD ]}| |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 )Ntightlayout   r      g    .A  z	Ylabel0 0)r   g     @d      z
YLabel1 %dz
XLabel1 %d)r   r   topZ   rightzXLabel2 zYLabel2 
   )pltfigurer   Z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 r6   m/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_figure.pytest_align_labels   s>    



r8   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   BooZWho   r!   r   Tconstrained_layoutr%   r4   )r&   subplots	enumerateflatr.   r)   r*   r+   Zalign_ylabelsZalign_xlabelsdraw_without_renderingzerosr/   labelget_positionr1   testingassert_allclose
pcolormeshrandomrandncolorbar)r2   axsnnr4   ZxnZynpcr6   r6   r7   test_align_labels_stray_axesE   s>    

"

"



rN   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   r:      ) rP   rS   rQ   rS   r%   rR   rS   )
r&   closer'   Zget_fignumsZget_figlabelsZgcfpytestraises
ValueErrorr   )Z	fig_todayr6   r6   r7   test_figure_labelh   s(    










rX   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 )Noner   threer:   )r&   r'   Zfignum_existsrT   r6   r6   r6   r7   test_fignum_exists   s    




r[   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 r6   Zget_text.0tr6   r6   r7   
<listcomp>       z$test_clf_keyword.<locals>.<listcomp>F)r\   clear      ?c                 S   s   g | ]}|  qS r6   r]   r^   r6   r6   r7   ra      rb   r   Tc                 S   s   g | ]}|  qS r6   r]   r^   r6   r6   r7   ra      rb   )r&   r'   suptitleZtextstextr>   )Ztext1Ztext2Zfig0fig1fig2ax2r6   r6   r7   test_clf_keyword   s    
rj   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 )NrP   rR   rQ   r   r!   r)	r&   r'   r(   	set_title	get_labelr)   r*   r+   rT   )r2   r4   r6   r6   r7   test_figure   s    


rn   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)rC   coloryrk   rd   kZ_yzb)r&   r>   r)   legendr2   rK   r6   r6   r7   test_figure_legend   s    rx   c                  C   s   t  } | g d}|  |u s&J | d}|  |u s@J | | | j||gks\J |  |u slJ | | | j||gksJ | | | j||gksJ |  |u sJ d S )Nr   r   r!   r!   o   )r&   r'   add_axesZgcar(   axesZsca)r2   ax0ax1r6   r6   r7   test_gca   s    



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   
projectionT)r   polar)r   r   *   r   )r&   r'   r(   r
   rU   rV   rW   	TypeErrorr2   r6   r6   r7   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 integermatchr   r   r!   z)Number of rows must be a positive integerznum must be 1 <= num <= 4rR   zmust be a three-digit integerr   r   z2takes 1 or 3 positional arguments but 2 were givenz2takes 1 or 3 positional arguments but 4 were givenr   r:   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'   rU   rV   rW   r(   r   r>   r2   _r4   r6   r6   r7   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hellork   )rq   titlerp      )rq   Zrotation)r&   r>   re   )r2   r   r6   r6   r7   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)sizeweightzfontprops title)Zfontproperties)	r&   r>   mplZfont_managerZFontPropertiesre   Zget_fontsizeZget_size_in_pointsZ
get_weight)r2   r4   Zfpstxtr6   r6   r7   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         333333?red)Zradiusalphar   )	r&   r'   set_facecolorpatchZ	set_alphaZpatchesappendr   ZCirclePolygonr   r6   r6   r7   
test_alpha  s    
r   c                  C   sN   t t0 ttjd d D ]} t  qW d    n1 s@0    Y  d S )Nzfigure.max_open_warningr!   )rU   warnsRuntimeWarningr-   r   ZrcParamsr&   r'   )r5   r6   r6   r7   test_too_many_figures,  s    r   c                     sL   G dd dt  G  fddd} t }|jddd|  d t| d S )Nc                   @   s   e Zd ZddddZdS )z.test_iterability_axes_argument.<locals>.MyAxesN)myclassc                _   s   t j| g|R i | d S N)r
   __init__)selfr   argskwargsr6   r6   r7   r   >  s    z7test_iterability_axes_argument.<locals>.MyAxes.__init__)__name__
__module____qualname__r   r6   r6   r6   r7   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)rW   )r   itemr6   r6   r7   __getitem__C  s    z;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s    d| ifS )Nr   r6   r   r   r6   r7   _as_mpl_axesG  s    z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)r   r   r   r   r   r6   r   r6   r7   MyClassA  s   r   r!   r   )r
   r&   r'   r(   rT   )r   r2   r6   r   r7   test_iterability_axes_argument2  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 )NrR   r!   r   r:   )r!   r   r   )r&   r'   Zset_figwidthZget_figwidthZset_figheightZget_figheightset_size_inchesr   r6   r6   r7   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&   r>   removeZravelr|   lenr2   rK   r4   r6   r6   r7   test_axes_removee  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   rd   )r   r   )r&   Z	figaspectr*   float64rB   )whr6   r6   r7   test_figaspectn  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   r:   rR         r   ignorez=FixedFormatter should only be used together with FixedLocator皙?r$   )r   r   r   Fr   )r   r   Tr   )mdatesZdatestr2numr&   r>   r)   Z
yaxis_dateZ
xaxis_dater/   Zset_minor_locatorr   warningscatch_warningsfilterwarningsZset_minor_formatterr   Zautofmt_xdater|   r0   intZget_rotation)
r   datetimeZangleZminorsro   rr   r2   r4   rC   r6   r6   r7   test_autofmt_xdatey  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)r:   r:   r   i  2      )r&   r'   rA   canvasrendererheightwidthdpir   r6   r6   r7   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   )rU   rV   rW   r&   r'   r   )r   r   r2   r6   r6   r7   test_invalid_figure_size  s
    .r   c                  C   s  t  } tjtdd |   W d    n1 s40    Y  tt$ | dddtjf W d    n1 sr0    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 )	Nz.missing 1 required positional argument: 'rect'r   皙?rd   z#multiple values for argument 'rect'ry   )rectz5The Axes must have been created in the present figure)
r&   r'   rU   rV   r   r{   rW   r*   nanr>   r   r6   r6   r7   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   r   logr   r   )r   r!   )
r&   r>   r@   r)   
set_yscaleZ
set_xscaler   r/   Zget_ticklabelsr1   r   r6   r6   r7   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 givenr   z
fname1.pngz
fname2.png)r&   r'   rU   rV   r   savefig)r2   msgr6   r6   r7   test_savefig  s    r   c               	   C   sT   t  } dD ]B}tt$ | jt |dd W d    q1 sD0    Y  qd S )N)r   pdfr   ZtifZjpgT)formatZnon_existent_kwarg)r&   r'   rU   rV   r   r   ioBytesIO)r2   r   r6   r6   r7   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'r   testzmodule://@absent)backendz-The 'pdf' backend does not support png outputztest.pngr   )r&   r'   rU   rV   ModuleNotFoundErrorr   rW   r   r6   r6   r7   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&   r>   r)   r   r   r   r   openloadr   _set_device_pixel_ratio)r   r2   r4   bufZratio1Zratio2r6   r6   r7   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   r6   r6   r7   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 )Nr   r   constrained)r   Zget_tight_layoutZget_constrained_layoutr   r6   r6   r7   test_valid_layouts  s    


r  c                  C   s  t jdd\} }tt | jdd W d    n1 s<0    Y  t|  tsXJ d}tjt|d t	ddd	} W d    n1 s0    Y  t|  t
sJ d
}tjt|d t	ddd} W d    n1 s0    Y  t|  t
rJ t|  tsJ tjtdd t	dd W d    n1 s<0    Y  t jdd\} }| d t|  t
stJ | d t|  tsJ t jdd\} }|tjdd}| | tjtdd | d W d    n1 s0    Y  | d tjtdd | d W d    n1 s40    Y  t jdd\} }|tjdd}| | tjtdd | d W d    n1 s0    Y  | d t|  tsJ tjtdd | d W d    n1 s0    Y  d S )Nr   r   皙?)r"   z1The Figure parameters 'layout' and 'tight_layout'r   r   F)r   Ztight_layoutz7The Figure parameters 'layout' and 'constrained_layout')r   r<   zInvalid value for 'layout'Zfoobarr   zColorbar layout of new layoutr   )r&   r>   rU   r   UserWarningZsubplots_adjust
isinstanceZget_layout_enginer   r   r   rV   rW   set_layout_enginerG   r*   rH   rI   rJ   RuntimeErrorr   )r2   r4   ZwstrM   r6   r6   r7   test_invalid_layouts%  sN    ****


*
*
*
r  r   r   c           	   	   C   s0  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)gidr  l2)r   r   ZC1)	transformr  )r	  rd   皙?ZC2)g      @r  g?ZcrimsonZC3)r  r   r     )r  r  zorderFr   )r  clip_onr  r  )r  r   r  r  r  )	r   r>   r&   ZLine2DZCircleZdpi_scale_transZ
add_artistr   ZtransFigure)	fig_testfig_refr
  r  r1r2Zr3r   ri   r6   r6   r7   test_add_artistY  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filer6   r6   r7   test_fspathv  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      ?rd   zThis dangles over endgR"@r   r  g|?5^?FgET@T)Zbbox_extra_artists)r&   r>   set_xlimrf   r   get_rendererabsget_tightbboxx1r   x0Zset_in_layout)r2   r4   r`   r   Zx1Nom0Zx1Nomr6   r6   r7   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&   r>   r   r)   r   r  r/   Zget_major_formatterr   ZAutoDateFormatterZset_major_formatterr   rw   r6   r6   r7   test_axes_removal  s    ((r)  c                  C   s,   t jddd\} }|d   | j  d S )Nr   Tr(  r   )r&   r>   r   r   drawrw   r6   r6   r7   test_removed_axis  s    r+  
clear_methrc   clfc                    s"  t       jg ksJ  d}t |    jg ksBJ  fddtdD }t |    jg ksrJ  jddd d }|d}t |   | j	vsJ  jg ksJ  d }|d} d }|
   j|gksJ  d }|
   j|gks&J | j	v s6J |d}| jv sPJ | jv s`J t||   | j	v s|J ||jvsJ | jvsJ | jv sJ |d}t |    jg ksJ  j	g ksJ  fddd	D }d
d |D }t fdd|D s J t fdd|D s<J t|d |   |d  jvs`J |d  jv stJ |d  j	v sJ t|d |    fddd	D }dd |D }t fdd|D sJ t fdd|D sJ t |    j	g ksJ  jg ksJ d S )Nrz   c                    s   g | ]}  d d|d qS r   r!   r(   r_   r5   r   r6   r7   ra     rb   z%test_figure_clear.<locals>.<listcomp>r   r!   )ncolsnrowsr   c                    s   g | ]}  | qS r6   add_subfigurer0  r2   r3   r6   r7   ra     rb   r   r!   c                 S   s   g | ]}| d qS rz   r/  r_   sfigr6   r6   r7   ra     rb   c                 3   s   | ]}| j v V  qd S r   r|   r_   r4   r   r6   r7   	<genexpr>  rb   z$test_figure_clear.<locals>.<genexpr>c                 3   s   | ]}| j v V  qd S r   subfigsr8  r   r6   r7   r<    rb   c                    s   g | ]}  | qS r6   r3  r0  r5  r6   r7   ra     rb   c                 S   s   g | ]}| d qS r7  r/  r8  r6   r6   r7   ra     rb   c                 3   s   | ]}| j v V  qd S r   r:  r;  r   r6   r7   r<    rb   c                 3   s   | ]}| j v V  qd S r   r=  r8  r   r6   r7   r<    rb   )r&   r'   rc   r|   r(   getattrr-   add_gridspecr4  r>  r   rO   )r,  r4   r|   ZsubfigZsubaxesZmainaxesr>  r6   r5  r7   test_figure_clear  sh    




rA  c                  C   s    t  D ]} d| jvsJ qd S )Nr-  )r   __subclasses____dict__)klassr6   r6   r7   test_clf_not_redefined  s    rE  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   )ro   rr   ZinaxesZguiEvent)r&   r>   scatterr   r*  staler   bboxr&  r   Zy0r   pick)r2   r4   Zmouse_eventr6   r6   r7   test_picking_does_not_stale
  s    


rJ  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   rR   r!   r   )r:   r   )r   r   )r:   rR   )r   r   )
r&   r'   r(   get_subplotspecZrowspanr-   colspanrU   rV   
IndexError)r2   r~   ri   ax3Zax4r6   r6   r7   test_add_subplot_twotuple  s    rP  ztightbbox_box_aspect.svgr   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   r6  r   r   rd   )r   r!   r!   )r&   r'   r@  r(   Zset_box_aspect)r2   r3   r~   ri   r6   r6   r7   test_tightbbox_box_aspect*  s    
rU  )r   r   r  r   c                 C   s4   |  }|td |   }|jtddd d S )NrR   T)Zanimated)r>   r)   r-   )r  r  Zax_refZax_testr6   r6   r7    test_animated_with_canvas_change7  s    rV  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  ro   )ArX  B)CDrY  )r!   r!   r   )r   r:   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itemsrl   sortedr*   uniquer   r@  r(   )r   r  r  ro   	grid_axesrs   r4   labelsr3   axAaxBaxCaxDr6   r6   r7   
test_basicA  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 )NrX  rY  rZ  r[  EFGHr   r!   r   rT  r6  )	r  r^  valuesrl   rm   r@  subgridspecr?   r(   )r   r  r  ro   rr   rb  r4   r3   Zgs_leftjrk   rs   rC   Zgs_rightr6   r6   r7   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 )Nr   rX  rY  rZ  r[  rj  r   r!   r\  rT  r6  r]  )r  r^  r_  rl   r@  rn  r(   )r   r  r  ro   rr   rb  rs   r4   r3   Zgs_nrd  re  rf  rg  ZaxFr6   r6   r7   test_nesteds  s&    






zTestSubplotMosaic.test_nestedc                 C   s<   g dg dg}d}| dg|gg | dg|gg d S )NrX  rY  rY  rZ  rZ  r[  )rr  rs  rj  )r^  )r   r  r  ro   Zxtr6   r6   r7   test_nested_tuple  s    z#TestSubplotMosaic.test_nested_tuplezx, empty_sentinelrX  NrY  .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 )Nrv  empty_sentinelc                 S   s   h | ]}|D ]}|qqS r6   r6   )r_   rownamer6   r6   r7   	<setcomp>  rb   z/TestSubplotMosaic.test_empty.<locals>.<setcomp>ru  r   rT  r   r]  r!   )r^  r_  rl   r`  r   r@  r(   )r   r  r  ro   rw  r   rb  rs   r4   rc  r3   rd  re  r6   r6   r7   
test_empty  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 2Dr   Zfoobar)rU   rV   rW   r&   r^  r   r6   r6   r7   test_fail_list_of_str  s    ,z'TestSubplotMosaic.test_fail_list_of_str
subplot_kwr   r   c           	      C   s\   ddgg}|j ||d}|pi }|dd}|j|d fi |}|j|d fi |}d S )Nr!   r   )r~  rT  r6  )r^  r@  r(   )	r   r  r  r~  ro   rb  r3   rd  re  r6   r6   r7   test_subplot_kw  s    
z!TestSubplotMosaic.test_subplot_kwc                 C   s   t j}|dg dgksJ |dddgddggk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)rX  rY  rZ  zAB;CCrX  rY  rZ  zAB;CC;DEr[  ri  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Z_normalize_grid_string)r   	normalizer6   r6   r7   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 r6   )list)r_   lnr6   r6   r7   ra     rb   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>
)r^  stripsplit)r   r  r  r  rb  r6   r6   r7   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.rZ  r[  z4There are duplicate keys .* between the outer layout)z	AAA
c
BBB'All of the rows must be the same lengthri  r  c                 C   sD   t  }tjt|d || W d    n1 s60    Y  d S )Nr   )r&   r'   rU   rV   rW   r^  )r   ro   r   r2   r6   r6   r7   	test_fail  s    zTestSubplotMosaic.test_failc                 C   s(   | t t gg | ddgg d S )NrX  rY  )r^  object)r   r  r  r6   r6   r7   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^  r  r|   rm  )r   r  r2   ax_dictr6   r6   r7   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 )NrX  rY  rZ  r[  ri  rj  rk  ru  rl  IZ	ABCDEFGHIr  r   r   r2   r  r6   r6   r7   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 )NrX  rY  rZ  r[  ri  rj  rk  ru  rl  r  T)r   r   r   logit)ZxscaleZyscalec                 s   s&   | ]}|  d ko| dkV  qdS )r   r  N)Z
get_xscale
get_yscaler;  r6   r6   r7   r<  /  s   z3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r&   r'   r^  setrO   rm  r  r6   r6   r7   test_share_all$  s    z TestSubplotMosaic.test_share_all)r   r   r   r	   rU   markparametrizerh  rp  rq  rt  r{  r}  r  r  r  r  r  r  r  r  r6   r6   r6   r7   rW  @  sp   
 



!









rW  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   rK  r:   )r   r   r.  )rM  r2   N)r&   r'   r(   Zsubplot2gridrL  Zget_gridspec)r2   r~   ri   rO  Zgs1Zgs2Zgs3r6   r6   r7   test_reused_gridspec3  s    r  ztest_subfigure.pngr   )rR  r   c                  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,r   r   r!   r   r   r   ZvminZvmaxr=   	Left Sider   bottom)r4   locationz
Right SideFigure suptitlexx-largefontsize)r*   rH   seedr&   r'   
subfiguresr>   r@   rG   rI   rJ   re   )r2   subrK   r4   rM   r6   r6   r7   test_subfigureB  s    

r  c                  C   s8   t jdd} | dd}tj| | j j	d d S )Nr   r   r!   r   g       @)
r&   r'   r  r*   rE   rF   r$  r   r"  r   )r2   r  r6   r6   r7   test_subfigure_tightbboxX  s    r  c                  C   sV   t jdd} |  }| |  ks(J |d | dksBJ |  dksRJ d S )Nr    r   r   )r&   r'   r  Zget_dpiZset_dpir2   sub_figr6   r6   r7   test_subfigure_dpib  s    
r  ztest_subfigure_ss.pngg{Gz?)rR  r   r   c                  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 )Nr  r   r   r!   r   r   Zpink)r   r   r  r  r=   r  r   r
   r  r  r  )r*   rH   r  r&   r'   r@  r4  r>   r@   rG   rI   rJ   re   r(   r)   r+   rl   )r2   r3   r  rK   r4   rM   r6   r6   r7   test_subfigure_ssl  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 )%Nr  r   )r%      )r   r   r2   r!   r   gQ?)wspacer   Zcoralz
subfigs[0]z
subfigs[1]gffffff?)Zheight_ratioszsubfigsnest[0]rk   Tr      r   g      g      @r  zx-labelr  zy-labelTitler=   zsubfigsnest[1]rp   r   r(  ylabel	supxlabel	supylabel)r*   rH   r  r&   r'   re   r  r   r>   rG   rI   r.   r,   rl   rJ   r?   r  r  )
r2   r>  ZsubfigsnestZaxsnest0r4   r  rM   Zaxsnest1rL   ZaxsRightr6   r6   r7   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 )NTr;   r   rT  r   r   r!   i  i  g        r:   )r&   r'   r@  r4  r*   rE   rF   rH  minmaxr-   r(   rA   )r2   r3   Zsub_figsr   r   r5   r6   r6   r7   test_subfigure_spanning  s$    """r  c            	      C   s   t jddd} | jdddddgd\}}|jdd	d
}||dd df }|jddgddgd |j|dddf |d}|jddgddgd |j|ddd	f |d}d| _|   | }d| _|   | }t	j
|| d S )NT)r%   r   )r<   r   r!   r   r   r   )r  Zwidth_ratios   )r2  r1  r   g!<LgkX.8@i  i  )ro   rr   r   r  g YI_gRϫW@x   i,  )r&   r'   r  r@  r(   rF  r   rA   Z
get_xticksr*   rE   rF   )	r2   Z	subfig_blZ	subfig_brr3   r~   ri   rO  Zticks120Zticks300r6   r6   r7   test_subfigure_ticks  s"    

r  ztest_subfigure_scatter_size.png)rR  rS  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   r:   rR   )r   r   (   r   rk   )r  r  rq   rp   )r&   r'   r@  r(   rF  r4  r>   )r2   r3   r}   r9  rK   r4   r6   r6   r7   test_subfigure_scatter_size  s    r  c                  C   sN   t jdd} |  }|d}|dd}|| t }| j|dd d S )Nr   r   rz   r!   r   r   )	r&   r'   r  r(   r|  Z	bar_labelr   r   r   )r2   r  r4   ru   bufferr6   r6   r7   test_subfigure_pdf  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!   r   r   rectilinear)r&   r'   r(   rT   ry  r2   r4   r~   r6   r6   r7   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 )Nry   r   r   r  )r&   r'   r{   rT   ry  r  r6   r6   r7   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r   r   r!   )r   button_press_event	transDatar  r6   r4   r2   r6   r7   single_press7  s    z!test_ginput.<locals>.single_pressr   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   rd   r   rT  r   )r   r  r  r  key_press_eventr6   r  r6   r7   multi_presses=  s
    z"test_ginput.<locals>.multi_pressesr   r  r  )
r   r   r&   r>   r   startZginputr*   rE   rF   )recwarnr  r  r6   r  r7   test_ginput3  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  r   )timeout)rt   T)r   r   r!   F)
r   r   r&   r'   Zwaitforbuttonpressr   r   r  r  r  )r  r2   r6   r6   r7   test_waitforbuttonpressH  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)rC   r!   z
sub figure)r   r  rm   r  r6   r6   r7   test_kwargs_passR  s    
r  c                 C   s   |j dddd |jdddd |jdddd tddddd	. |  d | d | d W d    n1 sx0    Y  d S )
NZxlabelr   r   )r   r   r  r  lightr   )zfigure.labelweightzfigure.labelsizezfigure.titleweightzfigure.titlesize)r  r  re   r   Z
rc_context)r  r  r6   r6   r7   test_rcparamsZ  s    


r  c                  C   s   t  \} }|ddgddg |d t| }|jd |usFJ |jd  dks\J |jd d | dks|J |dd | 	  |	  |
 d	ksJ |jd 
 d
ksJ d S )Nr   r!   r   r   r   Zlinearr         Y@)r   r  r6  )r&   r>   r)   r   copydeepcopyr|   r  r!  rA   Zget_xlim)rg   r4   rh   r6   r6   r7   test_deepcopyh  s    

r  c                  C   sF   t dd} | jd | jdks$J tt| }|jdksBJ d S )Nr   r  r   i&  )r   r   r   r   pickleloadsdumps)r2   rh   r6   r6   r7   %test_unpickle_with_device_pixel_ratio  s
    
r  )or  r   r   pathlibr   r  platform	threadingr   typesr   r   numpyr*   rU   ZPILr   Z
matplotlibr   r   Zmatplotlib.testing.decoratorsr   r	   Zmatplotlib.axesr
   Zmatplotlib.figurer   r   Zmatplotlib.layout_enginer   r   r   Zmatplotlib.tickerr   r   r   Zmatplotlib.pyplotZpyplotr&   Zmatplotlib.datesdatesr   machiner8   rN   rX   r[   rj   rn   rx   r   r   r   r   r   r   r   r   r   r   r   r  r  r   rR  contextr   r   infr   r   r   r   r   r   paramr   r   r   r  r  r  r   r'  r)  r+  rA  rE  rJ  rP  rU  rV  rW  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r6   r6   r6   r7   <module>   s  
'#

'

		
'


	

4

	
Q


	
 t




(






