
    shɖ                        S SK r S SKrS SKrS SKrS SKJrJrJr  S SK	J
r
JrJr  S SKJrJr  S SKJr  S SKJrJrJrJr  SS0rS	S0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%S r&S r'S r(S r)S r*S r+S r,S r-\S 5       r.\S  5       r/S! r0S" r1S# r2 " S$ S%\5      r3 " S& S'\5      r4 " S( S)\5      r5\6S*:X  a  \Rn                  " 5         gg)+    N)jitnjittypeof)utilstypeserrors)TestCasetag)	arraydecl)intpellipsisslice2_typeslice3_typeforceobjTnopythonc                     XX#2   $ N )astartstopsteps       m/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_indexing.pyslicing_1d_usecaser      s    4_    c                 n    XX#2   nSn[        UR                  S   5       H  nXTU   US-   -  -  nM     U$ Nr      rangeshape)r   r   r   r   btotalis          r   slicing_1d_usecase2r%      sC    	/AE1771:1Q Lr   c                 j    XU nSn[        UR                  S   5       H  nXCU   US-   -  -  nM     U$ r   r   )r   r   r   r"   r#   r$   s         r   slicing_1d_usecase3r'      s@    	AE1771:1Q Lr   c                 l    U S S  nSn[        UR                  S   5       H  nX!U   US-   -  -  nM     U$ r   r   )r   r"   r#   r$   s       r   slicing_1d_usecase4r)   $   s@    	!AE1771:1Q Lr   c                 j    XS  nSn[        UR                  S   5       H  nX2U   US-   -  -  nM     U$ r   r   r   r   r"   r#   r$   s        r   slicing_1d_usecase5r,   +   s@    	&	AE1771:1Q Lr   c                 l    U S U nSn[        UR                  S   5       H  nX2U   US-   -  -  nM     U$ r   r   )r   r   r"   r#   r$   s        r   slicing_1d_usecase6r.   2   sB    	%4AE1771:1Q Lr   c                 p    XS S2   nSn[        UR                  S   5       H  nX2U   US-   -  -  nM     U$ Nr   r   r   r+   s        r   slicing_1d_usecase7r2   9   sD    	))AE1771:1Q Lr   c                 r    U S S S2   nSn[        UR                  S   5       H  nX2U   US-   -  -  nM     U$ r0   r   r+   s        r   slicing_1d_usecase8r4   A   sD    	$B$AE1771:1Q Lr   c                     XX#2XEU24   $ r   r   )r   start1stop1step1start2stop2step2s          r   slicing_2d_usecaser<   J   s    Ee!3344r   c                     XX#2U4   $ r   r   )r   r6   r7   r8   indexs        r   slicing_2d_usecase3r?   N   s    E&''r   c                 t    XUS 2U4   nSn[        UR                  S   5       H  nXTU   US-   -  -  nM     U$ r   r   )r   index0r6   index2r"   r#   r$   s          r   slicing_3d_usecaserC   R   sH    	&'6
!"AE1771:1Q Lr   c                 t    XS U2U4   nSn[        UR                  S   5       H  nXTU   US-   -  -  nM     U$ r   r   )r   rA   r7   rB   r"   r#   r$   s          r   slicing_3d_usecase2rE   Y   sJ    	&5&&
 !AE1771:1Q Lr   c                 j    X   nSn[        UR                  S   5       H  nX2U   US-   -  -  nM     U$ r   r   )r   r>   r"   r#   r$   s        r   partial_1d_usecaserG   `   s>    	AE1771:1Q Lr   c                 
    X   $ r   r   )r   r$   s     r   integer_indexing_1d_usecaserI   g   s	    4Kr   c                     XU4   $ r   r   r   i1i2s      r   integer_indexing_2d_usecaserN   j   s    U8Or   c                     X   U   $ r   r   rK   s      r   integer_indexing_2d_usecase2rP   m   s    59r   c                     XU2S4   $ N.r   r   r$   js      r   ellipsis_usecase1rU   p   s    qS#X;r   c                     U SX24   $ rR   r   rS   s      r   ellipsis_usecase2rW   s   s    S!#X;r   c                     XSU4   $ rR   r   rS   s      r   ellipsis_usecase3rY   v   s    QY<r   c                     U S    $ r   r   r   s    r   none_index_usecaser\   y   s    T7Nr   c                     U S   $ )Nr   r   r[   s    r   empty_tuple_usecaser^   |   s    R5Lr   c                     X U'   g r   r   )r   r>   values      r   setitem_usecasera      s	    eHr   c                     XS S & g r   r   )r   r`   s     r   setitem_broadcast_usecaserc      s	    aDr   c                     XX#U2'   U $ r   r   )r   r"   r   r   r   s        r   slicing_1d_usecase_setre      s    eoHr   c                      XU=== U-  sss& U $ r   r   )r   r"   r   r   s       r   slicing_1d_usecase_addrg      s     DMQMHr   c                     XX#U2XVU24'   U $ r   r   )r   r"   r   r   r   r9   r:   r;   s           r   slicing_2d_usecase_setri      s    ,-eof5(()Hr   c                      \ rS rSrSr\4S jrS r\4S jrS r	\4S jr
S r\4S	 jrS
 rS r\4S jrS r\4S jrS r\4S jrS r\4S jrS r\4S jrS r\4S jrS r\4S jrS r\4S jrS r\4S jrS r \4S jr!S r"\4S  jr#S! r$\\%4S" jr&S# r'S$ r(S% r)\4S& jr*\4S' jr+S( r,\4S) jr-S* r.\4S+ jr/S, r0\4S- jr1S. r2S/ r3S0 r4\4S1 jr5S2 r6\4S3 jr7S4 r8S5r9g6)7TestGetItem   z}
