a
    
d1                     @   s  d dl 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mZmZ d dlmZ dRddZe	d	gd
ddd Ze	dgdd Ze	dgdd Ze	dgddddd Ze	dgdd Ze	dgdd Ze	d gd
dd!d" Ze	d#gd$d% Ze	d&gd'd( Zd)d* ZdSd.d/Ze	d0d1gd2d3 Zd4d5 Zej !d6d7d8gd9d: Z"d;d< Z#d=d> Z$d?d@ Z%dAdB Z&dCdD Z'ej (dEdFdG Z)dHdI Z*dJdK Z+dLdM Z,dNdO Z-dPdQ Z.dS )T    N)assert_array_equal)image_comparison)AnchoredOffsetboxDrawingArea)	Rectangle   c                 C   sH   |  ddg | jdd | jd|d | jd|d | jd|d d S )	N         Znbinsx-labelfontsizey-labelZTitle)plotlocator_params
set_xlabel
set_ylabel	set_title)axr    r   j/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/matplotlib/tests/test_tightlayout.pyexample_plot   s
    r   Ztight_layout1gffffff?)tolc                  C   s$   t  \} }t|dd t   dS )z'Test tight_layout for a single subplot.   r   Npltsubplotsr   tight_layoutfigr   r   r   r   test_tight_layout1   s    r!   Ztight_layout2c                  C   sJ   t jddd\} \\}}\}}t| t| t| t| t   dS )(Test tight_layout for multiple subplots.r	   )ZnrowsZncolsNr   )r    ax1ax2ax3ax4r   r   r   test_tight_layout2   s    r'   Ztight_layout3c                  C   sB   t d} t d}t d}t|  t| t| t   dS )r"         z   N)r   subplotr   r   )r#   r$   r%   r   r   r   test_tight_layout3)   s    


r,   Ztight_layout4)z2.5.5z2.6.1Q?)Zfreetype_versionr   c                  C   sj   t dd} t jdddd}t jddddd}t jdddd	}t|  t| t| t| t   d
S )z#Test tight_layout for subplot2grid.)r
   r
   r   r   )r   r   r	   )colspan)r   r   r/   rowspan)r   r	   )r1   N)r   subplot2gridr   r   )r#   r$   r%   r&   r   r   r   test_tight_layout45   s    r3   Ztight_layout5c                  C   s2   t  } tdd}| j|dd t   dS )zTest tight_layout for image.d   
   r6   none)interpolationN)r   r+   nparangereshapeZimshowr   )r   arrr   r   r   test_tight_layout5D   s    r=   Ztight_layout6c            	   	   C   sb  t  B t dt t } tjdd}| 	|d }| 	|d }t
| t
| |j| g dd tjdd}|D ]*}| 	|}t
| |d |d q~|jd	d
d |j| g ddd t|j|j}t|j|j}|j| dd||j  dd|j|  gd |j| dd||j  dd|j|  gdd W d   n1 sT0    Y  dS )zTest tight_layout for gridspec.ignorer	   r   r   )r   r         ?r   rectr
    r   r   r   )r?   r   r   r   g?)rA   Zh_padNr?   )warningscatch_warningssimplefilterUserWarningr   figuremplZgridspecZGridSpecadd_subplotr   r   r   r   mintopmaxbottom)	r    Zgs1r#   r$   Zgs2ssr   rK   rM   r   r   r   test_tight_layout6M   s6    

rO   Ztight_layout7c                  C   sr   d} t  \}}|ddg |jdd |jd| d |jd| d |jd	d
| d |jdd| d t   d S )Nr   r   r	   r
   r   r   r   r   z
Left Titleleft)locr   zRight Titleright)r   r   r   r   r   r   r   r   )r   r    r   r   r   r   test_tight_layout7w   s    rS   Ztight_layout8c                  C   s6   t  } | jddd |  }t|dd |   dS )#Test automatic use of tight_layout.Ztight皙?)Zlayoutpadr   r   N)r   rG   Zset_layout_enginerI   r   draw_without_renderingr   r   r   r   test_tight_layout8   s
    rX   Ztight_layout9c                  C   s.   t dd\} }|d d d t   d S )Nr	   r   F)r   r   set_visibler   )fZaxarrr   r   r   test_tight_layout9   s    r[   c                  C   s  t  } | d}|jjdddd |jjdddd |jjdddddd	 |jjdddddd	 |jjd
gdd |jjd
gdd | d}|jjdddd |jjdddd | d}|jjdddd |jjdddd | d}|jjdddd |jjdddd t   ddgddggddgddggddgddggddgddggg}t| j	D ](\}}t
t|  d||  q^dS )rT   r(   out   r
   )tickdirlengthwidth    Tminor)r^   r_   r`   Ztick1Onwhichr   )rb      inr)   Zinout   gK?gCl?gʡE?gB`"?gI+?g/$?gQ?gm?N)r   rG   rI   ZxaxisZset_tick_paramsZyaxisZ	set_ticksr   	enumerateaxesr   r9   roundget_positionZ
get_points)r    r   Zansnnr   r   r   test_outward_ticks   s>    





rl   r6   rU   blackc              
   C   s   |d|  }}| | f| df| |f|dfd|f||fd| f|| fd| fg	}|D ]P}t ||}td|||dddd}	||	 td|d	d|| jd	d
}
| |
 qZ|
