§
    ƒÛg %  ã                   ó|  — d dl Zd dlmZmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlZ ej        ¦   «         Zde_        d	„ Zd
„ Zd„ Zd„ Z G d„ deej        ¦  «        Z G d„ deej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Zedk    r ej         ¦   «          dS dS )é    N)Úcompile_isolatedÚDEFAULT_FLAGS)ÚSerialMixin)ÚtypeofÚcudaÚnjit)Úfloat64)ÚMemoryLeakMixinÚoverride_env_config)ÚconfigTc                 ó   — | d         S ©Né
   © ©Úas    úR/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_boundscheck.pyÚbasic_array_accessr      s   € ØˆRŒ5€Ló    c                 ó   — | dd …df         S r   r   r   s    r   Úslice_array_accessr      s   € àˆRˆSˆS�"ˆWŒ:Ðr   c                 ó>   — t          j        g d¢¦  «        }| |         S )N©é   é   é   ©ÚnpÚarray©Úxr   s     r   Úfancy_array_accessr"      s   € Ý
Œ���ÑÔ€AØˆQŒ4€Kr   c                 ó<   — t          j        g d¢¦  «        }d| |<   | S )Nr   r   r   r    s     r   Úfancy_array_modifyr$      s#   € Ý
Œ���ÑÔ€AØ€A€a�DØ€Hr   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestBoundsCheckNoErrorc                 ó@   — t           j        | _        d t           _        d S ©N©r   ÚBOUNDSCHECKÚold_boundscheck©Úselfs    r   ÚsetUpzTestBoundsCheckNoError.setUp$   ó   € Ý%Ô1ˆÔØ!�ÔÐÐr   c                 ó,  — t          j        d¦  «        }|                      t          ¦  «        5  t	          |¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        }t          t          |gt          ¬¦  «        }|j        } ||¦  «         d S ©Né   )Úflags)	r   ÚarangeÚassertRaisesÚ
IndexErrorr   r   r   r   Úentry_point)r-   r   ÚatÚc_noboundscheckÚnoboundschecks        r   Útest_basic_array_boundscheckz3TestBoundsCheckNoError.test_basic_array_boundscheck(   sÔ   € ÝŒI�a‰LŒLˆà×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ
 �A‰YŒYˆÝ*Õ+=À¸tÝ1>ð@ñ @ô @ˆà'Ô3ˆàˆ�aÑÔÐÐÐs   ¯AÁAÁAc                 ó  — t          j        d¦  «        }t          j        d¦  «        }|                      t          ¦  «        5  t	          |¦  «         d d d ¦  «         n# 1 swxY w Y   t	          |¦  «         t          |¦  «        }t          d d …         }t          t          |g|t          ¬¦  «        }|j	        }t          t          |g|t          ¬¦  «        }|j	        } ||¦  «          ||¦  «          ||¦  «         d S ©N)r2   r2   )r2   é   ©Úreturn_typer3   )r   Úonesr5   r6   r   r   r	   r   r   r7   ÚBOUNDSCHECK_FLAGS©	r-   r   Úbr8   Úrtr9   r:   Úc_boundscheckÚboundschecks	            r   Útest_slice_array_boundscheckz3TestBoundsCheckNoError.test_slice_array_boundscheck8   sN  € ÝŒG�F‰OŒOˆÝŒG�GÑÔˆØ×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ
 	˜1ÑÔÐå�A‰YŒYˆÝ�Q�Q�QŒZˆÝ*Õ+=À¸tØ79Ý1>ð@ñ @ô @ˆð (Ô3ˆÝ(Õ);¸b¸TØ57Ý/@ðBñ Bô Bˆð $Ô/ˆàˆ�aÑÔÐØˆ�aÑÔÐð 	ˆ�A‰Œˆˆˆó   ÁAÁA#Á&A#c                 ó  — t          j        d¦  «        }t          j        d¦  «        }|                      t          ¦  «        5  t	          |¦  «         d d d ¦  «         n# 1 swxY w Y   t	          |¦  «         t          |¦  «        }|j        d d …         }t          t          |g|t          ¬¦  «        }|j	        }t          t          |g|t          ¬¦  «        }|j	        } ||¦  «          ||¦  «          ||¦  «         d S ©Nr   é   r?   )r   r4   r5   r6   r"   r   Údtyper   r   r7   rB   rC   s	            r   Útest_fancy_indexing_boundscheckz6TestBoundsCheckNoError.test_fancy_indexing_boundscheckT   sP  € ÝŒI�a‰LŒLˆÝŒI�a‰LŒLˆð ×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ 	˜1ÑÔÐå�A‰YŒYˆØŒX�a�a�aŒ[ˆÝ*Õ+=À¸tØ79Ý1>ð@ñ @ô @ˆð (Ô3ˆÝ(Õ);¸b¸TØ57Ý/@ðBñ Bô Bˆð $Ô/ˆàˆ�aÑÔÐØˆ�aÑÔÐð 	ˆ�A‰ŒˆˆˆrI   c                 ó(   — | j         t          _        d S r(   ©r+   r   r*   r,   s    r   ÚtearDownzTestBoundsCheckNoError.tearDownq   ó   € Ø!Ô1�ÔÐÐr   N)Ú__name__Ú
__module__Ú__qualname__r.   r;   rH   rN   rQ   r   r   r   r&   r&   #   s_   € € € € € ð"ð "ð "ðð ð ð ð ð ð8ð ð ð:2ð 2ð 2ð 2ð 2r   r&   c                   ój   — e Zd Zd„ Z ej         ej        ¦   «          d¦  «        d„ ¦   «         Zd„ Z	dS )ÚTestNoCudaBoundsCheckc                 ó@   — t           j        | _        d t           _        d S r(   r)   r,   s    r   r.   zTestNoCudaBoundsCheck.setUpv   r/   r   zNO CUDAc                 óê  — |                       t          ¦  «        5  t          j        d¬¦  «        d„ ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        d¬¦  «        d„ ¦   «         }t	          dd¦  «        5  t          j        d„ ¦   «         }t          j        d	¦  «        }t          j        d	¦  «        }t          j	        s |d
         ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NT©rG   c                  ó   — d S r(   r   r   r   r   Úfuncz<TestNoCudaBoundsCheck.test_no_cuda_boundscheck.<locals>.func}   s   € à�r   Fc                  ó   — d S r(   r   r   r   r   Úfunc3z=TestNoCudaBoundsCheck.test_no_cuda_boundscheck.<locals>.func3ƒ   s   € àˆDr   ÚNUMBA_BOUNDSCHECKÚ1c                 ó   — | d         |d<   d S ©Nr   r   r    s     r   Úfunc2z=TestNoCudaBoundsCheck.test_no_cuda_boundscheck.<locals>.func2ˆ   s   € à˜”t��!‘��r   )r   )r   r   )
