§
    2@Äj½   ã                   ó  — d dl 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d„ Zd„ Zd	„ Zd
„ Z G d„ dee¦  «        Z G d„ dee¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zedk    r ej        ¦   «          dS dS )é    N)ÚSerialMixin)ÚtypeofÚcudaÚnjit)Úfloat64)ÚTestCaseÚMemoryLeakMixin)Úconfigc                 ó   — | d         S ©Né
   © ©Úas    úMC:\Projects\Historical\venv\Lib\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 ej        ddi¬¦  «        d„ ¦   «         Z ej        ddi¬¦  «        d„ ¦   «         Z ej        ddi¬¦  «        d„ ¦   «         ZdS )ÚTestBoundsCheckNoErrorÚNUMBA_BOUNDSCHECKÚ ©Úenvvarsc                 ó^  — |                       t          j        ¦  «         t          j        d¦  «        }|                      t          ¦  «        5  t          |¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        } t          |f¦  «        t          ¦  «        } ||¦  «         d S )Né   ©
ÚassertIsNoner
   ÚBOUNDSCHECKr   ÚarangeÚassertRaisesÚ
IndexErrorr   r   r   )Úselfr   ÚatÚnoboundschecks       r   Útest_basic_array_boundscheckz3TestBoundsCheckNoError.test_basic_array_boundscheck!   sÚ   € à×Ò�&Ô,Ñ-Ô-Ð-åŒI�a‰LŒLˆà×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ
 �A‰YŒYˆØ#�˜b˜U™œÕ$6Ñ7Ô7ˆàˆ�aÑÔÐÐÐs   ÁA*Á*A.Á1A.c                 óN  — |                       t          j        ¦  «         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          ¦  «        } t           ||¦  «        d¬¦  «        t          ¦  «        } ||¦  «          ||¦  «          ||¦  «         d S ©N)r*   r*   )r*   é   T©Úboundscheck©r,   r
   r-   r   Úonesr/   r0   r   r   r   r   ©r1   r   Úbr2   Úrtr3   r9   s          r   Útest_slice_array_boundscheckz3TestBoundsCheckNoError.test_slice_array_boundscheck2   sL  € à×Ò�&Ô,Ñ-Ô-Ð-åŒG�F‰OŒOˆÝŒG�GÑÔˆØ×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ
 	˜1ÑÔÐå�A‰YŒYˆÝ�Q�Q�QŒZˆØ$�˜R˜R ™VœV™œÕ%7Ñ8Ô8ˆØ4•d˜2˜2˜b™6œ6¨tÐ4Ñ4Ô4Õ5GÑHÔHˆàˆ�aÑÔÐØˆ�aÑÔÐð 	ˆ�A‰Œˆˆˆó   Á"A>Á>BÂBc                 óN  — |                       t          j        ¦  «         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          ¦  «        } t           ||¦  «        d¬¦  «        t          ¦  «        } ||¦  «          ||¦  «          ||¦  «         d S ©Nr   é   Tr8   ©r,   r
   r-   r   r.   r/   r0   r    r   Údtyper   r<   s          r   Útest_fancy_indexing_boundscheckz6TestBoundsCheckNoError.test_fancy_indexing_boundscheckK   sN  € à×Ò�&Ô,Ñ-Ô-Ð-åŒI�a‰LŒLˆÝŒI�a‰LŒLˆð ×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ 	˜1ÑÔÐå�A‰YŒYˆØŒX�a�a�aŒ[ˆØ$�˜R˜R ™VœV™œÕ%7Ñ8Ô8ˆØ4•d˜2˜2˜b™6œ6¨tÐ4Ñ4Ô4Õ5GÑHÔHˆàˆ�aÑÔÐØˆ�aÑÔÐð 	ˆ�A‰Œˆˆˆr@   N)Ú__name__Ú
__module__Ú__qualname__r   Úrun_test_in_subprocessr4   r?   rF   r   r   r   r$   r$      s«   € € € € € à$€XÔ$Ð.AÀ2Ð-FÐGÑGÔGðð ñ HÔGðð  %€XÔ$Ð.AÀ2Ð-FÐGÑGÔGðð ñ HÔGðð0 %€XÔ$Ð.AÀ2Ð-FÐGÑGÔGðð ñ HÔGðð ð r   r$   c                   ó�   — e Zd Z ej         ej        ¦   «          d¦  «         ej        ddi¬¦  «        d„ ¦   «         ¦   «         Z	dS )ÚTestNoCudaBoundsCheckzNO CUDAr%   Ú1r'   c                 óÚ  — |                       t          j        ¦  «         |                      t          ¦  «        5  t          j        d¬¦  «        d„ ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        d¬¦  «        d„ ¦   «         }t
          j        d„ ¦   «         }t          j        d¦  «        }t          j	        d¦  «        }t          j
        s |d         ||¦  «         d S d S )	NTr8   c                  ó   — d S ©Nr   r   r   r   Úfuncz<TestNoCudaBoundsCheck.test_no_cuda_boundscheck.<locals>.funcl   s   € à�r   Fc                  ó   — d S rP   r   r   r   r   Úfunc3z=TestNoCudaBoundsCheck.test_no_cuda_boundscheck.<locals>.func3r   s   € àˆDr   c                 ó   — | d         |d<   d S ©Nr   r   r   s     r   Úfunc2z=TestNoCudaBoundsCheck.test_no_cuda_boundscheck.<locals>.func2v   s   € à�Q”4ˆAˆa‰DˆDˆDr   )r   )r   r   )Ú
