
    Ph                     x   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZ  G d d      Z G d d      Z G d	 d
      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z y)    N)array_indexing)product)assert_assert_equalassert_raisesassert_raises_regexassert_array_equalassert_warnsHAS_REFCOUNTIS_WASMc                   ,   e 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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)jT                  jW                  d'd(d) e,jZ                  d*g      g      e)jT                  jW                  d+d,d-g      e)jT                  jW                  d.d/d,g      d0                      Z.e)jT                  j_                  e0d12      d3        Z1d4 Z2y5)6TestIndexingc                 z   t        j                  dggg      t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd	       t        t        fd
       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       y )N   c                       d   S N         as   iC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\numpy/core/tests/test_indexing.py<lambda>z3TestIndexing.test_index_no_floats.<locals>.<lambda>   s	    !C&    c                       d   S )N)r   r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>   	    !F)r   c                       d   S )N)r   r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>   r   r   c                       dd d f   S r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>   s    !CE(r   c                       d d df   S r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>   s    !AsF)r   c                       d d dd d f   S r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>   s    !As1H+r   c                       dd d d d f   S r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>   s    !C!G*r   c                       d   S )N)r   r   r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>   	    !I,r   c                       d   S )N)r   r   r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>   r"   r   c                       d   S )N)r   r   r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>   r"   r   c                       d   S Nffffffr   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>   s	    !D'r   c                       d   S )N)r   r'   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>    	    !G*r   c                       d   S )N)r'   r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>!   r)   r   c                       dd d f   S r&   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>"   s    !DF)r   c                       d d df   S r&   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>#   s    !AtG*r   c                       d d dd d f   S r&   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>$   s    !AtAI,r   c                       dd d d d f   S r&   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>%   s    !D1H+r   c                       d   S )N)r   r   r'   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>&   	    !J-r   c                       d   S )N)r'   r   r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>'   r0   r   c                       d   S )N)r   r'   r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>(   r0   r   c                       dd df   S r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>)   s    !CD#I,r   c                       dd dd d f   S r   r   r   s   r   r   z3TestIndexing.test_index_no_floats.<locals>.<lambda>*   s    !CD#aK.r   )nparrayr   
IndexErrorselfr   s    @r   test_index_no_floatsz!TestIndexing.test_index_no_floats   s   HHseWj.1j"34j"34j"23j"34j"56j"45j"67j"67j"67j/2j"45j"45j"34j"45j"67j"56j"78j"78j"78j"67j"89r   c                 x   t        j                  dgg      t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd	       t        t        fd
       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       y )Nr   c                       dd  S r   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>0   s    34r   c                       dd ddf   S )Nr   r      r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>1   s    12s1u9r   c                       dd dd df   S Nr   r>   r   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>2   s    3662A2:r   c                       dddd d f   S )Nr      r>   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>3   s    3q719r   c                       d d dd f   S r   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>4   s    1cd7r   c                       d d S r   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>6   s    4Cr   c                       d dddf   S )Nr   rB          @r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>7   s    2A2qu9r   c                       d ddd df   S r@   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>8   s    6C62A2:r   c                       d dd d f   S r   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>9   s    4C46r   c                       d d dddf   S )Nr         @r>   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>:   s    1aAg:r   c                       d d d   S )N      ?r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda><       5S5r   c                       dd d ddf   S )Nr   r>   rF   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>=   s    12v#v:r   c                       dd dd df   S )NrB   rJ   r   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>>   s    16c62A2:r   c                       d d dd d f   S )N      @r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>?   s    5S57r   c                       d d dddf   S )Nr      rF   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>@   s    1a#g:r   c                       ddd   S )NrL   r>   rF   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>B   s    3q9r   c                       dd d   S )NrL   rF   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>C   s    388r   c                       dd d ddf   S )Nr   rF   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>D   s    12xCx<r   c                       dddd df   S )NrL   rB   rJ   r   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>E   s    3q9bqb=)9r   c                       dddd d f   S )NrL   rQ   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>F   s    3s3;q=)9r   c                       d d dddf   S )Ng?rJ   rF   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>G   s    1c#ck>):r   c                       d d d   S r   r   r   s   r   r   z5TestIndexing.test_slicing_no_floats.<locals>.<lambda>I   rM   r   r5   r6   r   	TypeErrorr8   s    @r   test_slicing_no_floatsz#TestIndexing.test_slicing_no_floats,   s   HHqcUO 	i1i!56i!67i!56i!34i1i!56i!67i!23i!67i!12i!67i!67i!34i!67i!56i!45i!89i!9:i!9:i!:;i!12r   c                 \    t        j                  dggg      t        t        fd       y )NrB   c                             S Nr   r   s   r   r   z;TestIndexing.test_index_no_array_to_index.<locals>.<lambda>O   s    1Qq5r   r[   r8   s    @r   test_index_no_array_to_indexz)TestIndexing.test_index_no_array_to_indexK   s"    HHseWi!12r   c                     t        j                  g d      }t        |d    |t         j                            t        |d    j                  |j                  dz          y )NrB   r>      rB   )r5   r6   r   newaxisndimr8   s     r   test_none_indexzTestIndexing.test_none_indexQ   s@    HHYQtWa

m,QtW\\166A:.r   c                     t        j                  g d      }t        |d   |       t        |d   j                  |u        t        j                  d      }t        t        |d   t         j                               y )Nrc   r   r   )r5   r6   r   r   base
isinstanceint_r8   s     r   test_empty_tuple_indexz#TestIndexing.test_empty_tuple_indexW   sV    HHYQrUA"