r5   ÚNotImplementedErrorr   Újitr   r   rA   Úzerosr   ÚENABLE_CUDASIM)r-   r\   r^   rc   r   r!   s         r   Útest_no_cuda_boundscheckz.TestNoCudaBoundsCheck.test_no_cuda_boundscheckz   s�  € à×ÒÕ2Ñ3Ô3ð 	ð 	ÝŒX $Ð'Ñ'Ô'ðð ñ (Ô'ðð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 
Œ˜eÐ	$Ñ	$Ô	$ð	ð 	ñ 
%Ô	$ð	õ !Ð!4°cÑ:Ô:ð 
	"ð 
	"ÝŒXðð ñ ŒXðõ ”˜‘”ˆAÝ”˜‘”ˆAõ Ô(ð "Ø��d”˜A˜qÑ!Ô!Ð!ð
	"ð 
	"ð 
	"ñ 
	"ô 
	"ð 
	"ð 
	"ð 
	"ð 
	"ð 
	"ð 
	"ð 
	"øøøð 
	"ð 
	"ð 
	"ð 
	"ð 
	"ð 
	"s$   ›AÁA
ÁA
Á?AC(Ã(C,Ã/C,c                 ó(   — | j         t          _        d S r(   rP   r,   s    r   rQ   zTestNoCudaBoundsCheck.tearDown“   rR   r   N)
rS   rT   rU   r.   ÚunittestÚskipIfr   Úis_availablerh   rQ   r   r   r   rW   rW   u   sk   € € € € € ð"ð "ð "ð €X„_Ð*˜Ô*Ñ,Ô,Ð,¨iÑ8Ô8ð"ð "ñ 9Ô8ð"ð02ð 2ð 2ð 2ð 2r   rW   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestBoundsCheckErrorc                 ó@   — t           j        | _        d t           _        d S r(   r)   r,   s    r   r.   zTestBoundsCheckError.setUpš   r/   r   c                 ó’  — t          j        d¦  «        }|                      t          ¦  «        5  t	          |¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        }t          t          |gt          ¬¦  «        }|j        }|                      t          ¦  «        5   ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r1   )	r   r4   r5   r6   r   r   r   rB   r7   )r-   r   r8   rF   rG   s        r   r;   z1TestBoundsCheckError.test_basic_array_boundscheckž   sC  € ÝŒI�a‰LŒLˆà×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ
 �A‰YŒYˆÝ(Õ);¸b¸TÝ/@ðBñ Bô Bˆà#Ô/ˆà×Ò�zÑ*Ô*ð 	ð 	ØˆK˜‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s#   ¯AÁAÁAÂ#B<Â<C ÃC c                 óø  — t          j        d¦  «        }t          j        d¦  «        }|                      t          ¦  «        5  t	          |¦  «         d d d ¦  «         n# 1 swxY w Y   t	          |¦  «         t          |¦  «        }t          d d …         }t          t          |g|t          ¬¦  «        }|j	        }|                      t          ¦  «        5   ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r=   )