assertTruer
   r-   r/   ÚNotImplementedErrorr   Újitr   r;   ÚzerosÚENABLE_CUDASIM)r1   rQ   rS   rV   r   r   s         r   Útest_no_cuda_boundscheckz.TestNoCudaBoundsCheck.test_no_cuda_boundscheckg   s?  € ð 	�Š�Ô*Ñ+Ô+Ð+Ø×ÒÕ2Ñ3Ô3ð 	ð 	ÝŒX $Ð'Ñ'Ô'ðð ñ (Ô'ðð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 
Œ˜eÐ	$Ñ	$Ô	$ð	ð 	ñ 
%Ô	$ð	õ 
Œð	ð 	ñ 
Œð	õ ŒG�D‰MŒMˆÝŒH�T‰NŒNˆõ Ô$ð 	ØˆE�$ŒK˜˜1ÑÔÐÐÐð	ð 	s   ºA%Á%A)Á,A)N)
rG   rH   rI   ÚunittestÚskipIfr   Úis_availabler   rJ   r\   r   r   r   rL   rL   f   sm   € € € € € Ø€X„_Ð*˜Ô*Ñ,Ô,Ð,¨iÑ8Ô8Ø$€XÔ$Ð.AÀ3Ð-GÐHÑHÔHðð ñ IÔHñ 9Ô8ðð ð r   rL   c                   óî   — e 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di¬¦  «        d„ ¦   «         ZdS )	ÚTestBoundsCheckErrorr%   r&   r'   c                 óÈ  — |                       t          j        ¦  «         t          j        d¦  «        }|                      t          ¦  «        5  t          |¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        } t          |fd¬¦  «        t          ¦  «        }|                      t          ¦  «        5   ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr*   Tr8   r+   )r1   r   r2   r9   s       r   r4   z1TestBoundsCheckError.test_basic_array_boundscheck…   sP  € à×Ò�&Ô,Ñ-Ô-Ð-åŒI�a‰LŒLˆà×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ
 �A‰YŒYˆØ3•d˜B˜5¨dÐ3Ñ3Ô3Õ4FÑGÔGˆà×Ò�zÑ*Ô*ð 	ð 	ØˆK˜‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s$   ÁA*Á*A.Á1A.Â>CÃCÃCc                 ó<  — |                       t          j        ¦  «         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           ||¦  «        d¬¦  «        t          ¦  «        }|                      t          ¦  «        5   ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r6   r:   ©r1   r   r=   r2   r>   r9   s         r   r?   z1TestBoundsCheckError.test_slice_array_boundscheck–   s€  € à×Ò�&Ô,Ñ-Ô-Ð-åŒG�F‰OŒOˆÝŒG�GÑÔˆØ×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ
 	˜1ÑÔÐå�A‰YŒYˆÝ�Q�Q�QŒZˆØ4•d˜2˜2˜b™6œ6¨tÐ4Ñ4Ô4Õ5GÑHÔHˆà×Ò�zÑ*Ô*ð 	ð 	ØˆK˜‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó$   Á"A>Á>BÂBÃ8DÄDÄDc                 ó<  — |                       t          j        ¦  «         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           ||¦  «        d¬¦  «        t          ¦  «        }|                      t          ¦  «        5   ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rB   rD   rd   s         r   rF   z4TestBoundsCheckError.test_fancy_indexing_boundscheckª   ó‚  € à×Ò�&Ô,Ñ-Ô-Ð-åŒI�a‰LŒLˆÝŒI�a‰LŒLˆð ×Ò�zÑ*Ô*ð 	"ð 	"õ ˜qÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"õ 	˜1ÑÔÐå�A‰YŒYˆØŒX�a�a�aŒ[ˆØ4•d˜2˜2˜b™6œ6¨tÐ4Ñ4Ô4Õ5GÑHÔHˆà×Ò�zÑ*Ô*ð 	ð 	ØˆK˜‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	re   c                 ó<  — |                       t          j        ¦  «         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           ||¦  «        d¬¦  «        t          ¦  «        }|                      t          ¦  «        5   ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rB   )r,   r
   r-   r   r.   r/   r0   r"   r   rE   r   rd   s         r   Ú1test_fancy_indexing_with_modification_boundscheckzFTestBoundsCheckError.test_fancy_indexing_with_modification_boundscheck¿   rg   re   N)	rG   rH   rI   r   rJ   r4   r?   rF   ri   r   r   r   ra   ra   „   sÞ   € € € € € Ø$€XÔ$Ð.AÀ2Ð-FÐGÑGÔGðð ñ HÔGðð  %€XÔ$Ð.AÀ2Ð-FÐGÑGÔGðð ñ HÔGðð& %€XÔ$Ð.AÀ2Ð-FÐGÑGÔGðð ñ HÔGðð( %€XÔ$Ð.AÀ2Ð-FÐGÑGÔGðð ñ HÔGðð ð r   ra   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d
