o
    Ďi                      @   sL  d dl Z d dlmZ d dlmZmZmZmZm	Z	 d dlm
Z d dlmZmZ d dlmZmZ d dlZd dlmZ d dlZd dlZedgddd	 Zd
d Zedgdddd Zdd Zdd Zedgdddd Zdd Zdd Zdd Z edgddd d!d"d# Z!d$d% Z"ed&gdd d'd(d) Z#d*d+ Z$d,d- Z%G d.d/ d/Z&dS )0    N)
AsinhScaleAsinhTransformLogTransformInvertedLogTransformSymmetricalLogTransform)AsinhLocatorLogFormatterSciNotation)check_figures_equalimage_comparison)assert_allclosepng)
extensionsc                 C   sz   | j dddd}|d |d | }| }|j dddd}|j||d |ddg|d ||ddgd d S )Nz   logsymlog)yscalexscaleg8@)xlimylimb)add_subplotaxvlineaxhlineget_xlimget_ylimsetplot)fig_testfig_refax_testr   r   ax_ref r!   W/home/jeff/fluffinator/venv/lib/python3.10/site-packages/matplotlib/tests/test_scale.pytest_log_scales   s   

r#   c                  C   s   t ddd} |  }tddd}|| |}t|| t|t|u s(J tj|d< || |}t|| t|t|u sDJ tj	|}|| |}t|| t|t|u saJ tjj
|d< || |}t|| t|t|u s~J d S )	N
         g               ?      )r   invertednparangetransform_non_affiner   typenanmaarraymasked)sltsltixoutr!   r!   r"   test_symlog_mask_nan   s$   




r8   zlogit_scales.pngT)remove_textc                  C   sv   t  \} }tg d}d| }||| |d |d || j	 }t
|js1J t
|js9J d S )N)gMbP?g~jth?{Gz?gQ?g?皙?g333333?g?r(   g333333?gffffff?g?g?g
ףp=
?gGz?gCl?g+?g      ?logitT)pltsubplotsr,   r2   r   
set_xscalegridget_tightbboxcanvasget_rendererisfinitex0y0)figaxr6   ybboxr!   r!   r"   test_logit_scales:   s   

rK   c                  C   sx   t d\} }td}tdd }||| t }| j|dd t }| j|dd t }| j|dd dS )zIssue #1799r&   r$   pdf)formatepssvgN)r=   r>   r,   r-   scatterioBytesIOsavefig)rG   rH   r6   rI   bufr!   r!   r"   test_log_scatterK   s   
rU   c                  C   s2   t  \} }|jdtg dd | j  d S )Nr   )r%   r*   r)   )subs)r=   r>   
set_yscaler,   r2   rB   drawrG   rH   r!   r!   r"   test_logscale_subs^   s   rZ   zlogscale_mask.pngc                  C   sJ   t ddd} t \}}|t | d   |j  |jdd d S )Nr   2   i  r%   r   )r   )	r,   linspacer=   r>   r   exprB   rX   r   )xsrG   rH   r!   r!   r"   test_logscale_maske   s
   
r_   c               	   C   sR   t  \} }dD ]}tt |j|dd W d    n1 s!w   Y  qd S )N)linearr   r   mask)foo)r=   r>   pytestraises	TypeErrorrW   rG   rH   scaler!   r!   r"   test_extra_kwargs_raiseq   s   rh   c                  C   sX   t  \} }|d |j|j   }tdd }t|ts#J |j	dks*J d S )Nr   r%   )base)
r=   r>   rW   	transAxes	transDatar+   r   
isinstancer   ri   )rG   rH   tforminverted_transformr!   r!   r"   test_logscale_invert_transformy   s   
ro   c                  C   s4   t  \} }|d t|j ttddd d S )Nr   r$   clipnonpositive)r=   r>   rW   reprrk   r   rY   r!   r!   r"   test_logscale_transform_repr   s   

rt   zlogscale_nonpos_values.pngg{Gz?mpl20)r9   tolstylec                  C   s  t jd t jjtdd} tdd\}\\}}\}}|j| ddd |d |j| ddd |jdd	d
 t 	ddd}t 
| }dd|  t d|  t 
|  }|||| ||  |d t dd}	|	d }
|	d }|j|	|
|d |d |d d S )Ni!N,g     @@)sizer%   )r'   r$   )rangebinsr   ra   rq   r   r:   r;   r'   r&   r*   )yerr)r,   randomseednormalintr=   r>   histrW   r-   r]   cosfill_betweenlogspaceerrorbarr?   )r^   rG   ax1ax2ax3ax4xdataydataedatar6   rI   r}   r!   r!   r"   test_logscale_nonpos_values   s$   
&

