Ë
    èÿæiþ  ã                   ó  — d dl Z d dlZd dlm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ZdZdZ ej"                  e e«      Ze G d	„ d
e«      «       Z G d„ de«      Zedk(  r ej,                  «        yy# e$ r dZY ŒRw xY w)é    N)Údedent)Úmock)ÚTestCaseÚtemp_directoryÚoverride_env_configÚrun_in_subprocess)ÚconfigTFz*pyyaml needed for configuration file testsc                   óŒ   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
 ej                  ej                  d	«      d
„ «       Zˆ xZS )Ú
TestConfigFc                 óX   •— t        d«      | _        d| _        t        t        | �  «        y )NÚ
config_tmpiÄ	  )r   ÚtmppathÚmaxDiffÚsuperr   ÚsetUp)ÚselfÚ	__class__s    €úl/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_config.pyr   zTestConfig.setUp   s#   ø€ ä% lÓ3ˆŒØˆŒÜŒj˜$Ñ%Õ'ó    c                 óB   — t        j                  | j                  ¬«      S )zT
        Creates a mock launch location.
        Returns the location path.
        )Údir)ÚtempfileÚmkdtempr   )r   s    r   Úmock_cfg_locationzTestConfig.mock_cfg_location    s   € ô
 ×Ñ D§L¡LÔ1Ð1r   c                 óÒ   — t         j                  j                  |t        j                  «      }t        |d«      5 }t        j                  ||d¬«       ddd«       y# 1 sw Y   yxY w)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_cfgzTestConfig.inject_mock_cfg'   sF   € ô —‘—‘˜h¬×(<Ñ(<Ó=ˆÜ�&˜$Ô 1Ü�I‰I�c˜1°Õ7÷  ×Ñús   »AÁA&c                 óŠ   — t        «       }t        t        «      D ]&  }|j                  «       sŒt	        t        |«      ||<   Œ( |S )z8
        Gets the current numba config settings
        )Údictr   r	   ÚisupperÚgetattr)r   ÚstoreÚxs      r   Úget_settingszTestConfig.get_settings/   s9   € ô “ˆÜ”V–ˆAØ�y‰y�{Ü"¤6¨1Ó-��a’ð ð ˆr   c                 óÄ  — t        j                  «       }| j                  «       }t        j                  |«       t	        dd«      5  | j                  «       }ddd«       | j                  ||«       	 t	        dd«      5  | j                  «       }ddd«       t        j                  |«       fS # 1 sw Y   ŒZxY w# 1 sw Y   Œ.xY w# t        j                  |«       w xY w)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   r0   r)   )r   r&   Úoriginal_cwdÚ
launch_dirÚoriginalÚcurrents         r   Úcreate_config_effectzTestConfig.create_config_effect9   s¼   € ô —y‘y“{ˆð ×+Ñ+Ó-ˆ
ô 	�‰�Ôô !  cÕ*Ø×(Ñ(Ó*ˆH÷ +ð 	×Ñ˜Z¨Ô-ð	#ô % S¨#Õ.Ø×+Ñ+Ó-�÷ /ô �H‰H�\Ô"Ø˜Ð Ð ÷ +Ð*ú÷ /Ð.ûô �H‰H�\Õ"ús0   ÁB0Á2C Á>B<ÂC Â0B9Â<CÃC ÃCc                 óx  — d}t         j                  t         j                  fD ]•  }| j                   ||«      di«      \  }}| j	                  ||k7  «       | j	                  ||   ||   k7  «       | j                  ||   d«       |j                  |«       |j                  |«       | j                  ||«       Œ— y )NÚCOLOR_SCHEMEÚlight_bg)ÚstrÚupperÚlowerr9   Ú
assertTrueÚassertEqualÚpop)r   ÚkeyÚcaseÚorigÚcurrs        r   Útest_configzTestConfig.test_configZ   s    € ð ˆÜ—Y‘Y¤§	¡	Ó*ˆDØ×2Ñ2±D¸³I¸zÐ3JÓK‰JˆD�$Ø�O‰O˜D D™LÔ)Ø�O‰O˜D ™I¨¨c©Ñ2Ô3Ø×Ñ˜T #™Y¨
Ô3à�H‰H�SŒMØ�H‰H�SŒMØ×Ñ˜T 4Õ(ñ +r   c                 óP   — | j                  i «      \  }}| j                  ||«       y ©N)r9   rA   )r   rE   rF   s      r   Útest_empty_configzTestConfig.test_empty_configh   s&   € à×.Ñ.¨rÓ2‰
ˆˆdØ×Ñ˜˜tÕ$r   z#test expects NUMBA_ENABLE_AVX==Truec                 óÄ  — t         j                  j                  «       }|j                  dd «       d|d<   d}t	        t        |«      |¬«      \  }}|j                  d«      }|j                  d«      }d}| j                  |||¬«       d	|d<   d
}t	        t        |«      |¬«      \  }}|j                  d«      }|j                  d«      }d}| j                  |||¬«       y )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ÚcopyrB   r   r   ÚdecodeÚassertIn)r   Únew_envÚcodeÚoutÚerrÚerr_msgÚout_msgÚex_expecteds           r   Útest_nocona_disables_avxz#TestConfig.test_nocona_disables_avxm   sÛ   € ô —*‘*—/‘/Ó#ˆØ�‰Ð&¨Ô-à$,ˆÐ Ñ!ð/ˆô %¤V¨D£\°wÔ?‰ˆˆSØ—*‘*˜WÓ%ˆØ—*‘*˜WÓ%ˆØ#ˆØ�‰�k 7°ˆÔ8ð %5ˆÐ Ñ!ð+ˆô %¤V¨D£\°wÔ?‰ˆˆSØ—*‘*˜WÓ%ˆØ—*‘*˜WÓ%ˆØ"ˆØ�‰�k 7°ˆÕ8r   )Ú__name__Ú
__module__Ú__qualname__Ú_numba_parallel_test_r   r   r)   r0   r9   rG   rJ   ÚunittestÚ
skipUnlessr	   Ú
ENABLE_AVXr\   Ú__classcell__)r   s   @r   r   r      s]   ø„ ð "Ðô(ò2ò8òò!òB)ò%ð
 €X×Ñ˜×*Ñ*Ø>ó@ñ9ó@ô9r   r   c                   ó  — e Zd Zd„ Z ej
                  ddi¬«      d„ «       Z ej
                  ddi¬«      d„ «       Z ej
                  ddi¬«      d	„ «       Z ej
                  «       d
