U
    d»{jä$  ã                   @   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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 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$td|||	||f r‚d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   ú]/var/www/html/bwave/python/venv/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s¢t‚|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   sj  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 ]}|j
dd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    ÚfooÚbar©ZxlabelZylabel)ÚnpZonesÚboolZzerosÚarrayÚpltÚsubplotsr   Úcloser   ÚsetÚlabel_outer)ZrdimZshareÚvisibleÚfÚa1Úa2Úa3Úa4r
   ZopsZxoZyor   r   r   r   Útest_shared+   sf    



ü



üø


ú	


ú÷
""r5   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   é   )r7   r   )r   r7   FT)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 )Nr7   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   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blahr>   r=   )ÚpytestÚraisesÚ
ValueErrorr*   r+   r   r   r   r   Útest_exceptions‹   s    rC   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    eÍÍAéd   é
   g     ˆÃ@r   r   r   r!   )r   r   )r7   r   )r   r7   )r7   r7   )r'   Zaranger*   r+   Zplot)r   r    r:   r
   r   r   r   Útest_subplots_offsettext“   s    rF   Ú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s�t	‚|	|oœ|dkks¤t	‚|
|o°|dkks¸t	‚||oÄ|dkks@t	‚q@d S )	N)zxtick.labeltopzxtick.labelbottomzytick.labelleftzytick.labelrightr6   Tr!   Zlabel2OnZlabel1Onr   r   )
r*   Z
rc_contextr8   r+   r'   Úndenumerater   Z_major_tick_kwr   r	   )rG   rH   rI   rJ   r
   r   Újr   ZxtopZxbottomZyleftZyrightr   r   r   Útest_subplots_hide_ticklabelsž   s     ÿ
 rM   Ú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sŠt‚t
| ¡ ƒ|dkr¤|d
kp²|dko²|dkks t‚q d S )Nr6   Tr!   r$   r%   r&   rH   r   rG   r   rI   rJ   )r*   r8   r+   r'   rK   r-   r   Zset_label_positionr   r.   r(   r   r	   r   )rN   rO   r
   r   rL   r   r   r   r   Útest_subplots_hide_axislabels´   s    
þ
þrP   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    rR   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_ratiosr7   r   )Ú
subplot_kwÚgridspec_kw)r*   r+   r	   )rT   rU   r:   r   r   r   r   Útest_dont_mutate_kwargsË   s    
ÿ
rV   c                   C   s0   t  t j¡t jkst‚t  t j¡t jks,t‚d S rQ   )ÚmaxesZsubplot_class_factoryZAxesZSubplotr	   r   r   r   r   Ú"test_subplot_factory_reapplicationÔ   s    rX   rS   r7   r6   r   Úheight_ratiosZpng)Ú
extensionsc                 C   s,   | j dd||d� |j dd||dœd� d S )Nr   r6   ©rY   rS   ©rU   )r+   )Úfig_testÚfig_refrY   rS   r   r   r   Útest_width_and_height_ratiosÙ   s    
ÿþr_   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^   rY   rS   Zmosaic_specr   r   r   Ú#test_width_and_height_ratios_mosaicå   s    ÿþre   zmethod,args)r+   )r   r6   )rd   )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 )	NrY   )Úmatchr7   r   )rY   rU   rS   r6   )rS   rU   )r@   rA   rB   Úgetattrr*   )ÚmethodÚargsr   r   r   Útest_ratio_overlapping_kwsò   s    
ÿÿrj   )r   Únumpyr'   r@   Zmatplotlib.pyplotZpyplotr*   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.axesr9   rW   r   r   r5   r<   r?   rC   rF   ÚmarkZparametrizerM   rP   rR   rV   rX   r_   re   rj   r   r   r   r   Ú<module>   sJ   >

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