
    xKge                        d dl mZ d dlmZ d dlZd dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZmZ d dlmZmZ dd	iZd	d	d
Zd Ze	d        Ze	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$e	d        Z%e	d        Z&e	d        Z'd Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z.e	d0d$       Z/d% Z0d& Z1d1d'Z2d( Z3d) Z4d* Z5d+ Z6d, Z7 G d- d.ee      Z8e9d/k(  r ejt                          yy)2    )partial)permutationsN)jitnjit
from_dtypetypeof)TypingError)typeserrors)TestCaseMemoryLeakMixinforceobjT)_nrtnopythonc                       fd}|S )aP  Decorator for generic check functions.
        Iterates over 'pyfuncs_to_use', calling 'func' with the iterated
        item as first argument. Example:

        @from_generic(numpy_array_reshape, array_reshape)
        def check_only_shape(pyfunc, arr, shape, expected_shape):
            # Only check Numba result to avoid Numpy bugs
            self.memory_leak_setup()
            got = generic_run(pyfunc, arr, shape)
            self.assertEqual(got.shape, expected_shape)
            self.assertEqual(got.size, arr.size)
            del got
            self.memory_leak_teardown()
    c                       fd}|S )Nc                  B    D cg c]  } |g| i | c}S c c}w N )argskwargspyfuncfuncpyfuncs_to_uses      g/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_array_manipulation.pyresultz/from_generic.<locals>.decorator.<locals>.result!   s*    @NOfD1$1&1OOOs   r   )r   r   r   s   ` r   	decoratorzfrom_generic.<locals>.decorator    s    	P    r   )r   r   s   ` r   from_genericr      s     r   c                 $    | j                  |      S r   )reshapearrnewshapes     r   array_reshaper%   '   s    ;;x  r   c                 .    t        j                  | |      S r   )npr!   r"   s     r   numpy_array_reshaper(   +   s    ::c8$$r   c                 .    t        j                  | |      S r   r'   broadcast_to)r#   shapes     r   numpy_broadcast_tor-   0   s    ??3&&r   c                  &    t        j                  |  S r   )r'   broadcast_shapesr   s    r   numpy_broadcast_shapesr1   4       %%r   c                  &    t        j                  |  S r   )r'   broadcast_arraysr0   s    r   numpy_broadcast_arraysr5   8   r2   r   c                 4    t        j                  | |      |   S r   r*   )r#   r,   idxs      r   numpy_broadcast_to_indexingr8   <   s    ??3&s++r   c                 "    | j                         S r   )flattenas    r   flatten_arrayr=   @       99;r   c                 "    | j                         S r   ravelr;   s    r   ravel_arrayrB   D   s    779r   c                 6    | j                         j                  S r   )rA   sizer;   s    r   ravel_array_sizerE   H   s    779>>r   c                 ,    t        j                  |       S r   )r'   rA   r;   s    r   numpy_ravel_arrayrG   L   s    88A;r   c                 "    | j                         S r   	transposer;   s    r   transpose_arrayrK   P   s    ;;=r   c                 ,    t        j                  |       S r   r'   rJ   r;   s    r   numpy_transpose_arrayrN   T   s    <<?r   c                 0    t        j                  | |      S N)axesrM   r#   rQ   s     r    numpy_transpose_array_axes_kwargrS   X   s    <<$''r   c                 L    t        j                  | |      j                         S rP   )r'   rJ   copyrR   s     r   %numpy_transpose_array_axes_kwarg_copyrV   ]   s    <<$',,..r   c                 $    | j                  |      S r   rI   rR   s     r   array_transpose_axesrX   b   s    ==r   c                 @    | j                  |      j                         S r   )rJ   rU   rR   s     r   array_transpose_axes_copyrZ   g   s    ==##%%r   c                 .   t        j                  t        j                  | |z  dz        | d|f      }t        j                  t        j                  |dz        |df      }||j                  z
  j                  }t        j                  |d      }|dz   }|S )N   )   r      r^   )r'   r!   arangeTrJ   )mnr1r2r_difzs         r   transpose_issue_4708rg   l   sy    	BIIa!eai(1a)	4B	BIIa!e$q!f	-B"$$YMMELL	*E	AHr   c                 "    | j                         S r   )squeezer;   s    r   squeeze_arrayrj   v   r>   r   c                 .    t        j                  | |      S r   )r'   expand_dims)r<   axiss     r   rl   rl   z   s    >>!T""r   c                  &    t        j                  |  S r   )r'   
atleast_1dr0   s    r   ro   ro   ~       ==$r   c                  &    t        j                  |  S r   )r'   
atleast_2dr0   s    r   rr   rr      rp   r   c                  &    t        j                  |  S r   )r'   
atleast_3dr0   s    r   rt   rt      rp   r   c                     | j                   d   dz  f| j                   dd  z   }t        j                  j                  j	                  | |      S )Nr   r]   r^   )strides)rv   r'   libstride_tricks
as_strided)r<   rv   s     r   as_strided1rz      sF    yy|q "QYYqr]2G66**1g*>>r   c                     d}| j                   d d | j                   d   |z
  dz   |fz   }| j                  | j                  d   fz   }t        j                  j                  j                  | ||      S )Nr\   r^   )r,   rv   )r,   rv   r'   rw   rx   ry   )r<   windowr,   rv   s       r   as_strided2r~      sm    FGGCRLAGGBK&014f==Eii199R=**G66**1E7*KKr   c                 Z    t         j                  j                  j                  | ||      S )N)rm   )r'   rw   rx   sliding_window_view)xwindow_shaperm   s      r   r   r      s$    6633A|$3OOr   c                 D    | j                   f}| j                  }d|||f<   y )N      ?)r   y)r#   arr2dr   r   s       r   	bad_indexr      s#    AAE!Q$Kr   c                     | d   S )N)r^   g       @r   r#   s    r   bad_float_indexr      s     v;r   c                 0    t        j                  | ||      S r   )r'   fill_diagonal)r#   valwraps      r   numpy_fill_diagonalr      s    Cd++r   c                 ,    t        j                  |       S r   )r'   r,   r   s    r   numpy_shaper      s    88C=r   c                 ,    t        j                  |       S r   )r'   rD   r   s    r   
numpy_sizer      s    773<r   c                 ,    t        j                  |       S r   )r'   flatnonzeror;   s    r   numpy_flatnonzeror      s    >>!r   c                 ,    t        j                  |       S r   )r'   argwherer;   s    r   numpy_argwherer      s    ;;q>r   c                 .    t        j                  | |      S r   )r'   resize)r<   	new_shapes     r   numpy_resizer      s    99Q	""r   c                      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edfdZd ZefdZefdZd Zd ZefdZd Zef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. Z0e1d/        Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAy?)@TestArrayManipulationz4
    Check shape-changing operations on arrays.
    c                    	 t         t        g}d 	t        |      	 fd       t        |      	 fd       t        |      	 fd       }t        |      	 fd       t        |      	 fd       }t        j                  d      } |d        |d	        |d
        |d        |d       t        j                  d      j                  d      } |d        |d	        |d
        |d        |d        |d        |d        |d       t        j                  d      j                  d      } |d        |d	        |d
        |d       t        j                  d      j                  d      j                  } |d        |d        ||d        ||d        ||d       t        j                  d      j                  dd      } |d        |d        |d        |d        |d        |d        ||d        ||d       fd}t        j                  g       } ||        ||j                  d               j                          y )!Nc                      | ||      S r   r   )r   r#   r,   s      r   generic_runz=TestArrayManipulation.test_array_reshape.<locals>.generic_run   s    #u%%r   c                     | j                  ||      }j                           | ||      }j                  ||       ~j                          y r   )py_funcmemory_leak_setupassertPreciseEqualmemory_leak_teardown)r   r#   r,   expectedgotr   selfs        r   checkz7TestArrayManipulation.test_array_reshape.<locals>.check   sL    ~~c51H""$fc51C##C2%%'r   c                     j                           | ||      }j                  |j                  |       j                  |j                  |j                         ~j	                          y r   )r   assertEqualr,   rD   r   )r   r#   r,   expected_shaper   r   r   s        r   check_only_shapezBTestArrayManipulation.test_array_reshape.<locals>.check_only_shape   sZ     ""$fc51CSYY7SXXsxx0%%'r   c                     j                  t              5 } | ||       d d d        j                  t        j                        d       y # 1 sw Y   /xY w)Nzincompatible shape for array)assertRaisesNotImplementedErrorr   str	exceptionr   r#   r,   raisesr   r   s       r   check_err_shapezATestArrayManipulation.test_array_reshape.<locals>.check_err_shape   sL    ""#676FC/ 8S!1!12;= 87   AAc                     j                  t              5 } | ||       d d d        j                  t        j                        d       y # 1 sw Y   /xY w)Nz)total size of new array must be unchangedr   
