U
    Âmœd$"  ã                   @   sN  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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_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   úT/home/sam/Atlas/atlas_env/lib/python3.8/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sPt‚tj|d< | |  |¡¡}t||ƒ t|ƒt|ƒksˆt‚tj	 
|¡}| |  |¡¡}t||ƒ t|ƒt|ƒksÂt‚tj	j|d< | |  |¡¡}t||ƒ t|ƒt|ƒksüt‚d S )	Né
   é   é   g      ø¿é   ç      à?é   é   )r   ÚinvertedÚnpÚarangeÚtransform_non_affiner   ÚtypeÚAssertionErrorÚnanÚmaÚarrayZmasked)ZsltZsltiÚxÚoutr   r   r   Útest_symlog_mask_nan   s$    




r,   c               	   C   sz   t j d¡ t j d¡} t j d¡}t ¡ \}}t | |d¡ | d¡ | d¡ tj	t
dd |j ¡  W 5 Q R X d S )Né!N,éd   Úor   zAll values .* of linthresh)Úmatch)r"   ÚrandomÚseedÚpltÚsubplotsr   Ú
set_xscaleÚ
set_yscaleÚpytestÚwarnsÚUserWarningÚcanvasÚdraw)r*   ÚyÚfigÚaxr   r   r   Útest_symlog_linthresh:   s    

r?   zlogit_scales.pngT)Úremove_textc                  C   s”   t  ¡ \} }t ddddddddd	d
dddddddg¡}d| }| ||¡ | d¡ | d¡ | | j 	¡ ¡}t 
|j¡s€t‚t 
|j¡st‚d S )Ngü©ñÒ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)r3   r4   r"   r)   r   r5   ÚgridZget_tightbboxr:   Zget_rendererÚisfiniteZx0r&   Zy0)r=   r>   r*   r<   Zbboxr   r   r   Útest_logit_scalesH   s$           ÿ

rE   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)r3   r4   r"   r#   ÚscatterÚioÚBytesIOZsavefig)r=   r>   r*   r<   Úbufr   r   r   Útest_log_scatterY   s    
rL   c                  C   s4   t  ¡ \} }|jdt dddg¡d | j ¡  d S )Nr   r   r    r   )Úsubs)r3   r4   r6   r"   r)   r:   r;   ©r=   r>   r   r   r   Útest_logscale_subsl   s    rO   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"   Úlinspacer3   r4   r   Úexpr:   r;   r   )Úxsr=   r>   r   r   r   Útest_logscale_masks   s
    
rT   c               
   C   s>   t  ¡ \} }dD ](}t t¡ |j|dd W 5 Q R X qd S )N)Zlinearr   r   Úmask)Zfoo)r3   r4   r7   ÚraisesÚ	TypeErrorr6   ©r=   r>   Úscaler   r   r   Útest_extra_kwargs_raise   s    rZ   c                  C   sX   t  ¡ \} }| d¡ |j|j ¡   ¡ }tdd ¡ }t|tƒsFt	‚|j
dksTt	‚d S )Nr   r   )Úbase)r3   r4   r6   Z	transAxesÚ	transDatar!   r   Ú
isinstancer   r&   r[   )r=   r>   ZtformZinverted_transformr   r   r   Útest_logscale_invert_transform‡   s    
r^   c                  C   s4   t  ¡ \} }| d¡ t|jƒ ttdddƒ d S )Nr   r   Zclip©Únonpositive)r3   r4   r6   Úreprr\   r   rN   r   r   r   Útest_logscale_transform_repr“   s    

rb   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 )Nr-   g     @@)Úsizer   )éûÿÿÿr   r   )ÚrangeZbinsr   rU   r_   r   rA   rB   r   éÿÿÿÿr   r    )Úyerr)r"   r1   r2   ÚnormalÚintr3   r4   Úhistr6   r#   rR   ÚcosZfill_betweenZlogspaceZerrorbarr5   )rS   r=   Zax1Zax2Zax3Zax4ZxdataZydataZedatar*   r<   rh   r   r   r   Útest_logscale_nonpos_valuesš   s$    
&