S )z&
    Surround ax with OffsetBoxes
    r   r?   r.   Noner   F)r`   heightZ	facecolorZ	edgecolorZ	linewidthZantialiasedcenterg        )rQ   childrV   ZframeonZbbox_to_anchorZbbox_transformZ	borderpad)r   r   Z
add_artistr   	transAxes)r   sizemargincolormmpZanchor_pointsZpointdaZ
backgroundZanchored_boxr   r   r   add_offsetboxes   s4    

ry   Ztight_layout_offsetboxes1Ztight_layout_offsetboxes2c                     s   d g d ddg  fdd} |  }t   |  }|d d  D ]&}| D ]}t|trb|d qbqVt   d S )Nr	   )ZredZblueZgreenZyellowr   r   c                     sL   t \} }|j}t| D ]&\}}|j|d t|d|d q |S )N)ru      )r   r   Zflatzipr   ry   )_axsr   ru   colorscolsrowsxyr   r   	_subplots   s    z0test_tight_layout_offsetboxes.<locals>._subplotsF)r   r   Zget_children
isinstancer   rY   )r   r}   r   rq   r   r~   r   test_tight_layout_offsetboxes   s    	
r   c                  C   s   t  } |   dS )zETest that tight layout doesn't cause an error when there are no axes.N)r   Zgcfr   )r    r   r   r   test_empty_layout   s    r   labelZxlabelZylabelc                 C   s(   t jdd\}}|jf i | di dS )z8Test that no warning emitted when xlabel/ylabel too big.r
   r	   ZfigsizeZdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaN)r   r   set)r   r    r   r   r   r   test_verybig_decorators  s    r   c                  C   s4   t jdddd\} }|d d |d d dS )	z+Test that doesn't warn when xlabel too big.r   r	   r   r   r   ZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbN)r   r   r   r    r}   r   r   r   test_big_decorators_horizontal  s    r   c                  C   s4   t jdddd\} }|d d |d d dS )	z+Test that doesn't warn when ylabel too big.r	   r   r   r   r   ZaaaaaaaaaaaaaaaaaaaaZbbbbbbbbbbbbbbbbbbbbN)r   r   r   r   r   r   r   test_big_decorators_vertical  s    r   c                   C   sT   t dd t jddddd tt t   W d    n1 sF0    Y  d S )N)      r.   )r   r   )r   r
   r
   r   r0   )r   r2   pytestwarnsrF   r   r   r   r   r   test_badsubplotgrid  s    r   c                  C   s   t jdd\} }|ddg |ddg |jddddd	 | }tt0 t 	  | }|j
|j
ksrJ W d    n1 s0    Y  tt  t j	g d
d W d    n1 s0    Y  d S )NTr   r   r   zBIG LONG STRING)g      ?r	   )g      %@g      ?F)ZxyZxytextZannotation_clip)r   r   皙?r   r@   )r   r   Zset_xlimZset_ylimZannotaterj   r   r   rF   r   r`   )r    r   p1p2r   r   r   test_collapsed#  s    
.r   c                  C   sJ   t jdd\} }| d}|d}| j  | j| jksFJ d S )NTr   Zfoobar)	r   r   Zsuptitler   ZcanvasZdrawZget_window_extenty0y1)r    r   sttr   r   r   test_suptitle8  s
    


r   Zpdfc                    s@   t jjj  fdd}| t jjd| t \}}|  d S )Nc                    s.   t | tjjjsJ  | g|R i | d S )N)r   rH   backendsZbackend_pdfZRendererPdf)selfargskwargsZunpatched_initr   r   __init__D  s    z'test_non_agg_renderer.<locals>.__init__r   )rH   Zbackend_basesZRendererBaser   setattrr   r   r   )ZmonkeypatchZrecwarnr   r    r   r   r   r   test_non_agg_renderer@  s
    
r   c                  C   s   t dd\} }|d jddgddgddgd}|d  }| |jd |jd|jg}| j||d t	j
td	d
 |   W d    n1 s0    Y  d S )Nr   r	   r   r   )cg{Gzt?r-   )caxzThis figure includes Axesmatch)r   r   Zscatterrj   Zadd_axesx1r   ro   Zcolorbarr   r   rF   r   )r    rh   ZptsZax_rectr   r   r   r   test_manual_colorbarO  s     r   c            	      C   s   t dd} tjdd}|jddd}|jdd	d}|jd
dd}|||fD ]}|d || d d df \}|| }|	 sJ |	 sJ t
ddd|jd}|| || |  |	 rJ |	 rPJ qPd S )Nr4   r5   )   r	   r      Zrectilinear)Z
projection   Z	mollweide   ZpolarFr   r.   r?   )Z	transform)r9   r:   r;   r   rG   rI   Zgridr   ZpcolorZ_fully_clipped_to_axesr   rr   Zset_clip_pathget_pathZget_transform)	r<   r    r#   r$   r%   r   hrv   rA   r   r   r   test_clipped_to_axes\  s     


r   c                  C   sT   t  \} }tjtdd | ddi W d    n1 s>0    Y  |   d S )Nzwill be deprecatedr   rV   333333?)r   r   r   r   PendingDeprecationWarningset_tight_layoutrW   r   r   r   r   test_tight_padst  s    ,r   c                  C   s    t jddid\} }|   d S )NrV   r   r   )r   r   rW   r   r   r   r   test_tight_kwargs|  s    r   c                  C   s|   t  \} }ttR | d |  s.J | d |  rDJ | d |  sZJ W d    n1 sn0    Y  d S )NTF)r   r   r   r   r   r   Zget_tight_layoutr   r   r   r   test_tight_toggle  s    


r   )r   )r6   rU   rm   )/rC   numpyr9   Znumpy.testingr   r   Z
matplotlibrH   Zmatplotlib.testing.decoratorsr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.offsetboxr   r   Zmatplotlib.patchesr   r   r!   r'   r,   r3   r=   rO   rS   rX   r[   rl   ry   r   r   markZparametrizer   r   r   r   r   r   backendr   r   r   r   r   r   r   r   r   r   <module>   s`   







)

	
!


'
	