ValueErrorr   r   r   r   s       r   check_err_sizez@TestArrayManipulation.test_array_reshape.<locals>.check_err_size   sL    "":.&FC/ /S!1!12HJ /.r   c                     j                  t              5 } | ||       d d d        j                  t        j                        d       y # 1 sw Y   /xY w)Nzmultiple negative shape valuesr   r   s       r   check_err_multiple_negativezMTestArrayManipulation.test_array_reshape.<locals>.check_err_multiple_negative   sK    "":.&FC/ /S!1!12=? /.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   )r]      r      r|   r|   )r|   r   )r   r|   r   )r   r   r|   )r|   r   )r|   r   r   )r   r   r|   r|   c                      | d        | d        | d        | d        | dd        | dd        | dd        | d	d
        | dd        | d        | d        | d       y )Nr   r   )r^   r   r]   )r   7   r^   r   r]   r|   r   r   r|   r   r   )r   r|   )r   r   )r|   r   r   )r   r   r   r   r^   r^   r]   r   )r#   r   r   r   s    r   check_emptyz=TestArrayManipulation.test_array_reshape.<locals>.check_empty  s    #qM#t#y!#'(S"d+S%.S'62S'62S*i83#3"3'r   )r\   r]   r   )	r%   r(   r   r'   r_   r!   r`   arraydisable_leak_check)
r   r   r   r   r#   r   r   r   r   r   s
   `     @@@@r   test_array_reshapez(TestArrayManipulation.test_array_reshape   sw   ')<=	& 
n	%	( 
&	( 
n	%	( 
&	( 
n	%	= 
&	= 
n	%	J 
&	J 
n	%	? 
&	? iimc5c6c6c9c%&iim##I.c5c6c6c9c%&sBsE"sF#iim##$67c5c6c6c9 iim##I.00c9c()Y'V$W% iim##Aa(c2c5c7c:c:sG$#C8#C8	( hhrlCCKK	*+ 	!r   c           	      n    t         t        t        t        g}t	        |       fd       }t	        |       fd       }t	        |       fd       }t	        |       fd       }t        j                  d      t        j                  d      j                  dd      t        j                  d      j                  dd	d      t        j                  d      j                  d
dd	d      t        j                  d      j                  ddd      d d d	d d dd d f   g}t        t        |            D ]|  } |||   d        t        t        t        ||   j                                    D ]A  }t        |      }	t        |D 
cg c]  }
|
|	z
  	 c}
      } |||   |        |||   |       C ~ t	        t        g      d        } |d	d        |dd	        |dd        j                           ||d
   d        ||d
   d        ||d
   d        ||d   d        ||d
   d        ||d   d        ||d	   d        ||d   d        ||d   d        ||d
   d        ||d
   d        ||d
   d        ||d   d        ||d   d        ||d	   d        ||d	   d        j                  t               5 }  t#        d !      t$              t        j&                  dd
g      f       d d d         j)                  d"t+        j,                               y c c}
w # 1 sw Y   4xY w)#Nc                 H   | j                  ||      } | ||      }j                  ||       j                  |j                  j                  |j                  j                         j                  |j                  j
                  |j                  j
                         y r   )r   r   r   flagsf_contiguousc_contiguous)r   r#   rQ   r   r   r   s        r   r   z>TestArrayManipulation.test_array_transpose_axes.<locals>.check9  s}    ~~c40Hd#C##C2SYY33%^^88:SYY33%^^88:r   c                     j                  t              5 } | ||       d d d        j                  t        j                        d       y # 1 sw Y   /xY w)Nzrepeated axis in transposer   r   r#   rQ   r   r   s       r   check_err_axis_repeatedzPTestArrayManipulation.test_array_transpose_axes.<locals>.check_err_axis_repeatedC  sI    "":.&sD! /S!1!129; /.   
AAc                     j                  t              5 } | ||       d d d        j                  t        j                        d       y # 1 sw Y   /xY w)Nz2axis is out of bounds for array of given dimensionr   r   s       r   check_err_axis_oobzKTestArrayManipulation.test_array_transpose_axes.<locals>.check_err_axis_oobJ  sJ    "":.&sD! /S!1!12QS /.r   c                 x    j                  t        t        f      5   | ||       d d d        y # 1 sw Y   y xY wr   )r   	TypeErrorr	   )r   r#   rQ   r   s      r   check_err_invalid_argszOTestArrayManipulation.test_array_transpose_axes.<locals>.check_err_invalid_argsQ  s,    ""I{#;<sD! =<<s   
09r   r   r   r]   r\   r^   @   r   c                 z    | j                  ||      } | ||      }t        j                  j                  ||       y r   )r   r'   testingassert_equal)r   ra   rb   r   r   s        r   check_issue_4708zITestArrayManipulation.test_array_transpose_axes.<locals>.check_issue_4708f  s3    ~~a+HA,C JJ##C2r   r   foo)r   g333333@)333333?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]   Tr   z#np.transpose does not accept tuples)rS   rV   rX   rZ   r   r'   r_   r!   rangelenr   tuplendimrg   r   r   r	   r   rN   r   assertInr   r   )r   r   r   r   r   r   arrsirQ   r   r   neg_axesr   es   `             r   test_array_transpose_axesz/TestArrayManipulation.test_array_transpose_axes3  s%   :?.35
 
