o
    il                     @   s   d dl Z 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d
Zg dZdd Zdd Zejj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ejj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otherZmemory)ignorewarnraisec                 C   s   t j|t dd}|dkr+ttj | |  W d    d S 1 s$w   Y  d S |dkrKttj | |  W d    d S 1 sDw   Y  d S t	
  t	d | |  W d    d S 1 sdw   Y  d S )Nlong)dtyper   r   error)npZasarrayr   pytestZwarnsscZSpecialFunctionWarningassert_raisesSpecialFunctionErrorwarningscatch_warningssimplefilter)Zfunargsaction r'   [/home/kim/smarthome/.venv/lib/python3.10/site-packages/scipy/special/tests/test_sf_error.py_check_action!   s   
"
"


"r)   c                  C   s6   t  } |  D ]\}}t|tv  t|tv  qd S )N)r   geterritemsr   _sf_error_code_map_sf_error_actions)errkeyvaluer'   r'   r(   test_geterr2   s
   r1   c               
   C   s   t  } zPt D ]@\}}tD ]9}t  }t jdi ||i}t||k t  }t|| |k || || t||k tt	|f| qq	W t jdi |  d S t jdi |  w Nr'   )
r   r*   r,   r+   r-   Zseterrr   popr)   r   )Z	entry_errcategory
error_coder&   Zgeterr_olderrZseterr_olderrZnewerrr'   r'   r(   test_seterr9   s    

&r6   zTest not meaningful on PyPy)reasonc               	   C   s   t t} tjdd% tjtjdd td W d    n1 s$w   Y  W d    n1 s3w   Y  t t}|| ksCJ d S )Nr   )allzdomain error)matchg       @)sysgetrefcountr   errstater   r   r!   Zndtri)Zrefcount_beforeZrefcount_afterr'   r'   r(   test_sf_error_special_refcountL   s   

r=   c               	   C   z   t  } t jdd" tt j t d W d    n1 s w   Y  W d    n1 s/w   Y  t| t   d S Nr   r   r   )r   r*   r<   r    r!   Zloggammar   olderrr'   r'   r(   test_errstate_pyx_basicY      rC   c               	   C   r>   )Nr   )r   )r   r*   r<   r    r!   spencer   rA   r'   r'   r(   test_errstate_c_basica   rD   rG   c               	   C   r>   )Nr   )r   i)r   r*   r<   r    r!   Zwrightomegar   rA   r'   r'   r(   test_errstate_cpp_basici   rD   rH   c               	   C   s|   t  } t jdd# tt j t dd W d    n1 s!w   Y  W d    n1 s0w   Y  t| t   d S )Nr   r@   r   r   )r   r*   r<   r    r!   Zlambertwr   rA   r'   r'   r(   test_errstate_cpp_scipy_specialq   s   rI   c               	   C   r>   r?   )r   r*   r<   r    r!   gammalnr   rA   r'   r'   r(   %test_errstate_cpp_alt_ufunc_machineryy   rD   rK   c               
   C   sx   t  D ]5\} }tD ].}t }tjdi | |i tt|f| W d    n1 s,w   Y  t|t  q
qd S r2   )	r,   r+   r-   r   r*   r<   r)   r   r   )r4   r5   r&   rB   r'   r'   r(   test_errstate   s   rL   c               	   C   s   t  } t jddd' t d tt j t d W d    n1 s&w   Y  W d    n1 s5w   Y  t| t   d S )Nr   r   )r8   r   r   g      )r   r*   r<   rJ   r    r!   rF   r   rA   r'   r'   r(   test_errstate_all_but_one   s   
rM   ) r:   r"   numpyr   Znumpy.testingr   r   r   r   r   r    Zscipy.specialZspecialr   Zscipy.special._ufuncsr   r,   r-   r)   r1   markZthread_unsafer6   Zskipifr=   rC   rG   rH   rI   rK   rL   rM   r'   r'   r'   r(   <module>   sD    


	