
    ܙd %                     |   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    <lib/python3.11/site-packages/numba/tests/test_boundscheck.pybasic_array_accessr      s    R5L    c                     | dd df         S r   r   r   s    r   slice_array_accessr      s    RSS"W:r   c                 >    t          j        g d          }| |         S )N         nparrayxr   s     r   fancy_array_accessr"      s    
AQ4Kr   c                 <    t          j        g d          }d| |<   | S )Nr   r   r   r    s     r   fancy_array_modifyr$      s#    
AAaD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    IaLLz** 	" 	" q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"
 AYY*+=t1>@ @ @'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   GFOOGGz** 	" 	" q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"
 	1AYYQQQZ*+=t791>@ @ @ (3();bT57/@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   IaLLIaLL z** 	" 	" q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	1AYYXaaa[*+=t791>@ @ @ (3();bT57/@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	$	$	$	 	 
%	$	 !!4c:: 
	" 
	"X  X AA ( "dAq!!!
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	"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   IaLLz** 	" 	" q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"
 AYY();bT/@B B B#/z** 	 	KNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	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   GFOOGGz** 	" 	" q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"
 	1AYYQQQZ();bT57/@B B B $/z** 	 	KNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$   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   IaLLIaLL z** 	" 	" q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	1AYYXaaa[();bT57/@B B B $/z** 	 	KNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	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       Q4Kr   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    !4b99 	 	!A LLOOOHHQKKK"":..  


              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	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    !4c:: 	 	!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     !4c:: 	 	!A LLOOOHHQKKKGGAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	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2d2 2 2 2 2K): 2 2 2HQ2 Q2 Q2 Q2 Q28, Q2 Q2 Q2h32 32 32 32 32H$5 32 32 32l zHMOOOOO r   