a HHQK
1R5"''*+r   c                     t        j                  dd      }t        |d   j                  |j                         t        |d   |       t        t	        |d         t         j
                         y )Nr   V4dtype.)r5   zerosr   rp   typendarray)r9   ss     r   test_void_scalar_empty_tuplez)TestIndexing.test_void_scalar_empty_tuple_   sL    HHRt$QrU[[!''*QrUAT!C&\2::.r   c                    t        j                  d      }|j                  t         j                        }t        j                  d      }t	        ||   ||          t        j                  d      ||<   t	        |t        j                  d             t        j                  d      j                  dd      }t	        ||   ||          t        j                  d      d d d f   ||<   t	        |t        j                  d      d d d f   j                  dd             t        j                  d      j                  dd      }t	        |||f   |||f          y )Nr   
   r>   rB   axis   )r5   arangeastypeuintpr	   reshaperepeat)r9   indexu_indexarrs       r   test_same_kind_index_castingz)TestIndexing.test_same_kind_index_castinge   s    		!,,rxx(iim3u:s7|4yy|G3		".iim##Aq)3u:s7|4yy|AdF+G3		!QtV 4 ; ;AA ; FGiim##Aq)3w/0#eUl2CDr   c                    t        j                  g d      }t        |g    g        t        |g    j                  |j                         t        j                  g t         j                        }t        |g    g        t        |g    j                  |j                         t        j                  g       }t        t        |j                  |       y )Nrc   ro   )r5   r6   r   rp   intpr   r7   __getitem__r9   r   bs      r   test_empty_fancy_indexz#TestIndexing.test_empty_fancy_indexy   s     HHYQrUBQrU[[!''*HHRrww'QrUBQrU[[!''*HHRLj!--3r   c                    t        j                  g dg dg dg      }t        |d   |u       t        |d   |       t        |d   j                  |u        t        |d   |d          t        |d   |dd d f          t        |d   |d d df          t        |d   t        j                  d	             t        j                  d
      }d	|t
        f<   t        |d	       y )Nrc   rS   r            	   .)r   .r   .r   )r   .rB   r>   rB   )r5   r6   r   r   ri   Ellipsisr   s      r   test_ellipsis_indexz TestIndexing.test_ellipsis_index   s    HHi! " 	#a QsVQ#q ! 	QvY!%QvY!A#'QvY!Q$( 	Qy\288A;/ HHQK8+Qr   c                     t        j                  g dg dg dg      }t        |d   g d       t        |d   g d       t        t        |j
                  d       t        t        |j
                  d       y )Nrc   r   r   r   i   @l            )r5   r6   r   r   r7   r   r8   s     r   test_single_int_indexz"TestIndexing.test_single_int_index   s]    HHi! " 	QqT9%QrUI& 	j!--9j!--9r   c                     t        j                  g dg dg dg      }t        |t        j                  d         |d           t        |t        j                  d         |d    dd        y )Nrc   r   r   TFr   r5   r6   r   r8   s     r   test_single_bool_indexz#TestIndexing.test_single_bool_index   s[    HHi! " 	Qrxx~&$0Qrxx'416r   c                    t        j                  d      }t        j                  dg      }t        t        |j
                  |       t        j                  dgdz        }t        t        |j
                  |       t        j                  dt              }t        t        |j
                  |       t        t        |j
                  t        d       |f       y )N)r   rS   rd   TFr   rS   rS   ro   )	r5   onesr6   r   r7   r   rq   boolslice)r9   r   r   s      r   test_boolean_shape_mismatchz(TestIndexing.test_boolean_shape_mismatch   s    ggi $ j#//59%1%j#//59t,j#//59j#//E$K3GHr   c                     t        j                  g dg      }t        j                  dgt              }t        ||   |       d||<   t        |g dg       y )N)r   r   r   Tro   rL   )rL   rL   rL   )r5   r6   r   r   r   s      r   test_boolean_indexing_onedimz)TestIndexing.test_boolean_indexing_onedim   sJ     HHo&'HHtWD)QqT1!Q'r   c                     t        j                  d      }d }t        t        ||g        t        t        ||g d       t        t        ||d d g d       y )NrS   c                     || | dkD  <   y )Nr   r   )r   vs     r   fz>TestIndexing.test_boolean_assignment_value_mismatch.<locals>.f   s    Aa"fIr   rc   rB   )r5   r{   r   
ValueError)r9   r   r   s      r   &test_boolean_assignment_value_mismatchz3TestIndexing.test_boolean_assignment_value_mismatch   sH     IIaL	 	j!Q+j!Q	2j!QrUI6r   c                     t        j                  d      }t        j                  dt              }d|d d t        j                  dt              ||<   t        j                  d      }d|d d t        ||       y )N  ro   Td   rB   )r5   rq   r   r   objectr	   )r9   r   indxexpecteds       r   !test_boolean_assignment_needs_apiz.TestIndexing.test_boolean_assignment_needs_api   sb    
 hhtnxxD)Tc
GGCv.D	88D>#3)r   c                 ,   t        j                  g dg dg dg      }t        j                  g dg dg dg      }t        ||   g d       t        ||d      g dg       t        ||d      ||d	             d||<   t        |g d
g dg dg       y )Nrc   r   r   TFT)FTF)rB   rd   r   r   r   rB   r   r>   )r   r>   r   )rS   r   r   )r   r   r   r   r   s      r   test_boolean_indexing_twodimz)TestIndexing.test_boolean_indexing_twodim   s     HHi! " HH+++- . 	QqT?+QqtWyk*QqtWa!g& !Q""$ 	%r   c                     t        j                  g d      }g d}t        ||   ddg       t        |d |f   ddgg       y )Nrc   r   rB   rd   r   r   s      r   test_boolean_indexing_listz'TestIndexing.test_boolean_indexing_list   sA     HHYQqTAq6"QtQwZ1a&*r   c                    t        j                  d      }t        j                  dt         j                        d d d   }t        j                  d      d d d   }|||<   t        |d   d       t        j                  d      }t        j                  d      j                  dd      d d d   }|||d d f<   t        |d   ddg       y )	Nr   ro   r   r   r   r>   rw   r>   rB   )r5   r   rq   r   r{   r   r~   )r9   r   r   cs       r   ,test_reverse_strides_and_subspace_bufferinitz9TestIndexing.test_reverse_strides_and_subspace_bufferinit  s     GGAJHHQbgg&tt,IIaL2!QqT1 GGFOIIbM!!!Q'"-!Q$QqTAq6"r   c                     t        j                  d      d d d f   }t        j                  d      d d d   }t        ||   ||j                  d                t        j                  d      j	                  dd      }y )Nrw   r   C   r>   )r5   r{   r	   copyr~   )r9   r   is      r   'test_reversed_strides_result_allocationz4TestIndexing.test_reversed_strides_result_allocation  sd     IIbM!T'"IIbM$B$1Q4166#;0IIbM!!"a(r   c                 d   t        j                  dd      }t        j                  dd      }t        j                  d      j                  ddd      j                  |ddg<   t        j                  d      j                  ddd      j                  j                         |ddg<   t        ||       y )N)rd   rS   r>   r      r>   rS   r   rB   )r5   fullr{   r~   Tr   r   r   s      r   %test_uncontiguous_subspace_assignmentz2TestIndexing.test_uncontiguous_subspace_assignment  s     GGIr"GGIr"IIi(00Aq9;;1a&	IIi(00Aq9;;@@B1a&	Qr   c                     t        j                  d      }t        t        |j                  t        j
                  dg      fdz         y )N) rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   rB   r       )r5   r   r   r7   r   r6   r8   s     r   (test_too_many_fancy_indices_special_casez5TestIndexing.test_too_many_fancy_indices_special_case)  s2    GGIj!--"((A3-1AB1FGr   c                    t        j                  d      }t        |t        j                  d         |t        j                  d                t        |t        j                  d         |t        j                  d                y )NrB   TF)r5   r6   r   bool_r8   s     r   test_scalar_array_boolz#TestIndexing.test_scalar_array_bool.  sW    HHQKQrxx~&"((4.(9:Qrxx'288E?);<r   c                     t        j                  d      }t        ||d   u       t        ||d   u       t        ||d d  u       y )Nr   r   .)r5   r{   r   r8   s     r   test_everything_returns_viewsz*TestIndexing.test_everything_returns_views;  s?    IIaL23 1r   c                     t        j                  d      }t        t        |j                  ddgg df       t        t        |j
                  ddgg dfd       y )Nr   r   r   rB   r   rB   r>   )r5   rq   r   r7   r   __setitem__r8   s     r   test_broaderrors_indexingz&TestIndexing.test_broaderrors_indexingC  sD    HHVj!--1a&)1DEj!--1a&)1DaHr   c                    t        j                  d      }t        j                  dt         j                        }d|d<   t	        t
        |j                  |       t	        t
        |j                  |d       t        j                  dt         j                        }d|d<   t	        t
        |j                  |       t	        t
        |j                  |d       y )Nr   r   ro   rw   r   r      )r5   rq   r   r   r   r7   r   r   )r9   r   inds      r    test_trivial_fancy_out_of_boundsz-TestIndexing.test_trivial_fancy_out_of_boundsH  s    HHQKggb(Bj!--5j!--a8ggb(Aj!--5j!--a8r   c                 ,   t        j                  d      }t        j                  dt         j                        j                  ddd      d d d d df   }t	        ||   |       d||<   t        j                  d      }d|d<   d|d<   t	        ||       y )Nr   ro   r>   rB   rd   r   r   )r5   r{   r   r~   r	   )r9   r   idxress       r   test_trivial_fancy_not_possiblez,TestIndexing.test_trivial_fancy_not_possibleS  s     IIaLii)11!Q:1a7C1S63' #iilAA1c"r   c                     G d dt         j                        }t        j                  d      }|j                         j	                  |      }|j                  d       ||g dd d f<   t        |dk(  j                                ||d d g df<   t        |dk(  j                                |j                  d       ||d<   t        |dk(  j                                y )	Nc                       e Zd Zd Zy)7TestIndexing.test_nonbaseclass_values.<locals>.SubClassc                 &    | j                  d       y )Nc   )fillr9   olds     r   __array_finalize__zJTestIndexing.test_nonbaseclass_values.<locals>.SubClass.__array_finalize__d  s    		"r   N__name__