rm   c               	   C   s  t  ¡ \} }| tddƒtddƒ¡ | d¡ | ¡ }t t¡ |j	dd W 5 Q R X | ¡ |ksht
‚t t¡ |j	dd W 5 Q R X | ¡ |ksšt
‚| d¡ | ¡ }t t¡ |jdd W 5 Q R X | ¡ |ksÞt
‚t t¡ |jdd W 5 Q R X | ¡ |kst
‚d S )	Nr   r   r   )Úleftrg   )Úright)Úbottom)Útop)r3   r4   rH   rf   r5   r   r7   r8   r9   Úset_xlimr&   r6   r   Zset_ylim)r=   r>   Zoriginal_xlimZoriginal_ylimr   r   r   Útest_invalid_log_limsµ   s$    

rs   zfunction_scales.png)r@   rc   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   rt   r   r   r   ÚforwardÒ   s    z$test_function_scale.<locals>.forwardr   iè  Úfunction)Z	functions)r3   r4   r"   r#   r   r5   rr   )ru   rv   r=   r>   r*   r   r   r   Útest_function_scaleÍ   s    rx   c                  C   s`   t  ¡ \} }tjd d}| |¡ tjd d}| |¡ |j ¡ dksJt‚|j	 ¡ dks\t‚d S )N©Úaxisr   )
r3   r4   ÚmscaleÚLogScaler5   r6   ZxaxisZ	get_scaler&   ZyaxisrX   r   r   r   Útest_pass_scaleÞ   s    

r}   c                  C   sH   t jddd} t | ¡}t|  ¡ ƒt| ¡ ƒks4t‚| j|jk	sDt‚d S )Nr*   r   ©rz   r[   )r{   r|   ÚcopyÚdeepcopyÚstrÚget_transformr&   Z
_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ÎÿÿÿrP   r.   )r"   rQ   r   r!   r$   r   Zarcsinh)	ÚselfZa0Úarv   ru   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&t‚|jdks4t‚|jdksBt‚| ¡ }t|t	ƒsXt‚|j|jksht‚d S )Ng      7@©rz   Úlinear_widthé   r   )r   r   )
r3   r4   r   rŠ   r&   Ú_baseÚ_subsr‚   r]   r   )r†   r=   r>   ÚsZtxr   r   r   Ú	test_init   s    zTestAsinhScale.test_initc                 C   sb   t  ¡ \}}td dd}|jdks&t‚|jdks4t‚td ddd}|jdksPt‚|jdks^t‚d S )Nr    r~   )r   é   )r   r   )rz   r[   rM   )r3   r4   r   rŒ   r&   r   )r†   r=   r>   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>t‚t|jd tƒsRt‚|ƒ }t |dd}| |¡ t|jd tƒs‚t‚t|jd tƒs–t‚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 |Ž 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   r~   Zmajor_locatorr™   r   )r   Z#set_default_locators_and_formattersr]   r•   r   r&   r   r   )r†   rŸ   Zax0Ús0Zax5r‘   r   r   r   Útest_fmtloc  s    


ÿzTestAsinhScale.test_fmtlocc              	   C   sj   t  ¡ \}}t t¡ td dd W 5 Q R X t t¡ td dd W 5 Q R X td d}td dd}d S )Nr   r‰   rg   ry   g      @)r3   r4   r7   rV   Ú
ValueErrorr   )r†   r=   r>   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   Zmatplotlib.pyplotZpyplotr3   Zmatplotlib.scaler   r   r   r   r   rY   r{   Zmatplotlib.tickerr   r   Zmatplotlib.testing.decoratorsr	   r
   Únumpyr"   Znumpy.testingr   rI   r7   r   r,   r?   rE   rL   rO   rT   rZ   r^   rb   rm   rs   rx   r}   r„   r…   r   r   r   r   Ú<module>   sD   


  ÿ

