§
    ƒÛg],  ã                   óD  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d dlZd
„ Z d„ Z! G d„ de"¦  «        Z#dej$        fgZ%d„ Z&d„ Z'd„ Z( e¦   «         Z) ed¦  «        e)_*        de)_+         G d„ de¦  «        Z, G d„ de,¦  «        Z- G d„ de-¦  «        Z. G d„ de,¦  «        Z/ G d„ de,¦  «        Z0 G d„ de-¦  «        Z1 G d„ d e¦  «        Z2e3d!k    r ej4        ¦   «          dS dS )"é    N)ÚTestCaseÚoverride_configÚoverride_env_configÚcaptured_stdoutÚforbid_codegenÚskip_parfors_unsupportedÚ
needs_blas)Újit)ÚtypesÚcompilerÚutils)Úcompile_isolatedÚFlags)ÚParallelOptions)ÚNumbaPerformanceWarning)Úprange)Újitclassc                 ó   — | dz   }|S )Né   © )ÚsomeargÚretvals     úL/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_debug.pyÚsimple_nopythonr      s   € Ø�q‰[€FØ€Mó    c              #   ó   K  — | V — |V — d S ©Nr   )ÚxÚys     r   Ú
simple_genr       s   è è € Ø
€G€G€GØ
€G€G€G€G€Gr   c                   ó   — e Zd Zd„ ZdS )ÚSimpleClassc                 ó   — d| _         d S )Né   ©Úh)Úselfs    r   Ú__init__zSimpleClass.__init__    s   € ØˆŒˆˆr   N)Ú__name__Ú
__module__Ú__qualname__r(   r   r   r   r"   r"      s#   € € € € € ðð ð ð ð r   r"   r&   c                 ó   — | j         S r   r%   )Úobjs    r   Úsimple_class_userr.   %   s	   € ØŒ5€Lr   c                 ó,   — t          j        | |¦  «        S r   )ÚnpÚdot)ÚaÚbs     r   Úunsupported_parforr4   (   s   € ÝŒ6�!�Q‰<Œ<Ðr   c                 ó’   — t          j        | ¦  «        }t          | ¦  «        D ]"}||         t          j        |¦  «        z   ||<   Œ#|S r   )r0   Úonesr   Úsin)Únr2   Úis      r   Úsupported_parforr:   +   sE   € Ý
Œ�‰
Œ
€AÝ�A‰YŒYð  ð  ˆØ�Œt•b”f˜Q‘i”iÑˆˆ!‰ˆØ€Hr   Tc                   ód   — e Zd Z eg d¢¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ ZdS )ÚDebugTestBase)ÚbytecodeÚcfgÚirÚ	typeinferÚllvmÚfunc_opt_llvmÚoptimized_llvmÚassemblyc                 ó2   —  | j         t          g|¢R i |¤Ž d S r   )ÚassertRaisesÚAssertionError)r'   ÚargsÚkwargss      r   Úassert_failszDebugTestBase.assert_fails:   s+   € ØˆÔ�.Ð:¨4Ð:Ð:Ð:°6Ð:Ð:Ð:Ð:Ð:r   c                 ó"  — t                                | j        d¦  «        }|D ]}||v sJ ‚d||<   Œt          |                     ¦   «         ¦  «        D ]<\  }}t          | d|z  ¦  «        }|r ||¦  «         Œ&|                      ||¦  «         Œ=d S )NFTz_check_dump_%s)ÚdictÚfromkeysÚ	all_dumpsÚsortedÚitemsÚgetattrrJ   )r'   ÚoutÚ
dump_namesÚenabled_dumpsÚnameÚenabledÚ
check_meths          r   Úcheck_debug_outputz DebugTestBase.check_debug_output=   sº   € ÝŸš d¤n°eÑ<Ô<ˆØð 	'ð 	'ˆDØ˜=Ð(Ð(Ð(Ð(Ø"&ˆM˜$ÑÐÝ# M×$7Ò$7Ñ$9Ô$9Ñ:Ô:ð 	3ð 	3‰MˆD�'Ý  Ð'7¸$Ñ'>Ñ?Ô?ˆJØð 3Ø�
˜3‘”��à×!Ò! *¨cÑ2Ô2Ð2Ð2ð	3ð 	3r   c                 ó‚   — t           j        dk    r|                      d|¦  «         d S |                      d|¦  «         d S )N)é   é   Ú	BINARY_OPÚ
BINARY_ADD)r   Ú	PYVERSIONÚassertIn©r'   rR   s     r   Ú_check_dump_bytecodez"DebugTestBase._check_dump_bytecodeI   sC   € ÝŒ?˜gÒ%Ð%Ø�MŠM˜+ sÑ+Ô+Ð+Ð+Ð+à�MŠM˜,¨Ñ,Ô,Ð,Ð,Ð,r   c                 ó2   — |                       d|¦  «         d S )NzCFG dominators©r_   r`   s     r   Ú_check_dump_cfgzDebugTestBase._check_dump_cfgO   s   € Ø�ŠÐ&¨Ñ,Ô,Ð,Ð,Ð,r   c                 óB   — |                       d| j        z  |¦  «         d S )Nz--IR DUMP: %s--©r_   Ú	func_namer`   s     r   Ú_check_dump_irzDebugTestBase._check_dump_irR   s$   € Ø�ŠÐ'¨$¬.Ñ8¸#Ñ>Ô>Ð>Ð>Ð>r   c                 ó2   — |                       d|¦  «         d S )Nz--propagate--rc   r`   s     r   Ú_check_dump_typeinferz#DebugTestBase._check_dump_typeinferU   s   € Ø�Š�o sÑ+Ô+Ð+Ð+Ð+r   c                 ó®   — |                       d|¦  «         t          j        j        d         j        j        dk    r|                      |d|¦  «         d S d S )Nz--LLVM DUMPÚauto_parallelFz#store i64 %\"\.\d", i64\* %"retptr")r_   r   r   ÚoptionsÚdefaultrV   ÚassertRegexr`   s     r   Ú_check_dump_llvmzDebugTestBase._check_dump_llvmX   sY   € Ø�Š�m SÑ)Ô)Ð)ÝŒ>Ô! /Ô2Ô:ÔBÀeÒKÐKØ×Ò˜SÐ"HÈ#ÑNÔNÐNÐNÐNð LÐKr   c                 ón   — |                       d| j        z  |¦  «         |                       d|¦  «         d S )Nz--FUNCTION OPTIMIZED DUMP %súadd nsw i64 %arg.somearg, 1rf   r`   s     r   Ú_check_dump_func_opt_llvmz'DebugTestBase._check_dump_func_opt_llvm]   s9   € Ø�ŠÐ4°t´~ÑEÀsÑKÔKÐKà�ŠÐ3°SÑ9Ô9Ð9Ð9Ð9r   c                 ón   — |                       d| j        z  |¦  «         |                       d|¦  «         d S )Nz--OPTIMIZED DUMP %srr   rf   r`   s     r   Ú_check_dump_optimized_llvmz(DebugTestBase._check_dump_optimized_llvmb   s9   € Ø�ŠÐ+¨d¬nÑ<¸cÑBÔBÐBØ�ŠÐ3°SÑ9Ô9Ð9Ð9Ð9r   c                 óœ   — |                       d| j        z  |¦  «         t          j        ¦   «         dv r|                       d|¦  «         d S d S )Nz--ASSEMBLY %s)Úx86_64ÚAMD64Úi386Úi686Úxorl)r_   rg   ÚplatformÚmachiner`   s     r   Ú_check_dump_assemblyz"DebugTestBase._check_dump_assemblyf   sU   € Ø�Š�o¨¬Ñ6¸Ñ<Ô<Ð<ÝÔÑÔÐ!DÐDÐDØ�MŠM˜& #Ñ&Ô&Ð&Ð&Ð&ð EÐDr   N)r)   r*   r+   ÚsetrN   rJ   rX   ra   rd   rh   rj   rp   rs   ru   r~   r   r   r   r<   r<   5   sÒ   € € € € € à�ð Dð Dð Dñ Eô E€Ið;ð ;ð ;ð
3ð 
3ð 
3ð-ð -ð -ð-ð -ð -ð?ð ?ð ?ð,ð ,ð ,ðOð Oð Oð
:ð :ð :ð
:ð :ð :ð'ð 'ð 'ð 'ð 'r   r<   c                   ó   — e Zd ZdZd„ ZdS )ÚFunctionDebugTestBaser   c                 ó  — t          ¦   «         5 }t          t          t          j        f¦  «        }|                      |                     d¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         S )Né   rZ   )r   r   r   r   Úint64ÚassertPreciseEqualÚentry_pointÚgetvalue©r'   rR   Úcress      r   Úcompile_simple_nopythonz-FunctionDebugTestBase.compile_simple_nopythonp   s§   € ÝÑÔð 	< #Ý#¥Oµe´k°^ÑDÔDˆDà×#Ò# D×$4Ò$4°QÑ$7Ô$7¸Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð �|Š|‰~Œ~Ðs   �A
A%Á%A)Á,A)N)r)   r*   r+   rg   rŠ   r   r   r   r�   r�   l   s(   € € € € € à!€Iðð ð ð ð r   r�   c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestFunctionDebugOutputc                 ó¬   — t          dd¦  «        5  |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |dg¦  «         d S )NÚDUMP_BYTECODETr=   ©r   rŠ   rX   r`   s     r   Útest_dump_bytecodez*TestFunctionDebugOutput.test_dump_bytecodez   ó–   € Ý˜_¨dÑ3Ô3ð 	1ð 	1Ø×.Ò.Ñ0Ô0ˆCð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1à×Ò  j \Ñ2Ô2Ð2Ð2Ð2ó   ‘2²6¹6c                 ó¬   — t          dd¦  «        5  |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |dg¦  «         d S )NÚDUMP_IRTr?   r�   r`   s     r   Útest_dump_irz$TestFunctionDebugOutput.test_dump_ir   s–   € Ý˜Y¨Ñ-Ô-ð 	1ð 	1Ø×.Ò.Ñ0Ô0ˆCð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1à×Ò  d VÑ,Ô,Ð,Ð,Ð,r’   c                 ó¬   — t          dd¦  «        5  |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |dg¦  «         d S )NÚDUMP_CFGTr>   r�   r`   s     r   Útest_dump_cfgz%TestFunctionDebugOutput.test_dump_cfg„   s–   € Ý˜Z¨Ñ.Ô.ð 	1ð 	1Ø×.Ò.Ñ0Ô0ˆCð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1à×Ò  e WÑ-Ô-Ð-Ð-Ð-r’   c                 ó¬   — t          dd¦  «        5  |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |dg¦  «         d S )NÚ	DUMP_LLVMTrA   r�   r`   s     r   Útest_dump_llvmz&TestFunctionDebugOutput.test_dump_llvm‰   s–   € Ý˜[¨$Ñ/Ô/ð 	1ð 	1Ø×.Ò.Ñ0Ô0ˆCð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1à×Ò  f XÑ.Ô.Ð.Ð.Ð.r’   c                 ó¬   — t          dd¦  «        5  |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |dg¦  «         d S )NÚDUMP_FUNC_OPTTrB   r�   r`   s     r   Útest_dump_func_opt_llvmz/TestFunctionDebugOutput.test_dump_func_opt_llvmŽ   s—   € Ý˜_¨dÑ3Ô3ð 	1ð 	1Ø×.Ò.Ñ0Ô0ˆCð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1à×Ò  oÐ%6Ñ7Ô7Ð7Ð7Ð7r’   c                 ó¬   — t          dd¦  «        5  |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |dg¦  «         d S )NÚDUMP_OPTIMIZEDTrC   r�   r`   s     r   Útest_dump_optimized_llvmz0TestFunctionDebugOutput.test_dump_optimized_llvm“   s™   € ÝÐ-¨tÑ4Ô4ð 	1ð 	1Ø×.Ò.Ñ0Ô0ˆCð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1à×Ò Ð&6Ð%7Ñ8Ô8Ð8Ð8Ð8r’   c                 ó¬   — t          dd¦  «        5  |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |dg¦  «         d S )NÚDUMP_ASSEMBLYTrD   r�   r`   s     r   Útest_dump_assemblyz*TestFunctionDebugOutput.test_dump_assembly˜   r‘   r’   N)
r)   r*   r+   r�   r•   r˜   r›   rž   r¡   r¤   r   r   r   rŒ   rŒ   x   s}   € € € € € ð3ð 3ð 3ð
-ð -ð -ð
.ð .ð .ð
/ð /ð /ð
8ð 8ð 8ð
9ð 9ð 9ð
3ð 3ð 3ð 3ð 3r   rŒ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTestGeneratorDebugOutputr    c           	      ó>  — t          ¦   «         5 }t          t          t          j        t          j        f¦  «        }|                      t          |                     dd¦  «        ¦  «        ddg¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         S )Nrƒ   r$   )	r   r   r    r   r„   r…   Úlistr†   r‡   rˆ   s      r   Úcompile_simple_genz+TestGeneratorDebugOutput.compile_simple_gen¢   sÊ   € ÝÑÔð 	J #Ý#¥Jµ´½e¼kÐ0JÑKÔKˆDà×#Ò#¥D¨×)9Ò)9¸!¸QÑ)?Ô)?Ñ$@Ô$@À1ÀaÀ&ÑIÔIÐIð	Jð 	Jð 	Jñ 	Jô 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jøøøð 	Jð 	Jð 	Jð 	Jð �|Š|‰~Œ~Ðs   �A%B Â BÂBc                 ó<  — t          dd¦  «        5  |                      ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      |dg¦  «         |                      d| j        z  |¦  «         t          j        d¦  «        }|                      ||¦  «         d S )Nr”   Tr?   z--GENERATOR INFO: %szÜ
            generator state variables: ['x', 'y']
            yield point #1: live variables = ['y'], weak live variables = ['x']
            yield point #2: live variables = [], weak live variables = ['y']
            )r   r©   rX   r_   rg   ÚtextwrapÚdedent)r'   rR   Úexpected_gen_infos      r   Útest_dump_ir_generatorz/TestGeneratorDebugOutput.test_dump_ir_generator©   sà   € Ý˜Y¨Ñ-Ô-ð 	,ð 	,Ø×)Ò)Ñ+Ô+ˆCð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,à×Ò  d VÑ,Ô,Ð,Ø�ŠÐ,¨t¬~Ñ=¸sÑCÔCÐCÝ$œOð -ñ ô Ðð
 	�ŠÐ'¨Ñ-Ô-Ð-Ð-Ð-r’   N)r)   r*   r+   rg   r©   r®   r   r   r   r¦   r¦   ž   s7   € € € € € à€Iðð ð ð
.ð 
.ð 
.ð 
.ð 
.r   r¦   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTestDisableJITz:
    Test the NUMBA_DISABLE_JIT environment variable.
    c                 ó  — t          dd¦  «        5  t          ¦   «         5   t          d¬¦  «        t          ¦  «        }|                       |d¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NÚDISABLE_JITT©Únopythonrƒ   rZ   )r   r   r
   r   r…   )r'   Úcfuncs     r   Útest_jitzTestDisableJIT.test_jit»   s  € Ý˜]¨DÑ1Ô1ð 	5ð 	5ÝÑ!Ô!ð 5ð 5Ø*� TÐ*Ñ*Ô*­?Ñ;Ô;�Ø×'Ò'¨¨¨a©¬°!Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s4   ‘B >A*ÁBÁ*A.	Á.BÁ1A.	Á2BÂBÂ	Bc                 ó¬  — t          dd¦  «        5  t          ¦   «         5   t          t          ¦  «        t          ¦  «        } |¦   «         }|                      |j        d¦  «          t          d¬¦  «        t          ¦  «        }|                       ||¦  «        d¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nr²   Tr$   r³   )	r   r   r   Úsimple_class_specr"   r…   r&   r
   r.   )r'   ÚSimpleJITClassr-   rµ   s       r   Útest_jitclasszTestDisableJIT.test_jitclassÁ   sM  € Ý˜]¨DÑ1Ô1ð 	7ð 	7ÝÑ!Ô!ð 7ð 7Ø!<¥Õ*;Ñ!<Ô!<½[Ñ!IÔ!I�à$�nÑ&Ô&�Ø×'Ò'¨¬¨qÑ1Ô1Ð1à*� TÐ*Ñ*Ô*Õ+<Ñ=Ô=�Ø×'Ò'¨¨¨c©
¬
°AÑ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7s5   ‘C	 BB1Â%C	Â1B5	Â5C	Â8B5	Â9C	Ã	CÃCN)r)   r*   r+   Ú__doc__r¶   rº   r   r   r   r°   r°   ¶   s<   € € € € € ðð ð5ð 5ð 5ð	7ð 	7ð 	7ð 	7ð 	7r   r°   c                   ó   — e Zd ZdZdZd„ ZdS )ÚTestEnvironmentOverridezN
    Test that environment variables are reloaded by Numba when modified.
    Fc                 óR  — |                       ¦   «         }|                      |¦  «         t          dd¦  «        5  |                       ¦   «         }|                      |g d¢¦  «         d d d ¦  «         n# 1 swxY w Y   |                       ¦   «         }|                      |¦  «         d S )NÚNUMBA_DEBUGÚ1)r?   r@   rA   rB   rC   rD   )rŠ   ÚassertFalser   rX   r`   s     r   Ú
