o
    i                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZmZ G d	d
 d
eZG dd deZedkrLe  dS dS )    N)njit)overload)ConfigStack)FlagsDEFAULT_FLAGS)types)default_mangler)TestCaseunittestc                   @   s   e Zd Zdd ZdS )TestCompilerFlagCachedOverloadc                    sh   dd  t  dd }tdd fddt  fd	d
}| \}}| |d | |d d S )Nc                   S   s   d S N r   r   r   n/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_compiler_flags.pyfastmath_status      zQTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.fastmath_statusc                     s(   t   } | jr
dnd  fdd}|S )NHas fastmathNo fastmathc                      s    S r   r   r   valr   r   codegen   r   zeTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.ov_fastmath_status.<locals>.codegen)r   topfastmath)flagsr   r   r   r   ov_fastmath_status   s   
zTTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.ov_fastmath_statusT)r   c                      s     S r   r   r   )r   r   r   set_fastmath   s   zNTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.set_fastmathc                     s     }  }| |fS r   r   )abr   r   r   r   foo    s   zETestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.foor   r   )r   r   assertEqual)selfr   r   r   r   r   r   r   test_fastmath_in_overload   s   
	
z8TestCompilerFlagCachedOverload.test_fastmath_in_overloadN)__name__
__module____qualname__r!   r   r   r   r   r      s    r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestFlagManglingc                    sF    fdd}t  }|| |t t  }d|_d|_d|_|| d S )Nc                    s&   |   }| |} ||   d S r   )get_mangle_stringdemangler   summary)r   Zmangledoutr    r   r   check/   s   
z-TestFlagMangling.test_demangle.<locals>.checkT)r   r   Zno_cpython_wrappernrtr   )r    r+   r   r   r*   r   test_demangle-   s   zTestFlagMangling.test_demanglec                 C   s2   t  }d|_d|_| t| t|  d S )NT)r   r,   auto_parallel
assertLesslenr&   r(   )r    r   r   r   r   test_mangled_flags_is_shorterC   s    z.TestFlagMangling.test_mangled_flags_is_shorterc                 C   sX   t  }d|_d|_d|_d|_| t| t|  |	| }| 
d| d S )NTalways0x)r   r,   r.   r   inliner/   r0   r&   r(   r'   ZassertNotIn)r    r   	demangledr   r   r   /test_mangled_flags_with_fastmath_parfors_inlineJ   s   z@TestFlagMangling.test_mangled_flags_with_fastmath_parfors_inlinec                 C   s   d}t jf}t }d|_d|_t||| gd}d}td|t	|d }|
d}t	|t	| }|||t|  }	t|	}
| |
|  dS )	z,Test demangling of flags from mangled symbolr   TZ
myhardware)Zabi_tagsZ_Z3fooBz[0-9]+Nr   )r   Zint32r   r,   Ztarget_backendr   r&   rematchr0   groupintr'   r   r(   )r    fnameargtypesr   nameprefixmsizebaseZabi_mangledr5   r   r   r   $test_demangling_from_mangled_symbolsV   s   

z5TestFlagMangling.test_demangling_from_mangled_symbolsN)r"   r#   r$   r-   r1   r6   rB   r   r   r   r   r%   +   s
    r%   __main__)r7   Znumbar   Znumba.core.extendingr   Znumba.core.targetconfigr   Znumba.core.compilerr   r   Z
numba.corer   Znumba.core.funcdescr   Znumba.tests.supportr	   r
   r   r%   r"   mainr   r   r   r   <module>   s    C