__module____qualname__r   r   r   r   SubClassr   c  s    r   r   r   )rr   rB   r   rB   r>   rd   rS   r   .)r5   rs   rq   r   viewr   r   all)r9   r   r   rt   s       r   test_nonbaseclass_valuesz%TestIndexing.test_nonbaseclass_valuesb  s    	rzz 	
 HHVFFHMMxM(	q	 !/1
a !"!_
a	q	#ar   c                 L   t        j                  d      }t        j                  dt         j                        j	                  dd      }t        |      |g dd d f<   t        ||       t        |      |d d g df<   t        ||       t        |      |d<   t        ||       y )Nr   rz   ro   r   r   .)r5   rq   r{   float64r~   
memoryviewr	   )r9   r   rt   s      r   test_array_like_valuesz#TestIndexing.test_array_like_valuesw  s    HHVIIb

+33Aq9 *1/1
1a  *1!_
1a A#1a r   c                    t         j                  j                  g dddg      }t        j                  g dt              }t	        ||   j
                  j                         t        j                  ddg      }t	        ||   j
                  j                         t	        |d   j
                  j                         t	        |d   j
                  j                         y )	N))NGC1001r   )NGC1002rL   )NGC1003rL   )targetS20)V_magz>f4ro   )FTTr   rB   .)r5   recr6   r   r   flags	writeable)r9   dr   s      r   test_subclass_writeablez$TestIndexing.test_subclass_writeable  s    FFLLL 13CD  Fhh,D9#&&'hh1v#&&'#&&'!

$$%r   c                 <   t        j                  d      }t        j                  d      j                  dd      j                  }t	        ||   j
                  j                         |j                  dd      }t	        ||df   j
                  j                         y )Nrw   r   r>   r   rB   r   )r5   r{   r~   r   r   r   f_contiguousr   s      r   test_memory_orderzTestIndexing.test_memory_order  ss     IIbMIIbM!!!A&((!

''( IIb!!Q$**+r   c           	      P    G d d      } |       } G d d      }t        j                  d      }t        t        |d   t         j                               t        j                  d      }t        t        ||   t         j                               t        j                  d      }t        t        ||t        j
                  d      f   t         j                               t        t        || |       f   t         j                               t        j
                  d      }t        j
                  dt        	      }||d<   t        t        |d   t         j                               t        j
                  |d g      }t        t        ||   t         j                               t        j
                  |d gg      }t        t        ||t        j
                  d      f   t         j                               t        t        || |       f   t         j                               y )
Nc                       e Zd Zd Zy)2TestIndexing.test_scalar_return_type.<locals>.Zeroc                      yNr   r   r9   s    r   	__index__z<TestIndexing.test_scalar_return_type.<locals>.Zero.__index__      r   N)r   r   r   r  r   r   r   Zeror     s    r   r  c                       e Zd Zd Zy)7TestIndexing.test_scalar_return_type.<locals>.ArrayLikec                 ,    t        j                  d      S r  r5   r6   r  s    r   	__array__zATestIndexing.test_scalar_return_type.<locals>.ArrayLike.__array__  s    xx{"r   N)r   r   r   r
  r   r   r   	ArrayLiker    s    #r   r  r   rB   )rB   rB   r   ro   )r5   rq   r   rj   float_r6   r   rs   )r9   r  zr  r   r   s         r   test_scalar_return_typez$TestIndexing.test_scalar_return_type  sw   	 	
 F	# 	#
 HHRL
1R5")),-HHQK
1Q4+,HHV
1Q^,bii89
1Q	^,bii89 HHQKHHQf%"
1R5"**-.HHaY
1Q4,-HHq$i[!
1Q^,bjj9:
1Q	^,bjj9:r   c                    t        j                  dg      }t        r6t        j                  t        j
                  t         j                              }d|t        j                  dgt         j                        <   d|t        j                  dgt         j                        <   t        t        |j                  t        j                  dgt         j                        d       t        t        |j                  t        j                  dgt         j                        d       t        rAt        t        j                  t        j
                  t         j                                     y y )Nr   rB   ro   )r5   r6   r   sysgetrefcountrp   r   uint8r   r7   r   r   )r9   r   refcounts      r   test_small_regressionsz#TestIndexing.test_small_regressions  s    HHaSMrxx'89H*+"((A3bgg
&'+,"((A3bhh
'(j!--hhs"''2A	7j!--hhs"((3Q	8 "''):;XF r   c                 4   t        j                  dt         j                        t        d      z   dd }|j	                  t        j
                  d            }t        j                  dt         j                        t        d      z   dd }|j	                  t        j
                  d            }t        j                  dd	      |d
<   t        j                  |j                        }t        ||   |       |||<   t        j                  |j                  dz         j	                  t         j                        dt        j                  d      j                  dz
    }|j	                  t         j                        d |j                   }t        j                  |j                        |d