n	%	: 
&	: 
n	%	; 
&	; 
n	%	S 
&	S 
n	%	" 
&	" 		"		"%%a+		"%%aA.		"%%aAq1		"%%aA.ss3Q3qy9	; s4y!A$q'4 $U5a+>%?@4y D!9Dq!d(D!9:d1gt$d1gx(	 A	 " 
+,	-	3 
.	3 	AAA 	!tAw.tAw1tAw,tAw1Q0Q3Q647D)47E*47F+47G,47G,47I.47J/47L147M2{+q5C45rxxA7G6IJ ,;AKK(	*Q ":L ,+s    L&3L++L4c                     t         }t        |      }d } |       D ]%  \  }}| j                   |||       |||             ' y )Nc               3     K   t        j                  ddgddgg      df t        j                  ddgddgg      df t        j                  ddgddgg      df t        j                  ddgddgg      df t        j                  ddgddgg      d	f t        j                  ddgddgg      d
f t        j                  dt              df t        j                  ddgddgg      df t        j                  ddgddgg      df t        j                  dt              df t        j                  g t              df g ddf d y w)Nr^   r]   r\   r   )r]   r   )r   r]   )r   r\   r   r   r]   r   r   dtyper]   r^   r   r^   r\   )r   r^   r]   r\   r]   r\   )r   r  )r'   r   zerosfloatintr   r   r   inputsz=TestArrayManipulation.test_numpy_resize_basic.<locals>.inputs  s`    ((QFQF+,f44((QFQF+,f44((QFQF+,f44((QFQF+,d22((QFQF+,f44((QFQF+,f44((1e,f44((QFQF+,d22((QFQF+,a//((63/77((2u-v55&&Os   E#E%)r   r   r   )r   r   cfuncr  r<   r   s         r   test_numpy_resize_basicz-TestArrayManipulation.test_numpy_resize_basic  sE    V	" #HLAy##F1i$8%9:MN %r   c                    | j                          t        t              }| j                  t              5 } |dd       d d d        | j                  dt        j                               | j                  t              5 } |t        j                  ddgddgg      d       d d d        | j                  dt        |j                               | j                  t              5 } |t        j                  ddgddgg      d	       d d d        | j                  d
t        |j                               | j                  t              5 } |t        j                  ddgddgg      d       d d d        | j                  d
t        |j                               y # 1 sw Y   _xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   UxY w)Nabcr  z#The argument "a" must be array-liker   r^   r]   r\   zBThe argument "new_shape" must be an integer or a tuple of integers)r   r\   z0All elements of `new_shape` must be non-negativer   )r   r   r   r   r	   r   r   r   r'   r   r   )r   r  r   s      r   test_numpy_resize_exceptionz1TestArrayManipulation.test_numpy_resize_exception  ss   !\"{+v%  ,<&**+	- {+v"((QqE1Q%=)51 , -&**+	- z*f"((QqE1Q%=)73 +I&**+	- z*f"((QqE1Q%=)2. +I&**+	-% ,+
 ,+ +*
 +*s/   
F#F)&#F6#GF&)F36F?Gc                 R    t         t               fdfd}t        j                  d      } ||       t        j                  d      j	                  d      } ||        ||j
                          ||d d d          t        j                  d      } ||       y )Nc                      | |      }j                           | |      }j                  ||       ~j                          y r   )r   r   r   )r#   rm   r   r   r  r   r   s       r   r   z5TestArrayManipulation.test_expand_dims.<locals>.check  sF    c4(H""$T"C##C2%%'r   c                 p    t        | j                   dz
  | j                  dz         D ]  } | |        y )Nr^   )r   r   )r#   rm   r   s     r   check_all_axesz>TestArrayManipulation.test_expand_dims.<locals>.check_all_axes  s0    sxxi!mSXX\:c4  ;r   r   r   r   r|   *   )rl   r   r'   r_   r!   r`   r   )r   r  r#   r  r   r   s   `  @@@r   test_expand_dimsz&TestArrayManipulation.test_expand_dims  s    V	(	!
 iilsiim##I.ssuus4R4y!hhrlsr   c                    t         } t        d      |      }t        j                  d      }| j	                         5 } |dd       d d d        | j                  dt        j                               | j	                         5 } ||d       d d d        | j                  dt        |j                               y # 1 sw Y   vxY w# 1 sw Y   ;xY w)NTr   r   hellor\   z#First argument "a" must be an arrayz"Argument "axis" must be an integer)rl   r   r'   r_   assertTypingErrorr   r   r   )r   r   r  r#   r   s        r   test_expand_dims_exceptionsz1TestArrayManipulation.test_expand_dims_exceptions  s    "T"6*iil##%'1 &;SAQAQ=RS##%#w &:C@P@P<QR &% &%s   
B=
C	=C	Cc                      fdfd} fd}t        j                  d      }t        j                  d      } ||        |||       t        j                  d      }t        j                  d      dz   }|d d d	   }	 ||        ||||	       t        j                  d      j                  d
      }
|
j                  }|
d d d	   } ||
        ||
||       t        j                  d      j                  d      }|j                  }|d d d	   } ||        ||||       t        j                  d      j                  d      } ||        |||||       y )Nc                     j                  | |       j                  | j                         |j                                y r   )assertStridesEqualr   r:   )r   r   r   s     r   check_resultz<TestArrayManipulation.check_atleast_nd.<locals>.check_result  s4     ##C2##CKKM83C3C3EFr   c                 0      |        |              y r   r   )argr  r  r   s    r   check_singlez<TestArrayManipulation.check_atleast_nd.<locals>.check_single  s    sVC[1r   c                       |  } |  }j                  t        |      t        |             t        ||      D ]  \  }} ||        y r   )r   r   zip)	r   expected_tuple	got_tupler   r   r  r  r   r   s	        r   check_tuplez;TestArrayManipulation.check_atleast_nd.<locals>.check_tuple  sN    #T]NtIS^S-@A!$Y!?XS(+ "@r   r  y              @r   r                 ?r|   r  r   r      )r]   r]   r]   r]   )r'   r   r_   r!   r`   )r   r   r  r  r!  a1a2b1b2b3c1c2c3d1d2d3r   r  s   ```              @r   check_atleast_ndz&TestArrayManipulation.check_atleast_nd  s2   	G	2	, XXb\XXb\RBYYq\YYq\B"XRBBYYq\!!&)TT"XRBBYYr]""9-TT"XRBBIIbM!!,/QBB#r   c                 X    t         } t        d      |      }| j                  ||       y NTr   )ro   r   r/  r   r   r  s      r   test_atleast_1dz%TestArrayManipulation.test_atleast_1d  (    "T"6*fe,r   c                 X    t         } t        d      |      }| j                  ||       y r1  )rr   r   r/  r2  s      r   test_atleast_2dz%TestArrayManipulation.test_atleast_2d  r4  r   c                 X    t         } t        d      |      }| j                  ||       y r1  )rt   r   r/  r2  s      r   test_atleast_3dz%TestArrayManipulation.test_atleast_3d"  r4  r   c                      t               fd}t        j                  d      } ||        ||j                  d              ||j                  d             y )Nc                 J     |       } |       }j                  ||       y r   r   )r#   r   r   r  r   r   s      r   r   z5TestArrayManipulation.check_as_strided.<locals>.check*  s%    c{H*C##C2r   r   r   )r   r^   r   )r   r'   r_   r!   )r   r   r   r#   r  s   ``  @r   check_as_stridedz&TestArrayManipulation.check_as_strided'  sI    V	3
 iimc
