
    J/Phv                        d dl Z d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
mZmZ d dlmZmZ d dlmZ d dlmZmZmZmZ ddiZd	diZd
 Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-ed             Z.ed              Z/d! Z0d" Z1d# Z2 G d$ d%e          Z3 G d& d'e          Z4 G d( d)e          Z5e6d*k    r ej7                     dS dS )+    N)jitnjittypeof)utilstypeserrors)TestCasetag)	arraydecl)intpellipsisslice2_typeslice3_typeforceobjTnopythonc                     | |||         S N )astartstopsteps       Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_indexing.pyslicing_1d_usecaser      s    U4_    c                 |    | |||         }d}t          |j        d                   D ]}|||         |dz   z  z  }|S Nr      rangeshape)r   r   r   r   btotalis          r   slicing_1d_usecase2r%      sQ    	%T/AE171:    1QLr   c                 z    | ||         }d}t          |j        d                   D ]}|||         |dz   z  z  }|S r   r   )r   r   r   r"   r#   r$   s         r   slicing_1d_usecase3r'      sN    	%*AE171:    1QLr   c                 z    | d d          }d}t          |j        d                   D ]}|||         |dz   z  z  }|S r   r   )r   r"   r#   r$   s       r   slicing_1d_usecase4r)   $   sN    	!!!AE171:    1QLr   c                 z    | |d          }d}t          |j        d                   D ]}|||         |dz   z  z  }|S r   r   r   r   r"   r#   r$   s        r   slicing_1d_usecase5r,   +   sN    	%&&	AE171:    1QLr   c                 z    | d |         }d}t          |j        d                   D ]}|||         |dz   z  z  }|S r   r   )r   r   r"   r#   r$   s        r   slicing_1d_usecase6r.   2   sN    	%4%AE171:    1QLr   c                 |    | |d d         }d}t          |j        d                   D ]}|||         |dz   z  z  }|S Nr   r   r   r+   s        r   slicing_1d_usecase7r2   9   sP    	%))AE171:    1QLr   c                 |    | d d d         }d}t          |j        d                   D ]}|||         |dz   z  z  }|S r0   r   r+   s        r   slicing_1d_usecase8r4   A   sP    	$$B$AE171:    1QLr   c                 "    | ||||||f         S r   r   )r   start1stop1step1start2stop2step2s          r   slicing_2d_usecaser<   J   s     VE%e!3344r   c                     | ||||f         S r   r   )r   r6   r7   r8   indexs        r   slicing_2d_usecase3r?   N   s    VE%&''r   c                     | ||d |f         }d}t          |j        d                   D ]}|||         |dz   z  z  }|S r   r   )r   index0r6   index2r"   r#   r$   s          r   slicing_3d_usecaserC   R   sV    	&&''6
!"AE171:    1QLr   c                     | |d ||f         }d}t          |j        d                   D ]}|||         |dz   z  z  }|S r   r   )r   rA   r7   rB   r"   r#   r$   s          r   slicing_3d_usecase2rE   Y   sV    	&&5&&
 !AE171:    1QLr   c                 v    | |         }d}t          |j        d                   D ]}|||         |dz   z  z  }|S r   r   )r   r>   r"   r#   r$   s        r   partial_1d_usecaserG   `   sJ    	%AE171:    1QLr   c                     | |         S r   r   )r   r$   s     r   integer_indexing_1d_usecaserI   g   s    Q4Kr   c                     | ||f         S r   r   r   i1i2s      r   integer_indexing_2d_usecaserN   j   s    RU8Or   c                     | |         |         S r   r   rK   s      r   integer_indexing_2d_usecase2rP   m   s    R59r   c                     | ||df         S N.r   r   r$   js      r   ellipsis_usecase1rU   p   s    QqS#X;r   c                     | d||f         S rR   r   rS   s      r   ellipsis_usecase2rW   s   s    S!A#X;r   c                     | |d|f         S rR   r   rS   s      r   ellipsis_usecase3rY   v   s    QQY<r   c                     | d          S r   r   r   s    r   none_index_usecaser\   y   s    T7Nr   c                     | d         S )Nr   r   r[   s    r   empty_tuple_usecaser^   |   s    R5Lr   c                     || |<   d S r   r   )r   r>   values      r   setitem_usecasera      s    AeHHHr   c                     || d d <   d S r   r   )r   r`   s     r   setitem_broadcast_usecaserc      s    AaaaDDDr   c                     || |||<   | S r   r   )r   r"   r   r   r   s        r   slicing_1d_usecase_setre      s    AeDoHr   c                 *    | ||xx         |z  cc<   | S r   r   )r   r"   r   r   s       r   slicing_1d_usecase_addrg      s#     eDjMMMQMMMHr   c                      || ||||||f<   | S r   r   )r   r"   r   r   r   r9   r:   r;   s           r   slicing_2d_usecase_setri      s#    ,-AeDofU5(()Hr   c                      e Zd ZdZefdZd ZefdZd ZefdZ	d Z