test_debugz"TestEnvironmentOverride.test_debugÕ   s  € Ø×*Ò*Ñ,Ô,ˆØ×Ò˜ÑÔÐÝ  °Ñ4Ô4ð 	Ið 	IØ×.Ò.Ñ0Ô0ˆCð ×#Ò# Cð *Hð *Hð *Hñ Iô Ið Ið		Ið 	Ið 	Iñ 	Iô 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Iøøøð 	Ið 	Ið 	Ið 	Ið ×*Ò*Ñ,Ô,ˆØ×Ò˜ÑÔÐÐÐs   º-A3Á3A7Á:A7N)r)   r*   r+   r»   Ú_numba_parallel_test_rÂ   r   r   r   r½   r½   Í   s5   € € € € € ðð ð
 "Ððð ð ð ð r   r½   c                   óX   — e Zd ZdZdZd„ Zeed„ ¦   «         ¦   «         Zed„ ¦   «         Z	dS )ÚTestParforsDebugz5
    Tests debug options associated with parfors
    Fc                 óx   — d}d}|D ]}|t          |j        ¦  «        v rd} nŒ|                      |d¦  «         d S )NzX'parallel=True' was specified but no transformation for parallel execution was possible.FTz Warning message should be found.)ÚstrÚmessageÚ