ckk&!"ckk)$%r   c                 X    | j                  t               | j                  t               y r   )r<  rz   r~   r   s    r   test_as_stridedz%TestArrayManipulation.test_as_strided4  s    k*k*r   c                      fd}t        j                  d      }dD ])  } j                  d|       5   ||d|       d d d        + t        j                  d      j                  dd      }d	D ])  } j                  d
|       5   ||d|       d d d        + dD ])  } j                  d
|       5   ||d|       d d d        + t        j                  d      j                  dddd      }dD ])  } j                  d|       5   ||d|       d d d        +  j                  d      5   ||dd       d d d        y # 1 sw Y   1xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                     t         j                  j                  j                  | ||d      }t        | ||      }j	                  ||       y )NT)	writeable)r'   rw   rx   r   r   )r#   r   rm   r   r   r   s        r   r   z=TestArrayManipulation.test_sliding_window_view.<locals>.check9  sL    vv++??\44 @ H &c<>C##C2r   r   )Nr   r|   r   z1d array, axis=r      
      r   z2d array, axis=)Nr   r^   r^   r   )r^   r   )r   r   r   r]   )r   )r   r   z4d array, axis=r\   r]   z2d array, repeated axes)r   r\   r\   )r   r^   r   )r'   r_   subTestr!   )r   r   arr1rm   arr2arr4s   `     r   test_sliding_window_viewz.TestArrayManipulation.test_sliding_window_view8  si   	3 yy}'Dv67dAt$ 87 (
 yy~%%b"-Dv67dAt$ 87 
 4Dv67dFD) 87 4
 yy~%%aAq1&Dv67dFD) 87 '
 \\34$	9- 54+ 87 87
 87 87 54s;   EE6EE*1E6E	E	E'	*E3	6E?c                      fd} fd} j                          t        j                  d      }t        j                  d      j                  dd      } j	                  d      5   |d|d	d        d d d         j	                  d
      5   |d|dd        d d d         j	                  d      5   |d|dd        d d d         j	                  d      5   |d|dd        d d d         j	                  d      5   |d|dd        d d d         j	                  d      5   |d|dd       d d d         j	                  d      5   |d|dd       d d d         j	                  d      5   |d|dd       d d d         j	                  d      5   |d|dd       d d d         j	                  d      5   |d|dd        d d d         j	                  d!      5   |d|dd"       d d d         j	                  d#      5   |d$|d        d d d         j	                  d%      5   |d$|d&       d d d         j	                  d'      5   |d$|d(       d d d         j	                  d)      5   |d*|dd&       d d d         j	                  d+      5   |d*|dd(       d d d        y # 1 sw Y   3xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   [xY w# 1 sw Y   CxY w# 1 sw Y   ,xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w),Nc                     j                  t              5 }t        |  d d d        j                  | t	        j
                               y # 1 sw Y   /xY wr   )r   r   r   r   r   r   msgr   r   r   s      r   _raiseszFTestArrayManipulation.test_sliding_window_view_errors.<locals>._raises]  sB    "":.&#T* /MM#s6#3#345 /.s   	AAc                     j                  t        j                        5 }t        |  d d d        j	                  | t        j                               y # 1 sw Y   /xY wr   )r   r   r	   r   r   r   r   rP  s      r   _typing_errorzLTestArrayManipulation.test_sliding_window_view_errors.<locals>._typing_errorb  sH    ""6#5#56&#T* 7MM#s6#3#345 76s   	AA!r   rC  rD  rE  z1d window shape too largezwindow_shape cannot be largerr   z2d window shape too large)r      z1d window negative sizez&`window_shape` cannot contain negativer|   z2d window with a negative size)r   r   z1d array, 2d window shapez%matching length window_shape and axis)rD  r]   z$2d window shape, only one axis givenr^   z1d window shape, 2 axes givenr   r   z1d array, second axiszArgument axis out of boundsr   z1d array, axis -2r   z2d array, fourth axis)r   r   r   r\   z2d array, axis -3r   zwindow_shape=Nonez3window_shape must be an integer or tuple of integerzwindow_shape=float@zwindow_shape=tuple(float))rW  z
axis=floatz1axis must be None, an integer or tuple of integerzaxis=tuple(float))r   r'   r_   r!   rI  )r   rR  rT  rJ  rK  s   `    r   test_sliding_window_view_errorsz5TestArrayManipulation.test_sliding_window_view_errors\  s   	6
	6 	!yy}yy~%%b"- \\563T2tD 7\\563T7DI 7\\34<dBM 5\\:;<dGTR < \\56;T7DQ 7\\@A;T7AN B\\9:;T1fM ; \\1214A> 3\\-.14B? /\\1214H 3\\-.14I / \\-.EtT / \\./EtS 0 \\56EtV 7 \\,'CT1c ( \\-.CT1f /.Y 766644;; 76AA:: 32..22.. /. 0/ 76 (' /.s   'J$J11J>K;K K%K2*K?L4LL&>L3"M M*MM%$J.1J;>KKK"%K/2K<?L	LL#&L03L= M
MM"%M.Cc                 ~   t        j                  d      j                  dd      }|dk(  r|j                  }t        }t        |      }|dk(  r|j                  d      }| j                  |j                  |        t        |ffi ||      } ||      } ||      }t         j                  j                  ||       y )N	   r\   FA)layout)r'   r_   r!   r`   r=   r   rU   r   r^  r   r   r   )	r   r   r^  r<   r   
arraytype1r  r   r   s	            r   test_flatten_arrayz(TestArrayManipulation.test_flatten_array  s    IIaL  A&S=AAY
S=#4J**F3+ZM+U+F3!9Ah


#.r   c                     | j                  t               | j                  t        d       | j                  t        d       y )Nr   r\  )r   r^  r]  )r`  no_pyobj_flagsr>  s    r   test_flatten_array_npmz,TestArrayManipulation.test_flatten_array_npm  s9    n5nSAnSAr   c                      fd}t        |t              t        |t              fd} |t        j                  d      j                  dd      d        |t        j                  d      j                  ddd      d        |t        j                  d	      j                  ddd
      d d d d df   d        |t        j                  d	      j                  d
dd      d        |t        j                  d	      j                  d
ddd      d        |t        j                  d      j                  d
ddd
      d d d d d d df   d       y )Nc                    t        |      }
j                  |j                  |        t        |ffi 	|       } | |      } ||      }t        j
                  j                  ||       |j                  j                  |j                  j                  k7  }|j                  j                  |j                  j                  k7  }
j                  ||dk7         
j                  ||       y )NrY  )	r   r   r^  r   r'   r   r   ctypesdata)r   r<   assume_layoutr_  r  r   r   	py_copied	nb_copiedr   r   s            r   generic_checkz=TestArrayManipulation.test_ravel_array.<locals>.generic_check  s    JZ..>/C//7EayH(CJJ##Hc2(//*>*>>I#**//9IY(<=Y	2r   c                  &     | i |  | i | y r   r   )r   r   check_functioncheck_methods     r   r   z5TestArrayManipulation.test_ravel_array.<locals>.check  s    $)&)D+F+r   r[  r\   rY  )ri  r\  order   r]   r   r]  $   )r   rB   rG   r'   r_   r!   )r   r   rl  r   rn  ro  s   ``  @@r   test_ravel_arrayz&TestArrayManipulation.test_ravel_array  s   	3  }k: 0AB	,
 	biil""1a(<biil""1as"33Gbiim##Aq!,Q1W5SI 	biim##Aq!,C@biim##Aq!3#7sKbiim##Aq!Q/1a
;3Or   c                     t        j                  d      j                  dd      }t        }t	        |      } t        |ffi ||      } ||      } ||      }t         j                  j                  ||       y Nr[  r\   )r'   r_   r!   rE   r   r   r   r   r   r   r<   r   r_  r  r   r   s           r   test_ravel_array_sizez+TestArrayManipulation.test_ravel_array_size  sh    IIaL  A&!AY
+ZM+U+F3!9Ah


#.r   c                 0    | j                  t               y Nrb  )rt  rc  r>  s    r   test_ravel_array_npmz*TestArrayManipulation.test_ravel_array_npm  s    N3r   c                 0    | j                  t               y rz  )rx  rc  r>  s    r   test_ravel_array_size_npmz/TestArrayManipulation.test_ravel_array_size_npm  s    """8r   c                 N    t        t        t        g      fd       } |        y )Nc                     t        j                  d      j                  dd      }t        |      } t	        |ffi |       } | |      } ||      }t         j
                  j                  ||       y rv  )r'   r_   r!   r   r   r   r   )r   r<   r_  r  r   r   r   s         r   r   z9TestArrayManipulation.test_transpose_array.<locals>.check  sd    		!$$Q*AJ/C//7EayH(CJJ##Hc2r   )r   rK   rN   )r   r   r   s    ` r   test_transpose_arrayz*TestArrayManipulation.test_transpose_array  s(    	(=>	?	3 
