o
    li%                     @   s  d dl Z d dl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 Zdd Zdd	 Zd
d Zdd Zdd Zdd Zedgdd Zejdddgejdddgejdddgejdddgdd Zejdddgejdddgdd  Zd!d" Zd#d$ Zejd%dg d&gejd'dd(d)gged*gd+d,d- Zejd%dg d&gejd'dd(d)gged*gd+d.d/ Zejd0d1d2gd3d4 Zd5d6 ZdS )7    N)AxesSubplotBase)check_figures_equalimage_comparisonc           
   	   C   s   t t| t| ttd||gD ]5\\}}\}}\}\}}	||kr$q| d j| |||	||f ksGJ d|||	||f rAdnd|f qdS )z
    x_shared and y_shared are n x n boolean matrices; entry (i, j) indicates
    whether the x (or y) axes of subplots i and j should be shared.
    xyr   z,axes %i and %i incorrectly %ssharing %s axisznot  N)	itertoolsproduct	enumeratezip_shared_axesjoined)
axsx_sharedy_sharedi1ax1i2ax2i3nameshared r   \/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/matplotlib/tests/test_subplots.pycheck_shared   s   $r   c                 C   s   t t| ||D ]S\}\}}}| |jjg D ]}| |ks*J d| d| q| |jjg D ]}| |ksFJ d| d| q4|sQ| dksQJ |s[|	 dks[J qd S )NzVisibility of x axis #z is incorrectly zVisibility of y axis #r   )
r
   r   get_xticklabelsxaxis
offsetTextget_visibleget_yticklabelsyaxis
get_xlabel
get_ylabel)r   	x_visible	y_visibleiaxvxvylr   r   r   check_visible   s   r*   c               
   C   s  d} t j| d d tdt j| d d tdt g dg dg dg dgt g dg dg dg dgd}g d	g d	d
gd d
gd d
gd g d	dg dd
gd g dd
gd d
gd g ddd}|d |d< |d |d
< tdd\}\\}}\}}||||g}t||d |d  t| g d}	|	D ];}
|	D ]6}tjdd|
|d\}\\}}\}}||||g}t|||
 ||  t	||d |
 |d |  t| qqtjddd
d
d\}\\}}\}}||||g}|D ]}|j
ddd |  qt	|g d	g d d S )N)   r+      r,   )dtype)FTFF)TFFF)FFFT)FFTF)allnonerowcol)FFTTTr+   )r.   r1   r0   r/   FT)TFTF)xyr/   Fr.   )FTr.   r/   r0   r1   r      sharexshareyr2   r3   foobarxlabelylabel)nponesboolzerosarraypltsubplotsr   closer*   setlabel_outer)rdimsharevisiblefa1a2a3a4r   opsxoyor&   r   r   r   test_shared+   sh   	
""
rR   c                  C   s   t  } | dd}| |dddf }| |dddf }| |d }| |d }| jD ]}|  q1t| jg dg d d S )	N   r   r,   r4   )r4   r,   )r,   r4   )FTFT)TTFF)rB   figureadd_gridspecadd_subplotaxesrF   r*   )figgsrK   rL   rM   rN   r&   r   r   r   test_label_outer_spani   s   

rZ   c                  C   s,   t g d} |   t| gdgdg d S )Nr   r   r4   r4   T)rB   rW   rF   r*   )r&   r   r   r   test_label_outer_non_gridspec}   s   r\   c                  C   s   t jdddd\} \}}t|gdgdg |j  t|gdgdg t jdddd\} \}}t|gdgdg |j  t|gdgdg d S )Nr4   r,   Tr7   Fr6   )rB   rC   r*   r    	tick_leftr   tick_bottom)rJ   rK   rL   r   r   r   test_shared_and_moved   s   

