
    sh                        S SK r S SKrS SKJr  S SKrS SKJr  S SKJrJrJ	r	J
r
  S SKJr   S SKrSrSr\R"                  " \(       + \5      r\ " S	 S
\5      5       r " S S\5      r\S:X  a  \R,                  " 5         gg! \ a    Sr NXf = f)    N)dedent)mock)TestCasetemp_directoryoverride_env_configrun_in_subprocess)configTFz*pyyaml needed for configuration file testsc                      ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 r\R                  " \R                  S
5      S 5       rSrU =r$ )
TestConfig   Fc                 X   > [        S5      U l        SU l        [        [        U ]  5         g )N
config_tmpi	  )r   tmppathmaxDiffsuperr   setUp)self	__class__s    k/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_config.pyr   TestConfig.setUp   s#    %l3j$%'    c                 >    [         R                  " U R                  S9$ )z<
Creates a mock launch location.
Returns the location path.
)dir)tempfilemkdtempr   )r   s    r   mock_cfg_locationTestConfig.mock_cfg_location    s    
 DLL11r   c                     [         R                  R                  U[        R                  5      n[        US5       n[        R                  " X$SS9  SSS5        g! , (       d  f       g= f)z,
Injects a mock configuration at 'location'
wtF)default_flow_styleN)ospathjoinr	   _config_fnameopenyamldump)r   locationcfgtmpcfgfs        r   inject_mock_cfgTestConfig.inject_mock_cfg'   sD     h(<(<=&$1IIc7  s   A
A(c                     [        5       n[        [        5       H,  nUR                  5       (       d  M  [	        [        U5      X'   M.     U$ )z(
Gets the current numba config settings
)dictr   r	   isuppergetattr)r   storexs      r   get_settingsTestConfig.get_settings/   s9     VAyy{{"61-  r   c                    [         R                  " 5       nU R                  5       n[         R                  " U5        [	        SS5         U R                  5       nSSS5        U R                  X15         [	        SS5         U R                  5       nSSS5        [         R                  " U5        WW4$ ! , (       d  f       N_= f! , (       d  f       N9= f! [         R                  " U5        f = f)z
Returns a config "original" from a location with no config file
and then the impact of applying the supplied cfg dictionary as
a config file at a location in the returned "current".
_N)r!   getcwdr   chdirr   r4   r,   )r   r)   original_cwd
launch_diroriginalcurrents         r   create_config_effectTestConfig.create_config_effect9   s     yy{ ++-
 	 !c*((*H + 	Z-	# %S#.++- / HH\"   +* /. HH\"s0   B23C ?CC 2
C 
CC C,c                 p   Sn[         R                  [         R                  4 H  nU R                  U" U5      S05      u  p4U R	                  X4:g  5        U R	                  X1   XA   :g  5        U R                  XA   S5        UR                  U5        UR                  U5        U R                  X45        M     g )NCOLOR_SCHEMElight_bg)strupperlowerr>   
assertTrueassertEqualpop)r   keycaseorigcurrs        r   test_configTestConfig.test_configZ   s     YY		*D22DIz3JKJDOODL)OODI23TY
3HHSMHHSMT( +r   c                 L    U R                  0 5      u  pU R                  X5        g N)r>   rG   )r   rK   rL   s      r   test_empty_configTestConfig.test_empty_configh   s"    ..r2
$r   z#test expects NUMBA_ENABLE_AVX==Truec                    [         R                  R                  5       nUR                  SS 5        SUS'   Sn[	        [        U5      US9u  p4UR                  S5      nUR                  S5      nSnU R                  XvUS9  S	US'   S
n[	        [        U5      US9u  p4UR                  S5      nUR                  S5      nSnU R                  XvUS9  g )NNUMBA_ENABLE_AVXnoconaNUMBA_CPU_NAMEzbfrom numba.core import config
print('---->', bool(config.ENABLE_AVX))
assert not config.ENABLE_AVX)envzutf-8z----> False)msgzskylake-avx512z^from numba.core import config
print('---->', bool(config.ENABLE_AVX))
assert config.ENABLE_AVXz
----> True)r!   environcopyrH   r   r   decodeassertIn)r   new_envcodeouterrerr_msgout_msgex_expecteds           r   test_nocona_disables_avx#TestConfig.test_nocona_disables_avxm   s     **//#&-$, !/ %VD\w?**W%**W%#k8 %5 !+ %VD\w?**W%**W%"k8r   )r   r   )__name__
__module____qualname____firstlineno___numba_parallel_test_r   r   r,   r4   r>   rM   rQ   unittest
skipUnlessr	   
ENABLE_AVXrd   __static_attributes____classcell__)r   s   @r   r   r      s[     "(28!B)%
 **>@9@9r   r   c                      \ rS rSrS r\R                  " SS0S9S 5       r\R                  " SS0S9S 5       r\R                  " SS	0S9S
 5       r	\R                  " 5       S 5       r
\R                  " SS0S9S 5       rSrg)TestNumbaOptLevel   c                   ^ ^^	 SSK JnJn  T R                  UR                  U5        T R                  UR                  R
                  U5        SSKJn  Sm	UU U	4S jn[        R                  R                  USUS9   T R                  [        5       nU" S 5      " 5         S S S 5        T R                  T	[        WR                  5      5        S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)	Nr   )r	   njit)
CPUCodegenzexpected side effectc                  >   > TR                  UT5        [        T5      erP   )rG   RuntimeError)argskwargsexpectedr   side_effect_messages     r   side_effect,TestNumbaOptLevel.check.<locals>.side_effect   s    VX.233r   _module_pass_manager)r|   c                      g)N. r   r   r   <lambda>)TestNumbaOptLevel.check.<locals>.<lambda>   s    cr   )numbar	   rt   rG   OPT
_raw_valuenumba.core.codegenru   r   patchobjectassertRaisesrw   r\   rC   	exception)
r   rz   	opt_value	raw_valuer	   rt   ru   r|   raisesr{   s
   ``       @r   checkTestNumbaOptLevel.check   s    & 	Y/..	: 	24	4 ZZz+A+6  8""<0F\"$ 1 MM-s63C3C/DE8 8008 8s$   =C)C"-C)
C&	"C))
C7	NUMBA_OPTmax)envvarsc                 8    SSSSS.nU R                  USS5        g )NTF   cheaploop_vectorizeslp_vectorizeoptcostr   r   r   rz   s     r   test_opt_maxTestNumbaOptLevel.test_opt_max   s)     '+%*#% 	