assertTrue)r'   Ú	warn_listÚmsgÚwarning_foundÚws        r   Úcheck_parfors_warningz&TestParforsDebug.check_parfors_warningê   s\   € ð2ˆàˆØð 	ð 	ˆAØ•c˜!œ)‘n”nÐ$Ð$Ø $�Ø�ð %ð 	�Š˜Ð'IÑJÔJÐJÐJÐJr   c                 ó:  — t          j        t           j        dd¦  «        }t          j        d¬¦  «        5 }t          j        dt          ¦  «         t          t          ||ft          ¬¦  «        }ddd¦  «         n# 1 swxY w Y   |  
                    |¦  «         dS )zr
        Test that using parallel=True on a function that does not have parallel
        semantics warns.
        rƒ   ÚCT)ÚrecordÚalways©ÚflagsN)r   ÚArrayÚfloat64ÚwarningsÚcatch_warningsÚsimplefilterr   r   r4   Úforce_parallel_flagsrÎ   )r'   Úarr_tyrÍ   r‰   s       r   Ú
test_warnszTestParforsDebug.test_warnsô   sã   € õ ”�Uœ]¨A¨sÑ3Ô3ˆÝÔ$¨DÐ1Ñ1Ô1ð 	@°QÝÔ! (Õ,CÑDÔDÐDÝ#Õ$6¸ÀÐ8HÝ*>ð@ñ @ô @ˆDð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	×"Ò" 1Ñ%Ô%Ð%Ð%Ð%s   ¶9A;Á;A?ÂA?c                 ó,  — t          t          t          j        ft          ¬¦  «        }t          dd¦  «        5  t          ¦   «         5 }t          t          t          j        ft          ¬¦  «        }ddd¦  «         n# 1 swxY w Y   |                     ¦   «                              d¦  «        }d„ |D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }t          t          j        d	¦  «                             |d
         ¦  «                             d¦  «        ¦  «        }t          ||t          |¦  «        z   ¦  «        }d}	d}