@	3 	r   c                 0    | j                  t               y rz  )r  rc  r>  s    r   test_transpose_array_npmz.TestArrayManipulation.test_transpose_array_npm  s    !!!7r   c                     t        j                  d      j                  ddddd      }t        }t	        |      } t        |ffi ||      } ||      } ||      }t         j                  j                  ||       y )Nr   r]   r^   r\   r   )r'   r_   r!   rj   r   r   r   r   rw  s           r   test_squeeze_arrayz(TestArrayManipulation.test_squeeze_array  sp    II'(00Aq!Q?AY
+ZM+U+F3!9Ah


#.r   c                     | j                  t        j                        5 }| j                  t               d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nrb  ri   )r   r   r	   r  rc  r   r   r   r   r   s     r   test_squeeze_array_npmz,TestArrayManipulation.test_squeeze_array_npm  sR    v112f##.#9 3 	iV%5%5!67 32s   A%%A.c                    t         d        }t         d        }t        j                  d      j                  d      }t	        d       t        j
                  ft        j
                  t	        d       ft	        d      t        j
                  dft        j
                  dt	        d       ft	        d      t        t        j
                  dfdt        j
                  t        ft        j
                  t	        d      t        j
                  dfdt        d t        j
                  ft        j
                  t	        d      t        t        j
                  dfdt        j
                  t        j
                  t        ft        j
                  dt        j
                  t        ft	        d      dt        j
                  d ft        j
                  dt        d fg}|j                  }|}|j                  }|}|D ]  }	 |||	      }
 |||	      }t        j                  j                  |
|       t        j                  |      }||	   } ||j                         |	|      }
 ||j                         |	|      }t        j                  j                  |
|        y )Nc                     | |   S r   r   )r<   r7   s     r   np_new_axis_getitemz@TestArrayManipulation.test_add_axis.<locals>.np_new_axis_getitem  s    S6Mr   c                     || |<   | S r   r   )r<   r7   items      r   np_new_axis_setitemz@TestArrayManipulation.test_add_axis.<locals>.np_new_axis_setitem  s    AcFHr   iH  )r   r   r      r^   r]   r\   )r   r'   r_   r!   slicenewaxisEllipsisr   r   r   
zeros_likerU   )r   r  r  r<   	idx_casespyfunc_getitemcfunc_getitempyfunc_setitemcfunc_setitemr7   r   r   a_emptyr  s                 r   test_add_axisz#TestArrayManipulation.test_add_axis  s   		 
	 
	 
	 IIm$,,\:4["**%ZZt%1Xrzz1%ZZE$K(1XxQ/

H%ZZq2::q1$

+ZZq8RZZ;

BJJ1ZZBJJ11Xq"**d+ZZHd+
	 -44+,44+C%a-H3'CJJ##Hc2mmA&GS6D%gllnc4@HT:CJJ##Hc2 r   c                    | j                         5 }t        t        j                  dt        j                  fdt        j                  fg            }t        j                  t
        j                  dd      } t        ||f      t               d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr   r   r]   rY  zUnsupported array index type)r  r   r'   r   int32r
   Arrayr   r   r   r   r   )r   r   r_  
arraytype2s       r   test_bad_index_npmz(TestArrayManipulation.test_bad_index_npm8  s    ##%#BHHsBHHo/2BHHo.? %@ AJU[[!S9J*D*j)*95	 &
 	4c&:J:J6KL &%s   A=B<<Cc           	      
   | j                         5 } t        t        j                  t        j                  dd      f      t
               d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr]   rY  z$Unsupported array index type float64)	r  r   r
   r  float64r   r   r   r   r  s     r   test_bad_float_index_npmz.TestArrayManipulation.test_bad_float_index_npm@  s^    ##%7D%++emmQ467H &<&**+	- &%s   :A99Bc                    	 t         	 t        d      	      d d }fd}fd}	 fd} |d      D ]  } |       D ]  } |||          |d      D ]  } |       D ]  } |||         t        j                  dgd	z        j	                  dd      } ||d
        ||g d        ||t        j                  g d             y )NTr   c              3   x   K   | | f d| z  | f | d| z  f d| z  dz   d| z  dz
  f | | | | f d y w)Nr]   r^   r^   r^   r^   r   )rb   s    r   _shape_variationszITestArrayManipulation.test_fill_diagonal_basic.<locals>._shape_variationsJ  sY     a&Lq5!*a!e*EAIQ,,aA,Os   8:c               3     K   d d t         j                   t         j                    d t        j                  d       d ddg t        j                  d      j	                  dd	d
d       t        j
                  t        j                  d      j	                  d	d	             t        j                  d      j	                  d	d	      d d d    y w)Nr^   gA`"	@Tr   r   r   r[  6   r\   r]   r|   )r'   naninfr_   r!   asfortranarrayr   r   r   _val_variationszGTestArrayManipulation.test_fill_diagonal_basic.<locals>._val_variationsX  s     GK&&L66'MJ))A,Ja&L))B-''1a33##BIIaL$8$8A$>??))A,&&q!,TrT22s   C$C&c              3      K    |       D ]c  }t        j                  |t         j                         t        j                  t        j                  |t         j                               e y w)Nr   )r'   r  r  r  ones)rb   r,   r  s     r   #_multi_dimensional_array_variationsz[TestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variationsf  sK     *1-hhuBJJ77''RZZ(HII .s   A0A3c           
   3      K    |       D ]Z  }t        j                  t        |D cg c]  }|dz  	 c}      t         j                        }t        d |D              }||    \ y c c}w w)Nr]   r   c              3   <   K   | ]  }t        d |dz  d        yw)r   r]   N)r  ).0r   s     r   	<genexpr>zvTestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variations_strided.<locals>.<genexpr>o  s     A5auQAq15s   )r'   r  r   r  )rb   r,   r   tmpslicerr  s        r   +_multi_dimensional_array_variations_stridedzcTestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variations_stridedl  s_     *1-hhuU%;Ua!eU%;<BJJOA5AA&k! .%;s   $A/A*<A/c                     dD ]Q  }| j                         }| j                         }|i }nd|i} ||fi |  ||fi | j                  ||       S y )N)NTFr   )rU   r   )	r#   r   r   r<   bparamsr  r   r   s	         r   _check_fill_diagonalzLTestArrayManipulation.test_fill_diagonal_basic.<locals>._check_fill_diagonalr  sd    )HHJHHJ<F$d^Fq#((a''''1- *r   r\   r[  F)FTFTFT)r   r   r'   r   r!   )
r   r  r  r  r  r#   r   r  r  r   s
   `      @@@r   test_fill_diagonal_basicz.TestArrayManipulation.test_fill_diagonal_basicF  s    $"T"6*		3	J	"	. 7q9C&($S#. ) : ?qAC&($S#. ) B
 hhvz"**1a0S%(S"67S"((+>"?@r   c                     t         } t        d      |      d} j                          t        j                  g       t        j
                  d      fD ]B  } j                  t              5 } ||       d d d        dt        j                        v rBJ   j                  t              5 }t        j                  d      } ||        j                  dt        |j                               d d d         fd}t        j                  d	t        j                  
      }t        j                  } |||       dt        j                  g} |||       t        j                  g dt        j                   
      } |||       t        j                  d	t        j"                  
      }g d} |||       d} |||       t        j                  dg      } |||       y # 1 sw Y   rxY w# 1 sw Y   xY w)NTr   r^   r   z'The first argument must be at least 2-D)r\   r\   r   z/All dimensions of input must be of equal lengthc                     j                  t              5 } | |       d d d        j                  dt        j                               y # 1 sw Y   /xY w)Nz'Unable to safely conform val to a.dtyper   )r#   r   r   r  r   s      r   _assert_raiseszPTestArrayManipulation.test_fill_diagonal_exception_cases.<locals>._assert_raises  sF    "":.&c3 /FFL\L\H]^ /.r   r\   r\   r   ffffff