8Q&r   3c                 8    SSSSS.nU R                  USS5        g NFr   r   r   r   r   r   s     r   
test_opt_3TestNumbaOptLevel.test_opt_3   )     ',%*#% 	

8Q"r   0c                 8    SSSSS.nU R                  USS5        g )NFr   r   r   r   r   s     r   
test_opt_0TestNumbaOptLevel.test_opt_0   r   r   c                 8    SSSSS.nU R                  USS5        g r   r   r   s     r   test_opt_default"TestNumbaOptLevel.test_opt_default   s)     ',%*#% 	

8Q"r   invalidc                 8    SSSSS.nU R                  USS5        g r   r   r   s     r   test_opt_invalid"TestNumbaOptLevel.test_opt_invalid   r   r   r   N)rf   rg   rh   ri   r   r   run_test_in_subprocessr   r   r   r   r   rn   r   r   r   rq   rq      s    F8 $$k5-AB' C' $$k3-?@# A# $$k3-?@# A# $$&# '# $$k9-EF# G#r   rq   __main__)r!   r   textwrapr   rk   r   numba.tests.supportr   r   r   r   
numba.corer	   r&   
_HAVE_YAMLImportError	_skip_msgskipIf
needs_yamlr   rq   rf   mainr   r   r   <module>r      s    	    4 4 J 9	__^Y7
 r9 r9 r9jL# L#^ zMMO Y  Js   B   B
B