t!          |||	¦  «        D ]2\  }}}|
                     ||¦  «        }|                      ||¦  «         Œ3|dz   |d
z   f}	d}
|D ]"} |
j        |	Ž }|                      ||¦  «         Œ#t          j        dt)          |g¦  «        f}	d}
|D ]"} |
j        |	Ž }|                      ||¦  «         Œ#	 ddd¦  «         dS # 1 swxY w Y   dS )zM
        Test that NUMBA_DEBUG_ARRAY_OPT_STATS produces valid output
        rÓ   ÚNUMBA_DEBUG_ARRAY_OPT_STATSrÀ   Nú
c                 ó   — g | ]}d |v ¯|‘Œ	S )zis produced from patternr   ©Ú.0r   s     r   ú
<listcomp>z?TestParforsDebug.test_array_debug_opt_stats.<locals>.<listcomp>  s#   € ÐFÐFÐF�qÐ&@ÀAÐ&EÐ&E�Ð&EÐ&EÐ&Er   c                 ó   — g | ]}d |v ¯|‘Œ	S )zis fused intor   rá   s     r   rã   z?TestParforsDebug.test_array_debug_opt_stats.<locals>.<listcomp>  s"   € Ð;Ð;Ð;�q o¸Ð&:Ð&:�Ð&:Ð&:Ð&:r   c                 ó   — g | ]}d |v ¯|‘Œ	S )zAfter fusion, functionr   rá   s     r   rã   z?TestParforsDebug.test_array_debug_opt_stats.<locals>.<listcomp>  s#   € ÐDÐDÐD�qÐ&>À!Ð&CÐ&C�Ð&CÐ&CÐ&Cr   z	#([0-9]+)r   r   )z"('ones function', 'NumPy mapping'))r   ÚuserÚ z6Parallel for-loop #{} is produced from pattern '{}' atz1Parallel for-loop #{} is fused into for-loop #{}.z:After fusion, function {} has {} parallel for-loop(s) #{}.)r   r:   r   r„   rÚ   r   r   r‡   ÚsplitÚintÚreÚcompileÚsearchÚgroupÚrangeÚlenÚzipÚformatr_   r)   r   )r'   r‰   rR   ÚoutputÚparallel_loop_outputÚfuse_outputÚafter_fusion_outputÚparfor_stateÚboundsÚpatternÚfmtr9   ÚtrialsÚlpatternÚto_matchs                  r   Útest_array_debug_opt_statsz+TestParforsDebug.test_array_debug_opt_stats  sû  € õ  Õ 0µ5´;°.Ý&:ð<ñ <ô <ˆõ !Ð!>ÀÑDÔDð +	0ð +	0Ý Ñ"Ô"ð D cÝ'Õ(8½5¼;¸.Ý.BðDñ Dô D�ðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dð
 —\’\‘^”^×)Ò)¨$Ñ/Ô/ˆFàFÐF˜FÐFÑFÔFð !ð <Ð;˜FÐ;Ñ;Ô;ð ð EÐD˜FÐDÑDÔDð  õ
 �rœz¨,Ñ7Ô7×>Ò>Ø$ QÔ'ñ )ô  )ß).ª¨q©¬ñ3ô 3ˆLå˜<Ø'­#Ð.BÑ*CÔ*CÑCñEô EˆFð