@)r^   r]   g    _B)gffffff?g@}Ô%Igp=Tr  )r   r   r   r'   r   r  r   r	   r   r   r   r  r   r  r  r  int64float32)r   r   r   r<   r   r  r#   r  s   `      @r   "test_fill_diagonal_exception_casesz8TestArrayManipulation.test_fill_diagonal_exception_cases  s   $"T"6* 	! "rwwqz)A"";/6a 0<FDTDT@UUUU * z*f#A!SMNPSTZTdTdPef +	_
 hhvRXX.ffsC BFFmsC hh|2884sC hhvRZZ0 sC sC hhx sC E 0/
 +*s   /
G)1AG6)G3	6H c                 4   t         } t        d      |      }t        j                  d      dgt        j                  d      dgt        j                  d      dgt        j                  d      dgt        j                  d      dgt        j                  d      d	gt        j
                  d
      dgt        j
                  d
      dgt        j
                  d
      dgt        j                  d      dgt        j                  d      dgt        j                  d      dgt        j                  d      dgt        j                  d      dgt        j                  d      dgddgddgg}|D ])  \  }} |||      } |||      }| j                  ||       + y )NTr   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  rh  input_arrayr,   r   r   s           r   test_broadcast_toz'TestArrayManipulation.test_broadcast_to  sX   #"T"6*
 XXa[$XXa[$XXa[$WWQZWWQZWWQZ#YYq\4 YYq\6"YYq\6"WWQZOWWQZOWWQZO WWQZWWV_f%WWV_f%KV-
0 #'Kk51HU+C##C2 #'r   c                     t         } t        d      |      }t        j                  d      ddg}d}|D ]D  } |||      } |||      }| j	                  ||       | j                  |j                  d          F y )NTr   {   r   	WRITEABLE)r-   r   r'   r   r   assertFalser   )r   r   r  r  r,   r#   r   r   s           r   test_broadcast_to_0d_arrayz0TestArrayManipulation.test_broadcast_to_0d_array  s    #"T"6* HHSM
 Cc5)HU#C##Hc2SYY{34 r   c                 8   t         } t        d      |      }t        j                  d      dt        dgt        j                  d      dt        dgt        j                  d      dt        dgddt        dgddt        dgt        j                  d      dt
        d	gt        j                  d      d
t
        d	gt        j                  d      dt
        d	gt        j                  d      dt
        d	gt        j                  d      dt
        dgt        j                  d      dt
        dgt        j                  d      dt
        dgt        j                  d      dt
        dgt        j                  d      dt
        dgt        j                  d      dt        dgddt        dgddt        dgg}| j                          |D ]O  \  }}}}| j                  |      5 } |||       d d d        | j                  |t        j                               Q y # 1 sw Y   1xY w)NTr   r   r   z/Cannot broadcast a non-scalar to a scalar arrayr   r  )r  z=operands could not be broadcast together with remapped shapesr  r   r   r   r^   r^   zDinput operand has more dimensions than allowed by the axis remappingr  r|   z4all elements of broadcast shape must be non-negativer   )r|   r]   g?g@z7The second argument "shape" must be a tuple of integersr  z-The first argument "array" must be array-liker\   )r]   r<   z*object cannot be interpreted as an integer)r-   r   r'   r  r	   r   r   r   r   r   r   )	r   r   r  rh  r#   target_shapeerrrQ  r   s	            r   test_broadcast_to_raisesz.TestArrayManipulation.test_broadcast_to_raises  s   #"T"6*
 XXd^R>@XXd^R>@XXd^R>@[>@R>@XXd^T:LNXXd^T:LNXXd^T:LNXXfvzLNXXftZSUXXftZSUXXd^RCEXXd^UJCEXXfw
CEXXfz;FHdK<>+9;C#
H 	!+/'CsC""3'6c<( (MM#s6#3#345 ,0''s   
HH	c                 n    t         d        }|j                         } |       }| j                  ||       y )Nc                  .    t        j                  dd      S )Nr<   r  r*   r   r   r   _broadcast_to_1zMTestArrayManipulation.test_broadcast_to_corner_cases.<locals>._broadcast_to_1&  s    ??3//r   )r   r   r   )r   r  r   r   s       r   test_broadcast_to_corner_casesz4TestArrayManipulation.test_broadcast_to_corner_cases%  s<    		0 
	0 #**,#.r   c                    t         } t        d      |      }t        j                  dt        j                        }d} |||      }d|d<   | j                  |j                         d       | j                  |j                         d       y )	NTr   r]   r   r  rD  r   rE  )r-   r   r'   r  r  r   sum)r   r   r  r  r,   views         r   test_broadcast_to_change_viewz3TestArrayManipulation.test_broadcast_to_change_view.  ss    #"T"6*hhq1[%(A*B/R(r   c                     t         } t        d      |      }t        j                  d      ddgg}|D ],  \  }}} ||||      } ||||      }| j	                  ||       . y )NTr   r]   r  r   )r8   r   r'   r  r   )	r   r   r  rh  r  r,   r7   r   r   s	            r   test_broadcast_to_indexingz0TestArrayManipulation.test_broadcast_to_indexing9  sp    ,"T"6*WWQZ&
 (,#Kk5#6HUC0C##C2 (,r   c                     t         d        }t        j                  d      }|j                  |      } ||      }| j	                  ||       y )Nc                 v    t        j                  | d      }||j                  |j                  |j                  fS )Nr  )r'   r+   rD   r,   rv   )r#   rets     r   r   z@TestArrayManipulation.test_broadcast_to_array_attrs.<locals>.fooG  s-    //#v.C#))S[[88r   r\   )r   r'   r_   r   r   )r   r   r#   r   r   s        r   test_broadcast_to_array_attrsz3TestArrayManipulation.test_broadcast_to_array_attrsD  sL     
	9 
	9 iil;;s##h#.r   c                 B   t         } t        d      |      }dgddgdgdgdgddgg dd	gd
dgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgg}|D ]4  } || } || }| j                  |t               | j	                  ||       6 y )NTr   r   r  r   r  )r\   r   ))r   r  r   r   r^   r  )r   r^   r  r  r  r\   r^   rG  r   rF  r   r   r  r]   rH  )r1   r   assertIsInstancer   r   )r   r   r  rh  input_shaper   r   s          r   test_broadcast_shapesz+TestArrayManipulation.test_broadcast_shapesR  s   '"T"6* DHFIHV0KVVVVVVVJ6N6N6NLTN6N6NLL4LK9
<  K{+H%C!!#u-##Hc2	  r   c                 2   t         } t        d      |      }| j                          ddgddgg ddd	gg d
ddgg}|D ]J  }| j                  t              5 } ||  d d d        | j                  dt        j                               L y # 1 sw Y   1xY w)NTr   r  r   r  r  r  r  r   r^   r\   r   r]   r\   r\   )r   r  rH  )rD  r   r]   =shape mismatch: objects cannot be broadcast to a single shaper1   r   r   r   r   r   r   r   )r   r   r  rh  r  r   s         r   test_broadcast_shapes_raisesz2TestArrayManipulation.test_broadcast_shapes_raises|  s    '"T"6*!
 4LTN	"-K
  K"":.&{# / MMYf../1	  ..s   BB	c                    t         } t        d      |      }| j                          | j                  t              5 } |ddd       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)NTr   r   r]   r   z#negative dimensions are not allowedr  )r   r   r  r   s       r   (test_broadcast_shapes_negative_dimensionz>TestArrayManipulation.test_broadcast_shapes_negative_dimension  sj    '"T"6*!z*f&1$ + 	;SAQAQ=RS +*s   A77B c                    t         } t        d      |      }| j                          g d}|D ]J  }| j                  t              5 } ||  d d d        | j                  dt        j                               L y # 1 sw Y   1xY w)NTr   ))r   )r  )g333333@)stringr   r<   )r^   r  z#must be either an int or tuple[int])r1   r   r   r   r	   r   r   r   )r   r   r  inpsinpr   s         r   "test_broadcast_shapes_invalid_typez8TestArrayManipulation.test_broadcast_shapes_invalid_type  sv    '"T"6*!
 C"";/6s 0 MM?VEUEUAVW	 //s   A==B	c                 v    t          t        d             fd}dD ]  }t        j                  |      } ||       ! dddgddgdd	ggd
dfD ]
  } |         j	                  t
              5 } d       d d d         j                  dt        j                               y # 1 sw Y   /xY w)NTr   c                 J     |       } |       }j                  ||       y r   r;  r   r   r   r  r   r   s      r   r   z/TestArrayManipulation.test_shape.<locals>.check  %    ayH(C##C2r   r   r   r  )r   r   r   r^   Fr]   r\   r   r   r  r<   z+The argument to np.shape must be array-like)	r   r   r'   emptyr   r	   r   r   r   r   r   tr#   r   r  r   s   `    @@r   