„ «       Z	 ej
                  ddi¬«      d„ «       Z
y)ÚTestNumbaOptLevelc                 óä  ‡ ‡‡	— ddl m}m} ‰ j                  |j                  |«       ‰ j                  |j                  j
                  |«       ddlm} dŠ	ˆˆ ˆ	fd„}t        j                  j                  |d|¬«      5  ‰ j                  t        «      5 }  |d„ «      «        d d d «       ‰ j                  ‰	t        j                  «      «       d d d «       y # 1 sw Y   Œ7xY w# 1 sw Y   y xY w)	Nr   )r	   Únjit)Ú
CPUCodegenzexpected side effectc                  ó>   •— ‰j                  |‰«       t        ‰«      ‚rI   )rA   ÚRuntimeError)ÚargsÚkwargsÚexpectedr   Úside_effect_messages     €€€r   Úside_effectz,TestNumbaOptLevel.check.<locals>.side_effectŸ   s   ø€ Ø×Ñ˜V XÔ.ÜÐ2Ó3Ð3r   Ú_module_pass_manager)rp   c                   ó   — y)N.© rs   r   r   Ú<lambda>z)TestNumbaOptLevel.check.<locals>.<lambda>¦   s   € ˜cr   )Únumbar	   rh   rA   ÚOPTÚ
_raw_valueÚnumba.core.codegenri   r   ÚpatchÚobjectÚassertRaisesrk   rT   r=   Ú	exception)
r   rn   Ú	opt_valueÚ	raw_valuer	   rh   ri   rp   Úraisesro   s
   ``       @r   ÚcheckzTestNumbaOptLevel.checkŽ   sÁ   ú€ ç&ð 	×Ñ˜Ÿ™ YÔ/Ø×Ñ˜Ÿ™×.Ñ.°	Ô:õ 	2Ø4Ðö	4ô �Z‰Z×Ñ˜zÐ+AØ+6ð õ 8à×"Ñ"¤<Ô0°FØ"‘‘\Ó"Ô$÷ 1ð �M‰MÐ-¬s°6×3CÑ3CÓ/DÔE÷8ð 8ç0Ð0ú÷8ð 8ús$   Á?C&ÂCÂ$-C&ÃC#	ÃC&Ã&C/Ú	NUMBA_OPTÚmax)Úenvvarsc                 ó8   — dddddœ}| j                  |dd«       y )NTFé   Úcheap©Úloop_vectorizeÚslp_vectorizeÚoptÚcostr‚   ©r€   ©r   rn   s     r   Útest_opt_maxzTestNumbaOptLevel.test_opt_maxª   s)   € ð '+Ø%*ØØ#ñ%ˆð 	�
