U
    md%                     @   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d&d'd(ggejd)dd&d(gged*gd+d,d- Zejd%dd&d'd(g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 ]j\\}}\}}\}\}}	||krHq$| d j| |||	||f ks$t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AssertionError)
axsZx_sharedZy_sharedi1Zax1i2Zax2Zi3nameZshared r   W/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_subplots.pycheck_shared   s    $   r   c                 C   s   t t| ||D ]\}\}}}| |jjg D ]$}| |ks0td| d| q0| |jjg D ]$}| |kshtd| d| qh|s|	 dkst|s|
 dkst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_visibler   Z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   sn  d} t j| d d tdt j| d d tdt ddddgddddgddddgddddggt ddddgddddgddddgddddggd}ddddgddddgdgd dgd dgd ddddgdddddgdgd ddddgdgd dgd ddddgdd	}|d
 |d< |d |d< tdd\}\\}}\}}||||g}t||d
 |d
  t| dddd
ddddg}	|	D ]z}
|	D ]n}tjdd|
|d\}\\}}\}}||||g}t|||
 ||  t	||d |
 |d |  t| qqtjddddd\}\\}}\}}||||g}|D ]}|j
ddd |  q0t	|ddddgddddg d S )N)   r      r   )ZdtypeFT)allnonerowcolr   )r   r    r   r   FT)xyr   r   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   ZopsZxoZyor   r   r   r   test_shared+   sf    










	



""r9   c                  C   s   t  } | dd}| |dddf }| |dddf }| |d }| |d }| jD ]}|  qbt| jddddgddddg d S )	N   r   r   r#   )r#   r   )r   r#   FT)r-   figureZadd_gridspecadd_subplotaxesr1   r   )figgsr5   r6   r7   r8   r   r   r   r   test_label_outer_spani   s    

 
 
r@   c                  C   s0   t ddddg} |   t| gdgdg d S )Nr   r#   T)r-   r=   r1   r   )r   r   r   r   test_label_outer_non_gridspec}   s    rA   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#   r   Tr&   Fr%   )r-   r.   r   r   Z	tick_leftr   Ztick_bottom)r4   r5   r6   r   r   r   test_shared_and_moved   s    

rD   c                	   C   sP   t t tjdddd W 5 Q R X t t tjdddd W 5 Q R X d S )Nr   ZblahrC   rB   )pytestraises
ValueErrorr-   r.   r   r   r   r   test_exceptions   s    rH   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   )r#   r   )r   r#   )r#   r#   )r*   Zaranger-   r.   Zplot)r!   r"   r>   r   r   r   r   test_subplots_offsettext   s    rK   topTFbottomleftrightc              	   C   s   t | |||d t  jddddd}W 5 Q R X t|D ]\\}}}|jjd }|jjd }	|jjd }
|jjd }|| o|dkkst	|	|o|dkkst	|
|o|dkkst	||o|dkks@t	q@d S )	N)zxtick.labeltopzxtick.labelbottomzytick.labelleftzytick.labelrightr:   Tr$   Zlabel2OnZlabel1Onr   r   )
r-   Z
rc_contextr;   r.   r*   ndenumerater   Z_major_tick_kwr   r   )rL   rM   rN   rO   r   r   jr   ZxtopZxbottomZyleftZyrightr   r   r   test_subplots_hide_ticklabels   s     
 rR   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stt
| |dkr|d
kp|dko|dkks tq d S )Nr:   Tr$   r'   r(   r)   rM   r   rL   r   rN   rO   )r-   r;   r.   r*   rP   r0   r   Zset_label_positionr   r1   r+   r   r   r   )rS   rT   r   r   rQ   r   r   r   r   test_subplots_hide_axislabels   s    

rU   c                  C   s(   t  \} }|  | ks$td S )N)r-   r.   Zget_subplotspecZget_gridspecr   )r>   r   r   r   r   test_get_gridspec   s    rV   c                  C   sR   ddi} dddgi}t jdd| |d\}}| ddiks:t|dddgiksNtd S )Nr%   r   width_ratiosr#   r   )
subplot_kwgridspec_kw)r-   r.   r   )rX   rY   r>   r   r   r   r   test_dont_mutate_kwargs   s    

rZ   rW   r#   r:   r   height_ratiosZpng)
extensionsc                 C   s,   | j dd||d |j dd||dd d S )Nr   r:   r[   rW   rY   )r.   )fig_testfig_refr[   rW   r   r   r   test_width_and_height_ratios   s    
ra   c                 C   s<   dddgdddgg}| j |||d |j |||dd d S )NABCDr]   r^   )subplot_mosaic)r_   r`   r[   rW   Zmosaic_specr   r   r   #test_width_and_height_ratios_mosaic   s    rg   zmethod,args)r.   )r   r:   )rf   )zabc;defc              	   C   s   t jtdd( tt| |ddgdddgid W 5 Q R X t jtdd, tt| |dddgddddgid W 5 Q R X d S )	Nr[   )matchr#   r   )r[   rY   rW   r:   )rW   rY   )rE   rF   rG   getattrr-   )methodargsr   r   r   test_ratio_overlapping_kws   s    
rl   c               	   C   sp   t  } t|  tstt| jddddgdtr8ttt	$ t
| ddddgddddgd W 5 Q R X d S )Nr   r#   )rect)r-   r;   
isinstancer<   r   r   Zadd_axesrE   rF   	TypeErrorr   )r>   r   r   r   test_old_subplot_compat  s
    rp   )r   numpyr*   rE   Zmatplotlib.axesr   r   Zmatplotlib.pyplotZpyplotr-   Zmatplotlib.testing.decoratorsr   r   r   r   r9   r@   rA   rD   rH   rK   markZparametrizerR   rU   rV   rZ   ra   rg   rl   rp   r   r   r   r   <module>   sL   >

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