/ˆGàLˆCÝ'*¨6Ð3GØ+2ñ(4ô (4ð 0ð 0Ñ#��6˜8àŸ:š: a¨Ñ2Ô2�Ø—’˜h¨Ñ/Ô/Ð/Ð/ð $ aÑ'¨¸Ñ)9Ð:ˆGØEˆCØ%ð 0ð 0�Ø%˜3œ: wÐ/�Ø—’˜h¨Ñ/Ô/Ð/Ð/õ (Ô0°!µS¸,¸Ñ5HÔ5HÐIˆGØNˆCØ-ð 0ð 0�Ø%˜3œ: wÐ/�Ø—’˜h¨Ñ/Ô/Ð/Ð/ð0ðS+	0ð +	0ð +	0ñ +	0ô +	0ð +	0ð +	0ð +	0ð +	0ð +	0ð +	0ð +	0øøøð +	0ð +	0ð +	0ð +	0ð +	0ð +	0s6   ¸H	Á(A;Á/H	Á;A?	Á?H	ÂA?	ÂE8H	È	HÈHN)
r)   r*   r+   r»   rÃ   rÎ   r	   r   rÜ   rý   r   r   r   rÅ   rÅ   â   sz   € € € € € ðð ð
 "ÐðKð Kð Kð Øð
