U
    m±ËhÁ  ã                
   @   sÎ   d dl Z d dlZd dlmZmZmZ d dlZd dlmZ d dl	m
Z d dlmZ ddddd	d
ddddœ	ZdddgZdd„ Zdd„ Zdd„ Zejjedddd„ ƒZdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ ZdS )&é    N)Úassert_Úassert_equalÚIS_PYPY)Úraises)Ú_sf_error_test_functioné   é   é   é   é   é   é   é   é	   )	ÚsingularÚ	underflowZoverflowZslowZlossZ	no_resultÚdomainÚargÚotherÚignoreÚwarnÚraisec              	   C   s|   |dkr*t  tj¡ | |Ž  W 5 Q R X nN|dkrRttjƒ | |Ž  W 5 Q R X n&t ¡  t d¡ | |Ž  W 5 Q R X d S )Nr   r   Úerror)	ÚpytestZwarnsÚscZSpecialFunctionWarningÚassert_raisesÚSpecialFunctionErrorÚwarningsÚcatch_warningsÚsimplefilter)ZfunÚargsÚaction© r"   úE/tmp/pip-unpacked-wheel-9oz00b9h/scipy/special/tests/test_sf_error.pyÚ_check_action   s    

r$   c                  C   s6   t  ¡ } |  ¡ D ] \}}t|tkƒ t|tkƒ qd S ©N)r   ÚgeterrÚitemsr   Ú_sf_error_code_mapÚ_sf_error_actions)ÚerrÚkeyÚvaluer"   r"   r#   Útest_geterr-   s    r-   c               	   C   s¦   t  ¡ } zŠt ¡ D ]|\}}tD ]n}t  ¡ }t jf ||iŽ}t||kƒ t  ¡ }t|| |kƒ | |¡ | |¡ t||kƒ tt	|f|ƒ qqW 5 t jf | Ž X d S r%   )
r   r&   Zseterrr(   r'   r)   r   Úpopr$   r   )Z	entry_errÚcategoryÚ
error_coder!   Zgeterr_olderrZseterr_olderrZnewerrr"   r"   r#   Útest_seterr4   s    

r1   zTest not meaningful on PyPy)Úreasonc               
   C   sb   t  t¡} tjdd, tjtjdd t d¡ W 5 Q R X W 5 Q R X t  t¡}|| ks^t‚d S )Nr   )Úallzdomain error)Úmatchg       @)	ÚsysÚgetrefcountr   Úerrstater   r   r   ZndtriÚAssertionError)Zrefcount_beforeZrefcount_afterr"   r"   r#   Útest_sf_error_special_refcountF   s    

r9   c               
   C   sR   t  ¡ } t jdd& tt jƒ t  d¡ W 5 Q R X W 5 Q R X t| t  ¡ ƒ d S )Nr   )r   r   )r   r&   r7   r   r   Zloggammar   ©Úolderrr"   r"   r#   Útest_errstate_pyx_basicS   s
    r<   c               
   C   sR   t  ¡ } t jdd& tt jƒ t  d¡ W 5 Q R X W 5 Q R X t| t  ¡ ƒ d S )Nr   )r   éÿÿÿÿ)r   r&   r7   r   r   Úspencer   r:   r"   r"   r#   Útest_errstate_c_basic[   s
    r?   c               
   C   sR   t  ¡ } t jdd& tt jƒ t  d¡ W 5 Q R X W 5 Q R X t| t  ¡ ƒ d S )Nr   )r   iüÿÿ)r   r&   r7   r   r   Zwrightomegar   r:   r"   r"   r#   Útest_errstate_cpp_basicc   s
    r@   c                  C   s`   t  ¡ D ]R\} }tD ]D}t ¡ }tjf | |iŽ tt|f|ƒ W 5 Q R X t|t ¡ ƒ qqd S r%   )	r(   r'   r)   r   r&   r7   r$   r   r   )r/   r0   r!   r;   r"   r"   r#   Útest_errstatek   s    rA   c               
   C   s^   t  ¡ } t jddd0 t  d¡ tt jƒ t  d¡ W 5 Q R X W 5 Q R X t| t  ¡ ƒ d S )Nr   r   )r3   r   r   g      ð¿)r   r&   r7   Zgammalnr   r   r>   r   r:   r"   r"   r#   Útest_errstate_all_but_onet   s    
rB   )r5   r   Znumpy.testingr   r   r   r   r   r   Zscipy.specialÚspecialr   Zscipy.special._ufuncsr   r(   r)   r$   r-   r1   ÚmarkZskipifr9   r<   r?   r@   rA   rB   r"   r"   r"   r#   Ú<module>   s<   öý
	