a
    s=icÛ   ã                   @   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 )Néz   Ú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   úl/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/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sˆJ ‚tj 	|¡}| |  |¡¡}t||ƒ t|ƒt|ƒksÂJ ‚tjj
|d< | |  |¡¡}t||ƒ t|ƒt|ƒksüJ ‚d S )	Né
   é   é   g      ø¿é   ç      à?é   é   )r   ÚinvertedÚnpÚarangeÚ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)gü©ñÒMbP?gú~j¼t“h?ç{®Gáz„?g¸…ëQ¸ž?gš™™™™™¹?çš™™™™™É?g333333Ó?gš™™™™™Ù?r   g333333ã?gffffffæ?gš™™™™™é?gÍÌÌÌÌÌì?g
×£p=
ï?g®Gáz®ï?g•C‹lçï?g+‡ÙÎ÷ï?g      ð?ZlogitT)ÚpltÚsubplotsr"   r(   r   Ú
set_xscaleÚgridZget_tightbboxÚcanvasZget_rendererÚisfiniteZx0Zy0)ÚfigÚaxr)   ÚyZbboxr   r   r   Útest_logit_scales:   s    

r8   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/   r0   r"   r#   ÚscatterÚioÚBytesIOZsavefig)r5   r6   r)   r7   Úbufr   r   r   Útest_log_scatterK   s    
r?   c                  C   s2   t  ¡ \} }|jdt g d¢¡d | j ¡  d S )Nr   )r   r    r   )Úsubs)r/   r0   Ú
set_yscaler"   r(   r3   Údraw©r5   r6   r   r   r   Útest_logscale_subs^   s    rD   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/   r0   r   Úexpr3   rB   r   )Úxsr5   r6   r   r   r   Útest_logscale_maske   s
    
rI   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/   r0   ÚpytestÚraisesÚ	TypeErrorrA   ©r5   r6   Úscaler   r   r   Útest_extra_kwargs_raiseq   s    rP   c                  C   sX   t  ¡ \} }| d¡ |j|j ¡   ¡ }tdd ¡ }t|tƒsFJ ‚|j	dksTJ ‚d S )Nr   r   )Úbase)
r/   r0   rA   Z	transAxesÚ	transDatar!   r   Ú
isinstancer   rQ   )r5   r6   ZtformZinverted_transformr   r   r   Útest_logscale_invert_transformy   s    
rT   c                  C   s4   t  ¡ \} }| d¡ t|jƒ ttdddƒ d S )Nr   r   Zclip©Únonpositive)r/   r0   rA   ÚreprrR   r   rC   r   r   r   Útest_logscale_transform_repr…   s    

rX   zlogscale_nonpos_values.pngg{®Gáz”?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   rJ   rU   r   r-   r.   r   éÿÿÿÿr   r    )Úyerr)r"   ÚrandomÚseedÚnormalÚintr/   r0   ÚhistrA   r#   rG   ÚcosZfill_betweenZlogspaceZerrorbarr1   )rH   r5   Zax1Zax2Zax3Zax4ZxdataZydataZedatar)   r7   r^   r   r   r   Útest_logscale_nonpos_valuesŒ   s$    
&

re   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 s¨0    Y  | ¡ |ksÂJ ‚| 
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   )Úleftr]   )Úright)Úbottom)Útop)r/   r0   r;   r\   r1   r   rK   ZwarnsÚUserWarningÚset_xlimrA   r   Zset_ylim)r5   r6   Zoriginal_xlimZoriginal_ylimr   r   r   Útest_invalid_log_lims§   s$    
**
,,rl   zfunction_scales.png)r,   rY   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   rm   r   r   r   ÚforwardÄ   s    z$test_function_scale.<locals>.forwardr   iè  Úfunction)Z	functions)r/   r0   r"   r#   r   r1   rk   )rn   ro   r5   r6   r)   r   r   r   Útest_function_scale¿   s    rq   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/   r0   ÚmscaleÚLogScaler1   rA   ZxaxisZ	get_scaleZyaxisrN   r   r   r   Útest_pass_scaleÐ   s    

rv   c                  C   sH   t jddd} t | ¡}t|  ¡ ƒt| ¡ ƒks4J ‚| j|jusDJ ‚d S )Nr)   r   ©rs   rQ   )rt   ru   ÚcopyÚdeepcopyÚstrÚget_transformZ
_transform)ÚscZ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@iÎÿÿÿrE   éd   )r"   rF   r   r!   r$   r   Zarcsinh)	ÚselfZa0Úaro   rn   ZinvinvZ	a_forwardZ
a_invertedZ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s4J ‚|jdksBJ ‚| ¡ }t|tƒsXJ ‚|j|jkshJ ‚d S )Ng      7@©rs   Úlinear_widthé   r   )r   r   )	r/   r0   r   r„   Ú_baseÚ_subsr{   rS   r   )r€   r5   r6   ÚsZ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s4J ‚td ddd}|jdksPJ ‚|jdks^J ‚d S )Nr    rw   )r   é   )r   r   )rs   rQ   r@   )r/   r0   r   r†   r‡   )r€   r5   r6   Z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ƒsRJ ‚|ƒ }t |dd}| |¡ t|jd tƒs‚J ‚t|jd tƒs–J ‚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f i |¤Ž d S r   )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   rw   Zmajor_locatorr“   r   )r   Z#set_default_locators_and_formattersrS   r   r   rz   r   )r€   r™   Zax0Ús0Zax5r‹   r   r   r   Útest_fmtloc	  s    


ÿzTestAsinhScale.test_fmtlocc                 C   s’   t  ¡ \}}t t¡ td dd W d   ƒ n1 s80    Y  t t¡ td dd W d   ƒ n1 sn0    Y  td d}td dd}d S )Nr   rƒ   r]   rr   g      @)r/   r0   rK   rL   Ú
ValueErrorr   )r€   r5   r6   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~   )'rx   Zmatplotlib.pyplotZpyplotr/   Zmatplotlib.scaler   r   r   r   r   rO   rt   Zmatplotlib.tickerr   r   Zmatplotlib.testing.decoratorsr	   r
   Únumpyr"   Znumpy.testingr   r<   rK   r   r+   r8   r?   rD   rI   rP   rT   rX   re   rl   rq   rv   r}   r~   r   r   r   r   Ú<module>   s>   


ÿ