Test basic indexed load from an array (returning a view or a scalar).
Note fancy indexing is tested in test_fancy_indexing.
c                 `   [         n[        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9nS H%  nU" U/UQ76 nU R                  U" U/UQ76 U5        M'     g )Nr   C
   i4dtype)r   ro   r         r   ro   r   r   r   ro   r   ro   ru   )	   r   ry   r1   r   r   ry   r   )r   r   Arrayint32r   nparangeassertPreciseEqual)	selfflagspyfunc	arraytypeargtyscfuncr   indicesexpecteds	            r   test_1d_slicingTestGetItem.test_1d_slicing   s    #KKQ4	U[[%++u{{CF$e$V,IIb%G a*'*H##E!$6g$6Ar   c                 *    U R                  [        S9  g N)r   )r   Noflagsr   s    r   test_1d_slicing_npmTestGetItem.test_1d_slicing_npm       7+r   c                 <   [         n[        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9n/ SQnU H#  nU R                  U" U/UQ76 U" U/UQ76 5        M%     [        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9S S S	2   nU R                  UR                  S
   5        U R                  UR                  S   5        / SQnU H#  nU R                  U" U/UQ76 U" U/UQ76 5        M%     g )Nr   rn   ro   rp   rq   rs   rt   rw   rx   rz   A   ru   C_CONTIGUOUSF_CONTIGUOUS)
r%   r   r   r   r   r   r   assertEqualassertFalser   	r   r   r   r   r   r   r   argsargs	            r   test_1d_slicing2TestGetItem.test_1d_slicing2   sN   $KKQ4	U[[%++u{{CF$e$V,IIb% CVA__eAnn= 
 KKQ4	U[[%++u{{CF$e$V,IIb%cc*0101 CVA__eAnn= r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_1d_slicing2_npm TestGetItem.test_1d_slicing2_npm       G,r   c                    [         n[        R                  " [        R                  SS5      nU[        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9n/ SQnU H#  nU R                  U" U/UQ76 U" U/UQ76 5        M%     [        R                  " [        R                  SS5      nU[        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9S S S	2   nU R                  UR                  S
   5        U R                  UR                  S   5        U H#  nU R                  U" U/UQ76 U" U/UQ76 5        M%     g )Nr   rn   ro   rp   rq   ))rv   ro   )ru   rv   )ro   r   r   ro   )   ro   r   r   ru   r   r   )
r'   r   r   r   r   r   r   r   r   r   r   s	            r   test_1d_slicing3TestGetItem.test_1d_slicing3   s9   $KKQ4	U[[%++6F$e$V,IIb% CVA__eAnn= 
 KKQ4	U[[%++6F$e$V,IIb%cc*0101CVA__eAnn= r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_1d_slicing3_npm TestGetItem.test_1d_slicing3_npm   r   r   c                 L   [         n[        R                  " [        R                  SS5      nU4n[	        U40 UD6" U5      n[
        R                  " SSS9nU R                  U" U5      U" U5      5        [        R                  " [        R                  SS5      nU4n[	        U40 UD6" U5      n[
        R                  " SSS9S S S2   nU R                  UR                  S	   5        U R                  UR                  S
   5        U R                  U" U5      U" U5      5        g )Nr   rn   ro   rp   rq   r   r   ru   r   r   )
r)   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s          r   test_1d_slicing4TestGetItem.test_1d_slicing4   s    $KKQ4	F$e$V,IIb%E!H- KKQ4	F$e$V,IIb%cc*0101E!H-r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_1d_slicing4_npm TestGetItem.test_1d_slicing4_npm  r   r   c                    [        [        SS5      5      n[        R                  " [        R                  SS5      nU[        R                  4n[        U40 UD6" U5      n[        R                  " SSS9nU H!  nU R                  U" Xx5      U" Xx5      5        M#     [        R                  " [        R                  SS5      nU[        R                  4n[        U40 UD6" U5      n[        R                  " SSS9S S S	2   nU R                  UR                  S
   5        U R                  UR                  S   5        U H!  nU R                  U" Xx5      U" Xx5      5        M#     g )Niro   r   rn   rp   rq   r   r   ru   r   r   )listr    r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   s	            r   check_1d_slicing_with_arg%TestGetItem.check_1d_slicing_with_arg  s   E"bM"KKQ4	U[[)F$e$V,IIb%CVA^U1];  KKQ4	U[[)F$e$V,IIb%cc*0101CVA^U1]; r   c                 2    [         nU R                  X!5        g r   )r,   r   r   r   r   s      r   test_1d_slicing5TestGetItem.test_1d_slicing5)      $&&v5r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_1d_slicing5_npm TestGetItem.test_1d_slicing5_npm-  r   r   c                 2    [         nU R                  X!5        g r   )r.   r   r   s      r   test_1d_slicing6TestGetItem.test_1d_slicing60  r   r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_1d_slicing6_npm TestGetItem.test_1d_slicing6_npm4  r   r   c                 2    [         nU R                  X!5        g r   )r2   r   r   s      r   test_1d_slicing7TestGetItem.test_1d_slicing77  r   r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_1d_slicing7_npm TestGetItem.test_1d_slicing7_npm;  r   r   c                 2    [         nU R                  X!5        g r   )r4   r   r   s      r   test_1d_slicing8TestGetItem.test_1d_slicing8>  r   r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_1d_slicing8_npm TestGetItem.test_1d_slicing8_npmB  r   r   c                    [         n[        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9R                  SS5      nS H&  nU R                  U" U/UQ76 U" U/UQ76 SU< 3S	9  M(     g
)z
arr_2d[a:b:c]
ru   rn   d   rp   rq   ro   r   z	for args )msgN)	r   r   r   r   r   r   r   reshaper   )r   r   r   r   r   r   r   r   s           r   test_2d_slicingTestGetItem.test_2d_slicingE  s     $KKQ4	U[[%++u{{CF$e$V,IIc&..r26.D##F1$4t$4eAoo9=(? $ A.r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_2d_slicing_npmTestGetItem.test_2d_slicing_npmT  r   r   c                 &   [         n[        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9R                  SS5      n/ SQn[        R                  " Xw5       VV	s/ s H	  u  pX-   PM     n
nn	U
 H%  nU" U/UQ76 nU R                  U" U/UQ76 U5        M'     [        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " S	SS9R                  S
S
5      SSS2SSS24   nU
 H%  nU" U/UQ76 nU R                  U" U/UQ76 U5        M'     gs  sn	nf )z
arr_2d[a:b:c, d:e:f]
ru   rn   r   rp   rq   ro   )	rs   rt   rw   rx   rz   )ro   r   ry   )r{   r   r1   r|   r~   r     r   N)r<   r   r   r   r   r   r   r   	itertoolsproductr   )r   r   r   r   r   r   r   r   tup1tup2r   r   r   s                r   test_2d_slicing2TestGetItem.test_2d_slicing2W  s   
 $KKQ4	U[[%++u{{++u{{EKK9F$e$V,IIc&..r26	 %.$5$5g$GI$GLT $G 	 ICa#H##E!NcNH= 
 KKQ4	U[[%++u{{++u{{EKK9F$e$V,IIc&..r26ssCaCx@Ca#H##E!NcNH= Is   Hc                 *    U R                  [        S9  g r   )r   r   r   s    r   test_2d_slicing2_npm TestGetItem.test_2d_slicing2_npm  r   r   c                 J   [         n[        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9R                  SS5      n/ SQnU H%  nU" U/UQ76 n	U R                  U" U/UQ76 U	5        M'     [        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " S	SS9R                  S
S
5      SSS2SSS24   nU H%  nU" U/UQ76 n	U R                  U" U/UQ76 U	5        M'     g)z
arr_2d[a:b:c, d]
ru   rn   r   rp   rq   ro   ))r   ro   r   r   )ru   rv   r   r   )ro   r   ry      )r{   r   r1      )r   ro   ru   rv   )r   ry   rv   r   r   r   r   N)	r?   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   s
             r   test_2d_slicing3TestGetItem.test_2d_slicing3  sW   
 %KKQ4	U[[%++u{{++F$e$V,IIc&..r26
 Ca#H##E!NcNH= 
 KKQ4	U[[%++u{{++F$e$V,IIc&..r26ssCaCx@Ca#H##E!NcNH= r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_2d_slicing3_npm TestGetItem.test_2d_slicing3_npm  r   r   c                     [         n[        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9R                  SSS5      n/ SQnU H#  nU R                  U" U/UQ76 U" U/UQ76 5        M%     [        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " S	SS9S S S
2   R                  SSS5      nU H#  nU R                  U" U/UQ76 U" U/UQ76 5        M%     g Nrv   rn   i  rp   rq   ro   ))r   r{   r   rt   )r{   r   r   )r   r{   ry   )r   r{   ru   r   i  ru   )	rC   r   r   r   r   r   r   r   r   r   s	            r   test_3d_slicingTestGetItem.test_3d_slicing  s5   #KKQ4	U[[%++u{{CF$e$V,IId$'//B;
 CVA__eAnn=  KKQ4	U[[%++u{{CF$e$V,IId$'!,44RR@CVA__eAnn= r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_3d_slicing_npmTestGetItem.test_3d_slicing_npm  r   r   c                     [         n[        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9R                  SSS5      n/ SQnU H#  nU R                  U" U/UQ76 U" U/UQ76 5        M%     [        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " S	SS9S S S
2   R                  SSS5      nU H#  nU R                  U" U/UQ76 U" U/UQ76 5        M%     g r   )	rE   r   r   r   r   r   r   r   r   r   s	            r   test_3d_slicing2TestGetItem.test_3d_slicing2  s5   $KKQ4	U[[%++u{{CF$e$V,IId$'//B;
 CVA__eAnn=  KKQ4	U[[%++u{{CF$e$V,IId$'!,44RR@CVA__eAnn= r   c                 *    U R                  [        S9  g r   )r   r   r   s    r   test_3d_slicing2_npm TestGetItem.test_3d_slicing2_npm  r   r   c                 r   [         n[        R                  " [        R                  SS5      nU[        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9nU R                  U" US5      U" US5      5        U R                  U" US5      U" US5      5        U R                  U" US5      U" US5      5        [        R                  " [        R                  SS	5      nU[        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9S S S
2   nU R                  UR                  S   5        U R                  UR                  S   5        U R                  U" US5      U" US5      5        U R                  U" US
5      U" US
5      5        U R                  U" US5      U" US5      5        [        R                  " [        R                  SS5      n[        R                  " [        R                  SS5      nX74n[	        U40 UD6" U5      n[
        R                  " SS[
        R                  S9nS Hf  n[
        R                  " U5      R                  [
        R                  5      n	U	R                  S:X  d   eU R                  U" Xi5      U" Xi5      5        Mh     g )Nr   rn   ro   rp   rq   r   r{   ry   r   ru   r   r   rv      )r   r{   r1   )rI   r   r   r   r   r   r   r   r   r   int16arrayastypendim)
r   r   r   r   r   r   r   	indextyper$   idxs
             r   test_1d_integer_indexing$TestGetItem.test_1d_integer_indexing  s&   ,KKQ4	U[[)F$e$V,IIb%1uQ{31uQ{32a5 KKQ4	U[[)F$e$V,IIb%cc*01011uQ{31uQ{32a5 KKQ4	KKQ4	'F$e$V,IIa288,A((1+$$RXX.C88q= =VA^U1]; r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_1d_integer_indexing_npm(TestGetItem.test_1d_integer_indexing_npm      %%G%4r   c                    [         n[        R                  " [        R                  SS5      nU[        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9R                  SS5      nU R                  U" US5      U" US5      5        U R                  U" US5      U" US5      5        U R                  U" US	5      U" US	5      5        [        R                  " [        R                  SS
5      nU[        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9R                  SS5      S S S2   nU R                  U" US5      U" US5      5        g )Nru   rn   r   rp   rq   ro   r   r{   ry   r   r   r   r   )	rI   r   r   r   r   r   r   r   r   r   s          r   test_integer_indexing_1d_for_2d+TestGetItem.test_integer_indexing_1d_for_2d  s*   ,KKQ4	U[[)F$e$V,IIc&..r26q!eAqk:q!eAqk:q"uQ|<KKQ4	U[[)F$e$V,IIb%--a3CaC8q!eAqk:r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   #test_integer_indexing_1d_for_2d_npm/TestGetItem.test_integer_indexing_1d_for_2d_npm%  s    ,,7,;r   c           	      R   [         R                  " SSS9R                  SS5      n[        R                  " [        R
                  SS5      nU[        R
                  [        R
                  4n[        U40 UD6" U5      nU R                  U" USS5      U" USS5      5        U R                  U" US	S	5      U" US	S	5      5        U R                  U" US
S5      U" US
S5      5        [         R                  " SSS9R                  SS5      S S S2S S S24   nU R                  UR                  S   5        U R                  UR                  S   5        [        R                  " [        R
                  SS5      nU[        R
                  [        R
                  4n[        U40 UD6" U5      nU R                  U" USS5      U" USS5      5        U R                  U" USS5      U" USS5      5        U R                  U" US
S5      U" US
S5      5        [         R                  " SSS9R                  SS5      n[        R                  " [        R
                  SS5      n[        R                  " [        R
                  SS5      nXGU4n[        U40 UD6" U5      nS H  u  p[         R                  " U5      R                  [         R
                  5      n[         R                  " U	5      R                  [         R
                  5      n	U R                  U" X8U	5      U" X8U	5      5        M     g )Nr   rp   rq   ro   ru   rn   r   rv   r{   r1   ry   r   r   r   r   ))r   rv   )r   r{   )r1   ry   )r   r   r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r  r$   rT   s
             r   test_2d_integer_indexing$TestGetItem.test_2d_integer_indexing(  s    IIc&..r26KKQ4	U[[%++6F$e$V,1a%1a.91a%1a.92r*E!R,<= IIc&..r26ssCaCx@0101KKQ4	U[[%++6F$e$V,1a%1a.91a%1a.92r*E!R,<= IIc&..r26KKQ4	KKQ4		2F$e$V,.DA""288,A""288,AVA!_eA!n= /r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_2d_integer_indexing_npm(TestGetItem.test_2d_integer_indexing_npmM  r	  r   c                 Z    U R                  [        S9  U R                  [        [        S9  g )N)r   )r   r   )r  rP   r   r   s    r   test_2d_integer_indexing2%TestGetItem.test_2d_integer_indexing2P  s-    %%-I%J%%G-I 	& 	Kr   c                 H  ^ [         S 5       m[         U4S j5       n[        R                  " S5      R                  SS5      nU R	                  U" USS5      US   S   5        U R	                  U" USS5      US   S   5        U R	                  U" USS5      US   S   5        g )	Nc                 
    X   $ r   r   )Xi0s     r   index1=TestGetItem.test_2d_integer_indexing_via_call.<locals>.index1V  s	    5Lr   c                    > T" X   U5      $ r   r   )r  r  rL   r  s      r   rB   =TestGetItem.test_2d_integer_indexing_via_call.<locals>.index2Y  s    !%$$r   ro   ru   r   r   r   ry   )r   r   r   r   r   )r   rB   r   r  s      @r   !test_2d_integer_indexing_via_call-TestGetItem.test_2d_integer_indexing_via_callU  s    		 
			% 
	%IIbM!!!Q'1a!A$q'21a!A$q'22r*AbE"I6r   c                    [         R                  " SSS9R                  SS5      n[        n[        R
                  " [        R                  SS5      nU[        R                  [        R                  4n[        U40 UD6" U5      nU R                  U" USS5      U" USS5      5        U R                  U" USS5      U" USS5      5        U R                  U" US	S	5      U" US	S	5      5        g )
Nr   rp   rq   ro   ru   rn   r   r{   ry   )
r   r   r   rN   r   r   r   float32r   r   )r   r   r   r   r   r   r   s          r   test_2d_float_indexing"TestGetItem.test_2d_float_indexinga  s    IIc&..r26,KKQ4	U]]EKK8F$e$V,1a%1a.91a%1a.92r*E!R,<=r   c                 2  ^ ^^ [         mUUU 4S jn[        R                  " SSS9R                  S5      n[        R
                  " [        R                  SS5      nU" X45        [        R                  " SSS9R                  S5      R                  n[        R
                  " [        R                  SS	5      nU" X45        [        R                  " SSS9R                  S5      S S S2   n[        R
                  " [        R                  SS
5      nU" X45        g )Nc                 .  > U[         R                  4n[        U40 TD6" T5      nTR                  T" U S5      U" U S5      5        U R                  S   S-
  nTR                  T" X5      U" X5      5        TR                  T" U S5      U" U S5      5        g )Nr   r   ry   )r   r   r   r   r!   )arrr   r   r   nr   r   r   s        r   check3TestGetItem.test_partial_1d_indexing.<locals>.checko  s    -F(%(0EVC^U3];		!q AVC^U3];VC_eCn=r      rp   rq   )r   rv   ru   rn   )rv   r   Fr   )rG   r   r   r   r   r   r   T)r   r   r+  r   r   r   s   ``   @r   test_partial_1d_indexing$TestGetItem.test_partial_1d_indexingl  s    #	> IIb%--f5KKQ4	aIIb%--f577KKQ4	aIIb%--f5cc:KKQ4	ar   c                    ^^^ UU4S jmUU4S jnU" [         R                  " SSS9R                  SS5      5        U" [         R                  " SSS9R                  SSS5      5        g )	Nc                 |   > [        U 5      [        R                  [        R                  4n[        U40 TD6" T5      $ r   )r   r   r   r   )r)  r   r   r   s     r   compile_func0TestGetItem.check_ellipsis.<locals>.compile_func  s0    Sk5::uzz:Fv''//r   c           	         > SnT" U 5      n[         R                  " X5       H<  u  p4U" XU5      n[        R                  R	                  T" XU5      U" XU5      5        M>     g )N)r   r   ru   ry   r1   )r   r   r   testingassert_equal)r   boundsr   r$   rT   xr4  r   s         r   run'TestGetItem.check_ellipsis.<locals>.run  sS    &F OE!))&9!N

''qQqQH :r      rp   rq   r      rv   )r   r   r   )r   r   r   r;  r4  s    `` @r   check_ellipsisTestGetItem.check_ellipsis  sR    	0	I 	BIIb%--a34BIIb%--aA67r   c                 0    U R                  [        U5        g r   )r?  rU   r   r   s     r   test_ellipsis1TestGetItem.test_ellipsis1      -u5r   c                 *    U R                  [        S9  g r   )rC  r   r   s    r   test_ellipsis1_npmTestGetItem.test_ellipsis1_npm      '*r   c                 0    U R                  [        U5        g r   )r?  rW   rB  s     r   test_ellipsis2TestGetItem.test_ellipsis2  rE  r   c                 *    U R                  [        S9  g r   )rK  r   r   s    r   test_ellipsis2_npmTestGetItem.test_ellipsis2_npm  rI  r   c                 0    U R                  [        U5        g r   )r?  rY   rB  s     r   test_ellipsis3TestGetItem.test_ellipsis3  rE  r   c                 *    U R                  [        S9  g r   )rQ  r   r   s    r   test_ellipsis3_npmTestGetItem.test_ellipsis3_npm  rI  r   c                     [         S 5       nUR                  nSnSn[        R                  " X4-  5      R	                  X45      nU" U5      nU" U5      n[        R
                  R                  Xg5        g )Nc                     [         R                  " U 5      nSn[         R                  " U SU4   5       H  u  p4XAU   U'   M     U$ )Nr   .)r   
zeros_likendenumerate)r)  outr$   r>   vals        r   udt0TestGetItem.test_ellipsis_issue1498.<locals>.udt  sD    --$CA nnSa[9
 #E
1 : Jr   r   )r   py_funcr   r   r   r7  r8  )r   r\  r^  	outersize	innersizer)  gotr   s           r   test_ellipsis_issue1498#TestGetItem.test_ellipsis_issue1498  sk     
	 
	 ++		ii	-.66yL#h3<


.r   c                     [         S 5       n[        R                  " S5      nU" U5      nUR                  U5      n[        R                  R                  X45        g )Nc                     U S   $ )N).r   r   )r)  s    r   r\  0TestGetItem.test_ellipsis_issue1499.<locals>.udt  s    v;r   rv   )r   r   r   r^  r7  r8  )r   r\  r)  ra  r   s        r   test_ellipsis_issue1499#TestGetItem.test_ellipsis_issue1499  sN     
	 
	 iil#h;;s#


.r   c                    [         n[        R                  " [        R                  SS5      nU4n[	        U40 UD6" U5      n[
        R                  " SSS9R                  SS5      nU R                  U" U5      U" U5      5        g )Nru   rn   r   rp   rq   ro   )	r\   r   r   r   r   r   r   r   r   r   s          r   test_none_indexTestGetItem.test_none_index  sm    #KKQ4	F$e$V,IIc&..r26q	584r   c                 ~    U R                  5          U R                  [        S9  S S S 5        g ! , (       d  f       g = fr   )assertTypingErrorrj  r   r   s    r   test_none_index_npmTestGetItem.test_none_index_npm  s+    ##%  w / &%%s   .
<c                 
   [         n[        R                  " [        R                  SS5      nU4n[	        U40 UD6" U5      n[
        R                  " SSS9R                  S5      nU R                  U" U5      U" U5      5        g )Nr   rn   r   rp   rq   r   )	r^   r   r   r   r   r   r   r   r   r   s          r   test_empty_tuple_indexing%TestGetItem.test_empty_tuple_indexing  sk    $KKQ4	F$e$V,IIat$,,R0q	584r   c                 *    U R                  [        S9  g r   )rq  r   r   s    r   test_empty_tuple_indexing_npm)TestGetItem.test_empty_tuple_indexing_npm      &&W&5r   r   N):__name__
__module____qualname____firstlineno____doc__enable_pyobj_flagsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  rN   r  r  r  r!  r%  r0  r?  rC  rG  rK  rN  rQ  rT  rb  rg  rj  rn  rq  rt  __static_attributes__r   r   r   rk   rk      s   
 %7 B&, &8 ">H- &8 ><- &8 .&-<, &8 6- &8 6- &8 6- &8 6- %7 A, &8 '>R- &8 #>J- %7 >:, &8 >:- .@ "<H5 5G ;&< .@(C#>J5K

7 ,> 	> .@ .8 $6 6+ $6 6+ $6 6+/*
/ %7 50 /A 56r   rk   c                       \ rS rSrSr\4S jr\4S jrS r\4S jr	\4S jr
\4S jr\4S	 jrS
 rS rS rS rS r\4S jr\4S jrS rS rS rS rS rS rS rSrg)TestSetItemi  z_
Test basic indexed store into an array.
Note fancy indexing is tested in test_fancy_indexing.
c                     SSK Jn  S nU" S0 UD6" U5      n[        R                  " SSS9nUR	                  5       nU" U5        U" U5        U R                  XV5        g)	z8this used to work, and was used in one of the tutorials r   )r   c                 p    [        [        U 5      5       H  nU[        R                  " S5      -  X'   M      g )Nr   )r    lendecimalDecimal)r   r>   s     r   r   3TestSetItem.test_conversion_setitem.<locals>.pyfunc  s*    s5z*$ws';; +r   r   rL   rq   N)zvoid(i8[:]))numbar   r   r   copyr   )r   r   r   r   r   r\  controls          r   test_conversion_setitem#TestSetItem.test_conversion_setitem  sU    	< +U+F3ii4(((*wc
-r   c                 >  ^ [         n[        R                  " [        R                  SS5      n[        R                  " [        R                  SS5      nX4[        R                  [        R                  [        R                  4n[        U40 UD6" U5      nSn[        R                  " USS9S-   mSS	US	-
  XwS-   US
-   SU* S	-   U* U* S-
  U* S
-
  /nU4S jn	[        R                  " X5       HP  u  pS HE  nXU4n[        U6 nU" U	" 5       TU   /UQ76 nU" U	" 5       TU   /UQ76 nU R                  UU5        MG     MR     U R                  [        5         U" [        R                  " T[        R                  S9TSSS5        SSS5        g! , (       d  f       g= f)z
1d to 1d slice assignment
r   rn   r   ro   rM   rq   (   r   ru   rv   r1   c                  .   > [         R                  " T SS9$ )Nrp   rq   )r   rX  )r   s   r   	make_dest2TestSetItem.test_1d_slicing_set.<locals>.make_dest  s    ==D11r   r   ru   ry   r1   N)re   r   r   r   r   r   r   r   r   r   slicer   assertRaises
ValueErrorrX  )r   r   r   	dest_typesrc_typer   r   Nr9  r  r   r   r   r   r>   pyleftcleftr   s                    @r   test_1d_slicing_setTestSetItem.test_1d_slicing_set  so    ( KKQ4	;;u{{As3u{{EKKMF$e$V,ii&+QAqa%Qqb1fqb1"q&1"q&2	2$,,V<KE&D(t	SZ?$?ik3u:==''6 ' = z*"--2884c1aC +**s   .F
Fc                 l   [         n[        R                  " [        R                  SS5      nXR[        R                  [        R                  [        R                  4n[	        U40 UD6" U5      R
                  U   R                  nSn[        U5      n	[        R                  " U[        R                  S9n
USU* U	-   S-   S4nU" U
R                  5       /UQ76 nU" U
R                  5       /UQ76 nU R                  X5        USU* U	-   S4nU R                  [        5       nU" U
R                  5       /UQ76   SSS5        UR                  SS5      (       aL  [        U
[        SU* U	-   S5         5      nSU	 S	U S
3nU R!                  U[#        WR$                  5      5        gg! , (       d  f       Nr= f)z)
Generic sequence to 1d slice assignment
r   rn   ro   rq   Nr   Fzcannot assign slice of shape (z,) from input of shape (z,))re   r   r   r   r   	overloadsentry_pointr  r   r   r  r   r  r  getr  assertInstr	exception)r   r   seqtyseqr   r  r   r   r  kr   r   r   ra  raises
slice_sizer   s                    r   check_1d_slicing_set_sequence)TestSetItem.check_1d_slicing_set_sequence  s    (KKQ4	EKKekkJ F$e$V,66v>JJHii*QQ
A&#((*,t,CHHJ&&.QQ"z*f#((*$t$ + 99Z''Sq1"q&!!456J3A3 7!l"&CMM#s6#3#345 ( +*s   !F%%
F3c                 p    U R                  U[        R                  " [        R                  S5      S5        g)z
Tuple to 1d slice assignment
ru   )r   N)r  r   UniTupler   rB  s     r   test_1d_slicing_set_tuple%TestSetItem.test_1d_slicing_set_tuple3  s(     	**5>>%++q18	=r   c                 r    U R                  U[        R                  " [        R                  5      SS/5        g)z
List to 1d slice assignment
r   r  N)r  r   Listr   rB  s     r   test_1d_slicing_set_list$TestSetItem.test_1d_slicing_set_list:  s*     	**5::ekk*QH	6r   c                 J   [         n[        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  [        R                  4n[        U40 UD6" U5      nSn[        R                  " USS9nSnSSUS-
  XfS-   US	-   S
U* S-   U* U* S-
  U* S	-
  /n	[        R                  " X5       HQ  u  pS HF  nXX4nU" UR                  5       /UQ76 nU" UR                  5       /UQ76 nU R                  X5        MH     MS     g)z
scalar to 1d slice assignment
r   rn   ro   rp   rq   *   r   ru   rv   r1   r  N)re   r   r   r   r   r   r   r   r   r   r  r   )r   r   r   r   r   r   r  r   r[  r9  r   r   r   r   r  r  s                   r   test_1d_slicing_broadcast%TestSetItem.test_1d_slicing_broadcastA  s    (KKQ4	 U[[%++u{{EKKPF$e$V,ii&QAqa%Qqb1fqb1"q&1"q&2$,,V<KE&4-
2T2chhj040''6	 ' =r   c                    [         n[        R                  " [        R                  SS5      nX3[        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9nS Hb  nU" [
        R                  " U5      U[        U6    /UQ76 nU" [
        R                  " U5      U[        U6    /UQ76 n	U R                  X5        Md     g )Nr   rn   ro   rp   rq   )r   )ru   r   )
rg   r   r   r   r   r   r   rX  r  r   )
r   r   r   r   r   r   r   testr  r  s
             r   test_1d_slicing_addTestSetItem.test_1d_slicing_addX  s    'KKQ4	U[[AF$e$V,ii$'%DBMM#.E4L0AIDIF"--,c%,.?G$GE##F2 &r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_1d_slicing_set_npm#TestSetItem.test_1d_slicing_set_npmd        w /r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_1d_slicing_set_list_npm(TestSetItem.test_1d_slicing_set_list_npmg  r	  r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_1d_slicing_set_tuple_npm)TestSetItem.test_1d_slicing_set_tuple_npmj  rv  r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_1d_slicing_broadcast_npm)TestSetItem.test_1d_slicing_broadcast_npmm  rv  r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_1d_slicing_add_npm#TestSetItem.test_1d_slicing_add_npmp  r  r   c                    [         n[        R                  " [        R                  SS5      nX3[        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4n[	        U40 UD6" U5      n[
        R                  " SSS9R                  SS5      n/ SQnU H~  nU" [
        R                  " U5      U[        USS	 6 [        US	S
 6 4   /UQ76 n	U" [
        R                  " U5      U[        USS	 6 [        US	S
 6 4   /UQ76 n
U R                  X5        M     g)z
2d to 2d slice assignment
ru   r   r   rp   rq   ro   )r   ro   r   r   ro   r   )ru   rv   r   ru   rv   r   )ro   r   r   ro   r   r   )r   ro   ry   r   ro   ry   )r   ro   ru   r   ro   ru   r   rv      N)ri   r   r   r   r   r   r   r   rX  r  r   )r   r   r   r   r   r   r   testsr  r  r  s              r   test_2d_slicing_setTestSetItem.test_2d_slicing_sets  s    (KKQ4	U[[%++++u{{EKK9F$e$V,iiT*222b9
 DBMM#.E4!94EudSTUViGX4X0Ya\`aF"--,c%a2CUDQRSTIEV2V.W_Z^_E##E2 r   c                 B   [         n[        R                  " [        R                  SS5      nU[        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4n[        U40 UD6" U5      n[        R                  " SSS9R                  SS5      nSn/ SQnU HD  n	U" UR                  5       U/U	Q76 n
U" UR                  5       U/U	Q76 nU R                  X5        MF     g	)
z
scalar to 2d slice assignment
ru   rn   r   rp   rq   ro   r  r  N)ri   r   r   r   r   r   r   r   r   r  r   )r   r   r   r   r   r   r   r[  r  r  r  r  s               r   test_2d_slicing_broadcast%TestSetItem.test_2d_slicing_broadcast  s     (KKQ4	 U[[%++u{{EKK++u{{EKK9F$e$V,iiT*222b9
 DCHHJ3d3F#((*c1D1E##E2 r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_2d_slicing_set_npm#TestSetItem.test_2d_slicing_set_npm  r  r   c                 *    U R                  [        S9  g r   )r  r   r   s    r   test_2d_slicing_broadcast_npm)TestSetItem.test_2d_slicing_broadcast_npm  rv  r   c                    [         R                  " S5      n[        USS5        U R                  UR	                  5       / SQ5        [        U[         R
                  " S5      R                  [         R                  5      S5        U R                  UR	                  5       / SQ5        [         R                  " S5      R                  SS5      n[        USS5        U R                  UR	                  5       / S	Q/ S
Q/ SQ/5        g)z
scalar indexed assignment
r   r   r  )r   r  ru   rv   r   rv   r   )r   r  ru   r   r   r{   )r   r   ru   )r  r  r  )r     r   N)	r   r   ra   r   tolistr   r   uint16r   )r   r)  s     r   test_setitemTestSetItem.test_setitem  s     iilQ#'78RXXa[//		:A>'78iil""1a(Q#	<'KLr   c           	      Z   [         R                  " S5      n[        US5        U R                  UR	                  5       S/S-  5        [         R                  " S5      R                  SS5      n[        U[         R                  " SS5      5        U R                  UR	                  5       / SQ/ SQ/5        [         R                  " S5      R                  SS5      n[        U[         R                  " SS5      R                  SS5      5        U R                  UR	                  5       / SQ/ SQ/5        [         R                  " S	5      R                  SSSS5      n[        U[         R                  " SS5      R                  SS5      5        / SQ/ SQ/nU R                  UR	                  5       U//S-  5        [         R                  " S5      n[        U[         R                  " SS5      R                  SS5      5        U R                  UR	                  5       / S
Q5        [         R                  " S5      R                  SS5      n[        U[         R                  " SSUR                  -   5      R                  SSSS5      5        U R                  UR	                  5       / SQ/ SQ/5        g)z
broadcasted array assignment
r   r  r  ru   rv   r   r   )r   ru   rv   r-  )r   ru   rv   r   r   )r   r   r  N)r   r   rc   r   r  r   size)r   dstinner2s      r   test_setitem_broadcast"TestSetItem.test_setitem_broadcast  s   
 iil!#r*tax0iil""1a(!#ryyA7	9'=>iil""1a(!#ryyA'>'>q!'DE	9'=>iim##Aq!Q/!#ryyA'>'>q!'DEY'zA~6iil!#ryyA'>'>q!'DE7iil""1a(!#ryyAL'A'I'I!QPQST'UV	9'=>r   c                    [         R                  " S5      n[         R                  " S5      R                  SS5      nU R                  [        5       n[        X5        S S S 5        [        WR                  5      nU R                  SU5        [         R                  " S5      R                  SS5      n[         R                  " S5      R                  SSS5      nU R                  [        5       n[        X5        S S S 5        [        UR                  5      nU R                  SU5        [         R                  " S5      R                  SS5      n[         R                  " S5      nU R                  [        5       n[        X5        S S S 5        [        UR                  5      nU R                  SU5        g ! , (       d  f       GN`= f! , (       d  f       N= f! , (       d  f       NY= f)	Nr   ro   ru   z,cannot broadcast source array for assignmentr   z>cannot assign slice of shape (2, 5) from input of shape (1, 5)r   z>cannot assign slice of shape (2, 4) from input of shape (2, 5))	r   r   r   r  r  rc   r  r  r   )r   r  srcr  errmsgs        r   test_setitem_broadcast_error(TestSetItem.test_setitem_broadcast_error  sn    iiliim##Aq)z*f%c/ +V%%&G	! iil""1a(iim##Aq!,z*f%c/ +V%%& )	!
 iim##Aq)iilz*f%c/ +V%%& (	 + +* +* +*s$   F7/G	;G7
G	
G
G(c                    [         R                  " S5      R                  SS5      n[         R                  " SS5      n[        XSSS5        U R	                  UR                  5       SS/SS/SS//5        [         R                  " S5      R                  SS5      n[         R                  " SS5      n[        XSS S5        U R	                  UR                  5       SS/SS/SS//5        [         R                  " S5      R                  SS5      n[         R                  " SS5      R                  SS5      n[        XS SS5        U R	                  UR                  5       SS/SS/SS//5        g )Nr  rv   ru   r   r   r   r   )r   r   r   re   r   r  )r   r  r  s      r   test_slicing_1d_broadcast%TestSetItem.test_slicing_1d_broadcast  s/   iil""1a(ii1osAq1AAA'?@iil""1a(ii1osD!4AAA'?@iil""1a(ii1o%%a+sq!4AAA'?@r   c                 4   [         R                  " S5      nSUR                  l        U R	                  [
        [        R                  45       n[        USS5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr   Fr   r  z%Cannot modify readonly array of type:)r   r   r   	writeabler  	TypeErrorr   TypingErrorra   r  r  r  )r   r)  r  s      r   test_setitem_readonly!TestSetItem.test_setitem_readonly  so    iil#			6+=+=>?6CB' @=&**+	- @?s   B		
Br   N)rw  rx  ry  rz  r{  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r}  r   r   r   r  r    s    
 -? .  ); D<6> /A = .@ 6 /A 7. ); 
