U
    \	aa                     @   s   d dl Z d dlZd dlZd dlmZ d dl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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dd Zdd Zdd  ZdS )!    N)image_comparisonc           
   	   C   s   t t| t| ttd||gD ]p\\}}\}}\}\}}	||krHq$t| d d||||	||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_shared_{}_axesz,axes %i and %i incorrectly %ssharing %s axisznot  N)	itertoolsproduct	enumeratezipgetattrformatZjoinedAssertionError)
axsZx_sharedZy_sharedi1Zax1i2Zax2Zi3nameZshared r   B/tmp/pip-unpacked-wheel-wjyw_3jo/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| qhqd S )NzVisibility of x axis #z is incorrectly zVisibility of y axis #)	r   r   Zget_xticklabelsxaxisZ
offsetTextZget_visibler
   Zget_yticklabelsyaxis)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 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g}	|	D ]z}
|	D ]n}tjdd|
|d\}\\}}\}}||||g}t|||
 ||  t	||d |
 |d |  t| qq~tjddddd\}\\}}\}}||||g}|D ]}|
  q,t	|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   sharexshareyr   r   )npZonesboolzerosarraypltsubplotsr   closer   label_outer)ZrdimshareZvisiblefa1a2a3a4r   opsZxoZyor   r   r   r   test_shared'   sd    










	



""r2   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      )r4   r   )r   r4   FT)r'   figureZadd_gridspecZadd_subplotaxesr*   r   )figZgsr-   r.   r/   r0   r   r   r   r   test_label_outer_spand   s    

 
 
r8   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r"   Fr!   )r'   r(   r   r   Z	tick_leftr   Ztick_bottom)r,   r-   r.   r   r   r   test_shared_and_movedx   s    

r;   c                
   C   s
  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 t jtdd* t t tddd W 5 Q R X W 5 Q R X t jtdd* t t tddd W 5 Q R X W 5 Q R X t jtdd* t t tddd	 W 5 Q R X W 5 Q R X d S )
Nr   Zblahr:   r9   z.*sharex argument to subplots)matchr      )pytestZraises
ValueErrorr'   r(   ZwarnsUserWarningr   r   r   r   test_exceptions   s     ""rB   Zsubplots_offset_textF)Zremove_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   )r4   r   )r   r4   )r4   r4   )r#   Zaranger'   r(   Zplot)r   r   r7   r   r   r   r   test_subplots_offsettext   s    rE   topT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.labelrightr3   Tr    Zlabel2OnZlabel1Onr   r   )
r'   Z
rc_contextr5   r(   r#   Zndenumerater   Z_major_tick_kwr   r
   )rF   rG   rH   rI   r   r   jr   ZxtopZxbottomZyleftZyrightr   r   r   test_subplots_hide_labels   s     
 rK   c                  C   s(   t  \} }|  | ks$td S N)r'   r(   Zget_subplotspecZget_gridspecr
   )r7   r   r   r   r   test_get_gridspec   s    rM   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   Zwidth_ratiosr4   r   )
subplot_kwgridspec_kw)r'   r(   r
   )rN   rO   r7   r   r   r   r   test_dont_mutate_kwargs   s    

rP   c                   C   s0   t t jt jkstt t jt jks,td S rL   )maxesZsubplot_class_factoryZAxesZSubplotr
   r   r   r   r   "test_subplot_factory_reapplication   s    rR   )r   Znumpyr#   r?   Zmatplotlib.pyplotZpyplotr'   Zmatplotlib.testing.decoratorsr   Zmatplotlib.axesr6   rQ   r   r   r2   r8   r;   rB   rE   markZparametrizerK   rM   rP   rR   r   r   r   r   <module>   s*   
=

	