efdZd	 Zd
 ZefdZd ZefdZd ZefdZd ZefdZd ZefdZd ZefdZd ZefdZd ZefdZd ZefdZd ZefdZ d Z!efdZ"d  Z#ee$fd!Z%d" Z&d# Z'd$ Z(efd%Z)efd&Z*d' Z+efd(Z,d) Z-efd*Z.d+ Z/efd,Z0d- Z1d. Z2d/ Z3efd0Z4d1 Z5efd2Z6d3 Z7d4S )5TestGetItemz
    Test basic indexed load from an array (returning a view or a scalar).
    Note fancy indexing is tested in test_fancy_indexing.
    c                 J   t           }t          j        t          j        dd          }|t          j        t          j        t          j        f} t	          |fi ||          }t          j        dd          }dD ](} ||g|R  }|                      ||g|R  |           )d S )Nr   C
   i4dtype)r   rn   r         r   rn   r   r   r   rn   r   rn   rt   )	   r   rx   r1   r   r   rx   r   )r   r   Arrayint32r   nparangeassertPreciseEqual)	selfflagspyfunc	arraytypeargtyscfuncr   indicesexpecteds	            r   test_1d_slicingzTestGetItem.test_1d_slicing   s    #KQ44	U[%+u{C$F$$e$$V,,Ib%%% 
	B 
	BG va*'***H##EE!$6g$6$6$6AAAA
	B 
	Br   c                 <    |                      t                     d S N)r   )r   Noflagsr   s    r   test_1d_slicing_npmzTestGetItem.test_1d_slicing_npm       7+++++r   c                    t           }t          j        t          j        dd          }|t          j        t          j        t          j        f} t	          |fi ||          }t          j        dd          }g d}|D ]&}|                      ||g|R   ||g|R             't          j        t          j        dd          }|t          j        t          j        t          j        f} t	          |fi ||          }t          j        dd          d d d	         }|                     |j	        d
                    |                     |j	        d                    g d}|D ]&}|                      ||g|R   ||g|R             'd S )Nr   rm   rn   ro   rp   rr   rs   rv   rw   ry   A   rt   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_slicing2zTestGetItem.test_1d_slicing2   s   $KQ44	U[%+u{C$F$$e$$V,,Ib%%%    	> 	>CVVA____eeAnnnn==== KQ44	U[%+u{C$F$$e$$V,,Ib%%%ccc*01110111    	> 	>CVVA____eeAnnnn====	> 	>r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_1d_slicing2_npmz TestGetItem.test_1d_slicing2_npm       G,,,,,r   c                    t           }t          j        t          j        dd          }|t          j        t          j        f} t	          |fi ||          }t          j        dd          }g d}|D ]&}|                      ||g|R   ||g|R             't          j        t          j        dd          }|t          j        t          j        f} t	          |fi ||          }t          j        dd          d d d	         }|                     |j	        d
                    |                     |j	        d                    |D ]&}|                      ||g|R   ||g|R             'd S )Nr   rm   rn   ro   rp   ))ru   rn   )rt   ru   )rn   r   r   rn   )   rn   r   r   rt   r   r   )
r'   r   r~   r   r   r   r   r   r   r   r   s	            r   test_1d_slicing3zTestGetItem.test_1d_slicing3   s   $KQ44	U[%+6$F$$e$$V,,Ib%%%    	> 	>CVVA____eeAnnnn==== KQ44	U[%+6$F$$e$$V,,Ib%%%ccc*01110111 	> 	>CVVA____eeAnnnn====	> 	>r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_1d_slicing3_npmz TestGetItem.test_1d_slicing3_npm   r   r   c                    t           }t          j        t          j        dd          }|f} t	          |fi ||          }t          j        dd          }|                      ||           ||                     t          j        t          j        dd          }|f} t	          |fi ||          }t          j        dd          d d d         }|                     |j	        d	                    |                     |j	        d
                    |                      ||           ||                     d S )Nr   rm   rn   ro   rp   r   r   rt   r   r   )
r)   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s          r   test_1d_slicing4zTestGetItem.test_1d_slicing4   s:   $KQ44	$F$$e$$V,,Ib%%%EE!HH--- KQ44	$F$$e$$V,,Ib%%%ccc*01110111EE!HH-----r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_1d_slicing4_npmz TestGetItem.test_1d_slicing4_npm  r   r   c                    t          t          dd                    }t          j        t          j        dd          }|t          j        f} t          |fi ||          }t          j        dd          }|D ],}|                      |||           |||                     -t          j        t          j        dd          }|t          j        f} t          |fi ||          }t          j        dd          d d d	         }| 	                    |j
        d
                    | 	                    |j
        d                    |D ],}|                      |||           |||                     -d S )Nirn   r   rm   ro   rp   r   r   rt   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_argz%TestGetItem.check_1d_slicing_with_arg  s   E"bMM""KQ44	U[)$F$$e$$V,,Ib%%% 	< 	<CVVAs^^UU1c]];;;; KQ44	U[)$F$$e$$V,,Ib%%%ccc*01110111 	< 	<CVVAs^^UU1c]];;;;	< 	<r   c                 @    t           }|                     ||           d S r   )r,   r   r   r   r   s      r   test_1d_slicing5zTestGetItem.test_1d_slicing5)  #    $&&vu55555r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_1d_slicing5_npmz TestGetItem.test_1d_slicing5_npm-  r   r   c                 @    t           }|                     ||           d S r   )r.   r   r   s      r   test_1d_slicing6zTestGetItem.test_1d_slicing60  r   r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_1d_slicing6_npmz TestGetItem.test_1d_slicing6_npm4  r   r   c                 @    t           }|                     ||           d S r   )r2   r   r   s      r   test_1d_slicing7zTestGetItem.test_1d_slicing77  r   r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_1d_slicing7_npmz TestGetItem.test_1d_slicing7_npm;  r   r   c                 @    t           }|                     ||           d S r   )r4   r   r   s      r   test_1d_slicing8zTestGetItem.test_1d_slicing8>  r   r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_1d_slicing8_npmz TestGetItem.test_1d_slicing8_npmB  r   r   c                 x   t           }t          j        t          j        dd          }|t          j        t          j        t          j        f} t	          |fi ||          }t          j        dd                              dd          }dD ]+}|                      ||g|R   ||g|R  d|	           ,d