test_shapez TestArrayManipulation.test_shape  s    "T"6*	3 0A((1+C#J 0
 UQDAq7Aq6"2D)DA#J E {+v#J , 	C&**+	- ,+s   8	B//B8c                     t          t        d             fd}dD ]  }t        j                  |      } ||       ! dddt        j                  d      t        j
                  d	      fD ]
  } ||         j                  t              5 } d
       d d d         j                  dt        j                               y # 1 sw Y   /xY w)NTr   c                 J     |       } |       }j                  ||       y r   r;  r  s      r   r   z.TestArrayManipulation.test_size.<locals>.check  r  r   r  r^   FgQ	@r   gX9v@r<   z*The argument to np.size must be array-like)r   r   r'   r   int8r  r   r	   r   r   r   r  s   `    @@r   	test_sizezTestArrayManipulation.test_size  s    "T"6*	3 0A((1+C#J 0
 UD"''!*bjj.?@A!H A {+v#J , 	B&**+	- ,+s   	CCc                      t         } t        d      |      } fd} |       D ]$  } ||      } ||      } j                  ||       & y )NTr   c               3     K   t        j                  dd       t        j                  dd       t        j                  g        j                  j                  d      } d| t        j                  |       dkD  <   |  | j                  ddd       | j                  d	d
d       | j                  dd      dd d
    | dz   y w)Nr   r   r   
fill_valued           皙?r   2   r]   r\  rp  r   r^   r"  )r'   r_   fullr   randomrandnabsr!   r<   r   s    r   a_variationszBTestArrayManipulation.test_flatnonzero_basic.<locals>.a_variations  s     ))B""''!**((2,!!#&A!$AbffQi#oG))Aq!$$))B)--))B"14a4((b&Ls   CC)r   r   r   r   r   r  r  r<   r   r   s   `      r   test_flatnonzero_basicz,TestArrayManipulation.test_flatnonzero_basic  sN    ""T"6*
	 AayH(C##Hc2  r   c                      t         } t        d      |      } fd} |       D ]$  } ||      } ||      } j                  ||       & y )NTr   c               3     K   t        j                  dd      dkD   t        j                  dd       t        j                  dd       t        j                  g        t        j                  g d       j                  j                  d      } | d	kD   | j                  ddd
      dkD   | j                  ddd      dkD   | j                  dd
      dd d   dkD   | | dz
  k(   | |  kD   y w)Nr   r   r]   r   r
  r^   )g      r  r   r  r  r   g      ?r  r\  rp  r   )r'   r_   r  r   r  r  r!   r  s    r   r  z?TestArrayManipulation.test_argwhere_basic.<locals>.a_variations  s     ))B"Q&&''!**''!**((2,((+,,!!#&Ac'M))Aq!$s**))B)-33))B"14a4(3..q1u*qb&Ls   DD)r   r   r   r  s   `      r   test_argwhere_basicz)TestArrayManipulation.test_argwhere_basic  sN    "T"6*	 AayH(C##Hc2  r   c               #      K   d d ddgddgf d t         j                   d d d d	 d
 d d  d d y w)N)r  )r  g@)g      @gffffff@)r  r   r  g      r   r^   r]   r\   r   FTr  y       @      ?a_string )r'   r  r   r   r   array_like_variationsz+TestArrayManipulation.array_like_variations  sb     22##1v1vff
!!
s   AAc                     t         } t        d      |      }| j                         D ]$  } ||      } ||      }| j                  ||       & y r1  )r   r   r  r   r   r   r  r<   r   r   s         r   test_flatnonzero_array_likez1TestArrayManipulation.test_flatnonzero_array_like   sM    ""T"6*++-AayH(C##Hc2 .r   c                     t         } t        d      |      }| j                         D ]$  } ||      } ||      }| j                  ||       & y r1  )r   r   r  r   r   s         r   test_argwhere_array_likez.TestArrayManipulation.test_argwhere_array_like)  sM    "T"6*++-AayH(C##Hc2 .r   c                 
   t         } t        d      |      }|D cg c]  }t        j                  |       }} || }|gt	        |      z  }|D 	cg c]  }	|	j
                   }
}	| j                  ||
       y c c}w c c}	w r1  )r5   r   r'   r  r   r,   r   )r   input_shapesr   r   r  sinarrays	outarraysr   r<   r   s              r   %broadcast_arrays_assert_correct_shapez;TestArrayManipulation.broadcast_arrays_assert_correct_shape1  s     ("T"6*)56ABHHQK68$	"#c(m3 )*	1qww	*#.	 7 +s   A;B c                     t         } t        d      |      }g d}|D ]D  }|g}| j                  ||       ||g}| j                  ||       |||g}| j                  ||       F y )NTr   )	r   r  rF  rV  rG  )r\   r   r  r  r  )r5   r   r)  )r   r   r  rh  r,   r%  input_shapes2input_shapes3s           r   'test_broadcast_arrays_same_input_shapesz=TestArrayManipulation.test_broadcast_arrays_same_input_shapes=  sy     ("T"6*
 E!7L66|UK"ENM66}eL"E51M66}eL r   c                     ddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgd	dgdgdd	gdgddgdgddgdgdd	gd	gg}|D ]/  \  }}| j                  ||       | j                  |d d d
   |       1 y )Nr   r  r  r  r  r  rG  r   rF  r|   r)  r   rh  r%  r   s       r   9test_broadcast_arrays_two_compatible_by_ones_input_shapeszOTestArrayManipulation.test_broadcast_arrays_two_compatible_by_ones_input_shapes[  s     D\4 fv&fv&fv&fv&fv&fv&fv&fv&fv&fv&fv&fv&
 -1(L.66|^T66|DbD7I>Z -1r   c                 8   ddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgdd	gd	gdd
gd	gdd	gd	gdd	gd	gddgdgdd
gd
gddgdgddgdgdd
gd
gg}|D ]/  \  }}| j                  ||       | j                  |d d d   |       1 y )Nr   r  r  r  r   r  r  r   r   rF  rG  r|   r/  r0  s       r   Dtest_broadcast_arrays_two_compatible_by_prepending_ones_input_shapeszZTestArrayManipulation.test_broadcast_arrays_two_compatible_by_prepending_ones_input_shapesu  s5    $ZF^V$F^V$F^V$&\6"d^V$F^V$F^V$&\6"&\6"$ZF^V$F^V$F^V$&\6"d^V$F^V$F^V$&\6"&\6")
, -1(L.66|^T66|DbD7I>Z -1r   c                     t         } t        d      |      }ddgdgddgdgddgdgg}|D ]D  \  }} || }|D cg c]  }|j                   }}|gt        |      z  }	| j	                  |	|       F y c c}w )	NTr   Fr   r^   r]   r   r  )r5   r   r,   r   r   )
r   r   r  rh  r'  r   r(  r<   r   r   s
             r   "test_broadcast_arrays_scalar_inputz8TestArrayManipulation.test_broadcast_arrays_scalar_input  s    '"T"6*E]D!VTNa[$

 )-$Hnx(I$-.Iq177IC.&'#h-7H##Hc2	 )-.s   A4c                     t         } t        d      |      } |dd      }ddg}|D cg c]  }|j                   }}| j                  ||       y c c}w )NTr   )r  i  )i  r  )r5   r   r,   r   r   r   r  r(  r   r<   r   s          r   !test_broadcast_arrays_tuple_inputz7TestArrayManipulation.test_broadcast_arrays_tuple_input  sZ    '"T"6**f-	$< )*	1qww	*#. +s   Ac                    t         } t        d      |      } |t        j                  d      t        j                  dt        j                              }ddg}|D cg c]  }|j
                   }}| j                  ||       y c c}w )NTr   r]   r  r   )r5   r   r'   intpr  r,   r   r7  s          r   %test_broadcast_arrays_non_array_inputz;TestArrayManipulation.test_broadcast_arrays_non_array_input  sr    '"T"6*"''!*bhhvRWW&EF	F# )*	1qww	*#. +s    Bc                 P   t         } t        d      |      }| j                          | j                  t              5 }t        j                  d      j                  d      }d} |||       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)NTr   r   r  zMismatch of argument types)r5   r   r   r   r	   r'   r_   r!   r   r   r   )r   r   r  r   r#   r  s         r   /test_broadcast_arrays_invalid_mixed_input_typeszETestArrayManipulation.test_broadcast_arrays_invalid_mixed_input_types  s    '"T"6*!{+v))A,&&v.CA#qM , 	2C8H8H4IJ	 ,+s   0BB%c                 R   t         } t        d      |      }| j                          | j                  t              5 }t        j                  dt
        j                        }d} |||       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)NTr   r\   r   zhello worldzArgument "1" must be array-like)r5   r   r   r   r	   r'   r  r  r   r   r   )r   r   r  r   r#   r&  s         r   #test_broadcast_arrays_invalid_inputz9TestArrayManipulation.test_broadcast_arrays_invalid_input  s    '"T"6*!{+v((1BHH-CA#qM , 	7V=M=M9NO	 ,+s   1BB&c           	         t         } t        d      |      }| j                          ddgddgg ddd	gg}|D ]{  }||d d d
   fD ]l  }| j                  t              5 }|D cg c]  }t        j                  |       }} ||  d d d        | j                  dt        j                               n } y c c}w # 1 sw Y   8xY w)NTr   r  r   r  r  r  r  r  r|   r  )