<   t        ||j                  t         j                           |       |||j                  t         j                        <   ||dz  dk(      |d d d   ||dz  dk(  <   y )N@   ro   r   rB   iS8r   bbbbbbbbS.r   r>   )r5   rq   int8ordr   rp   r6   r{   sizer   r   itemsizer|   int16)r9   r   r   xr   s        r   test_unalignedzTestIndexing.test_unaligned  s   XXb(3s83Qr:FF288D>"XXb(3s83Qr:FF288D>"'-#IIaffQqT1! HHQVVaZ %%bgg.q2771:3F3F3J1KLFF277OGQVV$166"#Qqxx)*A. !!((288
	!a%1*#A#!a%1*r   c                     t        j                  d      } G d dt              }dgdgf} ||      }t        ||   j                  dk(         t        ||f   j                  dk7         y )Nr   c                       e Zd Zy)7TestIndexing.test_tuple_subclass.<locals>.TupleSubclassNr   r   r   r   r   r   TupleSubclassr#        r   r%  rB   rB   )r5   r   tupler   shape)r9   r   r%  r   s       r   test_tuple_subclassz TestIndexing.test_tuple_subclass  sb    ggfo	E 	qc
e$E
  D()EF!!T)*r   c                      G d d      }t        j                  d      }t        | |          | |       f          t        j                  dddg      }t        | |          | |       f          y )Nc                       e Zd Zd Zd Zd Zy)DTestIndexing.test_broken_sequence_not_nd_index.<locals>.SequenceLikec                      yr  r   r  s    r   r  zNTestIndexing.test_broken_sequence_not_nd_index.<locals>.SequenceLike.__index__  r  r   c                      y)NrB   r   r  s    r   __len__zLTestIndexing.test_broken_sequence_not_nd_index.<locals>.SequenceLike.__len__  r  r   c                     t        d      )NzNot possible)r7   )r9   items     r   r   zPTestIndexing.test_broken_sequence_not_nd_index.<locals>.SequenceLike.__getitem__  s     00r   N)r   r   r   r  r0  r   r   r   r   SequenceLiker-    s    1r   r3  rw   r'  )f1i8)f2r5  ro   )r5   r{   r	   rq   )r9   r3  r   s      r   !test_broken_sequence_not_nd_indexz.TestIndexing.test_broken_sequence_not_nd_index  sf    	1 	1 iim3|~.LNO0DE hhtL,#?@3|~.LNO0DEr   c                    t        j                  d      }t        j                  d      }t        j                  d      d d d d d f   }t        j                  |d      }t	        ||   ||j                                   t        j                  dt         j                        }t	        |||f   ||j                         |f          y )Nrw   )rw   r>   )rw   7   rS   rS   rS   ro   )r5   r   r{   broadcast_tor	   r   rq   r   )r9   r  x2r   zinds        r   !test_indexing_array_weird_stridesz.TestIndexing.test_indexing_array_weird_strides  s     GGBKWWWiimAtT4/0ooc>2 	1S61SXXZ=1xx)2c4i="SXXZ-=*>?r   c                     t        j                  d      }|d d dd d df   }t        d       g df}d||<   t        |d       y )Nr   r   r   rB   r>   rd   rw   g      $@)r5   rq   r   r	   )r9   arror   slicess       r   $test_indexing_array_negative_stridesz1TestIndexing.test_indexing_array_negative_strides  sI     xx4R42:+|,F3$r   c                     t        j                  dd      }t        j                  d      |d<   t        |d   t        j                  dd             |d   dk(  sJ y )N)rB   r   r   ro   asdfgr   r   rB      s)r5   rq   str_r	   r6   )r9   r   s     r   test_character_assignmentz&TestIndexing.test_character_assignment  sQ     hhvS)!A3q6288G3#?@4yD   r   r   TFr   numr   (   original_ndimrB   c                    t        j                  d|z        }t        j                  t              5  ||f|z      d d d        t        j                  t              5  d||f|z  <   d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)Nr'  rL   )r5   r   pytestraisesr7   )r9   r   rI  rK  r   s        r   test_too_many_advanced_indicesz+TestIndexing.test_too_many_advanced_indices(  sj     ggd]*+]]:&3 ']]:&"$C3 '& '&&&s   
A0
A<0A9<Bzno threading)reasonc                   	 ddl m} t        j                  dg      }t        j                  d|fgdz        }t        j                  d|fgdz        }t        j                  j                  d      j                  |      d d df   }t        j                  j                         		fd} |d	
      }t        d      D cg c]  }|j                  ||       }}|D ]  }|j                           |j                  |u sJ y c c}w )Nr   )ThreadPoolExecutor) f8rS  r>   )p  r   )r  c                 h    j                  dt        |       dt        j                        }| |    y )Nr   rU  )r  rp   )integerslenr5   r   )r   r   rngs     r   funcz<TestIndexing.test_structured_advanced_indexing.<locals>.funcD  s(    <<3s8$bgg<FDIr   r   )max_workersrw   )concurrent.futuresrR  r5   rp   randomuniformr   default_rngrangesubmitresult)
r9   rR  dtr   rZ  tpe_futuresr   rY  s
            @r   !test_structured_advanced_indexingz.TestIndexing.test_structured_advanced_indexing6  s     	: XXzl#XXBxj1n%XXBxj1n%iiY/44R8A>ii##%	 !Q/27)<)Q3::dC()<AHHJ  yyB	 =s   Dc                 B   t        j                  d      j                  d      }t        |ddg   t        j                  |d   |d   g             t        |ddgddgf   t        j                  ddg             t        t        |j                  t        d       g       y )Nrz   r   r   rB   r   )	r5   r{   r~   r   r6   r   r7   r   r   r8   s     r   test_nontuple_ndindexz"TestIndexing.test_nontuple_ndindexO  s    IIbM!!&)Q1vY!A$! 67Q1v1v~&!Q(89j!--%+?r   N)3r   r   r   r:   r]   ra   rg   rl   ru   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*  r7  r=  rB  rH  rM  markparametrizer5   r6   rO  skipifr   rg  ri  r   r   r   r   r      sk   :43>3/,/E(40:7I(
7*%&+#")	H
=I
	9# *!&	, ;DG ,
+F0@%! [[W5("((A3-(*[[URH-[[_q"g6% 7 .*% [[7 80@r   r   c                       e Zd Zd Zy)TestFieldIndexingc                     t        j                  ddg      }t        t        |d   t         j                               t        t        |dg   t         j                               y )Nr   )r   rT  r   )r5   rq   r   rj   rs   r8   s     r   r  z)TestFieldIndexing.test_scalar_return_typeW  sF     HHR*&
1S62::./
1cU8RZZ01r   N)r   r   r   r  r   r   r   rn  rn  V  s    2r   rn  c            	           e Zd Zd Zd Zd Zd Zej                  j                  ddddg e
d	      fd
dgdd
fdddgddgfg      d        Zd Zd Zy	)TestBroadcastedAssignmentsc                     |||<   |S r`   r   )r9   r   r   vals       r   assignz!TestBroadcastedAssignments.assign`  s    #r   c                    t        j                  d      }t        j                  d      |d<   t        j                  d      |g dd d f<   t        j                  d      |d d ddgf<   t        j                  d      |dgdgdggddgf<   y )N)rd   r>   )rB   rd   r>   .r   r   rB   r>   )r5   rq   r   r8   s     r   test_prepending_onesz/TestBroadcastedAssignments.test_prepending_onesd  sz    HHV##''),)Q,wwy)!aV)%'WWY%7A3aS/Aq6
!"r   c           	      l   | j                   }t        j                  }t        j                  d      }t	        t
        |||d   t        j                  d             t	        t
        |||g df   t        j                  d             t	        t
        |||dgdggf   t        j                  d             y )Nr   .r>   rB   rc   rB   r>   )r>   r>   rB   )rt  r5   s_rq   r   r   r   r9   rt  ry  r   s       r   test_prepend_not_onez/TestBroadcastedAssignments.test_prepend_not_onen  s    UUHHQK 	j&!RWrwwvGj&!R	
^RWWV_Mj&!R!qc
_bggg>NOr   c           	         | j                   }t        j                  }t        j                  d      }t	        t
        |||d   t        j                  d             t	        t
        |||d   t        j                  d             t	        t
        |||d d dgf   t        j                  d             t	        t
        |||d d dgf   t        j                  d             t	        t
        |||dgd d f   t        j                  d             y )N)r   rB   .r   )r   r   r   rx  )rt  r5   ry  rq   r   r   rz  s       r   test_simple_broadcasting_errorsz:TestBroadcastedAssignments.test_simple_broadcasting_errorsx  s    UUHHVj&!RWbhhv6FGj&!RWbhhv6FGj&!RA3Z&9IJj&!RA3Z&9IJj&!RQZ&9IJr   r   .rB   r>   Nr   c                 Z   t        j                  d      }t        j                  d      }t        ||   j                        j	                  dd      }t        j                  t              5 }|||<   d d d        t        j                        j                  |      sJ y # 1 sw Y   0xY w)Nr   r   )rd   rS   r   r   r    rS  )