S )z
        arr_2d[a:b:c]
        rt   rm   d   ro   rp   rn   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_slicingzTestGetItem.test_2d_slicingE  s     $KQ44	U[%+u{C$F$$e$$V,,Ic&&&..r266. 	A 	AD##FF1$4t$4$4$4eeAooooo9=(? $ A A A A	A 	Ar   c                 <    |                      t                     d S r   )r   r   r   s    r   test_2d_slicing_npmzTestGetItem.test_2d_slicing_npmT  r   r   c                    t           }t          j        t          j        dd          }|t          j        t          j        t          j        t          j        t          j        t          j        f} t	          |fi ||          }t          j        dd                              dd          }g d}d t          j	        ||          D             }|D ](}	 ||g|	R  }
| 
                     ||g|	R  |
           )t          j        t          j        dd	          }|t          j        t          j        t          j        t          j        t          j        t          j        f} t	          |fi ||          }t          j        d
d                              dd          ddddddf         }|D ](}	 ||g|	R  }
| 
                     ||g|	R  |
           )dS )z&
        arr_2d[a:b:c, d:e:f]
        rt   rm   r   ro   rp   rn   )	rr   rs   rv   rw   ry   )rn   r   rx   )rz   r   r1   r{   r}   c                     g | ]
\  }}||z   S r   r   ).0tup1tup2s      r   
<listcomp>z0TestGetItem.test_2d_slicing2.<locals>.<listcomp>n  s6     I I I T4 t I I Ir   r     r   N)r<   r   r~   r   r   r   r   r   	itertoolsproductr   )r   r   r   r   r   r   r   r   r   r   r   s              r   test_2d_slicing2zTestGetItem.test_2d_slicing2W  s   
 $KQ44	U[%+u{+u{EK9$F$$e$$V,,Ic&&&..r266	 	 	I I$-$5gw$G$GI I I 	> 	>Cva#H##EE!NcNNNH==== KQ44	U[%+u{+u{EK9$F$$e$$V,,Ic&&&..r266sssCCaCx@ 	> 	>Cva#H##EE!NcNNNH====	> 	>r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_2d_slicing2_npmz TestGetItem.test_2d_slicing2_npm  r   r   c                     t           }t          j        t          j        dd          }|t          j        t          j        t          j        t          j        f} t	          |fi ||          }t          j        dd                              dd          }g d}|D ](} ||g|R  }	|                      ||g|R  |	           )t          j        t          j        dd          }|t          j        t          j        t          j        t          j        f} t	          |fi ||          }t          j        d	d                              d
d
          ddddddf         }|D ](} ||g|R  }	|                      ||g|R  |	           )dS )z"
        arr_2d[a:b:c, d]
        rt   rm   r   ro   rp   rn   ))r   rn   r   r   )rt   ru   r   r   )rn   r   rx      )rz   r   r1      )r   rn   rt   ru   )r   rx   ru   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_slicing3zTestGetItem.test_2d_slicing3  s   
 %KQ44	U[%+u{+$F$$e$$V,,Ic&&&..r266
 
 
  	> 	>Cva#H##EE!NcNNNH==== KQ44	U[%+u{+$F$$e$$V,,Ic&&&..r266sssCCaCx@ 	> 	>Cva#H##EE!NcNNNH====	> 	>r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_2d_slicing3_npmz TestGetItem.test_2d_slicing3_npm  r   r   c                    t           }t          j        t          j        dd          }|t          j        t          j        t          j        f} t	          |fi ||          }t          j        dd                              ddd          }g d}|D ]&}|                      ||g|R   ||g|R             't          j        t          j        dd          }|t          j        t          j        t          j        f} t	          |fi ||          }t          j        d	d          d d d
                             ddd          }|D ]&}|                      ||g|R   ||g|R             'd S Nru   rm   i  ro   rp   rn   ))r   rz   r   rs   )rz   r   r   )r   rz   rx   )r   rz   rt   r   i  rt   )	rC   r   r~   r   r   r   r   r   r   r   s	            r   test_3d_slicingzTestGetItem.test_3d_slicing  s   #KQ44	U[%+u{C$F$$e$$V,,Id$'''//B;;
 
 
  	> 	>CVVA____eeAnnnn==== KQ44	U[%+u{C$F$$e$$V,,Id$'''!,44RR@@ 	> 	>CVVA____eeAnnnn====	> 	>r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_3d_slicing_npmzTestGetItem.test_3d_slicing_npm  r   r   c                    t           }t          j        t          j        dd          }|t          j        t          j        t          j        f} t	          |fi ||          }t          j        dd                              ddd          }g d}|D ]&}|                      ||g|R   ||g|R             't          j        t          j        dd          }|t          j        t          j        t          j        f} t	          |fi ||          }t          j        d	d          d d d
                             ddd          }|D ]&}|                      ||g|R   ||g|R             'd S r   )	rE   r   r~   r   r   r   r   r   r   r   s	            r   test_3d_slicing2zTestGetItem.test_3d_slicing2  s   $KQ44	U[%+u{C$F$$e$$V,,Id$'''//B;;
 
 
  	> 	>CVVA____eeAnnnn==== KQ44	U[%+u{C$F$$e$$V,,Id$'''!,44RR@@ 	> 	>CVVA____eeAnnnn====	> 	>r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_3d_slicing2_npmz TestGetItem.test_3d_slicing2_npm  r   r   c                    t           }t          j        t          j        dd          }|t          j        f} t	          |fi ||          }t          j        dd          }|                      ||d           ||d                     |                      ||d           ||d                     |                      ||d           ||d                     t          j        t          j        dd	          }|t          j        f} t	          |fi ||          }t          j        dd          d d d
         }|                     |j	        d                    |                     |j	        d                    |                      ||d           ||d                     |                      ||d
           ||d
                     |                      ||d           ||d                     t          j        t          j        dd          }t          j        t          j
        dd          }||f} t	          |fi ||          }t          j        ddt
          j                  }dD ]j}t          j        |                              t
          j
                  }	|	j        dk    sJ |                      |||	           |||	                     kd S )Nr   rm   rn   ro   rp   r   rz   rx   r   rt   r   r   ru      )r   rz   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_indexingz$TestGetItem.test_1d_integer_indexing  s   ,KQ44	U[)$F$$e$$V,,Ib%%%1uuQ{{3331uuQ{{3332a555 KQ44	U[)$F$$e$$V,,Ib%%%ccc*011101111uuQ{{3331uuQ{{3332a555 KQ44	KQ44	Y'$F$$e$$V,,Ia28,,, 	< 	<A(1++$$RX..C8q====VVAs^^UU1c]];;;;	< 	<r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_1d_integer_indexing_npmz(TestGetItem.test_1d_integer_indexing_npm      %%G%44444r   c                 .   t           }t          j        t          j        dd          }|t          j        f} t	          |fi ||          }t          j        dd                              dd          }|                      ||d           ||d                     |                      ||d           ||d                     |                      ||d	           ||d	                     t          j        t          j        dd
          }|t          j        f} t	          |fi ||          }t          j        dd                              dd          d d d         }|                      ||d           ||d                     d S )Nrt   rm   r   ro   rp   rn   r   rz   rx   r   r   r   r   )	rI   r   r~   r   r   r   r   r   r   r   s          r   test_integer_indexing_1d_for_2dz+TestGetItem.test_integer_indexing_1d_for_2d  s   ,KQ44	U[)$F$$e$$V,,Ic&&&..r266q!eeAqkk:::q!eeAqkk:::q"uuQ||<<<KQ44	U[)$F$$e$$V,,Ib%%%--a33CCaC8q!eeAqkk:::::r   c                 <    |                      t                     d S r   )r   r   r   s    r   #test_integer_indexing_1d_for_2d_npmz/TestGetItem.test_integer_indexing_1d_for_2d_npm%  s    ,,7,;;;;;r   c           	         t          j        dd                              dd          }t          j        t          j        dd          }|t          j        t          j        f} t          |fi ||          }|                      ||dd           ||dd                     |                      ||d	d	           ||d	d	                     |                      ||d
d           ||d
d                     t          j        dd                              dd          d d dd d df         }|                     |j	        d                    |                     |j	        d                    t          j        t          j        dd          }|t          j        t          j        f} t          |fi ||          }|                      ||dd           ||dd                     |                      ||dd           ||dd                     |                      ||d
d           ||d
d                     t          j        dd                              dd          }t          j        t          j        dd          }t          j        t          j        dd          }|||f} t          |fi ||          }dD ]\  }}	t          j
        |                              t           j                  }t          j
        |	                              t           j                  }	|                      ||||	           ||||	                     d S )Nr   ro   rp   rn   rt   rm   r   ru   rz   r1   rx   r   r   r   r   ))r   ru   )r   rz   )r1   rx   )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_indexingz$TestGetItem.test_2d_integer_indexing(  s@    Ic&&&..r266KQ44	U[%+6$F$$e$$V,,1a%%1a..9991a%%1a..9992r**EE!R,<,<=== Ic&&&..r266sssCCaCx@01110111KQ44	U[%+6$F$$e$$V,,1a%%1a..9991a%%1a..9992r**EE!R,<,<=== Ic&&&..r266KQ44	KQ44	Y	2$F$$e$$V,,. 	> 	>DAq""28,,A""28,,AVVAq!__eeAq!nn====	> 	>r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_2d_integer_indexing_npmz(TestGetItem.test_2d_integer_indexing_npmM  r   r   c                 ~    |                      t                     |                      t          t                     d S )N)r   )r   r   )r   rP   r   r   s    r   test_2d_integer_indexing2z%TestGetItem.test_2d_integer_indexing2P  sK    %%-I%JJJ%%G-I 	& 	K 	K 	K 	K 	Kr   c                    t           d             t           fd            }t          j        d                              dd          }|                      ||dd          |d         d                    |                      ||dd          |d         d                    |                      ||dd          |d         d                    d S )	Nc                     | |         S r   r   )Xi0s     r   index1z=TestGetItem.test_2d_integer_indexing_via_call.<locals>.index1V  s    R5Lr   c                 (     | |         |          S r   r   )r   r   rL   r   s      r   rB   z=TestGetItem.test_2d_integer_indexing_via_call.<locals>.index2Y  s    6!B%$$$r   rn   rt   r   r   r   rx   )r   r   r   r   r   )r   rB   r   r   s      @r   !test_2d_integer_indexing_via_callz-TestGetItem.test_2d_integer_indexing_via_callU  s    		 	 
			% 	% 	% 	% 
	%IbMM!!!Q''1a!A$q'2221a!A$q'2222r**AbE"I66666r   c                    t          j        dd                              dd          }t          }t	          j        t          j        dd          }|t          j        t          j        f} t          |fi ||          }| 	                     ||dd           ||dd                     | 	                     ||dd           ||dd                     | 	                     ||d	d	           ||d	d	                     d S )
Nr   ro   rp   rn   rt   rm   r   rz   rx   )
r   r   r   rN   r   r~   r   float32r   r   )r   r   r   r   r   r   r   s          r   test_2d_float_indexingz"TestGetItem.test_2d_float_indexinga  s   Ic&&&..r266,KQ44	U]EK8$F$$e$$V,,1a%%1a..9991a%%1a..9992r**EE!R,<,<=====r   c                 B    t            fd}t          j        dd                              d          }t	          j        t          j        dd          } |||           t          j        dd                              d          j        }t	          j        t          j        dd	          } |||           t          j        dd                              d          d d d         }t	          j        t          j        dd
          } |||           d S )Nc                 l   |t           j        f} t          |fi           }                     | d           || d                     | j        d         dz
  }                     | |           || |                                          | d           || d                     d S )Nr   r   rx   )r   r   r   r   r!   )arrr   r   r   nr   r   r   s        r   checkz3TestGetItem.test_partial_1d_indexing.<locals>.checko  s    -F(C((%((00EVVC^^UU3]];;;	!q AVVC^^UU3]];;;VVC__eeCnn=====r      ro   rp   )r   ru   rt   rm   )ru   r   Fr   )rG   r   r   r   r   r~   r   T)r   r   r  r   r   r   s   ``   @r   test_partial_1d_indexingz$TestGetItem.test_partial_1d_indexingl  s   #	> 	> 	> 	> 	> 	> 	> Ib%%%--f55KQ44	aIb%%%--f557KQ44	aIb%%%--f55ccc:KQ44	ar   c                     fdfd} |t          j        dd                              dd                      |t          j        dd                              ddd                     d S )	Nc                 |    t          |           t          j        t          j        f} t          |fi           S r   )r   r   r   r   )r  r   r   r   s     r   compile_funcz0TestGetItem.check_ellipsis.<locals>.compile_func  s9    Skk5:uz:F'3v''''///r   c           	          d} |           }t          j        ||          D ]H\  }} || ||          }t          j                             | ||           || ||                     Id S )N)r   r   rt   rx   r1   )r   r   r   testingassert_equal)r   boundsr   r$   rT   xr  r   s         r   runz'TestGetItem.check_ellipsis.<locals>.run  s    &F LOOE!)&&99 I I1E!QNN
''q!Qq!QHHHHI Ir      ro   rp   r      ru   )r   r   r   )r   r   r   r  r  s    `` @r   check_ellipsiszTestGetItem.check_ellipsis  s    	0 	0 	0 	0 	0 	0	I 	I 	I 	I 	I 	I 	BIb%%%--a33444BIb%%%--aA6677777r   c                 <    |                      t          |           d S r   )r  rU   r   r   s     r   test_ellipsis1zTestGetItem.test_ellipsis1      -u55555r   c                 <    |                      t                     d S r   )r  r   r   s    r   test_ellipsis1_npmzTestGetItem.test_ellipsis1_npm      '*****r   c                 <    |                      t          |           d S r   )r  rW   r  s     r   test_ellipsis2zTestGetItem.test_ellipsis2  r  r   c                 <    |                      t                     d S r   )r   r   r   s    r   test_ellipsis2_npmzTestGetItem.test_ellipsis2_npm  r  r   c                 <    |                      t          |           d S r   )r  rY   r  s     r   test_ellipsis3zTestGetItem.test_ellipsis3  r  r   c                 <    |                      t                     d S r   )r$  r   r   s    r   test_ellipsis3_npmzTestGetItem.test_ellipsis3_npm  r  r   c                     t           d             }|j        }d}d}t          j        ||z                                ||          } ||          } ||          }t          j                            ||           d S )Nc                     t          j        |           }d}t          j        | d|f                   D ]\  }}|||         |<   |S )Nr   .)r   
zeros_likendenumerate)r  outr$   r>   vals        r   udtz0TestGetItem.test_ellipsis_issue1498.<locals>.udt  sO    -$$CA nSa[99 $ $
s #E
1Jr   r   )r   py_funcr   r   r   r  r  )r   r-  r.  	outersize	innersizer  gotr   s           r   test_ellipsis_issue1498z#TestGetItem.test_ellipsis_issue1498  s     
	 	 
	 +		i	I-..66y)LLc#hh73<<