&ð 
&ñ Ôñ „Zð
&ð ð60ð 60ñ Ôð60ð 60ð 60r   rÅ   Ú__main__)5Úosr|   rê   r«   r×   Únumpyr0   Únumba.tests.supportr   r   r   r   r   r   r	   Únumbar
   Ú
numba.corer   r   r   Únumba.core.compilerr   r   Únumba.core.cpur   Únumba.core.errorsr   r   Únumba.experimentalr   Úunittestr   r    Úobjectr"   Úint32r¸   r.   r4   r:   rÚ   rl   Únrtr<   r�   rŒ   r¦   r°   r½   rÅ   r)   Úmainr   r   r   ú<module>r     s=  ðØ 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø €€€à Ð Ð Ð ð"ð "ð "ð "ð "ð "ð "ð "ð "ð "ð "ð "ð "ð "ð "ð "ð "ð "ð Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø *Ð *Ð *Ð *Ð *Ð *Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø €€€ðð ð ðð ð ð
ð ð ð ð �&ñ ô ð ð ˜5œ;Ð'Ð(Ð ðð ð ðð ð ðð ð ð �u‘w”wÐ Ø%4 _°TÑ%:Ô%:Ð Ô "ØÐ Ô ð4'ð 4'ð 4'ð 4'ð 4'�Hñ 4'ô 4'ð 4'ðn	ð 	ð 	ð 	ð 	˜Mñ 	ô 	ð 	ð#3ð #3ð #3ð #3ð #3Ð3ñ #3ô #3ð #3ðL.ð .ð .ð .ð .˜}ñ .ô .ð .ð07ð 7ð 7ð 7ð 7�]ñ 7ô 7ð 7ð.ð ð ð ð Ð3ñ ô ð ð*W0ð W0ð W0ð W0ð W0�xñ W0ô W0ð W0ðt ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   