r5   rq   strr)  replacerM  rN  r   valueendswith)r9   r   valuesr   	shape_stres         r   *test_broadcast_error_reports_correct_shapezETestBroadcastedAssignments.test_broadcast_error_reports_correct_shape  s    
 *%hh'E
(()11#r:	]]:&!CJ ' 177|$$Y/// '&s   ,B!!B*c                     t        j                  d      }g d|dgdgdggg df<   t        |d dd df   g dk(  j                                y )Nr   r>   rd   rS   r   rB   r>   r   rd   )r5   rq   r   r   r8   s     r   test_index_is_largerz/TestBroadcastedAssignments.test_index_is_larger  sQ    HHV(1A3aS/9
$%2A2rr6i',,./r   c                     t        j                  d      }t        j                  d      d d d f   }t        j                  d      d d d   }|||<   t        |d d d   |k(  j	                                y )Nr  r   r   )r5   rq   r{   r   r   )r9   r   r   r   s       r   test_broadcast_subspacez2TestBroadcastedAssignments.test_broadcast_subspace  sb    HHZ IIcN1T6"IIcN4R4 !4R4A""$%r   )r   r   r   rt  rv  r{  r}  rM  rj  rk  r   r  r  r  r   r   r   rq  rq  _  s~    8P	K [[W1a&%+&VS!1a&1a&!'# $
0	$
00&r   rq  c                       e Zd Zd Zd Zd Zy)TestSubclassesc                 B    G d dt         j                        }t        j                  d      }|j                  |      }|d d }t	        t        |      |u        t	        |j                  |u        t        ||d d        |g d   }t	        t        |      |u        t	        |j                  |u       t	        t        |j                        t         j                  u        t        ||g d          t        |j                  |g d          ||dkD     }t	        t        |      |u        t	        |j                  |u       t	        t        |j                        t         j                  u        t        |||dkD            t        |j                  ||dkD            y )Nc                       e Zd Zy)+TestSubclasses.test_basic.<locals>.SubClassNr$  r   r   r   r   r    r&  r   r   r   rd   r   r   )r5   rs   r{   r   r   rr   ri   r	   )r9   r   r   rt   s_slices_fancys_bools          r   
test_basiczTestSubclasses.test_basic  sB   
	rzz 	 IIaLFF8BQ%W)*!"7AbqE*I,W)*A%&W\\"bjj017AiL17<<961q5V()1$%V[[!RZZ/061QU8,6;;!a%1r   c                      G d dt         j                        }t        j                  d      }|j                  |      }d|j                  _        |g d   }t        |j                  j
                         y )Nc                       e Zd Zy)8TestSubclasses.test_fancy_on_read_only.<locals>.SubClassNr$  r   r   r   r   r    r&  r   r   r   Fr   )r5   rs   r{   r   r   r   r   )r9   r   r   rt   r  s        r   test_fancy_on_read_onlyz&TestSubclasses.test_fancy_on_read_only  sV    	rzz 	 IIaLFF8!I,''(r   c                     G d dt         j                        }t        j                  d      j                  |      }|d d }t	        |j
                  |       t	        |j                  |       |g d   }t	        |j
                  |       t	        |j                  |       ||dkD     }t	        |j
                  |       t	        |j                  |       y )Nc                       e Zd Zd Zy)=TestSubclasses.test_finalize_gets_full_info.<locals>.SubClassc                 F    t        j                  |       | _        || _        y r`   )r5   r6   finalize_statusr   r   s     r   r   zPTestSubclasses.test_finalize_gets_full_info.<locals>.SubClass.__array_finalize__  s    ')xx~$r   Nr   r   r   r   r   r    s    r   r   rw   rd   r?  r   )r5   rs   r{   r   r	   r  r   )r9   r   rt   new_ss       r   test_finalize_gets_full_infoz+TestSubclasses.test_finalize_gets_full_info  s    	rzz 	
 IIbMx("1500%8599a()500%8599a(!a%500%8599a(r   N)r   r   r   r  r  r  r   r   r   r  r    s    2:
))r   r  c                       e Zd Zd Zy)TestFancyIndexingCastc                    d}t        j                  |      j                  t              }d|d<   t        j                  |      }t        j                  dg      ||<   t        |d   d       t        t         j                  |j                  dgdgft        j                  dg             t        |d   d       t        t         j                  |j                  |t        j                  dg             t        |d   d       y )	N)r   ?   TrE  rB   r   y       @      ?r>   y              ?)	r5   rq   r|   r   r6   r   r
   ComplexWarningr   )r9   r)  
bool_index
zero_arrays       r   test_boolean_index_cast_assignz4TestFancyIndexingCast.test_boolean_index_cast_assign  s    XXe_++D1

4XXe_
 "$1#
:Z%q) 	R&&++qcA3Z6(9K	MZ%q) 	R&&++Z2$	IZ%q)r   N)r   r   r   r  r   r   r   r  r    s    *r   r  c                       e Zd Zd Zd Zy)TestFancyIndexingEquivalencec                 |   t        j                  dt              }|j                         }g d|d d g d|g d<   t	        ||       t        j                  dt              d d d f   }g dg|dgd df<   t	        ||d          |j
                  }dgdgdgg|d ddgf<   t	        ||d d df          t        j                  d	t              }|j                         }dgd
gdgdggg|d ddf<   dgd
gdgdggg|dgdf<   t	        ||       |j                  d      }dgd
gdgdggg|dgdf<   t	        ||       y )Nr   ro   )rB   rB   r>   rd   rd   r   r   rB   r  )rd   rS   r   r>   rS   .F)r5   r{   r   r   r	   r   r   )r9   r   r   r   cmp_arrs        r   test_object_assignz/TestFancyIndexingEquivalence.test_object_assign  sb    IIav&FFH"1$)1a  IIav&tQw/#_1#rr'
1ad#
 CCcE7QC("1"qc'
1a1g& ggiv.((*S1#sQC01C#sQC!-.QCH3(hhsm#sQC!-.QCH3(r   c                 h   t        j                  d      }|j                         }t        j                  g d      |d d t        j                  g d      |g d<   t	        ||       t        j                  d      d d d f   }t        j                  g dg      |dgd df<   t	        ||d          y )Nr   )2-3-1rd   )r  r  r  )r   r>   rB   r   )r5   r{   r   r6   r	   r   s      r   test_cast_equivalencez2TestFancyIndexingEquivalence.test_cast_equivalence  s    IIaLFFH*+"1xx 12)1a  IIaLq!XX0121#rr'
1ad#r   N)r   r   r   r  r  r   r   r   r  r    s    )@$r   r  c                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestMultiIndexingAutomateda:  
    These tests use code to mimic the C-Code indexing for selection.

    NOTE:

        * This still lacks tests for complex item setting.
        * If you change behavior of indexing, you might want to modify
          these tests to try more combinations.
        * Behavior was written to match numpy version 1.8. (though a
          first version matched 1.7.)
        * Only tuple indices are supported by the mimicking code.
          (and tested as of writing this)
        * Error types should match most of the time as long as there
          is only one error. For multiple errors, what gets raised
          will usually not be the same one. They are *not* tested.

    Update 2016-11-30: It is probably not worth maintaining this test
    indefinitely and it can be dropped if maintenance becomes a burden.

    c                    t        j                  t        j                  g d            j                  dddd      | _        t        j
                  d      | _        dt        dt        j                  g d	      t        j                  d
dgdd
gg      t        j                  ddgddggg      t        ddd      t        ddd      t        ddd      t        d d d      t        j
                  dt         j                        t        j                  g d      t        j                  dgdgdgg      t        j                  ddgddggt        j                  d      j                               t        j                  ddgt         j                        t        j                  dgdz  t              t        j                  ddg      g| _        t        d ddgt        j                  d
g      dg| _        t        d d       dg| _        y )N)rd   rB   r   r   rd   rB   r   r   )rd   r   r   r   skipr   )TFFTFr>   r   rS   r   )r   rB   rB   ro   )r   rB   r  r      r   rL   )r5   r{   prodr~   r   emptyr   r   r6   r   r   rp   newbyteorderr  rq   intcomplex_indicessimple_indicesfill_indicesr  s    r   setup_methodz'TestMultiIndexingAutomated.setup_method>  s   277<0199!Q1E,' & HH)*HHtUmeT]34HHu~u~678"aO!Q!R$b!HHYbgg.HHZ HHqcA3_%HHq"g1v&bhhv.>.K.K.MNHHaWBGG,HHaSV3'HHb"X'  *  (rA3$8H%' #4.2r   c                    t        |      }g }d}d}d}d}d}d}	t        |      D ]3  \  }
}|
t        |t        j                        rI|j
                  t        k(  r6d}|j                  dk(  rt        ||j                  z  }||j                  z  }m|t        u r|	|
}	zt        t        |t              r|dz  }t        |t        j                        s,	 t        j                  |t        j                        }|||
<   n=|j
                  j                  dk7  r$|j
                  j                  dk7  rt        d	      |j                  dk7  rd}|dz  }|dz  }6 |j                  |z
  dk  rt        |dk(  rd|vr|j                         |fS |	#t        dd      g|j                  |z
  z  ||	|	dz    t        |      D ]  \  }}t        |t              rBt        j                   |j#                  |j$                  |          }|j'                  d
|g       Y|i|j'                  dt        j                  dgt        j                        g       |j)                  |j$                  d| dz   |j$                  |d z         }t        |t        j                        r|j
                  t        k(  r|j$                  |j$                  |||j                  z    k7  rt        	 t        j*                  t        j,                  |      |j$                  |||j                  z    d      }|j                  dk7  ro|j)                  |j$                  d| t        j2                  |j$                  |||j                  z          fz   |j$                  ||j                  z   d z         }|}n@t        |j                  dk(  r+||j$                  |   k\  s||j$                  |    k  rt        |j                  dk(  r+||j$                  |   k\  s||j$                  |    k  rt        t5        |      dkD  r&|d   d   dk(  r||	k7  r|d   j'                  |       |dz  }|j'                  d|g        |dkD  r|s|dd }t        t7        |j                              }g }|j9                  ddg       d}d}|D ]  }|dz  }|d   dk(  ra|d   j;                  |dd        ||= |dz  }t7        ||t5        |dd       z         D ]$  }|j'                  |       |j=                  |       & |t5        |      dz
  z  } |} |j>                  ||z    }d}|D ])  }|d   dk(  rt5        |      dk(  r|j$                  }|||t5        |dd       z    }|j)                  |j$                  d| t        j2                  |      jA                  tB              fz   |j$                  |t5        |dd       z   d z         }t        jD                  |dd  }|jF                  dk7  rf|rt        tI        |dd |      D ]L  \  }}|jF                  dk(  rt        jJ                  ||k\        st        jJ                  || k        sHt         t5        |dd       t5        |      k(  rQt        j2                  |      dk(  r	 t        j*                  |dd |d      }n"t        j*                  |dd |d      }nt        |jM                  |jO                         |      }	 |j)                  |j$                  d| |j$                  z   |j$                  |dz   d z         }||j                  z  }|jM                  |d   |      }|dz  }, ||fS # t        $ r t        w xY w# t.        $ r= d}t        j                  dg|j1                         z  t        j                        }Y w xY w# t.        $ r t        d      w xY w# t        $ r t        w xY w)a  Mimic multi dimensional indexing.

        Parameters
        ----------
        arr : ndarray
            Array to be indexed.
        indices : tuple of index objects

        Returns
        -------
        out : ndarray
            An array equivalent to the indexing operation (but always a copy).
            `arr[indices]` should be identical.
        no_copy : bool
            Whether the indexing operation requires a copy. If this is `True`,
            `np.may_share_memory(arr, arr[indices])` should be `True` (with
            some exceptions for scalars and possibly 0-d arrays).

        Notes
        -----
        While the function may mostly match the errors of normal indexing this
        is generally not the case.
        Tr   FNrB   ro   r   r   z;arrays used as indices must be of integer (or boolean) typert   nr'  raise)moder   r   zinvalid index into 0-sizedwraprx   )(list	enumeraterj   r5   rs   rp   r   rf   r7   r   r   r6   r   r   kindr   r{   indicesr)  appendr~   ravel_multi_indexnonzero	Exceptionsumr  rX  r`  insertextendremove	transposer|   r  	broadcastr  zipanytakeravel)r9   r   r  
