U
    ?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Ú	underflowÚ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#   úS/var/www/html/venv/lib/python3.8/site-packages/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    

r2   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    

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   r'   r8   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'   r8   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'   r8   r   r   Zwrightomegar   r;   r#   r#   r$   Útest_errstate_cpp_basicc   s
    rA   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'   r8   r%   r   r   )r0   r1   r"   r<   r#   r#   r$   Útest_errstatek   s    rB   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   )r4   r   r   g      ð¿)r   r'   r8   Zgammalnr   r   r?   r   r;   r#   r#   r$   Útest_errstate_all_but_onet   s    
rC   )r6   r   Znumpy.testingr   r   r   r   r   r   Zscipy.specialÚspecialr   Zscipy.special._ufuncsr   r)   r*   r%   r.   r2   ÚmarkZskipifr:   r=   r@   rA   rB   rC   r#   r#   r#   r$   Ú<module>   s<   öý
	