o
    ĎiJ+                     @   s*  d dl Z d dlZ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ejdddgejdg dejdddgdd Zdd Zdd Zdd Zdd Zedge dkrtd ndd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d0dg d1gejd2dd3d4gged5gd6d7d8 Z!ejd0dg d1gejd2dd3d4gged5gd6d9d: Z"ejd;d<d=gd>d? Z#d@dA Z$dS )B    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   Z/home/jeff/fluffinator/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 )z<Check that the x and y ticklabel visibility is as specified.zVisibility of x axis #z is incorrectly zVisibility of y axis #r   N)
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_ticklabel_visible   s   r*   c                 C   sp   t | |D ]\}}|j D ]}|j |ksJ qqt | |D ]\}}|j D ]}|j |ks4J q)q dS )z
    Check that the x and y tick visibility is as specified.

    Note: This only checks the tick1line, i.e. bottom / left ticks.
    N)r   r   get_major_ticks	tick1liner   r    )r   r#   r$   r&   visibletickr   r   r   check_tick1_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| qqd S )N)   r0      r1   )dtype)FTFF)TFFF)FFFT)FFTF)allnonerowcolFFTTTr0   )r3   r6   r5   r4   FTTFTF)xyr4   Fr3   )FTr3   r4   r5   r6   r      sharexshareyr9   r:   )
nponesboolzerosarraypltsubplotsr   closer*   )rdimsharer-   fa1a2a3a4r   opsxoyor   r   r   test_shared<   s^   	
"rQ   remove_ticksTFlayout_engine)r4   tightconstrainedwith_colorbarc                 C   s   t j|d}|jddddd}|jD ]}|jddd |r'|jtj |d |j	| d	 qt
|jg d
g d | rHt|jg d
g d d S t|jg dg d d S )N)layoutr1   Tr<   foobarxlabelylabelr&   )remove_inner_ticksr7   r8   )TTTT)rD   figurerE   flatsetcolorbarmplcmScalarMappablelabel_outerr*   r/   )rR   rS   rV   figr   r&   r   r   r   test_label_outerr   s"   
rh   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   r1   r;   )r;   r1   )r1   r;   )FTFT)TTFF)rD   r_   add_gridspecadd_subplotaxesrf   r*   )rg   gsrJ   rK   rL   rM   r&   r   r   r   test_label_outer_span   s   

rn   c                  C   s(   t d} |   t| gdgdg d S )Nr   r   r;   r;   T)rD   rl   rf   r*   r]   r   r   r   test_label_outer_non_gridspec   s   
rp   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 )Nr;   r1   Tr>   Fr=   )rD   rE   r*   r    	tick_leftr   tick_bottom)rI   rJ   rK   r   r   r   test_shared_and_moved   s   

ru   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 )Nr1   blahrr   rq   )pytestraises
ValueErrorrD   rE   r   r   r   r   test_exceptions   s   "rz   zsubplots_offset_text.pngx86_64gy&1?)tolc                  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     @r1   r6   r3   r<   )r   r   )r;   r   )r   r;   )r;   r;   )r?   arangerD   rE   plot)r9   r:   rg   r   r   r   r   test_subplots_offsettext   s   r   top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.labelrightri   Tr<   label2Onlabel1Onr   r1   )	rD   
rc_contextr_   rE   r?   ndenumerater   _major_tick_kwr    )r   r   r   r   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 )Nri   Tr<   rX   rY   rZ   r   r1   r   r   r   r   )rD   r_   rE   r?   r   ra   r   set_label_positionr    rf   rA   r!   r"   )r   r   r   r%   r   r&   r   r   r   test_subplots_hide_axislabels   s   


r   c                  C   s(   t  \} }|  | ksJ d S )N)rD   rE   get_subplotspecget_gridspec)rg   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 )Nr=   r3   width_ratiosr;   r1   )
subplot_kwgridspec_kw)rD   rE   )r   r   rg   r&   r   r   r   test_dont_mutate_kwargs   s   

r   r   )r;   ri   r1   height_ratiosr;   r1   png)
extensionsc                 C   s,   | j dd||d |j dd||dd d S )Nr1   ri   r   r   r   )rE   )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)rE   )r1   ri   )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   )matchr;   r1   )r   r   r   )r;   r1   ri   )r   r   )rw   rx   ry   getattrrD   )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 )Nro   )rect)
rD   r_   
isinstancerk   r   add_axesrw   rx   	TypeErrorr   )rg   r   r   r   test_old_subplot_compat   s   "r   )%r   platformnumpyr?   rw   
matplotlibrc   matplotlib.axesr   r   matplotlib.pyplotpyplotrD   matplotlib.testing.decoratorsr   r   r   r*   r/   rQ   markparametrizerh   rn   rp   ru   rz   machiner   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s`    6

	
	


	