in_indicesno_copy	num_fancy	fancy_dimerror_unless_broadcast_to_emptyrf   ellipsis_posr   r   ax	flat_indxnew_indicesaxes
fancy_axesniai
orig_shape
orig_slicer   _indx_sizemis                            r   _get_multi_indexz+TestMultiIndexingAutomated._get_multi_index[  s   0 ']
		
 +0'  ,GAt|$

+

d0B99>$$		!TYY&	x'#$L  $&	dBJJ/%88D8D !%
1C'DJJOOs,B  "= > >yyA~AIDNII -L 88d?Q
 19Z/88:w&&#8=dD8I7J8;48IJ|LN3 "*-HB$&yy$,,syy}"=>T{+RXXqc%ABCkk399Sb>D#8399RS>#IK$

+

d0B::2bl!;;$$H " 4 4RZZ5E$'IIbDII$>W!NI 99>++syy"~%'WWSYYr"TYY,-G%H$J(K$'IIblm$<(= ?C %D %$ 99>syy},		"~0E((yyA~
 399R=(DSYYr]?,B$$Gq BKNc),& ""4( Q	T{+w .z q=!!*Kchh(DJq3%(BBa7c>N))$qr(3#B!GB#BSab](:;"))"-B < c$i!m#   "G#--*t"35C DAw#~t9> YY
'2DH+=>
kk399Sb>')wwz':'A'A#'F&H$I&)iiSab]0B0C&D$E G
 llDH- 88q=6(((+DHj(Au ::?$66%5.1RVVEUFN5K&0 0	 )B
 tABx=C
O3wwz*a/K!#!5!5d12h
;B"DB  11$qr(J7=? %$hhrxxzh3%++syy"~*,(((3*-))BqDE*:(; =C bgg ((47(,C!GBm p G|Q " %$$%X ! H6:3 "!TXXZrww GIHF  ) K #--I"JJK " %$$%s8   %]?!A^._>_3?^A___03`c                    	 | j                  ||      \  }}| j                  ||||       y# t        $ r}t        rt        j                  |      }t        t        |      |j                  |       t        t        |      |j                  |d       t        rt        t        j                  |             Y d}~yd}~ww xY w)a   Check a multi index item getting and simple setting.

        Parameters
        ----------
        arr : ndarray
            Array to be indexed, must be a reshaped arange.
        index : tuple of indexing objects
            Index being tested.
        r   Nr  r  r   r  r  r   rr   r   r   r   _compare_index_resultr9   r   r   	mimic_getr  r  prev_refcounts          r   _check_multi_indexz-TestMultiIndexingAutomated._check_multi_indexJ  s    		!%!6!6sE!BIw 	""3y'B  	 # 4$q'3??E:$q'3??E1=]COOC,@A	s   , 	C BB;;C c                    	 | j                  ||f      \  }}| j                  ||||       y# t        $ r}t        rt        j                  |      }t        t        |      |j                  |       t        t        |      |j                  |d       t        rt        t        j                  |             Y d}~yd}~ww xY w)aW  Check a single index item getting and simple setting.

        Parameters
        ----------
        arr : ndarray
            Array to be indexed, must be an arange.
        index : indexing object
            Index being tested. Must be a single index and not a tuple
            of indexing objects (see also `_check_multi_index`).
        r   Nr  r  s          r   _check_single_indexz.TestMultiIndexingAutomated._check_single_indexb  s    		!%!6!6sUH!EIw 	""3y'B  	 # 4$q'3??E:$q'3??E1=]COOC,@A	s   - 	CBB<<Cc                 L   |j                         }||   }t        ||       |j                  dk7  rx|j                  dk7  rit	        t        j                  ||      |k(         t        rA|r t        t        j                  |      d       nt        t        j                  |      d       |j                         }|dz   ||<   |j                  dk(  ry|r!|j                  dk7  r|dz  }t        ||       y|j                  |j                         xx   dz  cc<   t        ||       y)z4Compare mimicked result to indexing result.
        r   rd   r>   r   N)r   r	   r  rf   r   r5   may_share_memoryr   r   r  r  flatr  )r9   r   r   r  r  indexed_arrr   s          r   r  z0TestMultiIndexingAutomated._compare_index_resultz  s     hhj%j;	2 q [%5%5%:B''S9WDE !5q9 !5q9 HHJt#%66Q;{''1,4KsA&""$%-%3"r   c                 F   t        j                  d      }t        |t        j                  d         d       d|t        j                  d      <   t        |d       | j                  | j                  t        j
                  | j                  t              f       | j                  | j                  t        j
                  | j                  t              d   f       | j                  | j                  t        j
                  | j                  t              d   f       y )Nr   TrB   ro   r   )N.)r5   r6   r   r  r   
zeros_liker   r8   s     r   test_booleanz'TestMultiIndexingAutomated.test_boolean  s    HHQKQrxx~&*"((4.Q 	FFR]]46668	:FFR]]4666v>@	BFFR]]4666yAC	Er   c           	         t        j                         5  t        j                  ddt               t        j                  ddt        j
                         d dD ]  }| j                  | j                  | j                  | j                  g}| j                  ||<   t        | D ]N  }t        fd|D              }| j                  | j                  |       | j                  | j                  |       P  	 d d d        | j                  | j                  d       | j                  | j                  d       t        t        | j                  j                   d       t        t        | j                  j"                  dd       t        t        | j                  j                   ddd	gddf       t        t        | j                  j"                  ddd	gddfd       y # 1 sw Y   xY w)
