a
    ضa                     @   s   d dl Z d dlmZ d dlmZmZmZ d dl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 dS )+    N)LogTransformInvertedLogTransformSymmetricalLogTransform)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)yscaleZxscaleg8@)xlimylimb)Zadd_subplotZaxvlineZaxhlineget_xlimget_ylimsetplot)Zfig_testZfig_refZax_testr   r   Zax_ref r   k/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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|ksPJ tj|d< || |}t|| t|t|ksJ tj	|}|| |}t|| t|t|ksJ tjj
|d< || |}t|| t|t|ksJ d S )	N
         g               ?      )r   invertednparangeZtransform_non_affiner   typenanmaarrayZmasked)ZsltZsltixoutr   r   r   test_symlog_mask_nan   s$    




r&   zlogit_scales.pngT)remove_textc                  C   sv   t  \} }tg d}d| }||| |d |d || j	 }t
|jsbJ t
|jsrJ d S )N)gMbP?g~jth?{Gz?gQ?g?皙?g333333?g?r   g333333?gffffff?g?g?g
ףp=
?gGz?gCl?g+?g      ?ZlogitT)pltsubplotsr   r#   r   
set_xscaleZgridZget_tightbboxcanvasZget_rendererisfiniteZx0Zy0)figaxr$   yZbboxr   r   r   test_logit_scales8   s    

r2   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   Zpdf)formatZepssvgN)r*   r+   r   r   scatterioBytesIOZsavefig)r/   r0   r$   r1   bufr   r   r   test_log_scatterI   s    
r9   c                  C   s2   t  \} }|jdtg dd | j  d S )Nr	   )r   r   r   )subs)r*   r+   
set_yscaler   r#   r-   drawr/   r0   r   r   r   test_logscale_subs\   s    r>   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   Zlinspacer*   r+   r   expr-   r<   r   )xsr/   r0   r   r   r   test_logscale_maskc   s
    
rB   c               	   C   sR   t  \} }dD ]<}tt |j|dd W d    q1 sB0    Y  qd S )N)Zlinearr	   r
   mask)Zfoo)r*   r+   pytestZraises	TypeErrorr;   r/   r0   scaler   r   r   test_extra_kwargs_raiseo   s    rH   c                  C   sX   t  \} }|d |j|j   }tdd }t|tsFJ |j	dksTJ d S )Nr	   r   )base)
r*   r+   r;   Z	transAxes	transDatar   r   
isinstancer   rI   )r/   r0   ZtformZinverted_transformr   r   r   test_logscale_invert_transformw   s    
rL   c                  C   s4   t  \} }|d t|j ttddd d S )Nr	   r   Zclipnonpositive)r*   r+   r;   reprrJ   r   r=   r   r   r   test_logscale_transform_repr   s    

rP   zlogscale_nonpos_values.pngg{Gz?Zmpl20)r'   Z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   )rangeZbinsr	   rC   rM   r   r(   r)   r   r   r   )yerr)r   randomseednormalintr*   r+   histr;   r   r@   cosZfill_betweenZlogspaceZerrorbarr,   )rA   r/   Zax1Zax2Zax3Zax4ZxdataZydataZedatar$   r1   rV   r   r   r   test_logscale_nonpos_values   s$    
&

r]   c                  C   sl  t  \} }|tddtdd |d | }tt |j	dd W d    n1 sb0    Y  | |ks|J tt |j	dd W d    n1 s0    Y  | |ksJ |
d | }tt |jdd W d    n1 s0    Y  | |ksJ tt |jdd W d    n1 sL0    Y  | |kshJ d S )	Nr   r   r	   )leftrU   )right)Zbottom)top)r*   r+   r5   rT   r,   r   rD   ZwarnsUserWarningset_xlimr;   r   Zset_ylim)r/   r0   Zoriginal_xlimZoriginal_ylimr   r   r   test_invalid_log_lims   s$    
**
,,rc   zfunction_scales.png)r'   rQ   c                  C   sV   dd } dd }t  \}}tdd}||| |jd|| fd |dd d S )	Nc                 S   s   | d S )Nr   r   r$   r   r   r   inverse   s    z$test_function_scale.<locals>.inversec                 S   s   | d S )Nr   r   rd   r   r   r   forward   s    z$test_function_scale.<locals>.forwardr   i  function)Z	functions)r*   r+   r   r   r   r,   rb   )re   rf   r/   r0   r$   r   r   r   test_function_scale   s    rh   c                  C   s`   t  \} }tjd d}|| tjd d}|| |j dksJJ |j dks\J d S )N)axisr	   )	r*   r+   mscaleLogScaler,   r;   ZxaxisZ	get_scaleZyaxisrF   r   r   r   test_pass_scale   s    

rl   c                  C   sH   t jddd} t| }t|  t| ks4J | j|jusDJ d S )Nr$   r   )ri   rI   )rj   rk   copydeepcopystrZget_transformZ
_transform)ZscZsc2r   r   r   test_scale_deepcopy   s    
rp   )!rm   Zmatplotlib.pyplotZpyplotr*   Zmatplotlib.scaler   r   r   rG   rj   Zmatplotlib.testing.decoratorsr   r   Znumpyr   Znumpy.testingr   r6   rD   r   r&   r2   r9   r>   rB   rH   rL   rP   r]   rc   rh   rl   rp   r   r   r   r   <module>   s:   




