§
    ƒÛg  ã                   ó"  — 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n# e$ r dZY nw xY wdZ ej        e e¦  «        Ze G d	„ d
e¦  «        ¦   «         Z G d„ de¦  «        Zedk    r ej        ¦   «          dS dS )é    N)Údedent)Úmock)ÚTestCaseÚtemp_directoryÚoverride_env_configÚrun_in_subprocess)ÚconfigTFz*pyyaml needed for configuration file testsc                   óL   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zˆ xZS )
Ú
TestConfigFc                 óŒ   •— t          d¦  «        | _        d| _        t          t          | ¦  «                             ¦   «          d S )NÚ
config_tmpiÄ	  )r   ÚtmppathÚmaxDiffÚsuperr   ÚsetUp)ÚselfÚ	__class__s    €úM/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_config.pyr   zTestConfig.setUp   s;   ø€ å% lÑ3Ô3ˆŒØˆŒÝ�j˜$ÑÔ×%Ò%Ñ'Ô'Ð'Ð'Ð'ó    c                 ó6   — 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Ð1Ñ1Ô1Ð1r   c                 óÚ   — t           j                             |t          j        ¦  «        }t          |d¦  «        5 }t          j        ||d¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )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'   s¤   € õ ”—’˜h­Ô(<Ñ=Ô=ˆÝ�&˜$ÑÔð 	8 1ÝŒI�c˜1°Ð7Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s   »A Á A$Á'A$c                 ó¨   — t          ¦   «         }t          t          ¦  «        D ].}|                     ¦   «         rt	          t          |¦  «        ||<   Œ/|S )z8
        Gets the current numba config settings
        )Údictr   r	   ÚisupperÚgetattr)r   ÚstoreÚxs      r   Úget_settingszTestConfig.get_settings/   sK   € õ ‘”ˆÝ•V‘”ð 	.ð 	.ˆAØ�yŠy‰{Œ{ð .Ý"¥6¨1Ñ-Ô-��a‘øØˆr   c                 óú  — t          j        ¦   «         }|                      ¦   «         }t          j        |¦  «         t	          dd¦  «        5  |                      ¦   «         }ddd¦  «         n# 1 swxY w Y   |                      ||¦  «         	 t	          dd¦  «        5  |                      ¦   «         }ddd¦  «         n# 1 swxY w Y   t          j        |¦  «         n# t          j        |¦  «         w xY w||fS )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   sw  € õ ”y‘{”{ˆð ×+Ò+Ñ-Ô-ˆ
õ 	Œ�ÑÔÐõ !  cÑ*Ô*ð 	+ð 	+Ø×(Ò(Ñ*Ô*ˆHð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	×Ò˜Z¨Ñ-Ô-Ð-ð	#õ % S¨#Ñ.Ô.ð .ð .Ø×+Ò+Ñ-Ô-�ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .õ ŒH�\Ñ"Ô"Ð"Ð"ø�BŒH�\Ñ"Ô"Ð"Ð"øøøØ˜Ð Ð sB   ÁA-Á-A1Á4A1ÂC  ÂC Â4C  Ã CÃC  ÃCÃC  Ã C6c                 óº  — d}t           j        t           j        fD ]¿}|                       ||¦  «        di¦  «        \  }}|                      ||k    ¦  «         |                      ||         ||         k    ¦  «         |                      ||         d¦  «         |                     |¦  «         |                     |¦  «         |                      ||¦  «         ŒÀd S )NÚCOLOR_SCHEMEÚlight_bg)ÚstrÚupperÚlowerr9   Ú
assertTrueÚassertEqualÚpop)r   ÚkeyÚcaseÚorigÚcurrs        r   Útest_configzTestConfig.test_configZ   sÕ   € ð ˆÝ”Y¥¤	Ð*ð 	)ð 	)ˆDØ×2Ò2°D°D¸±I´I¸zÐ3JÑKÔK‰JˆD�$Ø�OŠO˜D DšLÑ)Ô)Ð)Ø�OŠO˜D œI¨¨c¬Ò2Ñ3Ô3Ð3Ø×Ò˜T #œY¨
Ñ3Ô3Ð3à�HŠH�S‰MŒMˆMØ�HŠH�S‰MŒMˆMØ×Ò˜T 4Ñ(Ô(Ð(Ð(ð	)ð 	)r   c                 ób   — |                       i ¦  «        \  }}|                      ||¦  «         d S ©N)r9   rA   )r   rE   rF   s      r   Útest_empty_configzTestConfig.test_empty_configh   s5   € à×.Ò.¨rÑ2Ô2‰
ˆˆdØ×Ò˜˜tÑ$Ô$Ð$Ð$Ð$r   c                 óz  — t           j                             ¦   «         }d|d<   d}d|› d�}t          t	          |¦  «        |¬¦  «        \  }}d}|                     d¦  «        }|                      ||¦  «         d	}|                      ||¦  «         |                      ||                     d¦  «        ¦  «         d S )
NÚnot_a_known_styleÚNUMBA_CAPTURED_ERRORSzthe source compiledz0from numba import njit
@njit
def foo():
	print('z')