NerrorrS  c                 0    t        | t              xr | dk(  S )Nr  )rj   r  )r   s    r   isskipz8TestMultiIndexingAutomated.test_multidim.<locals>.isskip  s    !#s+=v=r   )r   r>   rd   c              3   4   K   | ]  } |      r|  y wr`   r   ).0r   r  s     r   	<genexpr>z;TestMultiIndexingAutomated.test_multidim.<locals>.<genexpr>  s     !DU&)!Us   )r   r   r   r   )r   r   r   r   r   r   rB   )warningscatch_warningsfilterwarningsDeprecationWarningr5   VisibleDeprecationWarningr  r  r  r   r(  r  r   r   r   r7   r   r   )r9   
simple_postocheckr   r  s       @r   test_multidimz(TestMultiIndexingAutomated.test_multidim  s~    $$& ##GR1CD##GR1M1MN> (
,,d.B.B,,d.?.?A&*&9&9
#$g.E!!DU!DDE++DFFE:++DFFE: /	 ( '& 	55j$&&"4"4oFj$&&"4"4oqIj$&&"4"4q!aS!Q6GHj$&&"4"4q!aS!Q6GK3 '&s   C!GG$c                 t    t        j                  d      }| j                  D ]  }| j                  ||        y )Nrw   )r5   r{   r  r  )r9   r   r   s      r   test_1dz"TestMultiIndexingAutomated.test_1d  s/    IIbM))E$$Q. *r   N)r   r   r   __doc__r  r  r  r  r  r  r  r  r   r   r   r  r  (  s6    *3:m^C0C0#@E"L</r   r  c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)TestFloatNonIntegerArgumentz
    These test that ``TypeError`` is raised when you try to use
    non-integers as arguments to for indexing and slicing e.g. ``a[0.0:5]``
    and ``a[0.5]``, or other functions like ``array.reshape(1., -1)``.

    c                     t        j                  dggg      }|t        j                  dg          |ddg    |d d ddgf    |d d dd d f    |d d d d d d f    y )Nr   r   r	  r8   s     r   test_valid_indexingz/TestFloatNonIntegerArgument.test_valid_indexing  s\    HHseW	"((A3-	1a&		!aV)	!Qq&		!Aa%r   c                     t        j                  dggg      }|d d   |dd   |d d  |dd  |d d d    |dd d    |d dd    |ddd    y )Nr   r   r>   rB   r	  r8   s     r   test_valid_slicingz.TestFloatNonIntegerArgument.test_valid_slicing  sj    HHseW	"	!"	"1	!A	#A#	!$Q$	$1Q$	!Aa%r   c           	         t        j                  dgg      }t        t        t         j                  |d       t        t        t         j                  |t        j                  d      df       t        t        t         j
                  |dgd       t        t        t         j
                  |dgt        j                  d             y )Nr   )rL   rL   r   rL   r   r   )r5   r6   r   r\   r~   r  r   r8   s     r    test_non_integer_argument_errorsz<TestFloatNonIntegerArgument.test_non_integer_argument_errors  sx    HHqcUOiQ=iQ"r0BCi!aS"5i!aS"**R.Ar   c                     d }t        t        |dgt        j                  d              |dgt        j                  d             y )Nc                     | |z  S r`   r   )r   r   s     r   multzRTestFloatNonIntegerArgument.test_non_integer_sequence_multiplication.<locals>.mult  s    q5Lr   rB   rd   )r   r\   r5   r  rk   )r9   r  s     r   (test_non_integer_sequence_multiplicationzDTestFloatNonIntegerArgument.test_non_integer_sequence_multiplication  s5    	 	isBIIaL9aS"''!*r   c                 .   t        j                  d      }t        t        t         j                  |d       t        t        t         j                  |d       t        t        t         j                  |d       t        t        t         j                  |d       y )N)rd   rd   rd         ?)r  rB   )rB   g@)g?g333333?)r5   rq   r   r\   min)r9   r   s     r   test_reduce_axis_float_indexz8TestFloatNonIntegerArgument.test_reduce_axis_float_index  sX    HHWiC0iH5iH5iI6r   N)	r   r   r   r  r  r  r  r  r!  r   r   r   r  r    s!    B7r   r  c                       e Zd Zd Zd Zd Zy)TestBooleanIndexingc                    t        j                  dggg      }t        t        t         j                  |d       t        t        t         j                  |t        j
                  d      df       t        t        t        j                  t        j                  d             t        t        t        j                  t         j                         t        t        t         j                  |dgdf       y )NrB   )Tr   Tr   r   F)args)r5   r6   r   r\   r~   r   operatorr   r
   r
  True_r  r8   s     r    test_bool_as_int_argument_errorsz4TestBooleanIndexing.test_bool_as_int_argument_errors  s    HHseWiQ
