o
    “ÄŽiš  ã                   @   s°   d dl Zd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 dd„ Ze
dgƒdd„ ƒZe
d	gƒd
d„ ƒZe	dgddd„ ƒZe
dgƒdd„ ƒZdd„ Ze
dgƒdd„ ƒZdd„ ZdS )é    N)ÚSpines)Úcheck_figures_equalÚimage_comparisonc                  C   s\  G dd„ dƒ} | ƒ | ƒ | ƒ | ƒ dœ}t di |¤Ž}|d |d u s#J ‚|j|d u s,J ‚|ddg  d¡ |jjdks=J ‚|jjdksEJ ‚|jjdu sMJ ‚|jjdu sUJ ‚|dd…  d¡ td	d
„ | ¡ D ƒƒskJ ‚|dd… j	dd tdd
„ | ¡ D ƒƒs‚J ‚t
jtdd |j W d  ƒ n1 s—w   Y  t
jtdd |d  W d  ƒ n1 s²w   Y  t
jtdd |g d¢  W d  ƒ n1 sÏw   Y  t
jtdd |d  W d  ƒ n1 sêw   Y  t
jtdd |dd…  W d  ƒ n	1 sw   Y  t
jtdd |dd…  W d  ƒ dS 1 s'w   Y  dS )z)Test Spines and SpinesProxy in isolation.c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )z#test_spine_class.<locals>.SpineMockc                 S   s
   d | _ d S ©N©Úval)Úself© r	   úX/home/jeff/fluffinator/venv/lib/python3.10/site-packages/matplotlib/tests/test_spines.pyÚ__init__   ó   
z,test_spine_class.<locals>.SpineMock.__init__c                 [   s   t | ƒ |¡ d S r   )ÚvarsÚupdate)r   Úkwargsr	   r	   r
   Úset   s   z'test_spine_class.<locals>.SpineMock.setc                 S   s
   || _ d S r   r   )r   r   r	   r	   r
   Úset_val   r   z+test_spine_class.<locals>.SpineMock.set_valN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r	   r	   r	   r
   Ú	SpineMock   s    r   )ÚleftÚrightÚtopÚbottomr   r   ÚxNÚyc                 s   ó    | ]}|j d kV  qdS )r   Nr   ©Ú.0Úspiner	   r	   r
   Ú	<genexpr>'   ó   € z#test_spine_class.<locals>.<genexpr>Úbar©Úfooc                 s   r   )r"   Nr#   r   r	   r	   r
   r    *   r!   r$   )Úmatchzfoo, bar)r   r$   r   r"   zsingle list)r   r   zSpines does not support slicingr   r	   )r   r   r   r   r   r   r   ÚallÚvaluesr   ÚpytestÚraisesÚAttributeErrorr$   ÚKeyErrorÚ
ValueError)r   Úspines_dictÚspinesr	   r	   r
   Útest_spine_class	   sH   üÿ
ÿÿ
ÿÿ$ÿr/   zspines_axes_positions.pngc                  C   s¢   t  ¡ } t ddtj d¡}dt |¡ }|  ddd¡}| d¡ | ||¡ |j	j
 d¡ |j d¡ |j	j d¡ |j d	¡ |j	j d
¡ |j	j d
¡ d S )Nr   é   éd   é   zcentered spines)Úaxesçš™™™™™¹?r   )r3   g      Ð?r   Únone)ÚpltÚfigureÚnpÚlinspaceÚpiÚsinÚadd_subplotÚ	set_titleÚplotr.   r   Úset_positionÚyaxisÚset_ticks_positionr   Úxaxisr   Ú	set_colorr   )Úfigr   r   Úaxr	   r	   r
   Útest_spines_axes_positions:   s   
rF   zspines_data_positions.pngc                  C   sd   t  ¡ \} }|jj d¡ |jj d¡ |jj d¡ |jj d¡ | ddg¡ | 	ddg¡ d S )N)Údatag      ø¿)rG   g      à?)rG   g      à¿Úzeroéþÿÿÿr0   )
r6   Úsubplotsr.   r   r?   r   r   r   Úset_xlimÚset_ylim©rD   rE   r	   r	   r
   Útest_spines_data_positionsK   s   rN   Úpng)Ú
extensionsc                 C   s–   t j d¡ |  ¡ }|jddd |jj d¡ |jj d¡ |jj	 d¡ |j
dd	d
d | ¡ }|jddd |jj	 d¡ |j
dd	d	dd d S )NÚdefaultÚlog)r4   r2   )ÚxscaleÚxlim)rG   r2   r0   )rG   r4   r   FÚin)ÚaxisÚ	labelleftÚ	directionT)rV   rW   r   r   )r6   ÚstyleÚuser<   r   r.   r   r?   Úset_linewidthr   Útick_params)Úfig_testÚfig_refrE   r	   r	   r
   Ú#test_spine_nonlinear_data_positionsV   s   r_   zspines_capstyle.pngc                  C   s2   t jddd t  ¡ \} }| g ¡ | g ¡ d S )Nr3   é   )Ú	linewidth)r6   ÚrcrJ   Ú
set_xticksÚ
set_yticksrM   r	   r	   r
   Útest_spines_capstylek   s   
re   c                  C   s*  t  ¡ \} }t jddd | t d¡¡ |j d¡ |jj	 
d¡ |jj d¡ | d¡ |j d¡ |jj 
d¡ |jj d¡ | d	¡ |j g ¡ |j g ¡ t  ¡  |jj	}| ¡  | ¡ ¡ ¡ }|jj ¡ d
 |jk suJ dƒ‚|jj}| ¡  | ¡ ¡ ¡ }|jj ¡ d |jk s“J dƒ‚d S )Ng333333Ó?)r   r   é
   r   )Úoutwardé   Fzy labelr   zx labelr   z"Y-Axis label not left of the spiner2   z X-Axis label not below the spine)r6   rJ   Úsubplots_adjustr>   r8   Úaranger@   rA   r.   r   r?   r   Úset_visibleÚ
set_ylabelrB   r   r   Ú
set_xlabelÚ	set_ticksÚdrawÚget_transformÚtransform_pathÚget_pathÚget_extentsÚlabelÚget_positionÚxminÚymin)rD   rE   r   Ú	spinebboxr	   r	   r
   Útest_label_without_tickst   s@   

ÿÿÿÿÿÿry   zblack_axes.pngc                  C   sb   dt jd< dt jd< t jddd} |  d¡}| g ¡ | g ¡ | g ¡ | g ¡ | d¡ d S )	Nr   zsavefig.pad_inchesÚtightzsavefig.bbox)é   r{   )Úfigsize)r   r   r2   r2   )r   r   r   )	r6   ÚrcParamsr7   Úadd_axesÚset_xticklabelsÚset_yticklabelsrc   rd   Úset_facecolorrM   r	   r	   r
   Útest_spines_black_axes‘   s   






r‚   c                  C   sH   t  ¡ } | jdd}|jd }| d ¡ |jd jd u sJ ‚|  ¡  d S )NÚpolar)Ú
projectionÚinner)r6   r7   r<   r.   Úregister_axisrV   Údraw_without_rendering)rD   rE   Úinner_spiner	   r	   r
   Útest_arc_spine_inner_no_axisŸ   s   

r‰   )Únumpyr8   r(   Úmatplotlib.pyplotÚpyplotr6   Úmatplotlib.spinesr   Úmatplotlib.testing.decoratorsr   r   r/   rF   rN   r_   re   ry   r‚   r‰   r	   r	   r	   r
   Ú<module>   s$    1