X.....r   c                     t           d             }t          j        d          } ||          }|                    |          }t          j                            ||           d S )Nc                     | d         S )N).r   r   )r  s    r   r-  z0TestGetItem.test_ellipsis_issue1499.<locals>.udt  s    v;r   ru   )r   r   r   r.  r  r  )r   r-  r  r1  r   s        r   test_ellipsis_issue1499z#TestGetItem.test_ellipsis_issue1499  sh     
	 	 
	 illc#hh;;s##

X.....r   c                 *   t           }t          j        t          j        dd          }|f} t	          |fi ||          }t          j        dd                              dd          }|                      ||           ||                     d S )Nrt   rm   r   ro   rp   rn   )	r\   r   r~   r   r   r   r   r   r   r   s          r   test_none_indexzTestGetItem.test_none_index  s    #KQ44	$F$$e$$V,,Ic&&&..r266q		558844444r   c                     |                                  5  |                     t                     d d d            d S # 1 swxY w Y   d S r   )assertTypingErrorr7  r   r   s    r   test_none_index_npmzTestGetItem.test_none_index_npm  s    ##%% 	0 	0  w ///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   >AAc                 (   t           }t          j        t          j        dd          }|f} t	          |fi ||          }t          j        dd                              d          }|                      ||           ||                     d S )Nr   rm   r   ro   rp   r   )	r^   r   r~   r   r   r   r   r   r   r   s          r   test_empty_tuple_indexingz%TestGetItem.test_empty_tuple_indexing  s    $KQ44	$F$$e$$V,,Iat$$$,,R00q		558844444r   c                 <    |                      t                     d S r   )r<  r   r   s    r   test_empty_tuple_indexing_npmz)TestGetItem.test_empty_tuple_indexing_npm      &&W&55555r   N)8__name__
__module____qualname____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  r  r  r  r  r   r"  r$  r&  r2  r5  r7  r:  r<  r>  r   r   r   rk   rk      s
        
 %7 B B B B&, , , &8 "> "> "> ">H- - - &8 > > > ><- - - &8 . . . .&- - -< < <, &8 6 6 6 6- - - &8 6 6 6 6- - - &8 6 6 6 6- - - &8 6 6 6 6- - - %7 A A A A, , , &8 '> '> '> '>R- - - &8 #> #> #> #>J- - - %7 > > > >:, , , &8 > > > >:- - - .@ "< "< "< "<H5 5 5 5G ; ; ; ;&< < < .@(C#> #> #> #>J5 5 5K K K