r   rA   r5   r6   r   r   r	   r   rB   r7   ©r-   r   rD   r8   rE   rF   rG   s          r   rH   z1TestBoundsCheckError.test_slice_array_boundscheck®   sr  € ÝŒG�F‰OŒOˆÝŒG�GÑÔˆØ×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ
 	˜1ÑÔÐå�A‰YŒYˆÝ�Q�Q�QŒZˆÝ(Õ);¸b¸TØ57Ý/@ðBñ Bô Bˆð $Ô/ˆØ×Ò�zÑ*Ô*ð 	ð 	ØˆK˜‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó$   ÁAÁA#Á&A#ÃC/Ã/C3Ã6C3c                 óø  — t          j        d¦  «        }t          j        d¦  «        }|                      t          ¦  «        5  t	          |¦  «         d d d ¦  «         n# 1 swxY w Y   t	          |¦  «         t          |¦  «        }|j        d d …         }t          t          |g|t          ¬¦  «        }|j	        }|                      t          ¦  «        5   ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rK   )
r   r4   r5   r6   r"   r   rM   r   rB   r7   rr   s          r   rN   z4TestBoundsCheckError.test_fancy_indexing_boundscheckÁ   ót  € ÝŒI�a‰LŒLˆÝŒI�a‰LŒLˆð ×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ 	˜1ÑÔÐå�A‰YŒYˆØŒX�a�a�aŒ[ˆÝ(Õ);¸b¸TØ57Ý/@ðBñ Bô Bˆð $Ô/ˆØ×Ò�zÑ*Ô*ð 	ð 	ØˆK˜‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	rs   c                 óø  — t          j        d¦  «        }t          j        d¦  «        }|                      t          ¦  «        5  t	          |¦  «         d d d ¦  «         n# 1 swxY w Y   t	          |¦  «         t          |¦  «        }|j        d d …         }t          t          |g|t          ¬¦  «        }|j	        }|                      t          ¦  «        5   ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rK   )
r   r4   r5   r6   r$   r   rM   r   rB   r7   rr   s          r   Ú1test_fancy_indexing_with_modification_boundscheckzFTestBoundsCheckError.test_fancy_indexing_with_modification_boundscheckÕ   ru   rs   c                 ó(   — | j         t          _        d S r(   rP   r,   s    r   rQ   zTestBoundsCheckError.tearDowné   rR   r   N)	rS   rT   rU   r.   r;   rH   rN   rw   rQ   r   r   r   rn   rn   ™   sn   € € € € € ð"ð "ð "ðð ð ð ð ð ð&ð ð ð(ð ð ð(2ð 2ð 2ð 2ð 2r   rn   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestBoundsEnvironmentVariablec                 óî   — t           j        | _        d t           _        t          d„ ¦   «         }t          d¬¦  «        d„ ¦   «         }t          d¬¦  «        d„ ¦   «         }|| _        || _        || _        d S )Nc                 ó   — | d         S rb   r   ©r!   s    r   Údefaultz4TestBoundsEnvironmentVariable.setUp.<locals>.defaultò   ó   € à�Q”4ˆKr   FrZ   c                 ó   — | d         S rb   r   r}   s    r   Úoffz0TestBoundsEnvironmentVariable.setUp.<locals>.offö   r   r   Tc                 ó   — | d         S rb   r   r}   s    r   Úonz/TestBoundsEnvironmentVariable.setUp.<locals>.onú   r   r   )r   r*   r+   r   r~   r�   rƒ   )r-   r~   r�   rƒ   s       r   r.   z#TestBoundsEnvironmentVariable.setUpî   s—   € Ý%Ô1ˆÔØ!�Ôå	ð	ð 	ñ 
Œð	õ 
˜%Ð	 Ñ	 Ô	 ð	ð 	ñ 
!Ô	 ð	õ 
˜$Ð	Ñ	Ô	ð	ð 	ñ 
 Ô	ð	ð ˆŒØˆŒØˆŒˆˆr   c                 ód  — t          dd¦  «        5  t          j        dg¦  «        }|                      |¦  «         |                      |¦  «         |                      t          ¦  «        5  |                      |¦  «         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_   Ú r   )r   r   r   r~   r�   r5   r6   rƒ   ©r-   r   s     r   Útest_boundscheck_unsetz4TestBoundsEnvironmentVariable.test_boundscheck_unset  s  € Ý Ð!4°bÑ9Ô9ð 	ð 	Ý”˜!˜‘”ˆAð �LŠL˜‰OŒOˆOØ�HŠH�Q‰KŒKˆKà×"Ò"¥:Ñ.Ô.ð ð Ø—’˜‘