foo())ÚenvzyEnvironment variable 'NUMBA_CAPTURED_ERRORS' is defined but its associated value 'not_a_known_style' could not be parsed.zutf-8zZThe parse failed with exception: Invalid style in NUMBA_CAPTURED_ERRORS: not_a_known_style)r   ÚenvironÚcopyr   r   ÚdecodeÚassertIn)	r   Únew_envÚsource_compiledÚcodeÚoutÚerrÚexpectedÚerr_msgÚex_expecteds	            r   Ú!test_illegal_error_style_handlingz,TestConfig.test_illegal_error_style_handlingm   sÈ   € å”*—/’/Ñ#Ô#ˆØ+>ˆÐ'Ñ(Ø/ˆð5Ø)ð5ð 5ð 5ˆå$¥V¨D¡\¤\°wÐ?Ñ?Ô?‰ˆˆSð!ˆð —*’*˜WÑ%Ô%ˆØ�Š�h Ñ(Ô(Ð(ðBˆà�Š�k 7Ñ+Ô+Ð+Ø�Š�o s§z¢z°'Ñ':Ô':Ñ;Ô;Ð;Ð;Ð;r   )Ú__name__Ú
__module__Ú__qualname__Ú_numba_parallel_test_r   r   r)   r0   r9   rG   rJ   r[   Ú__classcell__)r   s   @r   r   r      sª   ø€ € € € € ð "Ðð(ð (ð (ð (ð (ð2ð 2ð 2ð8ð 8ð 8ðð ð ð!ð !ð !ðB)ð )ð )ð%ð %ð %ð
<ð <ð <ð <ð <ð <ð <r   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
dS )ÚTestNumbaOptLevelc                 ó  ‡ ‡‡	— ddl m}m} ‰                      |j        |¦  «         ‰                      |j        j        |¦  «         ddlm} dŠ	ˆˆ ˆ	fd„}t          j	         
                    |d|¬¦  «        5  ‰                      t          ¦  «        5 }  |d„ ¦  «        ¦   «          d d d ¦  «         n# 1 swxY w Y   ‰                      ‰	t          |j        ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr   )r	   Únjit)Ú