r5   r   r   r   r   r'   r  r   r   r   )	r   r   r  rh  r%  r,   r   r&  r'  s	            r   :test_broadcast_arrays_incompatible_shapes_raise_valueerrorzPTestArrayManipulation.test_broadcast_arrays_incompatible_shapes_raise_valueerror  s    '"T"6*! 4LTN	"	
 !L&TrT(:;&&z2f5:;UUH;8$ 3 ]!&"2"235 < !  < 32s   B=#B8
?B=8B==Cc                    d }|} t        d      |      } |t        j                  g dg dg dg      d      } |t        j                  g dg dg dg      d      }t        j                  j	                  ||       y )Nc                     | j                   \  }}t        j                  | |||f      }t        j                  |dd      }|j	                         }t        j
                  |d|f      }|d d|z
   ||dz
  d d d f<   |S Nr   r^   r|   )r,   r'   r+   swapaxesr:   r!   r   r   rcr<   r  ccds           r   unfold_flattenzITestArrayManipulation.test_readonly_after_flatten.<locals>.unfold_flatten  sx    77DAqAq!9-AAq!$AB

2Aw'AWq1u:Aa!efaiLHr   Tr   r  r]   r]   r]   r\   r\   r\   r]   r   r'   r   r   assert_array_equal)r   rK  r   r  res_nbres_pys         r   test_readonly_after_flattenz1TestArrayManipulation.test_readonly_after_flatten  sm    	  "T"6* rxxIy ABAF)Y	!BCQG


%%ff5r   c                    d }|} t        d      |      } |t        j                  g dg dg dg      d      } |t        j                  g dg dg dg      d      }t        j                  j	                  ||       y )Nc                     | j                   \  }}t        j                  | |||f      }t        j                  |dd      }|j	                         }t        j
                  |d|f      }|d d|z
   ||dz
  d d d f<   |S rD  )r,   r'   r+   rE  rA   r!   rF  s           r   unfold_ravelzETestArrayManipulation.test_readonly_after_ravel.<locals>.unfold_ravel  sx    77DAqAq!9-AAq!$AB

2Aw'AWq1u:Aa!efaiLHr   Tr   r  rL  rM  r]   rN  )r   rU  r   r  rP  rQ  s         r   test_readonly_after_ravelz/TestArrayManipulation.test_readonly_after_ravel  sm    	 "T"6* rxxIy ABAF)Y	!BCQG


%%ff5r   c                    | j                          t        j                  d      j                  d      j	                         }|j	                  d      }d|j
                  _        d|j
                  _        d }|} t        d      |      } ||      } ||      }d	}| j                  |j
                  j                   |       d
}| j                  |j
                  j                  |       y )Nr[  r  r\  rp  Fc                 &    | j                         }|S r   r@   )r<   r   s     r   try_ravel_w_copyzKTestArrayManipulation.test_mutability_after_ravel.<locals>.try_ravel_w_copy  s    WWYFMr   Tr   zCNo copy was performed, so the resulting array must not be writeablez?A copy was performed, yet the resulting array is not modifiable)	r   r'   r_   r!   rU   r   rB  r   
assertTrue)	r   a_ca_frY  r   r  ret_cret_frQ  s	            r   test_mutability_after_ravelz1TestArrayManipulation.test_mutability_after_ravel
  s     	!iil""6*//1hhSh!#		#			 ""T"6*c
c
6EKK11137O--s3r   N)B__name__
__module____qualname____doc__r   r   r  r  r  r  r/  r3  r6  r8  r<  r?  rM  rX  enable_pyobj_flagsr`  rd  rt  rx  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  staticmethodr  r!  r#  r)  r-  r1  r3  r5  r8  r;  r=  r?  rA  rR  rV  r_  r   r   r   r   r      s{   m"^X*tO.-68S-$^-
-
-
&+".HAH (:# /$B
 &8  PD += 	/49 *< 8 (: 	/8*3XM-FAP,!\!3F5,.6`/	)	3/(3T1.TX(-0-03*3.  $33
/M<[4[B3//
K
P5,6(6(4r   r   __main__r   )F);	functoolsr   	itertoolsr   numpyr'   unittestnumbar   r   r   r   numba.core.errorsr	   
numba.corer
   r   numba.tests.supportr   r   rd  rc  r   r%   r(   r-   r1   r5   r8   r=   rB   rE   rG   rK   rN   rS   rV   rX   rZ   rg   rj   rl   ro   rr   rt   rz   r~   r   r   r   r   r   r   r   r   r   r   r`  mainr   r   r   <module>rp     s    "   / / ) $ 9 $' D1, ! ! % %'&&, ( ( / /   & &  #   ?L P P,#c4OX c4L+ zHMMO r   