
    sh!                         S SK Jr  S SKrS SKJrJrJr  S SKrS SKrS SK	J
r
JrJrJrJr  S SKJrJr  S SKJrJr  S SKJr  S SKrS rS	 rS
 rS r " S S\\5      r\S:X  a  \R<                  " 5         gg)    )partialN)chainproductstarmap)jit	literallynjittypeofTypingError)utilstypes)TestCaseMemoryLeakMixin)_header_leadc                 H    U R                   U R                  U R                  4$ N)startstopstep)sls    k/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_slices.pyslice_passingr      s    88RWWbgg%%    c                  X    [        U 6 nUR                  UR                  UR                  4$ r   )slicer   r   r   )argsr   s     r   slice_constructorr      s$    	B88RWWbgg%%r   c                     [        U 6 nX   $ r   )r   )r   lr   s      r   slice_construct_and_user       s    	B5Lr   c                      U R                   " U6 $ r   )indices)sindargss     r   slice_indicesr%      s    99gr   c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)
TestSlices   c           	        ^ ^ UU 4S jn[         R                  nU* S-
  n[        SS9" [        5      m/ SQnSU4SS/nS	S
/n[        R
                  " UUU5       H  u  u  pxu  pu  pU" XyXX5        M     SU4SS/nSU4SS/nSS/n[        R
                  " UUU5       H  u  u  pxu  pu  pU" XyXX5        M     T R                  [        5         T" [        SSS5      5        SSS5        g! , (       d  f       g= f)z3
Check passing a slice object to a Numba function.
c                 T   > [        XU5      nT" U5      nT	R                  XsXE45        g r   )r   assertPreciseEqual)
abcdefr   gotcfuncselfs
           r   check,TestSlices.test_slice_passing.<locals>.check$   s)    qQB)C##CQ3r      Tnopython))Nr   *   r;   r=   N)	   r>   )r?   Nr7   )   rA   r:   r<   )rB   g      ?)	sysmaxsizer   r   	itertoolsr   assertRaises	TypeErrorr   )r4   r5   	maxposint	maxnegintstart_cases
stop_cases
step_casesr,   r/   r-   r0   r.   r1   r3   s   `            @r   test_slice_passingTestSlices.test_slice_passing   s   
	4
 KK	JN	T"=1 6Y'<
*
&/&7&78B8B'D"FQFQFQ !a#'D i((H=Y'<

+
&/&7&78B8B'D"FQFQFQ !a#'D y)%Q"# *))s   C,,
C:c                    [         R                  nU* S-
  n[        R                  " S5      n[	        SS9" [
        5      n[	        SS9" [        5      nSSUS44SSSUS44S	SUS44S
SSSUS44SSSUS44SSXS44SSUS44SUSS44S4 H?  u  pgU" U6 nU R                  X5        [        Xc5      n	U" Xc5      n
U R                  X5        MA     g)zA
Test the 'happy path' for slice() constructor in nopython mode.
r7   
   Tr8   r   r   ))   )r   rQ   r7   )NN)r7   N))N   )r   rR   r7   ))r7   rR   )r7   rR   r7   )NN   rS   ))NrR   rS   )r   rR   rS   )r7   NrS   )r7   rR   rS   rT   )NNr=   r=   )rP   Nr=   )NrQ   r=   rQ   )rP   rQ   r=   rU   N)rC   rD   nparanger   r   r    r+   )r4   rH   rI   r,   r3   	cfunc_user   expectedr2   usagecusages              r   test_slice_constructor!TestSlices.test_slice_constructorC   s    KK	JN	IIbMT"#45&'>?	q)Q'(Ay!,-Iq)*"q)Q/0%Ay!,-"	b9:b)R01Y2./&
ND  ,C##C2+D4Et'F##E2)
r   c                   ^
 Sm
[         R                  " U
4S j[        S5       5       5      n[        R                  " S5      n[        SS9" [        5      nU R                  5         U H&  n [        XB5      nU R                  XS" XB5      5        M(     g! [         a  n[        U5      nU R                  [        U5      SR                  U5      5        U R                  [        5       nU" XB5        SSS5        O! , (       d  f       O= fU R!                  ["        [        WR$                  5      5        U R!                  S	R'                  S
 U 5       5      [        UR$                  5      5         SnAGM  SnAf[(         aw  n	U R                  [+        U	5      5       nU" XB5        SSS5        O! , (       d  f       O= fU R!                  [        U	5      [        WR$                  5      5         Sn	A	GM  Sn	A	ff = f)zG
Test that slice constructor behaves same in python and compiled code.
)Nr=   r   r7   c              3   8   >#    U  H  n[        TUS 9v   M     g7f))repeatN)r   ).0noptionss     r   	<genexpr>:TestSlices.test_slice_constructor_cases.<locals>.<genexpr>g   s      (
081GGA&s   rQ   rP   Tr8   z7slice expected at (most|least) (3|1) arguments?, got {}Nz, c              3   J   #    U  H  n[        [        U5      5      v   M     g 7fr   )strr
   )ra   args     r   rd   re      s     ?$3c&+..$s   !#)r   from_iterablerangerV   rW   r   r    disable_leak_checkr+   rG   lenassertRegexrg   formatrF   r   assertInr   	exceptionjoin	Exceptiontype)r4   	arg_casesarrayr3   r   rY   	py_type_en_argsnumba_epy_erc   s             @r   test_slice_constructor_cases'TestSlices.test_slice_constructor_casesb   s    #'' (
05a(
 
	 		"T"#:;!DF24?8 ''%2DE=    T  	NNVF^
 &&{3w$& 433 ))* II?$??))*   &&tDz2g$& 322I))* sV   ,B
G9A
E5'	C90	E59
DA+E55G9G4	F.%	G4.
F<85G44G9c                 d   [        [        [        [        [	        SS5      S5      [        [	        SS5      S5      [        [	        SS5      S5      5      5      n[	        SS5      n[        SS9" [        5      n[        X5       H(  u  pE [        XE5      nU R                  Xc" XE5      5        M*     g! [         av  nU R                  [        U5      5       nU" XE5        SSS5        O! , (       d  f       O= fU R                  [        U5      [        WR                  5      5         SnAM  SnAff = f)	zITest that a numba slice returns same result for .indices as a python one.rQ   r   rS   Tr8   N)r   r   r   r   rj   r   r%   r+   rr   rF   rs   ro   rg   rp   )	r4   sliceslengthsr3   r#   r   rY   ry   rx   s	            r   test_slice_indicesTestSlices.test_slice_indices   s    eBlG,eBlG,eBlG,
 A,T"=1F,DA
?(. ''%+> -  &&tDz2g!K 322I))* s0   B//
D/9D*	C%	D*%
C3/5D**D/c                    [        SS9" [        5      nU R                  [        5       nU" [	        S5      SSS5        SSS5        U R                  S[        WR                  5      5        U R                  [        5       nU" [	        SSS5      S	5        SSS5        U R                  S
[        S	5      -  [        UR                  5      5        g! , (       d  f       N= f! , (       d  f       NQ= f)zTests for specific error cases.Tr8   Nr7   rR   rS   z.indices() takes exactly one argument (3 given)r   g333333?z/'%s' object cannot be interpreted as an integer)	r   r%   rF   r   r   ro   rg   rp   r
   )r4   cslice_indicesr0   s      r   test_slice_indices_examples&TestSlices.test_slice_indices_examples   s    d+M:{+q5;1a0 ,=	

 {+q5tQ/5 ,=sK	
 ,+ ,+s   C C 
C 
C.c                    ^^ Sm[         R                  " / SQ/ SQ/ SQ5       HC  m[        T6 m[        SS9UU4S j5       nU R	                  U" 5       UR                  5       5        ME     g )N)r7   rR   rS      )Nr7   rR   rS   )Nr7   rR   r=   r~   Tr8   c                     > T T   $ r    )
test_tupletss   r   test_fn4TestSlices.test_slice_from_constant.<locals>.test_fn   s    !"~%r   )rE   r   r   r   assertEqualpy_func)r4   r   r   r   s     @@r   test_slice_from_constant#TestSlices.test_slice_from_constant   sb    !
##_.B
B B$&  & WY(9:
r   c                 D   [         R                  R                  [        SS S 5      5      n[         R                  R                  [        S S S 5      5      n[         R                  R                  [        SS S 5      5      nU R	                  X5        U R                  X5        g r@   )r   miscSliceLiteralr   assertNotEqualr   )r4   sl1sl2sl3s       r   test_literal_slice_distinct&TestSlices.test_literal_slice_distinct   su    jj%%eAtT&:;jj%%eD$&=>jj%%eAtT&:;C%"r   c                    [         S 5       n[        SSS5      [        SS5      [        S5      [        S SS5      [        SS S5      [        S S S5      [        S 5      [        S S S 5      4nU H  nU R                  X1" U5      5        M     g )Nc                     [        U 5      $ r   r   )xs    r   r1   /TestSlices.test_literal_slice_boxing.<locals>.f       Q<r   r7   r   rR   )r	   r   r   )r4   r1   r   r   s       r   test_literal_slice_boxing$TestSlices.test_literal_slice_boxing   s     
	  
	  !QN!QK!H$1!T1$a $K$d#	
 BR2' r   c                 l   ^ [        SSS5      m[        U4S j5       nU R                  TU" 5       5        g )Nr7   rR   rS   c                     > T $ r   r   zs   r   foo2TestSlices.test_literal_slice_freevar.<locals>.foo   s    Hr   )r   r	   r   )r4   r   r   s     @r   test_literal_slice_freevar%TestSlices.test_literal_slice_freevar   s8     !QN		 
	 	CE"r   c           	         [        5       S 5       n[        S5      nU R                  [        5       nU" [	        S S U* S-
  5      5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                     [        U 5      $ r   r   r   s    r   r   1TestSlices.test_literal_slice_maxint.<locals>.foo   r   r   l            r7   zInt value is too large)r	   intrF   
ValueErrorr   ro   rg   rp   )r4   r   maxvalr0   s       r   test_literal_slice_maxint$TestSlices.test_literal_slice_maxint   ss     
	  
	  Uz*adD6'!),- +$	
 +*s   A77
Br   N)__name__
__module____qualname____firstlineno__rM   r\   rz   r   r   r   r   r   r   r   __static_attributes__r   r   r   r'   r'      s7    "$H3>+FZ?6
$;#(*#
r   r'   __main__)	functoolsr   rE   r   r   r   rC   numpyrV   numbar   r   r	   r
   r   
numba.corer   r   numba.tests.supportr   r   numba.core.types.functionsr   unittestr   r   r    r%   r'   r   mainr   r   r   <module>r      sf      - - 
  ; ; # 9 3 &&b
( b
J zMMO r   