r   c                  C   sd  t  \} }|tddtdd |d | }tt |j	dd W d    n1 s1w   Y  | |ks>J tt |j	dd W d    n1 sTw   Y  | |ksaJ |
d | }tt |jdd W d    n1 sw   Y  | |ksJ tt |jdd W d    n1 sw   Y  | |ksJ d S )	Nr   r)   r   )leftr|   )right)bottom)top)r=   r>   rP   rz   r?   r   rc   warnsUserWarningset_xlimrW   r   set_ylim)rG   rH   original_xlimoriginal_ylimr!   r!   r"   test_invalid_log_lims   s,   

r   zfunction_scales.png)r9   rw   c                  C   sV   dd } dd }t  \}}tdd}||| |jd|| fd |dd d S )	Nc                 S      | d S )Nr%   r!   r6   r!   r!   r"   inverse      z$test_function_scale.<locals>.inversec                 S   r   )Nr(   r!   r   r!   r!   r"   forward   r   z$test_function_scale.<locals>.forwardr&   i  function)	functions)r=   r>   r,   r-   r   r?   r   )r   r   rG   rH   r6   r!   r!   r"   test_function_scale   s   r   c                  C   s`   t  \} }tjd d}|| tjd d}|| |j dks%J |j dks.J d S )Naxisr   )	r=   r>   mscaleLogScaler?   rW   xaxis	get_scaleyaxisrf   r!   r!   r"   test_pass_scale   s   

r   c                  C   sH   t jddd} t| }t|  t| ksJ | j|jus"J d S )Nr6   r$   r   ri   )r   r   copydeepcopystrget_transform
_transform)scsc2r!   r!   r"   test_scale_deepcopy   s   
r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestAsinhScalec           	      C   sn   d}t ddd}t|}| }| }||}||}t|| ||}t||t ||   d S )Ng      1@ir[   d   )r,   r\   r   r+   r.   r   arcsinh)	selfa0ar   r   invinv	a_forward
a_inverteda_invinvr!   r!   r"   test_transforms   s   



zTestAsinhScale.test_transformsc                 C   sl   t  \}}td dd}|jdksJ |jdksJ |jdks!J | }t|ts,J |j|jks4J d S )Ng      7@r   linear_width   r$   )r%   r'   )	r=   r>   r   r   _base_subsr   rl   r   )r   rG   rH   stxr!   r!   r"   	test_init   s   zTestAsinhScale.test_initc                 C   sb   t  \}}td dd}|jdksJ |jdksJ td ddd}|jdks(J |jdks/J d S )Nr*   r   )r%      )r%   r)   )r   ri   rV   )r=   r>   r   r   r   )r   rG   rH   s3s7r!   r!   r"   test_base_init   s   zTestAsinhScale.test_base_initc                 C   s   G dd d}| }t |dd}|| t|jd tsJ t|jd ts)J | }t |dd}|| t|jd tsAJ t|jd tsKJ d S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z-TestAsinhScale.test_fmtloc.<locals>.DummyAxisc                 S   s
   i | _ d S )Nfields)r   r!   r!   r"   __init__  s   
z6TestAsinhScale.test_fmtloc.<locals>.DummyAxis.__init__c                 [   s   | j jdi | d S )Nr!   )r   update)r   kwargsr!   r!   r"   r     s   z1TestAsinhScale.test_fmtloc.<locals>.DummyAxis.setc                 S   s   || j d< d S )Nmajor_formatterr   )r   fr!   r!   r"   set_major_formatter  s   zATestAsinhScale.test_fmtloc.<locals>.DummyAxis.set_major_formatterN)__name__
__module____qualname__r   r   r   r!   r!   r!   r"   	DummyAxis
  s    r   r   r   major_locatorr   r'   )r   #set_default_locators_and_formattersrl   r   r   r   r   )r   r   ax0s0ax5r   r!   r!   r"   test_fmtloc	  s   


zTestAsinhScale.test_fmtlocc                 C   s   t  \}}tt td dd W d    n1 sw   Y  tt td dd W d    n1 s7w   Y  td d}td dd}d S )Nr   r   r|   r   g      @)r=   r>   rc   rd   
ValueErrorr   )r   rG   rH   r   s1r!   r!   r"   test_bad_scale  s   
zTestAsinhScale.test_bad_scaleN)r   r   r   r   r   r   r   r   r!   r!   r!   r"   r      s    r   )'r   matplotlib.pyplotpyplotr=   matplotlib.scaler   r   r   r   r   rg   r   matplotlib.tickerr   r   matplotlib.testing.decoratorsr	   r
   numpyr,   numpy.testingr   rQ   rc   r#   r8   rK   rU   rZ   r_   rh   ro   rt   r   r   r   r   r   r   r!   r!   r!   r"   <module>   s@    