305660 ); 3. /A 3406M?< <A"-r   r  c                       \ rS rSrSrS rSrg)
TestTypingi  z+
Check typing of basic indexing operations
c                    [         R                  n[        R                  " [        R                  SS5      n[        R                  " [        R                  SS5      n[        R                  " [        R                  SS5      nS[
        4SS4[        4SS4[        4SS4[        [        4SS4[        [        4SS4[        [        4SS4[        [        4SS4[        4SS4[
        [        4SS4[
        [        4SS4[
        [        [        4SS4[
        [        [        4SS4[
        [        [        4SS4[
        [        4SS4[
        [        [        4SS4[        [
        [        4SS4[        [
        [        4SS4[        [        [        4SS4[        [
        [        [        4SS4[        [        [        4SS4[        [        [
        [        4SS4[        [        [        4SS4[        [        [        4SS4[        [        [        4SS4/nU H  u  pgn[        R                  " U5      n	U" X)5      n
U R                  [        U
R                  5      U5        U R                  U
R                  R                  U(       a  SOSU5        U R                  U
R                   5        M     U H  u  phn[        R                  " U5      n	U" X95      n
U R                  [        U
R                  5      U5        U R                  U
R                  R                  U(       a  SOSU5        U R                  U
R                   5        M     U H  u  n  n[        R                  " U5      n	U" XI5      n
U R                  [        U
R                  5      U5        U R                  U
R                  R                  S5        U R                  U
R                   5        M     g)	zK
Check an appropriate layout is inferred for the result of array
indexing.
rv   rn   r.  r   )r   TTTFN)r   get_array_index_typer   r   float64r   r   r   r   Tupler   tupler>   resultlayoutr   advanced)r   funcctyftyatyr   index_tuplekeep_c_r>   rkeep_fs               r   test_layoutTestTyping.test_layout  s4    --kk%--C0kk%--C0kk%--C0 [$% WdE"^T5)K $.4 %/;'6K %/^UE* t,%ud3k+UE:T+UD9[2E5A%ue4T+UE: Hd$eU38[2E5AD+'u5HdK14?4'54415$?K'64'6D+'6G$L '."KKK,ES AU177^[9QXX__Vc(*QZZ( '. '."KFKK,ES AU177^[9QXX__Vc(*QZZ( '. ")KAKK,ES AU177^[9QXX__c2QZZ( ")r   r   N)rw  rx  ry  rz  r{  r  r}  r   r   r   r  r    s    G)r   r  __main__)8r  r   numpyr   unittestr  r   r   r   
numba.corer   r   r   numba.tests.supportr	   r
   numba.core.typingr   numba.core.typesr   r   r   r   r|  r   r   r%   r'   r)   r,   r.   r2   r4   r<   r?   rC   rE   rG   rI   rN   rP   rU   rW   rY   r\   r^   ra   rc   re   rg   ri   rk   r  r  rw  mainr   r   r   <module>r     s%       # # + + - ' E E !$' t
5(    
D	6( D	6Nl-( l-^	L) L)^ zMMO r   