o
    h                      @   sF  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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 ).    N)
AsinhScaleAsinhTransformLogTransformInvertedLogTransformSymmetricalLogTransform)AsinhLocatorLogFormatterSciNotation)check_figures_equalimage_comparison)assert_allclosec                 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   o/var/www/html/construction_image-detection-poc/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$   




r6   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*   r0   r   
set_xscalegridget_tightbboxcanvasget_rendererisfinitex0y0)figaxr4   ybboxr   r   r    test_logit_scales:   s   

rI   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)rE   rF   r4   rG   bufr   r   r    test_log_scatterK   s   
rS   c                  C   s2   t  \} }|jdtg dd | j  d S )Nr   )r#   r(   r'   )subs)r;   r<   
set_yscaler*   r0   r@   drawrE   rF   r   r   r    test_logscale_subs^   s   rX   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   expr@   rV   r   )xsrE   rF   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	TypeErrorrU   rE   rF   scaler   r   r    test_extra_kwargs_raiseq   s   rf   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<   rU   	transAxes	transDatar)   r   
isinstancer   rg   )rE   rF   tforminverted_transformr   r   r    test_logscale_invert_transformy   s   
rm   c                  C   s4   t  \} }|d t|j ttddd d S )Nr   r"   clipnonpositive)r;   r<   rU   reprri   r   rW   r   r   r    test_logscale_transform_repr   s   

rr   zlogscale_nonpos_values.pngg{Gz?mpl20)r7   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   r_   ro   r   r8   r9   r%   r$   r(   )yerr)r*   randomseednormalintr;   r<   histrU   r+   r[   cosfill_betweenlogspaceerrorbarr=   )r\   rE   ax1ax2ax3ax4xdataydataedatar4   rG   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   )leftrz   )right)bottom)top)r;   r<   rN   rx   r=   r   ra   warnsUserWarningset_xlimrU   r   set_ylim)rE   rF   original_xlimoriginal_ylimr   r   r    test_invalid_log_lims   s,   

r   zfunction_scales.png)r7   ru   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   r4   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   rE   rF   r4   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=   rU   xaxis	get_scaleyaxisrd   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 )Nr4   r"   r   rg   )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@irY   d   )r*   rZ   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   rj   r   )r   rE   rF   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   rg   rT   )r;   r<   r   r   r   )r   rE   rF   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_formattersrj   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   rz   r   g      @)r;   r<   ra   rb   
ValueErrorr   )r   rE   rF   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   re   r   matplotlib.tickerr   r   matplotlib.testing.decoratorsr	   r
   numpyr*   numpy.testingr   rO   ra   r!   r6   rI   rS   rX   r]   rf   rm   rr   r   r   r   r   r   r   r   r   r   r    <module>   s@    