S )ÚTestBoundsEnvironmentVariablec                 ó´   — t           d„ ¦   «         }t          d¬¦  «        d„ ¦   «         }t          d¬¦  «        d„ ¦   «         }|| _        || _        || _        d S )Nc                 ó   — | d         S rU   r   ©r   s    r   Údefaultz4TestBoundsEnvironmentVariable.setUp.<locals>.default×   ó   € à�Q”4ˆKr   Fr8   c                 ó   — | d         S rU   r   rn   s    r   Úoffz0TestBoundsEnvironmentVariable.setUp.<locals>.offÛ   rp   r   Tc                 ó   — | d         S rU   r   rn   s    r   Úonz/TestBoundsEnvironmentVariable.setUp.<locals>.onß   rp   r   )r   ro   rr   rt   )r1   ro   rr   rt   s       r   ÚsetUpz#TestBoundsEnvironmentVariable.setUpÖ   s„   € Ý	ð	ð 	ñ 
Œð	õ 
˜%Ð	 Ñ	 Ô	 ð	ð 	ñ 
!Ô	 ð	õ 
˜$Ð	Ñ	Ô	ð	ð 	ñ 
 Ô	ð	ð ˆŒØˆŒØˆŒˆˆr   r%   r&   r'   c                 óR  — |                       t          j        ¦  «         t          j        dg¦  «        }|                      |¦  «         |                      |¦  «         |                      t          ¦  «        5  |  	                    |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rU   )
r,   r
   r-   r   r   ro   rr   r/   r0   rt   ©r1   r   s     r   Útest_boundscheck_unsetz4TestBoundsEnvironmentVariable.test_boundscheck_unsetç   sÏ   € à×Ò�&Ô,Ñ-Ô-Ð-åŒH�a�S‰MŒMˆð 	�Š�Q‰ŒˆØ�Š�‰Œˆà×Ò�zÑ*Ô*ð 	ð 	Ø�GŠG�A‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á9BÂB Â#B rM   c                 óR  — |                       t          j        ¦  «         t          j        dg¦  «        }|                      t          ¦  «        5  |                      |¦  «         |                      |¦  «         |  	                    |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rU   )
rW   r
   r-   r   r   r/   r0   ro   rr   rt   rw   s     r   Útest_boundscheck_enabledz6TestBoundsEnvironmentVariable.test_boundscheck_enabledô   sË   € à�Š�Ô*Ñ+Ô+Ð+åŒH�a�S‰MŒMˆà×Ò�zÑ*Ô*ð 	ð 	Ø�LŠL˜‰OŒOˆOØ�HŠH�Q‰KŒKˆKØ�GŠG�A‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁA BÂB Â#B Ú0c                 óì   — |                       t          j        ¦  «         t          j        dg¦  «        }|                      |¦  «         |                      |¦  «         |                      |¦  «         d S rU   )ÚassertFalser
   r-   r   r   ro   rr   rt   rw   s     r   Útest_boundscheck_disabledz7TestBoundsEnvironmentVariable.test_boundscheck_disabledÿ   s[   € à×Ò�Ô+Ñ,Ô,Ð,åŒH�a�S‰MŒMˆð 	�Š�Q‰ŒˆØ�Š�‰ŒˆØ�Š�‰
Œ
ˆ
ˆ
ˆ
r   N)	rG   rH   rI   ru   r   rJ   rx   rz   r~   r   r   r   rk   rk   Õ   s¼   € € € € € ðð ð ð" %€XÔ$Ð.AÀ2Ð-FÐGÑGÔGð
ð 
ñ HÔGð
ð %€XÔ$Ð.AÀ3Ð-GÐHÑHÔHðð ñ IÔHðð %€XÔ$Ð.AÀ3Ð-GÐHÑHÔHðð ñ IÔHðð ð r   rk   Ú__main__)Únumpyr   Únumba.cuda.testingr   Únumbar   r   r   Únumba.core.typesr   Únumba.tests.supportr   r	   Ú
numba.corer
   r]   r   r   r    r"   r$   rL   ra   rk   rG   Úmainr   r   r   ú<module>r‡      s§  ðØ Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø Ð Ð Ð Ð Ð Ø €€€ðð ð ðð ð ð
ð ð ð
ð ð ðDð Dð Dð Dð D˜_¨hñ Dô Dð DðNð ð ð ð ˜K¨ñ ô ð ð<Nð Nð Nð Nð N˜8ñ Nô Nð Nðb3ð 3ð 3ð 3ð 3 Hñ 3ô 3ð 3ðl ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   