a
    s=ic$                     @   s  d dl Z d dlZd dlZd dlmZ d dlmZm	Z	 d dl
m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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d/d0d1gd2d3 ZdS )4    N)check_figures_equalimage_comparisonc           
   	   C   s   t t| t| ttd||gD ]j\\}}\}}\}\}}	||krHq$| d j| |||	||f ks$J d|||	||f rd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.
    Zxyr   z,axes %i and %i incorrectly %ssharing %s axisznot  N)	itertoolsproduct	enumeratezipZ_shared_axesZjoined)
axsZx_sharedZy_sharedi1Zax1i2Zax2Zi3nameZshared r   o/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_subplots.pycheck_shared   s    $r   c                 C   s   t t| ||D ]\}\}}}| |jjg D ]$}| |ks0J d| d| q0| |jjg D ]$}| |kshJ d| d| qh|s| dksJ |s|	 dksJ qd S )NzVisibility of x axis #z is incorrectly zVisibility of y axis #r   )
r   r   Zget_xticklabelsxaxisZ
offsetTextZget_visibleZget_yticklabelsyaxis
get_xlabel
get_ylabel)r	   Z	x_visibleZ	y_visibleiaxZvxZ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 ]z}
|	D ]n}tjdd|
|d\}\\}}\}}||||g}t|||
 ||  t	||d |
 |d |  t| qFq>tjddd
d
d\}\\}}\}}||||g}|D ]}|j
ddd |  qt	|g d	g d d S )N)   r      r   )Zdtype)FTFF)TFFF)FFFT)FFTF)allnonerowcol)FFTTTr   )r   r   r   r   FT)TFTF)xyr   Fr   )FTr   r   r   r   sharexshareyr   r   foobarZxlabelZylabel)npZonesboolZzerosarraypltsubplotsr   closer   setlabel_outer)Zrdimsharevisiblefa1a2a3a4r	   opsZxoZyor   r   r   r   test_shared+   sf    	
""r6   c                  C   s   t  } | dd}| |dddf }| |dddf }| |d }| |d }| jD ]}|  qbt| jg dg d d S )	N   r   r      )r8   r   )r   r8   )FTFT)TTFF)r)   figureZadd_gridspecZadd_subplotaxesr-   r   )figgsr1   r2   r3   r4   r   r   r   r   test_label_outer_spani   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 )Nr8   r   Tr"   Fr!   )r)   r*   r   r   Z	tick_leftr   Ztick_bottom)r0   r1   r2   r   r   r   test_shared_and_moved}   s    

r@   c                   C   sx   t t  tjdddd W d    n1 s00    Y  t t  tjdddd W d    n1 sj0    Y  d S )Nr   Zblahr?   r>   )pytestraises
ValueErrorr)   r*   r   r   r   r   test_exceptions   s    .rD   Z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   r   r   r    )r   r   )r8   r   )r   r8   )r8   r8   )r&   Zaranger)   r*   Zplot)r   r   r;   r	   r   r   r   test_subplots_offsettext   s    rG   topTFbottomleftrightc                 C   s   t | |||d& t  jddddd}W d    n1 s@0    Y  t|D ]\\}}}|jjd }|jjd }	|jjd }
|jjd }|| o|dkksJ |	|o|dkksJ |
|o|dkksJ ||o|dkksTJ qTd S )	N)zxtick.labeltopzxtick.labelbottomzytick.labelleftzytick.labelrightr7   Tr    Zlabel2OnZlabel1Onr   r   )	r)   Z
rc_contextr9   r*   r&   ndenumerater   Z_major_tick_kwr   )rH   rI   rJ   rK   r	   r   jr   ZxtopZxbottomZyleftZyrightr   r   r   test_subplots_hide_ticklabels   s    
4rN   xlabel_positionylabel_positionc                 C   s   t  jddddd}t|D ]\\}}}|jddd |j|  |j| |	  t
| | dkrt|dkp| d	ko|d
kksJ t
| |dkr|d
kp|dko|dkks J q d S )Nr7   Tr    r#   r$   r%   rI   r   rH   r   rJ   rK   )r)   r9   r*   r&   rL   r,   r   Zset_label_positionr   r-   r'   r   r   )rO   rP   r	   r   rM   r   r   r   r   test_subplots_hide_axislabels   s    

rQ   c                  C   s(   t  \} }|  | ks$J d S N)r)   r*   Zget_subplotspecZget_gridspec)r;   r   r   r   r   test_get_gridspec   s    rS   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sNJ d S )Nr!   r   width_ratiosr8   r   )
subplot_kwgridspec_kw)r)   r*   )rU   rV   r;   r   r   r   r   test_dont_mutate_kwargs   s    

rW   c                   C   s0   t t jt ju sJ t t jt ju s,J d S rR   )maxesZsubplot_class_factoryZAxesZSubplotr   r   r   r   "test_subplot_factory_reapplication   s    rY   rT   )r8   r7   r   height_ratiosr8   r   Zpng)
extensionsc                 C   s,   | j dd||d |j dd||dd d S )Nr   r7   rZ   rT   rV   )r*   )fig_testfig_refrZ   rT   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Brb   )ra   CDr\   r]   )subplot_mosaic)r^   r_   rZ   rT   Zmosaic_specr   r   r   #test_width_and_height_ratios_mosaic   s    rf   zmethod,args)r*   )r   r7   )re   )zabc;defc                 C   s   t jtdd2 tt| |ddgdddgid W d    n1 sF0    Y  t jtdd2 tt| |g ddg did W d    n1 s0    Y  d S )	NrZ   )matchr8   r   )rZ   rV   rT   )r8   r   r7   )rT   rV   )rA   rB   rC   getattrr)   )methodargsr   r   r   test_ratio_overlapping_kws   s    
&
rk   )r   numpyr&   rA   Zmatplotlib.pyplotZpyplotr)   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.axesr:   rX   r   r   r6   r=   r@   rD   rG   markZparametrizerN   rQ   rS   rW   rY   r`   rf   rk   r   r   r   r   <module>   sJ   >

	
	