‰
�8˜Q Õ&r   Ú3c                 ó8   — dddddœ}| j                  |dd«       y ©NFr   r†   r‡   r…   rŒ   r�   s     r   Ú
test_opt_3zTestNumbaOptLevel.test_opt_3³   ó)   € ð ',Ø%*ØØ#ñ%ˆð 	�
‰
�8˜Q Õ"r   Ú0c                 ó8   — dddddœ}| j                  |dd«       y )NFr   r†   r‡   rŒ   r�   s     r   Ú
test_opt_0zTestNumbaOptLevel.test_opt_0¼   r“   r   c                 ó8   — dddddœ}| j                  |dd«       y r‘   rŒ   r�   s     r   Útest_opt_defaultz"TestNumbaOptLevel.test_opt_defaultÅ   s)   € ð ',Ø%*ØØ#ñ%ˆð 	�
‰
�8˜Q Õ"r   Úinvalidc                 ó8   — dddddœ}| j                  |dd«       y r‘   rŒ   r�   s     r   Útest_opt_invalidz"TestNumbaOptLevel.test_opt_invalidÏ   r“   r   N)r]   r^   r_   r€   r   Úrun_test_in_subprocessrŽ   r’   r–   r˜   r›   rs   r   r   rf   rf   Š   sÃ   „ òFð8 %€X×$Ñ$¨k¸5Ð-AÔBñ'ó Cð'ð %€X×$Ñ$¨k¸3Ð-?Ô@ñ#ó Að#ð %€X×$Ñ$¨k¸3Ð-?Ô@ñ#ó Að#ð %€X×$Ñ$Ó&ñ#ó 'ð#ð %€X×$Ñ$¨k¸9Ð-EÔFñ#ó Gñ#r   rf   Ú__main__)r   r   Útextwrapr   ra   r   Únumba.tests.supportr   r   r   r   Ú
numba.corer	   r#   Ú
_HAVE_YAMLÚImportErrorÚ	_skip_msgÚskipIfÚ
needs_yamlr   rf   r]   Úmainrs   r   r   Ú<module>r§      s¨   ðÛ 	Û Ý Û Ý ÷4ó 4å ðÛØ€Jð 9€	ØˆX�_‰_ ˜^¨YÓ7€
ð ôr9�ó r9ó ðr9ôjL#˜ô L#ð^ ˆzÒØ€H‡M�M…Oð øðY ò Ø‚Jðús   ¬A; Á;BÂB