ra   c                   C   sz   t t tjdddd W d    n1 sw   Y  t t tjdddd W d    d S 1 s6w   Y  d S )Nr,   blahr^   r]   )pytestraises
ValueErrorrB   rC   r   r   r   r   test_exceptions   s   "rf   subplots_offset_textc                  C   sz   t ddd} t dddd }tjdddd	d
\}}|d | |  |d | |  |d ||  |d ||  d S )Nr   g    _Bg    eAd   
   g     @r,   r1   r.   r5   )r   r   )r4   r   )r   r4   )r4   r4   )r=   arangerB   rC   plot)r2   r3   rX   r   r   r   r   test_subplots_offsettext   s   rl   topTFbottomleftrightc                 C   s   t | |||d t  jddddd}W d    n1 s w   Y  t|D ]F\\}}}|jjd }|jjd }	|jjd }
|jjd }|| oN|dkksRJ |	|oX|dkks\J |
|ob|dkksfJ ||ol|dkkspJ q*d S )	N)zxtick.labeltopzxtick.labelbottomzytick.labelleftzytick.labelrightrS   Tr5   label2Onlabel1Onr   r,   )	rB   
rc_contextrT   rC   r=   ndenumerater   _major_tick_kwr    )rm   rn   ro   rp   r   r%   jr&   xtopxbottomyleftyrightr   r   r   test_subplots_hide_ticklabels   s   
r{   xlabel_positionylabel_positionc                 C   s   t  jddddd}t|D ]M\\}}}|jddd |j|  |j| |	  t
| | dkr:|dkpA| d	koA|d
kksEJ t
| |dkrR|d
kpY|dkoY|dkks]J qd S )NrS   Tr5   r8   r9   r:   rn   r,   rm   r   ro   rp   )rB   rT   rC   r=   rt   rE   r   set_label_positionr    rF   r?   r!   r"   )r|   r}   r   r%   rv   r&   r   r   r   test_subplots_hide_axislabels   s   


r   c                  C   s(   t  \} }|  | ksJ d S )N)rB   rC   get_subplotspecget_gridspec)rX   r&   r   r   r   test_get_gridspec   s   r   c                  C   sR   ddi} dddgi}t jdd| |d\}}| ddiksJ |dddgiks'J d S )Nr6   r.   width_ratiosr4   r,   )
subplot_kwgridspec_kw)rB   rC   )r   r   rX   r&   r   r   r   test_dont_mutate_kwargs   s   

r   r   )r4   rS   r,   height_ratiosr4   r,   png)
extensionsc                 C   s,   | j dd||d |j dd||dd d S )Nr,   rS   r   r   r   )rC   )fig_testfig_refr   r   r   r   r   test_width_and_height_ratios   s   
r   c                 C   s8   g dg dg}| j |||d |j |||dd d S )N)ABr   )r   CDr   r   )subplot_mosaic)r   r   r   r   mosaic_specr   r   r   #test_width_and_height_ratios_mosaic   s   r   zmethod,args)rC   )r,   rS   )r   )zabc;defc                 C   s   t jtdd tt| |ddgdddgid W d    n1 s#w   Y  t jtdd tt| |g ddg did W d    d S 1 sLw   Y  d S )	Nr   )matchr4   r,   )r   r   r   )r4   r,   rS   )r   r   )rc   rd   re   getattrrB   )methodargsr   r   r   test_ratio_overlapping_kws   s   



"r   c                  C   sz   t  } t|  tsJ t| jg ddtrJ tt t	| g dg dd W d    d S 1 s6w   Y  d S )Nr[   )rect)
rB   rT   
isinstancerV   r   add_axesrc   rd   	TypeErrorr   )rX   r   r   r   test_old_subplot_compat  s   "r   )r   numpyr=   rc   matplotlib.axesr   r   matplotlib.pyplotpyplotrB   matplotlib.testing.decoratorsr   r   r   r*   rR   rZ   r\   ra   rf   rl   markparametrizer{   r   r   r   r   r   r   r   r   r   r   r   <module>   sN    >

	
	


	