
    .|h                         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
e      Z G d de      Z G d de      Zedk(  r ej*                          yy)    N)njit)overload)ConfigStack)FlagsDEFAULT_FLAGS)types)default_mangler)TestCaseunittestc                       e Zd Zd Zy)TestCompilerFlagsc                     t               }d}| j                  t        |      5  d|_        d d d        y # 1 sw Y   y xY w)Nz<'Flags' object has no attribute 'this_really_does_not_exist'T)r   assertRaisesRegexAttributeErrorthis_really_does_not_exist)selfflagsmsgs      ^/var/www/html/test/engine/venv/lib/python3.12/site-packages/numba/tests/test_compiler_flags.pytest_setting_invalid_attributez0TestCompilerFlags.test_setting_invalid_attribute   s;    L##NC8 	4/3E,	4 	4 	4s   4=N)__name__
__module____qualname__r        r   r   r      s    4r   r   c                       e Zd Zd Zy)TestCompilerFlagCachedOverloadc                     d t              d        }t        d      fd       t               fd       } |       \  }}| j                  |d       | j                  |d       y )	Nc                       y Nr   r   r   r   fastmath_statuszQTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.fastmath_status   s    r   c                  b    t               j                         } | j                  rdndfd}|S )NHas fastmathNo fastmathc                       S r    r   )vals   r   codegenzeTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.ov_fastmath_status.<locals>.codegen   s    
r   )r   topfastmath)r   r'   r&   s     @r   ov_fastmath_statuszTTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.ov_fastmath_status   s,    M%%'E$)NN.C Nr   T)r)   c                               S r    r   )r!   s   r   set_fastmathzNTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.set_fastmath$   s    "$$r   c                  (            }         }| |fS r    r   )abr!   r,   s     r   foozETestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.foo(   s    !AAq6Mr   r$   r#   )r   r   assertEqual)r   r*   r0   r.   r/   r!   r,   s        @@r   test_fastmath_in_overloadz8TestCompilerFlagCachedOverload.test_fastmath_in_overload   s}    	 
/	"	 
#	 
t		% 
	% 
	 
	
 u1M*N+r   N)r   r   r   r2   r   r   r   r   r      s    ,r   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestFlagManglingc                       fd}t               } ||        |t               t               }d|_        d|_        d|_         ||       y )Nc                     | j                         }| j                  |      }j                  || j                                y r    )get_mangle_stringdemangler1   summary)r   mangledoutr   s      r   checkz-TestFlagMangling.test_demangle.<locals>.check7   s5    --/G..)CS%--/2r   T)r   r   no_cpython_wrappernrtr)   )r   r<   r   s   `  r   test_demanglezTestFlagMangling.test_demangle5   sH    	3 e 	m #' 	er   c                     t               }d|_        d|_        | j                  t	        |j                               t	        |j                                      y )NT)r   r>   auto_parallel
assertLesslenr7   r9   )r   r   s     r   test_mangled_flags_is_shorterz.TestFlagMangling.test_mangled_flags_is_shorterK   s?    	"E3356EMMO8LMr   c                 2   t               }d|_        d|_        d|_        d|_        | j                  t        |j                               t        |j                                      |j                  |j                               }| j                  d|       y )NTalways0x)r   r>   rA   r)   inlinerB   rC   r7   r9   r8   assertNotIn)r   r   	demangleds      r   /test_mangled_flags_with_fastmath_parfors_inlinez@TestFlagMangling.test_mangled_flags_with_fastmath_parfors_inlineR   st    	"E3356EMMO8LMNN5#:#:#<=	y)r   c                    d}t         j                  f}t               }d|_        d|_        t        |||j                         g      }d}t        j                  d|t        |      d       }|j                  d      }t        |      t        |      z   }|||t        |      z    }	t        j                  |	      }
| j                  |
|j                                y)	z,Test demangling of flags from mangled symbolr0   TrF   )abi_tags_Z3fooBz[0-9]+Nr   )r   int32r   r>   rH   r	   r7   rematchrC   groupintr8   r1   r9   )r   fnameargtypesr   nameprefixmsizebaseabi_mangledrJ   s              r   $test_demangling_from_mangled_symbolsz5TestFlagMangling.test_demangling_from_mangled_symbols^   s     ;;<	8u'>'>'@&A
 HHXtCKL12wwqz6{SY&4s4y 01NN;/	EMMO4r   N)r   r   r   r?   rD   rK   r\   r   r   r   r4   r4   3   s    ,N
*5r   r4   __main__)rP   numbar   numba.core.extendingr   numba.core.targetconfigr   numba.core.compilerr   r   
numba.corer   numba.core.funcdescr	   numba.tests.supportr
   r   r   r   r4   r   mainr   r   r   <module>rf      s^    	  ) / 4  / 24 4,X ,<@5x @5F zHMMO r   