7 
7 
7 ,> 	> 	> 	> 	> .@    .8 8 8 $6 6 6 6 6+ + + $6 6 6 6 6+ + + $6 6 6 6 6+ + +/ / /*
/ 
/ 
/ %7 5 5 5 50 0 0 /A 5 5 5 56 6 6 6 6r   rk   c                       e Zd ZdZefdZefdZd ZefdZefdZ	efdZ
efdZd	 Zd
 Zd Zd Zd ZefdZefdZd Zd Zd Zd Zd Zd Zd ZdS )TestSetItemzk
    Test basic indexed store into an array.
    Note fancy indexing is tested in test_fancy_indexing.
    c                     ddl m} d }  |d	i ||          }t          j        dd          }|                                } ||            ||           |                     ||           dS )
z9 this used to work, and was used in one of the tutorials r   )r   c                 x    t          t          |                     D ]}|t          j        d          z  | |<   d S )Nr   )r    lendecimalDecimal)r   r>   s     r   r   z3TestSetItem.test_conversion_setitem.<locals>.pyfunc  sC    s5zz** < <$ws';';;e< <r   void(i8[:])r   rL   rp   N)rL  )numbar   r   r   copyr   )r   r   r   r   r   r-  controls          r   test_conversion_setitemz#TestSetItem.test_conversion_setitem  s    	< 	< 	< ,++U++F33i4(((((**wc


W-----r   c                 :   t           }t          j        t          j        dd          }t          j        t          j        dd          }||t          j        t          j        t          j        f} t          |fi ||          }d}t          j        |d          dz   dd	|d	z
  ||dz   |d
z   d| d	z   | | dz
  | d
z
  g}fd}	t          j	        ||          D ]^\  }
}dD ]V}|
||f}t          | } | |	            |         g|R  } | |	            |         g|R  }|                     ||           W_|                     t                    5   |t          j        t          j                  ddd           ddd           dS # 1 swxY w Y   dS )z+
        1d to 1d slice assignment
        r   rm   r   rn   rM   rp   (   r   rt   ru   r1   c                  0    t          j         d          S )Nro   rp   )r   r)  )r   s   r   	make_destz2TestSetItem.test_1d_slicing_set.<locals>.make_dest  s    =D1111r   r   rt   rx   r1   N)re   r   r~   r   r   r   r   r   r   r   slicer   assertRaises
ValueErrorr)  )r   r   r   	dest_typesrc_typer   r   Nr  rT  r   r   r   r   r>   pyleftcleftr   s                    @r   test_1d_slicing_setzTestSetItem.test_1d_slicing_set  s@    ( KQ44	;u{As33Xu{EKM$F$$e$$V,,i&&&+QAq!a%Qqb1fqb1"q&1"q&2	2 	2 	2 	2 	2$,VV<< 	7 	7KE4& 7 7dD(t		SZ?$???iikk3u:====''66667 z** 	D 	DE"-28444c1aCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   .FFFc                    t           }t          j        t          j        dd          }||t          j        t          j        t          j        f} t	          |fi ||          j        |         j        }d}t          |          }	t          j	        |t          j                  }
|d| |	z   dz   df} ||

                                g|R  } ||

                                g|R  }|                     ||           |d| |	z   df}|                     t                    5 } ||

                                g|R   ddd           dS # 1 swxY w Y   dS )z9
        Generic sequence to 1d slice assignment
        r   rm   rn   rp   N)re   r   r~   r   r   	overloadsentry_pointrI  r   r   rN  r   rW  rX  )r   r   seqtyseqr   rY  r   r   r[  kr   r   r   r1  raisess                  r   check_1d_slicing_set_sequencez)TestSetItem.check_1d_slicing_set_sequence  s    (KQ44	UEKekJ %F$$e$$V,,6v>JHHi***QQ
A&6#((**,t,,,eCHHJJ&&&&#...QQ"z** 	%fE#((**$t$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   !E

EEc                 n    |                      |t          j        t          j        d          d           dS )z.
        Tuple to 1d slice assignment
        rt   )r   N)rf  r   UniTupler   r  s     r   test_1d_slicing_set_tuplez%TestSetItem.test_1d_slicing_set_tuple,  s;     	**5>%+q118	= 	= 	= 	= 	=r   c                 p    |                      |t          j        t          j                  ddg           dS )z-
        List to 1d slice assignment
        r   rh  N)rf  r   Listr   r  s     r   test_1d_slicing_set_listz$TestSetItem.test_1d_slicing_set_list3  s=     	**5:ek**QH	6 	6 	6 	6 	6r   c                 <   t           }t          j        t          j        dd          }|t          j        t          j        t          j        t          j        f} t          |fi ||          }d}t          j        |d          }d}dd|dz
  ||dz   |d	z   d
| dz   | | dz
  | d	z
  g}	t          j	        |	|	          D ]\\  }
}dD ]T}||
||f} ||
                                g|R  } ||
                                g|R  }|                     ||           U]dS )z/
        scalar to 1d slice assignment
        r   rm   rn   ro   rp   *   r   rt   ru   r1   rU  N)re   r   r~   r   r   r   r   r   r   r   rN  r   )r   r   r   r   r   r   r[  r   r,  r  r   r   r   r   r\  r]  s                   r   test_1d_slicing_broadcastz%TestSetItem.test_1d_slicing_broadcast:  sW    (KQ44	 U[%+u{EKP$F$$e$$V,,i&&&QAq!a%Qqb1fqb1"q&1"q&2$,VV<< 	7 	7KE4& 7 7E4-

2T222chhjj04000''6666	7	7 	7r   c                    t           }t          j        t          j        dd          }||t          j        t          j        f} t	          |fi ||          }t          j        dd          }dD ]j} |t          j        |          |t          |          g|R  } |t          j        |          |t          |          g|R  }	| 	                    ||	           kd S )Nr   rm   rn   ro   rp   )r   )rt   r   )
rg   r   r~   r   r   r   r   r)  rV  r   )
r   r   r   r   r   r   r   testr\  r]  s
             r   test_1d_slicing_addzTestSetItem.test_1d_slicing_addQ  s    'KQ44	YU[A$F$$e$$V,,i$'''% 	3 	3DVBM#..E4L0AIDIIIFE"-,,c%,.?G$GGGE##FE2222	3 	3r   c                 <    |                      t                     d S r   )r^  r   r   s    r   test_1d_slicing_set_npmz#TestSetItem.test_1d_slicing_set_npm]        w /////r   c                 <    |                      t                     d S r   )rm  r   r   s    r   test_1d_slicing_set_list_npmz(TestSetItem.test_1d_slicing_set_list_npm`  r   r   c                 <    |                      t                     d S r   )rj  r   r   s    r   test_1d_slicing_set_tuple_npmz)TestSetItem.test_1d_slicing_set_tuple_npmc  r?  r   c                 <    |                      t                     d S r   )rp  r   r   s    r   test_1d_slicing_broadcast_npmz)TestSetItem.test_1d_slicing_broadcast_npmf  r?  r   c                 <    |                      t                     d S r   )rs  r   r   s    r   test_1d_slicing_add_npmz#TestSetItem.test_1d_slicing_add_npmi  rv  r   c                    t           }t          j        t          j        dd          }||t          j        t          j        t          j        t          j        t          j        t          j        f} t	          |fi ||          }t          j        dd                              dd          }g d}|D ]} |t          j        |          |t          |dd	          t          |d	d
          f         g|R  }	 |t          j        |          |t          |dd	          t          |d	d
          f         g|R  }
| 
                    |
|	           dS )z+
        2d to 2d slice assignment
        rt   r   r   ro   rp   rn   )r   rn   r   r   rn   r   )rt   ru   r   rt   ru   r   )rn   r   r   rn   r   r   )r   rn   rx   r   rn   rx   )r   rn   rt   r   rn   rt   r   ru      N)ri   r   r~   r   r   r   r   r   r)  rV  r   )r   r   r   r   r   r   r   testsrr  r\  r]  s              r   test_2d_slicing_setzTestSetItem.test_2d_slicing_setl  sa    (KQ44	YU[%++u{EK9$F$$e$$V,,iT***222b99
 
 
  	3 	3DVBM#..E4!94EudSTUVSViGX4X0Ya\`aaaFE"-,,c%ac2CUDQRSTQTIEV2V.W_Z^___E##E62222	3 	3r   c                 &   t           }t          j        t          j        dd          }|t          j        t          j        t          j        t          j        t          j        t          j        t          j        f} t          |fi ||          }t          j        dd                              dd          }d}g d}|D ]P}	 ||	                                |g|	R  }
 ||	                                |g|	R  }| 
                    ||
           Qd	S )
z/
        scalar to 2d slice assignment
        rt   rm   r   ro   rp   rn   ro  r  N)ri   r   r~   r   r   r   r   r   r   rN  r   )r   r   r   r   r   r   r   r,  r  rr  r\  r]  s               r   test_2d_slicing_broadcastz%TestSetItem.test_2d_slicing_broadcast  s    (KQ44	 U[%+u{EK+u{EK9$F$$e$$V,,iT***222b99
 
 
  	3 	3DVCHHJJ3d333FE#((**c1D111E##E62222	3 	3r   c                 <    |                      t                     d S r   )r  r   r   s    r   test_2d_slicing_set_npmz#TestSetItem.test_2d_slicing_set_npm  rv  r   c                 <    |                      t                     d S r   )r  r   r   s    r   test_2d_slicing_broadcast_npmz)TestSetItem.test_2d_slicing_broadcast_npm  r?  r   c                 L   t          j        d          }t          |dd           |                     |                                g d           t          |t          j        d                              t           j                  d           |                     |                                g d           t          j        d                              dd          }t          |dd           |                     |                                g d	g d
g dg           dS )z+
        scalar indexed assignment
        r   r   ro  )r   ro  rt   ru   r   ru   r   )r   ro  rt   r   r   rz   )r   r   rt   )ro  ro  ro  )r     r   N)	r   r   ra   r   tolistr   r   uint16r   )r   r  s     r   test_setitemzTestSetItem.test_setitem  s     illQ###'7'7'7888RXa[[//	::A>>>'7'7'7888ill""1a((Q###			<<<'KLLLLLr   c           	         t          j        d          }t          |d           |                     |                                dgdz             t          j        d                              dd          }t          |t          j        dd                     |                     |                                g dg dg           t          j        d                              dd          }t          |t          j        dd                              dd                     |                     |                                g dg dg           t          j        d	                              dddd          }t          |t          j        dd                              dd                     g dg dg}|                     |                                |ggdz             t          j        d          }t          |t          j        dd                              dd                     |                     |                                g d
           t          j        d                              dd          }t          |t          j        dd|j        z                                 dddd                     |                     |                                g dg dg           dS )z.
        broadcasted array assignment
        r   ro  r  rt   ru   r   r   )r   rt   ru   r  )r   rt   ru   r   r   )r   r   r  N)r   r   rc   r   r  r   size)r   dstinner2s      r   test_setitem_broadcastz"TestSetItem.test_setitem_broadcast  s{   
 ill!#r***tax000ill""1a((!#ryA777			999'=>>>ill""1a((!#ryA'>'>q!'D'DEEE			999'=>>>imm##Aq!Q//!#ryA'>'>q!'D'DEEE))YYY'zA~666ill!#ryA'>'>q!'D'DEEE777ill""1a((!#ryAL'A'A'I'I!QPQST'U'UVVV			999'=>>>>>r   c                     t          j        d          }t          j        d                              dd          }|                     t                    5 }t          ||           d d d            n# 1 swxY w Y   t          |j                  }|                     d|           t          j        d                              dd          }t          j        d                              ddd          }|                     t                    5 }t          ||           d d d            n# 1 swxY w Y   t          |j                  }|                     d|           t          j        d                              dd          }t          j        d          }|                     t                    5 }t          ||           d d d            n# 1 swxY w Y   t          |j                  }|                     d|           d S )	Nr   rn   rt   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   rW  rX  rc   str	exceptionr   )r   r  srcre  errmsgs        r   test_setitem_broadcast_errorz(TestSetItem.test_setitem_broadcast_error  s    illimm##Aq))z** 	0f%c3///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0V%&&G	! 	! 	! ill""1a((imm##Aq!,,z** 	0f%c3///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0V%&& )	! 	! 	!
 imm##Aq))illz** 	0f%c3///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0V%&& (	  	  	  	  	 s6   A44A8;A8D11D58D5<GG Gc                 4   t          j        d                              dd          }t          j        dd          }t          ||ddd           |                     |                                ddgddgddgg           t          j        d                              dd          }t          j        dd          }t          ||dd d           |                     |                                ddgddgddgg           t          j        d                              dd          }t          j        dd                              dd          }t          ||d dd           |                     |                                ddgddgddgg           d S )Nr  ru   rt   r   r   r   r   )r   r   r   re   r   r  )r   r  r  s      r   test_slicing_1d_broadcastz%TestSetItem.test_slicing_1d_broadcast  sq   ill""1a((i1oosCAq111AAA'?@@@ill""1a((i1oosCD!444AAA'?@@@ill""1a((i1oo%%a++sCq!444AAA'?@@@@@r   c                 4   t          j        d          }d|j        _        |                     t
          t          j        f          5 }t          |dd           d d d            n# 1 swxY w Y   | 	                    dt          |j                             d S )Nr   Fr   ro  z%Cannot modify readonly array of type:)r   r   r   	writeablerW  	TypeErrorr   TypingErrorra   assertInr  r  )r   r  re  s      r   test_setitem_readonlyz!TestSetItem.test_setitem_readonly  s    ill#		6+=>?? 	(6CB'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(=&*++	- 	- 	- 	- 	-s   A%%A),A)N)r@  rA  rB  rC  rD  rP  r^  rf  rj  rm  rp  rs  ru  rx  rz  r|  r~  r  r  r  r  r  r  r  r  r  r   r   r   rF  rF    s        
 -? . . . .  ); D D D D<% % %0 /A = = = = .@ 6 6 6 6 /A 7 7 7 7. ); 
3 
3 
3 
30 0 05 5 56 6 66 6 60 0 0 ); 3 3 3 3. /A 3 3 3 340 0 06 6 6M M M? ? ?<     <A A A"- - - - -r   rF  c                       e Zd ZdZd ZdS )
TestTypingz3
    Check typing of basic indexing operations
    c                    t           j        }t          j        t          j        dd          }t          j        t          j        dd          }t          j        t          j        dd          }dt
          fddft          fddft          fddft          t          fddft          t          fddft          t          fddft          t          fddft          fddft
          t          fddft
          t          fddft
          t          t          fddft
          t          t          fddft
          t          t          fddft
          t          fddft
          t          t          fddft          t
          t          fddft          t
          t          fddft          t          t          fddft          t
          t          t          fddft          t          t          fddft          t          t
          t          fddft          t          t          fddft          t          t          fddft          t          t          fddfg}|D ]\  }}}t          j	        |          }	 |||	          }
| 
                    t          |
j                  |           | 
                    |
j        j        |rdnd|           |                     |
j                   |D ]\  }}}t          j	        |          }	 |||	          }
| 
                    t          |
j                  |           | 
                    |
j        j        |rdnd|           |                     |
j                   |D ]\  }}}t          j	        |          }	 |||	          }
| 
                    t          |
j                  |           | 
                    |
j        j        d           |                     |
j                   dS )	zc
        Check an appropriate layout is inferred for the result of array
        indexing.
        ru   rm   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_layoutzTestTyping.test_layout  s    -k%-C00k%-C00k%-C0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K,,ES%  AU17^^[999QX_V.Dcc(* * *QZ((((&- 	) 	)"KFK,,ES%  AU17^^[999QX_V.Dcc(* * *QZ((((!( 	) 	)KAK,,ES%  AU17^^[999QX_c222QZ((((	) 	)r   N)r@  rA  rB  rC  r  r   r   r   r  r    s2         G) G) G) G) G)r   r  __main__)8rJ  r   numpyr   unittestrM  r   r   r   
numba.corer   r   r   numba.tests.supportr	   r
   numba.core.typingr   numba.core.typesr   r   r   r   rD  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   rF  r  r@  mainr   r   r   <module>r     s-             # # # # # # # # # # + + + + + + + + + + - - - - - - - - ' ' ' ' ' ' E E E E E E E E E E E E !$' t
                5 5 5( ( (                                  
D	6 D	6 D	6 D	6 D	6( D	6 D	6 D	6Ne- e- e- e- e-( e- e- e-P	L) L) L) L) L) L) L) L)^ zHMOOOOO r   