”
�
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s6   ‘AB%Á+BÂB%ÂB	ÂB%ÂB	ÂB%Â%B)Â,B)c                 ód  — t          dd¦  «        5  t          j        dg¦  «        }|                      t          ¦  «        5  |                      |¦  «         |                      |¦  «         |                      |¦  «         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_   r`   r   )r   r   r   r5   r6   r~   r�   rƒ   r†   s     r   Útest_boundscheck_enabledz6TestBoundsEnvironmentVariable.test_boundscheck_enabled  s  € Ý Ð!4°cÑ:Ô:ð 	ð 	Ý”˜!˜‘”ˆAà×"Ò"¥:Ñ.Ô.ð ð Ø—’˜Q‘”�Ø—’˜‘”�Ø—’˜‘
”
�
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s6   ‘0B%ÁA BÂB%ÂB	ÂB%ÂB	ÂB%Â%B)Â,B)c                 ó   — t          dd¦  «        5  t          j        dg¦  «        }|                      |¦  «         |                      |¦  «         |                      |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr_   Ú0r   )r   r   r   r~   r�   rƒ   r†   s     r   Útest_boundscheck_disabledz7TestBoundsEnvironmentVariable.test_boundscheck_disabled  sµ   € Ý Ð!4°cÑ:Ô:ð 	ð 	Ý”˜!˜‘”ˆAð �LŠL˜‰OŒOˆOØ�HŠH�Q‰KŒKˆKØ�GŠG�A‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ‘AA3Á3A7Á:A7c                 ó(   — | j         t          _        d S r(   rP   r,   s    r   rQ   z&TestBoundsEnvironmentVariable.tearDown  rR   r   N)rS   rT   rU   r.   r‡   r‰   rŒ   rQ   r   r   r   rz   rz   í   s_   € € € € € ðð ð ð(	ð 	ð 	ðð ð ðð ð ð2ð 2ð 2ð 2ð 2r   rz   Ú__main__)!Únumpyr   Únumba.core.compilerr   r   Únumba.cuda.testingr   Únumbar   r   r   Únumba.core.typesr	   Únumba.tests.supportr
   r   Ú
numba.corer   rj   ÚcopyrB   rG   r   r   r"   r$   ÚTestCaser&   rW   rn   rz   rS   Úmainr   r   r   ú<module>r™      sæ  ðØ Ð Ð Ð à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø *Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ Ð Ð Ð Ð Ð Ø €€€à&�MÔ&Ñ(Ô(Ð Ø $Ð Ô ðð ð ðð ð ð
ð ð ð
ð ð ðO2ð O2ð O2ð O2ð O2˜_¨hÔ.?ñ O2ô O2ð O2ðd2ð 2ð 2ð 2ð 2˜K¨Ô):ñ 2ô 2ð 2ðHQ2ð Q2ð Q2ð Q2ð Q2˜8Ô,ñ Q2ô Q2ð Q2ðh32ð 32ð 32ð 32ð 32 HÔ$5ñ 32ô 32ð 32ðl ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   