CPUCodegenzexpected side effectc                  óN   •— ‰                      |‰¦  «         t          ‰¦  «        ‚rI   )rA   ÚRuntimeError)ÚargsÚkwargsrX   r   Úside_effect_messages     €€€r   Úside_effectz,TestNumbaOptLevel.check.<locals>.side_effect•   s(   ø€ Ø×Ò˜V XÑ.Ô.Ð.ÝÐ2Ñ3Ô3Ð3r   Ú_module_pass_manager)rk   c                  ó   — dS )N.© rn   r   r   ú<lambda>z)TestNumbaOptLevel.check.<locals>.<lambda>œ   s   € ˜c€ r   )Únumbar	   rd   rA   ÚOPTÚ
_raw_valueÚnumba.core.codegenre   r   ÚpatchÚobjectÚassertRaisesrg   rR   r=   Ú	exception)
r   rX   Ú	opt_valueÚ	raw_valuer	   rd   re   rk   Úraisesrj   s
   ``       @r   ÚcheckzTestNumbaOptLevel.check„   sÐ  øøø€ à&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð 	×Ò˜œ YÑ/Ô/Ð/Ø×Ò˜œÔ.°	Ñ:Ô:Ð:ð 	2Ð1Ð1Ð1Ð1Ð1Ø4Ðð	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4õ ŒZ×Ò˜zÐ+AØ+6ð ñ 8ô 8ð 	Fð 	Fà×"Ò"¥<Ñ0Ô0ð %°FØ"���\�\Ñ"Ô"Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð �MŠMÐ-­s°6Ô3CÑ/DÔ/DÑEÔEÐEð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fs6   Á8C4ÂB4Â(C4Â4B8	Â8C4Â;B8	Â<+C4Ã4C8Ã;C8Ú	NUMBA_OPTÚmax)Úenvvarsc                 óB   — dddddœ}|                       |dd¦  «         d S )NTFé   Úcheap©Úloop_vectorizeÚslp_vectorizeÚoptÚcostr}   ©r{   ©r   rX   s     r   Útest_opt_maxzTestNumbaOptLevel.test_opt_max    s:   € ð '+Ø%*ØØ#ð%ð %ˆð 	�
Š
�8˜Q Ñ&Ô&Ð&Ð&Ð&r   Ú3c                 óB   — dddddœ}|                       |dd¦  «         d S ©NFr   r�   r‚   r€   r‡   rˆ   s     r   Ú
test_opt_3zTestNumbaOptLevel.test_opt_3©   ó:   € ð ',Ø%*ØØ#ð%ð %ˆð 	�
Š
�8˜Q Ñ"Ô"Ð"Ð"Ð"r   Ú0c                 óB   — dddddœ}|                       |dd¦  «         d S )NFr   r�   r‚   r‡   rˆ   s     r   Ú
test_opt_0zTestNumbaOptLevel.test_opt_0²   rŽ   r   c                 óB   — dddddœ}|                       |dd¦  «         d S rŒ   r‡   rˆ   s     r   Útest_opt_defaultz"TestNumbaOptLevel.test_opt_default»   s:   € ð ',Ø%*ØØ#ð%ð %ˆð 	�
Š
�8˜Q Ñ"Ô"Ð"Ð"Ð"r   Úinvalidc                 óB   — dddddœ}|                       |dd¦  «         d S 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–   rn   r   r   rb   rb   €   s  € € € € € ðFð Fð Fð8 %€XÔ$¨k¸5Ð-AÐBÑBÔBð'ð 'ñ CÔBð'ð %€XÔ$¨k¸3Ð-?Ð@Ñ@Ô@ð#ð #ñ AÔ@ð#ð %€XÔ$¨k¸3Ð-?Ð@Ñ@Ô@ð#ð #ñ AÔ@ð#ð %€XÔ$Ñ&Ô&ð#ð #ñ 'Ô&ð#ð %€XÔ$¨k¸9Ð-EÐFÑFÔFð#ð #ñ GÔFð#ð #ð #r   rb   Ú__main__)r   r   Útextwrapr   Úunittestr   Únumba.tests.supportr   r   r   r   Ú
numba.corer	   r#   Ú
_HAVE_YAMLÚImportErrorÚ	_skip_msgÚskipIfÚ
needs_yamlr   rb   r\   Úmainrn   r   r   ú<module>r£      s  ðØ 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð ð4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4à Ð Ð Ð Ð Ð ðØ€K€K€KØ€J€JøØð ð ð Ø€J€J€Jðøøøð 9€	ØˆXŒ_ ˜^¨YÑ7Ô7€
ð ðh<ð h<ð h<ð h<ð h<�ñ h<ô h<ñ „ðh<ðVL#ð L#ð L#ð L#ð L#˜ñ L#ô L#ð L#ð^ ˆzÒÐØ€H„M�O„O€O€O€Oð Ðs   ¬3 ³=¼=