o
    1&i                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZmZmZ d dlmZ d dlmZ G dd dejZedkrIe  dS dS )	    N)jit)NumbaWarning
deprecatedNumbaDeprecationWarningNumbaPendingDeprecationWarning)errors)ignore_internal_warningsc                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestBuiltinsc                 C   (   d}|  |jt | |t|j d S )NzbFall-back from the nopython compilation path to the object mode compilation path has been detectedassertEqualcategoryr   assertInstrmessageselfwmsg r   DC:\wamp64\www\opt\env\Lib\site-packages\numba/tests/test_warnings.py!check_objmode_deprecation_warning   s   z.TestBuiltins.check_objmode_deprecation_warningc                 C   r
   )Nz0The 'nopython' keyword argument was not suppliedr   r   r   r   r   $check_nopython_kwarg_missing_warning   s   z1TestBuiltins.check_nopython_kwarg_missing_warningc                    s   t jdt jd  fdd}tjdd$}tdt t  tdd|}|  | 	t
|d	 W d
   d
S 1 s;w   Y  d
S )z9
        Rerun test_return_type_warning with nrt
           )Zdtypec                      s    S Nr   r   yr   r   return_external_array)   s   zMTestBuiltins.test_return_type_warning_with_nrt.<locals>.return_external_arrayTrecordalways)Znopythonr   N)npZonesZfloat32warningscatch_warningssimplefilterr   r   r   r   len)r   r   r   cfuncr   r   r   !test_return_type_warning_with_nrt#   s   "z.TestBuiltins.test_return_type_warning_with_nrtc                 C   sr   dd }t jdd%}t dt t  t|dd}|dd | t|d	 W d    d S 1 s2w   Y  d S )
Nc                 S   s   g }| | S r   r   )xr   ar   r   r   add6   s   z7TestBuiltins.test_no_warning_with_forceobj.<locals>.addTr   r    )Zforceobj      r   )r"   r#   r$   r   r   r   r   r%   )r   r*   r   r&   r   r   r   test_no_warning_with_forceobj5   s   
"z*TestBuiltins.test_no_warning_with_forceobjc                 C   s   t ddd }tjdd;}td t  |  | t|d | |d jt | 	d	t
|d j | 	dt
|d j W d    d S 1 sLw   Y  d S )
Nfooc                   S   s   d S r   r   r   r   r   r   barD   s   z)TestBuiltins.test_deprecated.<locals>.barTr   r    r+   r   r/   )r   r"   r#   r$   r   r   r%   r   DeprecationWarningr   r   r   )r   r/   r   r   r   r   test_deprecatedC   s   

"zTestBuiltins.test_deprecatedc                 C   s  t t j}|dd tt d tt d t  W d    n1 s*w   Y  tjddE}td t  |	  | 
t|d | 
|d jt | 
|d	 jt | dt|d j | dt|d	 j W d    d S 1 s}w   Y  d S )
Nr.   
   ZsameTr   r    r,   r   r+   )r   ZWarningsFixerr   r#   r"   warnr   r   r$   flushr   r%   r   r   r   r   )r   Zwfixr   r   r   r   test_warnings_fixerR   s    
"z TestBuiltins.test_warnings_fixerc           	      C   s   d}d}d}d|||f }t tjd|g}| \}}| |j| ttj	}d|d< t jtjd|g|d}| \}}| |j| d S )	N7   c   z3'parallel=True' was specified but no transformationa0  if 1:
            import warnings
            from numba.tests.error_usecases import foo
            import numba
            from numba.tests.support import ignore_internal_warnings
            with warnings.catch_warnings(record=True) as w:
                warnings.simplefilter('always')
                ignore_internal_warnings()
                foo()
            for x in w:
                if x.category == numba.errors.NumbaPerformanceWarning:
                    if "%s" in str(x.message):
                        exit(%s)
            exit(%s)
        z-c1Z"NUMBA_DISABLE_PERFORMANCE_WARNINGS)env)

subprocessPopensys
executablecommunicater   
returncodedictosenviron)	r   Znot_found_ret_codeZfound_ret_codeexpectedZparallel_codepopenouterrr9   r   r   r   !test_disable_performance_warningsi   s   
z.TestBuiltins.test_disable_performance_warningsc              	   C   s   t  \ t d t jdtd t jdtd t td t td t td t td | t	 t t	d W d    n1 sKw   Y  W d    d S W d    d S 1 scw   Y  d S )Nerrorignorer   this is ignoredthis is not ignored)
r"   r#   r$   r0   PendingDeprecationWarningr3   r   r   assertRaisesr   r   r   r   r    test_filter_deprecation_warnings   s   

"z-TestBuiltins.test_filter_deprecation_warningsc              	   C   s  t   t jdtd t jdtd t jdtd t jdtd | t t td W d    n1 s8w   Y  | t t td W d    n1 sTw   Y  t td t td t jdtd t jdtd | t t td W d    n1 sw   Y  | t t td W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )NrH   rJ   rI   rL   rK   )	r"   r#   r$   r0   rM   r   r   rN   r3   rO   r   r   r   )test_filter_ignore_numba_deprecation_only   s<   
"z6TestBuiltins.test_filter_ignore_numba_deprecation_onlyN)__name__
__module____qualname__r   r   r'   r-   r1   r5   rG   rP   rQ   r   r   r   r   r	      s    %r	   __main__)rA   r:   r<   r"   numpyr!   ZunittestZnumbar   Znumba.core.errorsr   r   r   r   Z
numba.corer   Znumba.tests.supportr   ZTestCaser	   rR   mainr   r   r   r   <module>   s     (