;iQ$0DE 	i$@'BiA3?r   c                     t        j                  d      d   j                  dk(  sJ dddgdddgdggf   j                  dk(  sJ t        t        fd	       y )
Nr  )FT.)r   r>   rd   rS   Tr   rB   r>   r  c                       dddgdf   S )NFr   rB   .r   r   s   r   r   zETestBooleanIndexing.test_boolean_indexing_weirdness.<locals>.<lambda>  s    !EAq63,>*?r   )r5   r   r)  r   r7   r8   s    @r   test_boolean_indexing_weirdnessz3TestBooleanIndexing.test_boolean_indexing_weirdness  sf    GGI!"((L8881vtTA3!56<<FFFj"?@r   c                    t        j                  d      t        j                  dgdz  g      t        t        dfd       t        j                  dgdz  dgz   g      t        t        dfd       t        j                  dgd	z  g      t        t        dfd
       t        j                  d      t        j                  dgdggg      t        t        dfd       y )N)rd   rd   Fr   ztboolean index did not match indexed array along dimension 0; dimension is 3 but corresponding boolean dimension is 1c                          S r`   r   )r   idx1s   r   r   zETestBooleanIndexing.test_boolean_indexing_fast_path.<locals>.<lambda>#  	    AdGr   r   Tc                          S r`   r   )r   idx2s   r   r   zETestBooleanIndexing.test_boolean_indexing_fast_path.<locals>.<lambda>*  r/  r   rw   c                          S r`   r   )r   idx3s   r   r   zETestBooleanIndexing.test_boolean_indexing_fast_path.<locals>.<lambda>1  r/  r   )rB   rB   r>   ztboolean index did not match indexed array along dimension 1; dimension is 1 but corresponding boolean dimension is 2c                          S r`   r   )r   r   s   r   r   zETestBooleanIndexing.test_boolean_indexing_fast_path.<locals>.<lambda>9  s	    AcFr   )r5   r   r6   r   r7   )r9   r   r   r.  r1  r3  s    @@@@@r   test_boolean_indexing_fast_pathz3TestBooleanIndexing.test_boolean_indexing_fast_path  s     GGFO xx%$JF	 xx%dV+,-JF	 xx%%JF	 GGIhh$%)*+JF	r   N)r   r   r   r(  r+  r5  r   r   r   r#  r#    s    	@A r   r#  c                       e Zd ZdZd Zy)TestArrayToIndexDeprecationz7Creating an index from array not 0-D is an error.

    c                 "   t        j                  dggg      }t        t        t        j
                  t        j                  dg             t        t        t         j                  ||df       t        t        t         j                  |dg|       y )NrB   r   r   )r5   r6   r   r\   r&  r   r~   r  r8   s     r   test_array_to_index_errorz5TestArrayToIndexDeprecation.test_array_to_index_error@  s\    HHseWi1#?iQB8i!aS!4r   N)r   r   r   r  r9  r   r   r   r7  r7  <  s    5r   r7  c                       e Zd ZdZd Zy)TestNonIntegerArrayLikezTests that array_likes only valid if can safely cast to integer.

    For instance, lists give IndexError when they cannot be safely cast to
    an integer.

    c                     t        j                  d      }t        t        |j                  ddg       t        t        |j                  ddgf       |j	                  g        y )Nrw   r  g      ?1r  )r5   r{   r   r7   r   r8   s     r   r  z"TestNonIntegerArrayLike.test_basicP  sG    IIbMj!--#s<j!--3*? 	
br   Nr   r   r   r  r  r   r   r   r;  r;  I  s    r   r;  c                       e Zd ZdZd Zy)TestMultipleEllipsisErrorz/An index can only have a single ellipsis.

    c                     t        j                  d      t        t        fd       t        t        j                  t
        fdz  f       t        t        j                  t
        fdz  f       y )Nrw   c                       d   S )N)..r   r   s   r   r   z6TestMultipleEllipsisError.test_basic.<locals>.<lambda>`  s	    !H+r   r>   rd   )r5   r{   r   r7   r   r   r8   s    @r   r  z$TestMultipleEllipsisError.test_basic^  sM    IIbMj"56j!--8+/1CDj!--8+/1CDr   Nr>  r   r   r   r@  r@  Z  s    Er   r@  c                       e Zd Zd Zd Zy)TestCApiAccessc                 P   t        j                  t        d      }t        t        |t        j                  d      d       t        t        |t        j                  d      d       t        t        |t        j                  d      d       t        t        |t        j                  d      d       t        t        |t        j                  d      d       t        j                  d      }t        |d    ||d             |j                  dd	      }t        |d
    ||d
             y )Nr   r   rw   r   rw   rw   rS   r   r>   )
	functoolspartialr   r   r7   r5   r   r{   r	   r~   )r9   	subscriptr   s      r   test_getitemzTestCApiAccess.test_getitemf  s    %%na8	 	j)RWWR[!<j)RWWR["=j)RWWR[#>j)RWWX->Cj)RWWX->DIIbM1Q41a1IIaO1R5)Ar"23r   c                    t        j                  t        d      }t        t        |t        j                  d      d       t        t        |t        j                  d      dd       t        t        |t        j                  d      dd       t        t        |t        j                  d      dd       t        t        |t        j                  d      dd       t        t        |t        j                  d      dd       t        j                  d      } ||dd       t        |d   dk(         |j                  d	d
      } ||dd       t        |d   ddg       y )NrB   rw   r   r   r   rF  rG  rS   r   r>   r   )rI  rJ  r   r   r   r5   r   r7   r{   r   r~   r	   )r9   rt  r   s      r   test_setitemzTestCApiAccess.test_setitemv  s    "">15 	j&"''"+q9j&"''"+q!<j&"''"+r1=j&"''"+sA>j&"''(*;RCj&"''(*;S!DIIbMq!R!
IIaOq!R1R52r(+r   N)r   r   r   rL  rN  r   r   r   rD  rD  e  s    4 ,r   rD  )!r  r  rI  r&  rM  numpyr5   numpy.core._multiarray_testsr   	itertoolsr   numpy.testingr   r   r   r   r	   r
   r   r   r   rn  rq  r  r  r  r  r  r#  r7  r;  r@  rD  r   r   r   <module>rS     s    
      7   B	@ B	@J2 2@& @&F=) =)@* *,-$ -$`d/ d/L47 47n4 4n
5 
5 "E E$, $,r   