
    ܙd0                        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	 d dl
mZmZmZmZ d dlmZ d dlmZ d dlmZmZ d d	lmZmZmZmZ  e	            Zd
e_         e	            Zd
e_        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 Z0d Z1d Z2d Z3d  Z4d! Z5d" Z6d# Z7ed/d$            Z8d% Z9d& Z:d0d(Z;d) Z<d* Z=d+ Z> G d, d-ee          Z?e@d.k    r ejA                     dS dS )1    )partial)permutationsN)compile_isolatedFlags)jitnjit
from_dtypetypeof)numpy_version)TypingError)typeserrors)TestCaseMemoryLeakMixinCompilationCachetagTc                       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                  (      fdD             S )Nc                 (    g | ]} |gR i S  r   ).0pyfuncargsfunckwargss     Clib/python3.11/site-packages/numba/tests/test_array_manipulation.py
<listcomp>zCfrom_generic.<locals>.decorator.<locals>.result.<locals>.<listcomp>'   s3    OOOfDD1$111&11OOO    r   )r   r   r   pyfuncs_to_uses   ``r   resultz/from_generic.<locals>.decorator.<locals>.result&   s%    OOOOOOOOOOr   r   )r   r!   r    s   ` r   	decoratorzfrom_generic.<locals>.decorator%   s-    	P 	P 	P 	P 	P 	Pr   r   )r    r"   s   ` r   from_genericr#      s$         r   c                 ,    |                      |          S N)reshapearrnewshapes     r   array_reshaper*   ,   s    ;;x   r   c                 ,    t          j        | |          S r%   )npr&   r'   s     r   numpy_array_reshaper-   0   s    :c8$$$r   c                 ,    t          j        | |          S r%   r,   broadcast_to)r(   shapes     r   numpy_broadcast_tor2   4   s    ?3&&&r   c                      t          j        |  S r%   )r,   broadcast_shapesr   s    r   numpy_broadcast_shapesr6   8       %%r   c                      t          j        |  S r%   )r,   broadcast_arraysr5   s    r   numpy_broadcast_arraysr:   <   r7   r   c                 8    t          j        | |          |         S r%   r/   )r(   r1   idxs      r   numpy_broadcast_to_indexingr=   @   s    ?3&&s++r   c                 *    |                                  S r%   )flattenas    r   flatten_arrayrB   D       99;;r   c                 *    |                                  S r%   ravelr@   s    r   ravel_arrayrG   H   s    7799r   c                 4    |                                  j        S r%   )rF   sizer@   s    r   ravel_array_sizerJ   L   s    7799>r   c                 *    t          j        |           S r%   )r,   rF   r@   s    r   numpy_ravel_arrayrL   P   s    8A;;r   c                 *    |                                  S r%   	transposer@   s    r   transpose_arrayrP   T   s    ;;==r   c                 *    t          j        |           S r%   r,   rO   r@   s    r   numpy_transpose_arrayrS   X   s    <??r   c                 .    t          j        | |          S N)axesrR   r(   rV   s     r    numpy_transpose_array_axes_kwargrX   [   s    <$''''r   c                 R    t          j        | |                                          S rU   )r,   rO   copyrW   s     r   %numpy_transpose_array_axes_kwarg_copyr[   _   s#    <$''',,...r   c                 ,    |                      |          S r%   rN   rW   s     r   array_transpose_axesr]   c   s    ==r   c                 P    |                      |                                          S r%   )rO   rZ   rW   s     r   array_transpose_axes_copyr_   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      rc   )r,   r&   arangeTrO   )mnr1r2r_difzs         r   transpose_issue_4708rl   k   sz    	BIa!eai((1a)	4	4B	BIa!e$$q!f	-	-B"$YMEL	**E	AHr   c                 *    |                                  S r%   )squeezer@   s    r   squeeze_arrayro   t   rC   r   c                 ,    t          j        | |          S r%   )r,   expand_dims)rA   axiss     r   rq   rq   x   s    >!T"""r   c                      t          j        |  S r%   )r,   
atleast_1dr5   s    r   rt   rt   |       =$r   c                      t          j        |  S r%   )r,   
atleast_2dr5   s    r   rw   rw      ru   r   c                      t          j        |  S r%   )r,   
atleast_3dr5   s    r   ry   ry      ru   r   c                     | j         d         dz  f| j         dd          z   }t          j        j                            | |          S )Nr   rb   rc   )strides)r{   r,   libstride_tricks
as_strided)rA   r{   s     r   as_strided1r      sB    y|q "QYqrr]2G6**1g*>>>r   c                     d}| j         d d         | j         d         |z
  dz   |fz   }| j        | j        d         fz   }t          j        j                            | ||          S )Nra   rc   )r1   r{   )r1   r{   r,   r|   r}   r~   )rA   windowr1   r{   s       r   as_strided2r      se    FGCRCLAGBK&014f==Ei19R=**G6**1E7*KKKr   c                 P    t           j        j                            | ||          S )N)rr   )r,   r|   r}   sliding_window_view)xwindow_shaperr   s      r   r   r      s"    633A|$3OOOr   c                 2    | j         f}| j        }d|||f<   d S )N      ?)r   y)r(   arr2dr   r   s       r   	bad_indexr      s#    AAE!Q$KKKr   c                     | d         S )N)rc   g       @r   r(   s    r   bad_float_indexr      s     v;r   Fc                 .    t          j        | ||          S r%   )r,   fill_diagonal)r(   valwraps      r   numpy_fill_diagonalr      s    Cd+++r   c                 *    t          j        |           S r%   )r,   r1   r   s    r   numpy_shaper      s    8C==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                       e Zd ZdZ 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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.e/d-             Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z? xZ@S )=TestArrayManipulationz4
    Check shape-changing operations on arrays.
    c                 |    t          t          |                                            t                      | _        d S r%   )superr   setUpr   ccache)self	__class__s    r   r   zTestArrayManipulation.setUp   s1    #T**00222&((r   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                              d          } |d            |d	            |d
            |d            |d            |d            |d            |d           t          j        d                              d          } |d            |d	            |d
            |d           t          j        d                              d          j        } |d            |d            ||d            ||d            ||d           t          j        d                              dd          } |d            |d            |d            |d            |d            |d            ||d            ||d           fd}t          j        g           } ||            ||                    d                                                        d S )!Nc                     t          | t          |          t          |          f          }|                    ||          S r%   )r   r
   entry_point)r   r(   r1   cress       r   generic_runz=TestArrayManipulation.test_array_reshape.<locals>.generic_run   s8    #FVC[[&--,HIID##C///r   c                      | ||          }                                   | ||          }                    ||           ~                                 d S r%   memory_leak_setupassertPreciseEqualmemory_leak_teardown)r   r(   r1   expectedgotr   r   s        r   checkz7TestArrayManipulation.test_array_reshape.<locals>.check   sj    vc5))H""$$$+fc511C##C222%%'''''r   c                                                        | ||          }                    |j        |                               |j        |j                   ~                                 d S r%   )r   assertEqualr1   rI   r   )r   r(   r1   expected_shaper   r   r   s        r   check_only_shapezBTestArrayManipulation.test_array_reshape.<locals>.check_only_shape   sw     ""$$$+fc511CSY777SXsx000%%'''''r   c                                          t                    5 } | ||           d d d            n# 1 swxY w Y                       t          |j                  d           d S )Nzincompatible shape for array)assertRaisesNotImplementedErrorr   str	exceptionr   r(   r1   raisesr   r   s       r   check_err_shapezATestArrayManipulation.test_array_reshape.<locals>.check_err_shape   s    ""#677 06FC///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0S!122;= = = = =   6::c                                          t                    5 } | ||           d d d            n# 1 swxY w Y                       t          |j                  d           d S )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   s    "":.. 0&FC///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0S!122HJ J J J Jr   c                                          t                    5 } | ||           d d d            n# 1 swxY w Y                       t          |j                  d           d S )Nzmultiple negative shape valuesr   r   s       r   check_err_multiple_negativezMTestArrayManipulation.test_array_reshape.<locals>.check_err_multiple_negative   s    "":.. 0&FC///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0S!122=? ? ? ? ?r      )r   )      )   ra   )r   rc   ra   )rc   r   rc   rc   ra   rc   rb   ra   r   r   )   )r   r   )r   ra   rb   )rc   r   rc   ra   rc   rb   rc   r   r   )rb      r      r   r   )r   r   )r   r   r   )r   r   r   )r   r   )r   r   r   )r   r   r   r   c                 2    | d            | d            | d            | d            | dd            | dd            | dd            | d	d
            | dd            | d            | d            | d           d S )Nr   r   )rc   r   rb   )r   7   rc   r   rb   r   r   r   r   r   r   )r   r   )r   r   )r   r   r   )r   r   r   r   rc   rc   rb   r   )r(   r   r   r   s    r   check_emptyz=TestArrayManipulation.test_array_reshape.<locals>.check_empty  s    E#qMMME#tE#y!!!E#'(((S"d+++S%...S'6222S'6222S*i888N3###N3"""N3'''''r   )ra   rb   r   )	r*   r-   r#   r,   rd   r&   re   arraydisable_leak_check)
r   r    r   r   r(   r   r   r   r   r   s
   `     @@@@r   test_array_reshapez(TestArrayManipulation.test_array_reshape   sA   ')<=	0 	0 	0 
n	%	%	( 	( 	( 	( 	( 
&	%	( 
n	%	%	( 	( 	( 	( 	( 
&	%	( 
n	%	%	= 	= 	= 	= 	= 
&	%	= 
n	%	%	J 	J 	J 	J 	J 
&	%	J 
n	%	%	? 	? 	? 	? 	? 
&	%	? immc5c6c6c9c%&&&imm##I..c5c6c6c9c%&&&sBsE"""sF###imm##$677c5c6c6c9 imm##I..0c9c()))Y'''V$$$W%%% imm##Aa((c2c5c7c:c:sG$$$##C888##C888	( 	( 	( 	( 	( 	( 	( hrllCCKK	**+++ 	!!!!!r   c           	      2    t           t          t          t          g} fdt	          |           fd            }t	          |           fd            }t	          |           fd            }t	          |           fd            }t          j        d          t          j        d                              dd          t          j        d                              d	d
d          t          j        d                              dd	d
d          t          j        d                              ddd	          d d d
d d d	d d f         g}t          t          |                    D ]} |||         d            t          t          t          ||         j                                      D ]P}t          |          t          fd|D                       }	 |||         |            |||         |	           Qt	          t          g          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	         d            ||d	         d            ||d
         d             ||d
         d!                                t                     5 }  t#          d"#          t$                    t          j        ddg          f           d d d            n# 1 swxY w Y                        d$t+          |j                             d S )%Nc                     j                             | t          |          t          |          f          }|                    ||          S r%   r   compiler
   r   )r   r(   rV   r   r   s       r   runz<TestArrayManipulation.test_array_transpose_axes.<locals>.run7  A    ;&&vsVD\\/JKKD##C...r   c                     | ||          } | ||          }                     ||                               |j        j        |j        j                                       |j        j        |j        j                   d S r%   )r   r   flagsf_contiguousc_contiguous)r   r(   rV   r   r   r   r   s        r   r   z>TestArrayManipulation.test_array_transpose_axes.<locals>.check;  s    vc4((H#fc4((C##C222SY3%^8: : :SY3%^8: : : : :r   c                                          t                    5 } | ||           d d d            n# 1 swxY w Y                       t          |j                  d           d S )Nzrepeated axis in transposer   r   r(   rV   r   r   r   s       r   check_err_axis_repeatedzPTestArrayManipulation.test_array_transpose_axes.<locals>.check_err_axis_repeatedE  s    "":.. '&FC&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'S!1229; ; ; ; ;r   c                                          t                    5 } | ||           d d d            n# 1 swxY w Y                       t          |j                  d           d S )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_oobL  s    "":.. '&FC&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'S!122QS S S S Sr   c                                          t          t          f          5   | ||           d d d            d S # 1 swxY w Y   d S r%   )r   	TypeErrorr   )r   r(   rV   r   r   s      r   check_err_invalid_argszOTestArrayManipulation.test_array_transpose_axes.<locals>.check_err_invalid_argsS  s    ""I{#;<< ' 'FC&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   >AAr   r   r   rb   ra   rc   @   r   c                     g | ]}|z
  S r   r   )r   r   ndims     r   r   zCTestArrayManipulation.test_array_transpose_axes.<locals>.<listcomp>d  s    !9!9!9q!d(!9!9!9r   c                      | ||          } t          |           ||          }t          j                            ||           d S r%   )r   r,   testingassert_equal)r   rf   rg   r   r   s        r   check_issue_4708zITestArrayManipulation.test_array_transpose_axes.<locals>.check_issue_4708h  sH    va||H$v,,q!$$C J##C22222r   r   foo)r   g333333@)333333?r   r   )rb   r   r   )ra   rb   rc   rc   r   rc   )r   r   rb   )rb   r   r   )ra   rc   rb   )rc   rb   )ra   rc   rb   r   )ra   rc   rb   Tnopythonz#np.transpose does not accept tuples)rX   r[   r]   r_   r#   r,   rd   r&   rangelenr   tupler   rl   r   r   r   r   rS   r   assertInr   r   )r   r    r   r   r   r   arrsirV   neg_axesr   er   r   s   `           @@r   test_array_transpose_axesz/TestArrayManipulation.test_array_transpose_axes1  s.   :?.35
	/ 	/ 	/ 	/ 	/ 
n	%	%	: 	: 	: 	: 	: 
&	%	: 
n	%	%	; 	; 	; 	; 	; 
&	%	; 
n	%	%	S 	S 	S 	S 	S 
&	%	S 
n	%	%	' 	' 	' 	' 	' 
&	%	' 	"	"%%a++	"%%aA..	"%%aAq11	"%%aA..sss33Q3qqqy9	; s4yy!! 	) 	)AE$q'4   $U5a+>+>%?%?@@ ) )4yy !9!9!9!9D!9!9!9::d1gt$$$d1gx((((	) 
+,	-	-	3 	3 
.	-	3 	AAA 	!!!tAw...tAw111tAw,,,tAw111Q000Q333Q66647D)))47E***47F+++47G,,,47G,,,47I...47J///47L11147M222{++ 	Kq5C455rxA7G7G6IJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K;AK((	* 	* 	* 	* 	*s   =O$$O(+O(c                 h    t            fd fdfd}t          j        d          } ||           t          j        d                              d          } ||            ||j                    ||d d d                    t          j        d          } ||           d S )	Nc                     j                             t          |           t          |          f          }|                    | |          S r%   r   )r(   rr   r   r   r   s      r   r   z3TestArrayManipulation.test_expand_dims.<locals>.run  r   r   c                      | |          }                                   | |          }                    ||           ~                                 d S r%   r   )r(   rr   r   r   r   r   r   s       r   r   z5TestArrayManipulation.test_expand_dims.<locals>.check  sf    vc4((H""$$$#c4..C##C222%%'''''r   c                 h    t          | j         dz
  | j        dz             D ]} | |           d S )Nrc   )r   r   )r(   rr   r   s     r   check_all_axesz>TestArrayManipulation.test_expand_dims.<locals>.check_all_axes  sI    sxi!mSX\:: ! !c4    ! !r   r   r   r   r   *   )rq   r,   rd   r&   re   r   )r   r
  r(   r   r   r   s   `  @@@r   test_expand_dimsz&TestArrayManipulation.test_expand_dims  s    	/ 	/ 	/ 	/ 	/ 	/	( 	( 	( 	( 	( 	( 	(	! 	! 	! 	! 	!
 illsimm##I..ssus44R4y!!!hrllsr   c                    t           } t          d          |          }t          j        d          }|                                 5 } |dd           d d d            n# 1 swxY w Y   |                     dt          |j                             |                                 5 } ||d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )NTr   r   hellora   z#First argument "a" must be an arrayz"Argument "axis" must be an integer)rq   r   r,   rd   assertTypingErrorr   r   r   )r   r   cfuncr(   r   s        r   test_expand_dims_exceptionsz1TestArrayManipulation.test_expand_dims_exceptions  s`   "T"""6**ill##%% 	E'1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	;SAQ=R=RSSS##%% 	 E#w	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 :C@P<Q<QRRRRRs$   	A""A&)A&)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                              d
          }
|
j        }|
d d d	         } ||
            ||
||           t          j        d                              d          }|j        }|d d d	         } ||            ||||           t          j        d                              d          } ||            |||||           d S )Nc                                          | |                               |                                 |                                           d S r%   )assertStridesEqualr   r?   )r   r   r   s     r   check_resultz<TestArrayManipulation.check_atleast_nd.<locals>.check_result  sK     ##C222##CKKMM83C3C3E3EFFFFFr   c                 D      |            |                      d S r%   r   )argr  r  r   s    r   check_singlez<TestArrayManipulation.check_atleast_nd.<locals>.check_single  s+    LsVVC[[11111r   c                       |  } |  }                     t          |          t          |                     t          ||          D ]\  }} ||           d S 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  sy    #VT]NtIS^^S-@-@AAA!$Y!?!? , ,XS(++++, ,r   r  y              @r   r                 ?r   rb   ra   r   r      )rb   rb   rb   rb   )r,   r   rd   r&   re   )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  s   	G 	G 	G 	G 	G	2 	2 	2 	2 	2 	2 	2	, 	, 	, 	, 	, 	, 	, 	, Xb\\Xb\\RBYq\\Yq\\B"XRBBYq\\!!&))T"XRBBYr]]""9--T"XRBBIbMM!!,//QBB#####r   c                 r    t           } t          d          |          }|                     ||           d S NTr   )rt   r   r,  r   r   r  s      r   test_atleast_1dz%TestArrayManipulation.test_atleast_1d  =    "T"""6**fe,,,,,r   c                 r    t           } t          d          |          }|                     ||           d S r.  )rw   r   r,  r/  s      r   test_atleast_2dz%TestArrayManipulation.test_atleast_2d  r1  r   c                 r    t           } t          d          |          }|                     ||           d S r.  )ry   r   r,  r/  s      r   test_atleast_3dz%TestArrayManipulation.test_atleast_3d  r1  r   c                       fd fd}t          j        d          } ||            ||                    d                      ||                    d                     d S )Nc                     j                             t          |           f          }|                    |           S r%   r   )r(   r   r   r   s     r   r   z3TestArrayManipulation.check_as_strided.<locals>.run  s6    ;&&vs~>>D##C(((r   c                 `     |           } |           }                     ||           d S r%   r   )r(   r   r   r   r   r   s      r   r   z5TestArrayManipulation.check_as_strided.<locals>.check  s9    vc{{H#c((C##C22222r   r   r   )r   rc   r   )r,   rd   r&   )r   r   r   r(   r   s   ``  @r   check_as_stridedz&TestArrayManipulation.check_as_strided  s    	) 	) 	) 	) 	) 	)	3 	3 	3 	3 	3 	3 	3
 immc


ckk&!!"""ckk)$$%%%%%r   c                 n    |                      t                     |                      t                     d S r%   )r:  r   r   r   s    r   test_as_stridedz%TestArrayManipulation.test_as_strided  s0    k***k*****r   c                 d     fd}t          j        d          }dD ]?}                     d|           5   ||d|           d d d            n# 1 swxY w Y   @t          j        d                              dd          }d	D ]?}                     d
|           5   ||d|           d d d            n# 1 swxY w Y   @dD ]?}                     d
|           5   ||d|           d d d            n# 1 swxY w Y   @t          j        d                              dddd          }dD ]?}                     d|           5   ||d|           d d d            n# 1 swxY w Y   @                     d          5   ||dd           d d d            d S # 1 swxY w Y   d S )Nc                     t           j        j                            | ||d          }t          | ||          }                    ||           d S )NT)	writeable)r,   r|   r}   r   r   )r(   r   rr   r   r   r   s        r   r   z=TestArrayManipulation.test_sliding_window_view.<locals>.check  s[    v+??\44 @  H &c<>>C##C22222r   r   )Nr   r   r   z1d array, axis=r      
      r   z2d array, axis=)Nr   rc   rc   r   )rc   r   )r   r   r   rb   )r   )r   r   z4d array, axis=ra   rb   z2d array, repeated axes)r   ra   ra   )r   rc   r   )r,   rd   subTestr&   )r   r   arr1rr   arr2arr4s   `     r   test_sliding_window_viewz.TestArrayManipulation.test_sliding_window_view  sL   	3 	3 	3 	3 	3 y}}' 	% 	%D66677 % %dAt$$$% % % % % % % % % % % % % % % y~~%%b"-- 	% 	%D66677 % %dAt$$$% % % % % % % % % % % % % % % 4 	* 	*D66677 * *dFD)))* * * * * * * * * * * * * * * y~~%%aAq11& 	* 	*D66677 * *dFD)))* * * * * * * * * * * * * * * \\344 	. 	.E$	9---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.sY   AA	A	!B;;B?	B?	#C==D	D	E))E-	0E-	
F%%F),F)c                      fd} fd}                                   t          j        d          }t          j        d                              dd          }                     d          5   |d|d	d            d d d            n# 1 swxY w Y                        d
          5   |d|dd            d d d            n# 1 swxY w Y                        d          5   |d|dd            d d d            n# 1 swxY w Y                        d          5   |d|dd            d d d            n# 1 swxY w Y                        d          5   |d|dd            d d d            n# 1 swxY w Y                        d          5   |d|dd           d d d            n# 1 swxY w Y                        d          5   |d|dd           d d d            n# 1 swxY w Y                        d          5   |d|dd           d d d            n# 1 swxY w Y                        d          5   |d|dd           d d d            n# 1 swxY w Y                        d          5   |d|dd            d d d            n# 1 swxY w Y                        d!          5   |d|dd"           d d d            n# 1 swxY w Y                        d#          5   |d$|d            d d d            n# 1 swxY w Y                        d%          5   |d$|d&           d d d            n# 1 swxY w Y                        d'          5   |d$|d(           d d d            n# 1 swxY w Y                        d)          5   |d*|dd&           d d d            n# 1 swxY w Y                        d+          5   |d*|dd(           d d d            d S # 1 swxY w Y   d S ),Nc                                          t                    5 }t          |  d d d            n# 1 swxY w Y                       | t	          |j                             d S r%   )r   r   r   r   r   r   msgr   r   r   s      r   _raiseszFTestArrayManipulation.test_sliding_window_view_errors.<locals>._raises1  s    "":.. +&#T**+ + + + + + + + + + + + + + +MM#s6#34455555s   
266c                                          t          j                  5 }t          |  d d d            n# 1 swxY w Y                       | t          |j                             d S r%   )r   r   r   r   r   r   r   rN  s      r   _typing_errorzLTestArrayManipulation.test_sliding_window_view_errors.<locals>._typing_error6  s    ""6#566 +&#T**+ + + + + + + + + + + + + + +MM#s6#34455555s   
7;;r   rA  rB  rC  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)rB  rb   z$2d window shape, only one axis givenrc   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   ra   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))rU  z
axis=floatz1axis must be None, an integer or tuple of integerzaxis=tuple(float))r   r,   rd   r&   rG  )r   rP  rR  rH  rI  s   `    r   test_sliding_window_view_errorsz5TestArrayManipulation.test_sliding_window_view_errors0  sC	   	6 	6 	6 	6 	6
	6 	6 	6 	6 	6 	!!!y}}y~~%%b"-- \\566 	E 	EG3T2tDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E\\566 	J 	JG3T7DIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J\\344 	N 	NG<dBMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N\\:;; 	S 	SG<dGTRRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S \\566 	R 	RG;T7DQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R\\@AA 	O 	OG;T7ANNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O\\9:: 	N 	NG;T1fMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N \\122 	? 	?G14A>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?\\-.. 	@ 	@G14B???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@\\122 	I 	IG14HHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I\\-.. 	J 	JG14III	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J \\-.. 	 	MEtT  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \\.// 	 	MEtS  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \\566 	 	MEtV  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \\,'' 	 	MCT1c  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \\-.. 	 	MCT1f  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1BBB,CCC'DD	D"D==EEE88E<?E<F33F7:F7G..G25G2H))H-0H-	I$$I(+I(JJ#&J#?KK!K:LLL4MMM.NNN(OO
O#O??PPCc                    t          j        d                              dd          }|dk    r|j        }t          }t          |          }|dk    r|                    d          }|                     |j        |           t          ||f|          }|j
        } ||          } ||          }	t           j                            ||	           d S )N	   ra   FA)layoutr   )r,   rd   r&   re   rB   r
   rZ   r   r\  r   r   r   r   )
r   r   r\  rA   r   
arraytype1crr  r   r   s
             r   test_flatten_arrayz(TestArrayManipulation.test_flatten_arrayt  s    IaLL  A&&S==AAYY
S==#44J*F333fzm5AAA6!99eAhh

#.....r   c                     |                      t                     |                      t          d           |                      t          d           d S )Nr]  rZ  )r   r\  r[  )r`  no_pyobj_flagsr<  s    r   test_flatten_array_npmz,TestArrayManipulation.test_flatten_array_npm  sQ    n555nSAAAnSAAAAAr   c                 *     fd}t          |t                    t          |t                    fd} |t          j        d                              dd          d            |t          j        d                              ddd          d            |t          j        d	                              ddd
          d d d d df         d            |t          j        d	                              d
dd          d            |t          j        d	                              d
ddd          d            |t          j        d                              d
ddd
          d d d d d d df         d           d S )Nc                    t          |          }                    |j        |           t          | |f
          }|j        } | |          } ||          }t
          j                            ||           |j        j	        |j        j	        k    }|j        j	        |j        j	        k    }	                    ||dk                                   ||	           d S )Nr]  rW  )
r
   r   r\  r   r   r,   r   r   ctypesdata)r   rA   assume_layoutr^  r_  r  r   r   	py_copied	nb_copiedr   r   s             r   generic_checkz=TestArrayManipulation.test_ravel_array.<locals>.generic_check  s    JZ.>>>!&:-uEEEBNEvayyH%((CJ##Hc222(/*>>I#*/9IY(<===Y	22222r   c                  (     | i |  | i | d S r%   r   )r   r   check_functioncheck_methods     r   r   z5TestArrayManipulation.test_ravel_array.<locals>.check  s3    L$)&)))ND+F+++++r   rY  ra   rW  )rh  rZ  order   rb   r   r[  $   )r   rG   rL   r,   rd   r&   )r   r   rk  r   rm  rn  s   ``  @@r   test_ravel_arrayz&TestArrayManipulation.test_ravel_array  s   	3 	3 	3 	3 	3 	3" }k:: 0ABB	, 	, 	, 	, 	, 	,
 	bill""1a((<<<<bill""1as"333GGGGbimm##Aq!,,QQQ1W5SIIII 	bimm##Aq!,,C@@@@bimm##Aq!3#77sKKKKbimm##Aq!Q//111aaa
;3OOOOOOr   c                 "   t          j        d                              dd          }t          }t	          |          }t          ||f|          }|j        } ||          } ||          }t           j                            ||           d S NrY  ra   r]  )	r,   rd   r&   rJ   r
   r   r   r   r   	r   r   rA   r   r^  r_  r  r   r   s	            r   test_ravel_array_sizez+TestArrayManipulation.test_ravel_array_size  s    IaLL  A&&!AYY
fzm5AAA6!99eAhh

#.....r   c                 <    |                      t                     d S Nr]  )rs  rb  r<  s    r   test_ravel_array_npmz*TestArrayManipulation.test_ravel_array_npm  s    N33333r   c                 <    |                      t                     d S ry  )rw  rb  r<  s    r   test_ravel_array_size_npmz/TestArrayManipulation.test_ravel_array_size_npm  s    """88888r   c                 h    t          t          t          g          fd            } |             d S )Nc                    t          j        d                              dd          }t          |          }t	          | |f          }|j        } | |          } ||          }t           j                            ||           d S ru  )r,   rd   r&   r
   r   r   r   r   )r   rA   r^  r_  r  r   r   r   s          r   r   z9TestArrayManipulation.test_transpose_array.<locals>.check  s    	!$$Q**AJ!&:-uEEEBNEvayyH%((CJ##Hc22222r   )r#   rP   rS   )r   r   r   s    ` r   test_transpose_arrayz*TestArrayManipulation.test_transpose_array  sG    	(=>	?	?		3 		3 		3 		3 
@	?		3 	r   c                 <    |                      t                     d S ry  )r  rb  r<  s    r   test_transpose_array_npmz.TestArrayManipulation.test_transpose_array_npm  s    !!!77777r   c                 (   t          j        d                              ddddd          }t          }t	          |          }t          ||f|          }|j        } ||          } ||          }t           j                            ||           d S )Nr   rb   rc   ra   r   r]  )	r,   rd   r&   ro   r
   r   r   r   r   rv  s	            r   test_squeeze_arrayz(TestArrayManipulation.test_squeeze_array  s    I'((00Aq!Q??AYY
fzm5AAA6!99eAhh

#.....r   c                     |                      t          j                  5 }|                     t                     d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr]  rn   )r   r   r   r  rb  r   r   r   r   r   s     r   test_squeeze_array_npmz,TestArrayManipulation.test_squeeze_array_npm  s    v122 	:f##.#999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	iV%5!6!677777s   AAAc                 
   t           d             }t           d             }t          j        d                              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        	                    |
|           t          j
        |          }||	         } ||                                |	|          }
 ||                                |	|          }t          j        	                    |
|           d S )Nc                     | |         S r%   r   )rA   r<   s     r   np_new_axis_getitemz@TestArrayManipulation.test_add_axis.<locals>.np_new_axis_getitem  s    S6Mr   c                     || |<   | S r%   r   )rA   r<   items      r   np_new_axis_setitemz@TestArrayManipulation.test_add_axis.<locals>.np_new_axis_setitem  s    AcFHr   iH  )r   r   r      rc   rb   ra   )r   r,   rd   r&   slicenewaxisEllipsispy_funcr   r   
zeros_likerZ   )r   r  r  rA   	idx_casespyfunc_getitemcfunc_getitempyfunc_setitemcfunc_setitemr<   r   r   a_emptyr  s                 r   test_add_axisz#TestArrayManipulation.test_add_axis  s   		 	 
	 
	 	 
	 Im$$,,\::4[["*%Zt%1XXrz1%ZE$KK(1XXxQ/
H%Zq2:q1$
+Zq8RZ;
BJ1ZBJ11XXq"*d+ZHd+
	 -4+,4+ 
	3 
	3C%~a--H-3''CJ##Hc222mA&&GS6D%~gllnnc4@@H-T::CJ##Hc2222
	3 
	3r   c                    |                                  5 }t          t          j        dt          j        fdt          j        fg                    }t          j        t
          j        dd          }t          t          ||ft                     d d d            n# 1 swxY w Y   | 
                    dt          |j                             d S )Nr   r   rb   rW  r]  zUnsupported array index type)r  r	   r,   dtypeint32r   Arrayr   r   rb  r   r   r   )r   r   r^  
arraytype2s       r   test_bad_index_npmz(TestArrayManipulation.test_bad_index_npm  s    ##%% 	3#BHsBHo/2BHo.? %@ %@ A AJU[!S99JYZ(@#13 3 3 3		3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	4c&:J6K6KLLLLLs   A:BB"Bc           	         |                                  5 }t          t          t          j        t          j        dd          f           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nrb   rW  z$Unsupported array index type float64)	r  r   r   r   r  float64r   r   r   r  s     r   test_bad_float_index_npmz.TestArrayManipulation.test_bad_float_index_npm  s    ##%% 	D_#k%-C@@BD D D	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	<&*++	- 	- 	- 	- 	-s   5AAAc                    	 t           	 t          d          	          d d }fd}fd}	 fd} |d          D ]} |            D ]} |||            |d          D ]} |            D ]} |||           t          j        dgd	z                                dd          } ||d
            ||g d            ||t          j        g d                     d S )NTr   c              3   v   K   | | fV  d| z  | fV  | d| z  fV  d| z  dz   d| z  dz
  fV  | | | | fV  dV  d S )Nrb   rc   rc   rc   rc   r   )rg   s    r   _shape_variationszITestArrayManipulation.test_fill_diagonal_basic.<locals>._shape_variations%  s}      a&LLLq5!*a!e*EAIQ,,,,aA,OOOOOr   c               3     K   dV  dV  t           j        V  t           j         V  dV  t          j        d          V  dV  ddgV  t          j        d                              dd	d
d          V  t          j        t          j        d                              d	d	                    V  t          j        d                              d	d	          d d d         V  d S )Nrc   gA`"	@Tr   r   r   rY  6   ra   rb   r   )r,   naninfrd   r&   asfortranarrayr   r   r   _val_variationszGTestArrayManipulation.test_fill_diagonal_basic.<locals>._val_variations3  s      GGGKKK&LLL6'MMMJJJ)A,,JJJa&LLL)B--''1a33333#BIaLL$8$8A$>$>?????)A,,&&q!,,TTrT222222r   c              3      K    |           D ]X}t          j        |t           j                  V  t          j        t          j        |t           j                            V  Yd S )Nr  )r,   zerosr  r  ones)rg   r1   r  s     r   #_multi_dimensional_array_variationsz[TestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variationsA  sw      **1-- J JhuBJ777777'RZ(H(H(HIIIIIIJ Jr   c              3      K    |           D ]\}t          j        t          d |D                       t           j                  }t          d |D                       }||         V  ]d S )Nc                     g | ]}|d z  S rb   r   r   r   s     r   r   zwTestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variations_strided.<locals>.<listcomp>I  s    %;%;%;a!e%;%;%;r   r  c              3   >   K   | ]}t          d |dz  d          V  dS )r   rb   N)r  r  s     r   	<genexpr>zvTestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variations_strided.<locals>.<genexpr>J  s2      AAauQAq11AAAAAAr   )r,   r  r   r  )rg   r1   tmpslicerr  s       r   +_multi_dimensional_array_variations_stridedzcTestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variations_stridedG  s      **1-- " "hu%;%;U%;%;%;<<BJOOOAA5AAAAA&k!!!!" "r   c                     dD ]]}|                                  }|                                  }|i }nd|i} ||fi |  ||fi |                     ||           ^d S )N)NTFr   )rZ   r   )	r(   r   r   rA   bparamsr  r   r   s	         r   _check_fill_diagonalzLTestArrayManipulation.test_fill_diagonal_basic.<locals>._check_fill_diagonalM  s    ) . .HHJJHHJJ<FF$d^Fq#(((((a'''''''1----. .r   ra   rY  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_basic!  s   $"T"""6**	 	 		3 	3 	3	J 	J 	J 	J 	J	" 	" 	" 	" 	"	. 	. 	. 	. 	. 	. 	. 76q99 	/ 	/C&(( / /$$S#..../ ?>qAA 	/ 	/C&(( / /$$S#..../ hvz""**1a00S%(((S"6"6"6777S"(+>+>+>"?"?@@@@@r   c                 6    t           } t          d          |          d}                                  t          j        g           t          j        d          fD ]X}                     t                    5 } ||           d d d            n# 1 swxY w Y   dt          |j	                  v sJ Y                     t                    5 }t          j        d          } ||                                dt          |j	                             d d d            n# 1 swxY w Y    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          } |||           d S )NTr   rc   r   z'The first argument must be at least 2-D)ra   ra   r   z/All dimensions of input must be of equal lengthc                                          t                    5 } | |           d d d            n# 1 swxY w Y                       dt          |j                             d S )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~  s    "":..  &c3                             FFL\H]H]^^^^^s   599ra   ra   r  ffffff
@)rc   rb   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   rA   r   r  r(   r  s   `      @r   "test_fill_diagonal_exception_casesz8TestArrayManipulation.test_fill_diagonal_exception_casesi  s   $"T"""6** 	!!! "rwqzz) 	V 	VA"";// 6a              <FDT@U@UUUUUU z** 	gf##AE!SMMMNPSTZTdPePefff	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 	g 	g	_ 	_ 	_ 	_ 	_ 	_
 hvRX...fsC   BFmsC   h|||28444sC   hvRZ000   sC   sC   hx  sC     s%   =BB	B	A	D))D-0D-c                 8   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 ]3\  }} |||          } |||          }|                     ||           4d S )NTr   r   r   r   ra   rc   r  rc   rb   ra   ra   rc   ra   r  rb   r   r   rb   rc   )rb   r   rb   rb   )r2   r   r,   r   r  rd   r   )r   r   r  rg  input_arrayr1   r   r   s           r   test_broadcast_toz'TestArrayManipulation.test_broadcast_to  s   #"T"""6**
 Xa[[$Xa[[$Xa[[$WQZZWQZZWQZZ#Yq\\4 Yq\\6"Yq\\6"WQZZOWQZZOWQZZO WQZZWV__f%WV__f%KV-
0 #' 	3 	3Kvk511H%U++C##C2222	3 	3r   c                    t           } t          d          |          }t          j        d          ddg}d}|D ]P} |||          } |||          }|                     ||           |                     |j        d                    Qd S )NTr   {   r   	WRITEABLE)r2   r   r,   r   r   assertFalser   )r   r   r  inputsr1   r(   r   r   s           r   test_broadcast_to_0d_arrayz0TestArrayManipulation.test_broadcast_to_0d_array  s    #"T"""6** HSMM
  	5 	5Cvc5))H%U##C##Hc222SY{34444	5 	5r   c                 p   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}|                                  |D ]h\  }}}}|                     |          5 } |||           d d d            n# 1 swxY w Y   |                     |t          |j
                             id S )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  rc   rc   zDinput operand has more dimensions than allowed by the axis remappingr  r   z4all elements of broadcast shape must be non-negativer   )r   rb   g?g@z7The second argument "shape" must be a tuple of integersr  z-The first argument "array" must be array-likera   )rb   rA   z*object cannot be interpreted as an integer)r2   r   r,   r  r   r   r   r   r   r   r   )	r   r   r  rg  r(   target_shapeerrrO  r   s	            r   test_broadcast_to_raisesz.TestArrayManipulation.test_broadcast_to_raises  s|   #"T"""6**
 Xd^^R>@Xd^^R>@Xd^^R>@[>@R>@Xd^^T:LNXd^^T:LNXd^^T:LNXfvzLNXftZSUXftZSUXd^^RCEXd^^UJCEXfw
CEXfz;FHdK<>+9;C#
H 	!!!+/ 	6 	6'CsC""3'' )6c<((() ) ) ) ) ) ) ) ) ) ) ) ) ) )MM#s6#3445555	6 	6s   )HH		H	c                     t           d             }|                                } |            }|                     ||           d S )Nc                  ,    t          j        dd          S )NrA   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   sW    		0 	0 
	0 #**,,o#.....r   c                 L   t           } t          d          |          }t          j        dt          j                  }d} |||          }d|d<   |                     |                                d           |                     |                                d           d S )	NTr   rb   r  r  rB  r   rC  )r2   r   r,   r  r  r   sum)r   r   r  r  r1   views         r   test_broadcast_to_change_viewz3TestArrayManipulation.test_broadcast_to_change_view	  s    #"T"""6**hq111u[%((A**B///R(((((r   c                     t           } t          d          |          }t          j        d          ddgg}|D ]6\  }}} ||||          } ||||          }|                     ||           7d S )NTr   rb   r  r   )r=   r   r,   r  r   )	r   r   r  rg  r  r1   r<   r   r   s	            r   test_broadcast_to_indexingz0TestArrayManipulation.test_broadcast_to_indexing  s    ,"T"""6**WQZZ&
 (, 	3 	3#Kvk5#66H%UC00C##C2222	3 	3r   c                     t           d             }t          j        d          }|                    |          } ||          }|                     ||           d S )Nc                 V    t          j        | d          }||j        |j        |j        fS )Nr  )r,   r0   rI   r1   r{   )r(   rets     r   r   z@TestArrayManipulation.test_broadcast_to_array_attrs.<locals>.foo"  s(    /#v..C#)S[88r   ra   )r   r,   rd   r  r   )r   r   r(   r   r   s        r   test_broadcast_to_array_attrsz3TestArrayManipulation.test_broadcast_to_array_attrs  sf     
	9 	9 
	9 ill;;s##c#hh#.....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 ]=} || } || }|                     |t                     |                     ||           >d S )NTr   r   r  r   r  )ra   r   ))r   r  r   r   rc   r  )r   rc   r  r  r  ra   rc   rE  r   rD  r   r   r  rb   rF  )r6   r   assertIsInstancer   r   )r   r   r  rg  input_shaper   r   s          r   test_broadcast_shapesz+TestArrayManipulation.test_broadcast_shapes-  sI   '"T"""6** DHFIHV000KVVVVVVVJ6N6N6NLTN6N6NLL4LK9
<   	3 	3Kv{+H%%C!!#u---##Hc2222		3 	3r   c                 ^   t           } t          d          |          }|                                  ddgddgg ddd	gg d
ddgg}|D ]a}|                     t                    5 } ||  d d d            n# 1 swxY w Y   |                     dt          |j                             bd S )NTr   r  r  r  r  r  r  r  rc   ra   r   rb   ra   ra   )r   r  rF  )rB  r   rb   =shape mismatch: objects cannot be broadcast to a single shaper6   r   r   r   r   r   r   r   )r   r   r  rg  r  r   s         r   test_broadcast_shapes_raisesz2TestArrayManipulation.test_broadcast_shapes_raisesW  s'   '"T"""6**!!!
 4LTN	"---K
   	1 	1K"":.. $&{##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ MMYf.//1 1 1 1		1 	1s   'A99A=	 A=	c                 <   t           } t          d          |          }|                                  |                     t                    5 } |ddd           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )NTr   r   rb   r   z#negative dimensions are not allowedr  )r   r   r  r   s       r   (test_broadcast_shapes_negative_dimensionz>TestArrayManipulation.test_broadcast_shapes_negative_dimensionn  s    '"T"""6**!!!z** 	%fE&1$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	;SAQ=R=RSSSSSs   A))A-0A-c                 >   t           } t          d          |          }|                                  g d}|D ]a}|                     t                    5 } ||  d d d            n# 1 swxY w Y   |                     dt          |j                             bd S )NTr   ))r   )r  )g333333@)stringr   rA   )rc   r  z#must be either an int or tuple[int])r6   r   r   r   r   r   r   r   )r   r   r  inpsinpr   s         r   "test_broadcast_shapes_invalid_typez8TestArrayManipulation.test_broadcast_shapes_invalid_typex  s    '"T"""6**!!!
 
 
  	X 	XC"";// 6s               MM?VEUAVAVWWWW		X 	Xs   A))A-	0A-	c                     t            t          d                     fd}dD ]!}t          j        |          } ||           "dddgddgdd	ggd
dfD ]} ||                                t
                    5 } d           d d d            n# 1 swxY w Y                        dt          |j                             d S )NTr   c                 `     |           } |           }                     ||           d S r%   r9  )r   r   r   r  r   r   s      r   r   z/TestArrayManipulation.test_shape.<locals>.check  s9    vayyH%((C##C22222r   )r   r   r  )r   r   r   rc   Frb   ra   r   r   r  rA   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  sV   "T"""6**	3 	3 	3 	3 	3 	3 	3 0 	 	A(1++CE#JJJJ UQDAq7Aq6"2D)D 	 	AE#JJJJ{++ 	vE#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	C&*++	- 	- 	- 	- 	-s   BB"%B"c                      t           } t          d          |          } fd} |            D ].} ||          } ||          }                     ||           /d S )NTr   c               3     K   t          j        dd          V  t          j        dd          V  t          j        g           V  j                            d          } d| t          j        |           dk    <   | V  |                     ddd          V  |                     d	d
d          V  |                     dd          dd d
         V  | dz  V  d S )Nr   r   r   
fill_valued           皙?r   2   rb   rZ  ro  r   rc   r  )r,   rd   fullr   randomrandnabsr&   rA   r   s    r   a_variationszBTestArrayManipulation.test_flatnonzero_basic.<locals>.a_variations  s      )B"""""'!******(2,,!!#&&A!$AbfQii#oGGG))Aq!$$$$$))B)-----))B""14a4((((b&LLLLLr   )r   r   r   r   r   r  r  rA   r   r   s   `      r   test_flatnonzero_basicz,TestArrayManipulation.test_flatnonzero_basic  s    ""T"""6**
	 
	 
	 
	 
	  	3 	3AvayyH%((C##Hc2222	3 	3r   c                      t           } t          d          |          } fd} |            D ].} ||          } ||          }                     ||           /d S )NTr   c               3   *  K   t          j        dd          dk    V  t          j        dd          V  t          j        dd          V  t          j        g           V  t          j        g d          V  j                            d          } | d	k    V  |                     ddd
          dk    V  |                     ddd          dk    V  |                     dd
          dd d         dk    V  | | dz
  k    V  | |  k    V  d S )Nr   r   rb   r   r
  rc   )g      r  r   r  r  r   g      ?r  rZ  ro  r   )r,   rd   r  r   r  r  r&   r  s    r   r  z?TestArrayManipulation.test_argwhere_basic.<locals>.a_variations  sB     )B""Q&&&&'!******'!******(2,,(+++,,,,,!!#&&Ac'MMM))Aq!$$s****))B)--3333))B""14a4(3....q1u*qb&LLLLLr   )r   r   r   r  s   `      r   test_argwhere_basicz)TestArrayManipulation.test_argwhere_basic  s    "T"""6**	 	 	 	 	  	3 	3AvayyH%((C##Hc2222	3 	3r   c               #      K   dV  dV  ddgddgfV  dV  t           j        V  dV  dV  dV  d	V  d
V  dV  d V  dV  dV  d S )N)r  )r  g@)g      @gffffff@)r  r   r  g      r   rc   rb   ra   r   FTr  y       @      ?a_string )r,   r  r   r   r   array_like_variationsz+TestArrayManipulation.array_like_variations  s      2222####1v1vf


!!!!


r   c                     t           } t          d          |          }|                                 D ].} ||          } ||          }|                     ||           /d S r.  )r   r   r  r   r   r   r  rA   r   r   s         r   test_flatnonzero_array_likez1TestArrayManipulation.test_flatnonzero_array_like  sy    ""T"""6**++-- 	3 	3AvayyH%((C##Hc2222	3 	3r   c                     t           } t          d          |          }|                                 D ].} ||          } ||          }|                     ||           /d S r.  )r   r   r  r   r   s         r   test_argwhere_array_likez.TestArrayManipulation.test_argwhere_array_like  sy    "T"""6**++-- 	3 	3AvayyH%((C##Hc2222	3 	3r   c                     t           } t          d          |          }d |D             } || }|gt          |          z  }d |D             }|                     ||           d S )NTr   c                 6    g | ]}t          j        |          S r   r,   r  r   ss     r   r   zOTestArrayManipulation.broadcast_arrays_assert_correct_shape.<locals>.<listcomp>  s     666ABHQKK666r   c                     g | ]	}|j         
S r   r1   r   rA   s     r   r   zOTestArrayManipulation.broadcast_arrays_assert_correct_shape.<locals>.<listcomp>      ***1qw***r   r:   r   r   r   )	r   input_shapesr   r   r  inarrays	outarraysr   r   s	            r   %broadcast_arrays_assert_correct_shapez;TestArrayManipulation.broadcast_arrays_assert_correct_shape  s     ("T"""6**66666E8$	"#c(mm3**	***#.....r   c                     t           } t          d          |          }g d}|D ]P}|g}|                     ||           ||g}|                     ||           |||g}|                     ||           Qd S )NTr   )	r   r  rD  rT  rE  )ra   r   r  r  r  )r:   r   r1  )r   r   r  rg  r1   r.  input_shapes2input_shapes3s           r   'test_broadcast_arrays_same_input_shapesz=TestArrayManipulation.test_broadcast_arrays_same_input_shapes   s     ("T"""6**
 
 
  		M 		ME!7L66|UKKK"ENM66}eLLL"E51M66}eLLLL		M 		M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 ]:\  }}|                      ||           |                      |d d d
         |           ;d S )Nr   r  r  r  r  r  rE  r   rD  r   r1  r   rg  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TT66|DDbD7I>ZZZZ	[ 	[r   c                 L   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 ]:\  }}|                      ||           |                      |d d d         |           ;d S )Nr   r  r  r  r   r  r  r   r   rD  rE  r   r7  r8  s       r   Dtest_broadcast_arrays_two_compatible_by_prepending_ones_input_shapeszZTestArrayManipulation.test_broadcast_arrays_two_compatible_by_prepending_ones_input_shapes8  sY    $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TT66|DDbD7I>ZZZZ	[ 	[r   c                     t           } t          d          |          }ddgdgddgdgddgdgg}|D ]?\  }} || }d	 |D             }|gt          |          z  }|                     ||           @d S )
NTr   Fr   rc   rb   r   r  c                     g | ]	}|j         
S r   r*  r+  s     r   r   zLTestArrayManipulation.test_broadcast_arrays_scalar_input.<locals>.<listcomp>c  s    ...q17...r   r-  )	r   r   r  rg  r/  r   r0  r   r   s	            r   "test_broadcast_arrays_scalar_inputz8TestArrayManipulation.test_broadcast_arrays_scalar_inputY  s    '"T"""6**E]D!VTNa[$

 )- 	3 	3$Hnx(I..I...C&'#h--7H##Hc2222		3 	3r   c                     t           } t          d          |          } |dd          }ddg}d |D             }|                     ||           d S )NTr   )r  i  )i  r  c                     g | ]	}|j         
S r   r*  r+  s     r   r   zKTestArrayManipulation.test_broadcast_arrays_tuple_input.<locals>.<listcomp>l  r,  r   )r:   r   r   r   r   r  r0  r   r   s         r   !test_broadcast_arrays_tuple_inputz7TestArrayManipulation.test_broadcast_arrays_tuple_inputg  sj    '"T"""6**E*f--	$<**	***#.....r   c                 
   t           } t          d          |          } |t          j        d          t          j        dt          j                            }ddg}d |D             }|                     ||           d S )NTr   rb   r  r  c                     g | ]	}|j         
S r   r*  r+  s     r   r   zOTestArrayManipulation.test_broadcast_arrays_non_array_input.<locals>.<listcomp>t  r,  r   )r:   r   r,   intpr  r   rA  s         r   %test_broadcast_arrays_non_array_inputz;TestArrayManipulation.test_broadcast_arrays_non_array_inputo  s    '"T"""6**E"'!**bhvRW&E&E&EFF	F#**	***#.....r   c                    t           } t          d          |          }|                                  |                     t                    5 }t          j        d                              d          }d} |||           d d d            n# 1 swxY w Y   |                     dt          |j
                             d S )NTr   r   r  zMismatch of argument types)r:   r   r   r   r   r,   rd   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_typesw  s    '"T"""6**!!!{++ 	v)A,,&&v..CAE#qMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2C8H4I4IJJJJJs   6BBBc                 ~   t           } t          d          |          }|                                  |                     t                    5 }t          j        dt
          j                  }d} |||           d d d            n# 1 swxY w Y   |                     dt          |j
                             d S )NTr   ra   r  zhello worldzArgument "1" must be array-like)r:   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(1BH---CAE#qMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	7V=M9N9NOOOOOs   /B

BBc                    t           } t          d          |          }|                                  ddgddgg ddd	gg}|D ]}}||d d d
         fD ]m}|                     t                    5 }d |D             } ||  d d d            n# 1 swxY w Y   |                     dt          |j                             n~d S )NTr   r  r  r  r  r  r  r  r   c                 6    g | ]}t          j        |          S r   r&  r'  s     r   r   zdTestArrayManipulation.test_broadcast_arrays_incompatible_shapes_raise_valueerror.<locals>.<listcomp>  s     ;;;;;;r   r  )r:   r   r   r   r   r   r   r   )r   r   r  rg  r.  r1   r   r/  s           r   :test_broadcast_arrays_incompatible_shapes_raise_valueerrorzPTestArrayManipulation.test_broadcast_arrays_incompatible_shapes_raise_valueerror  sN   '"T"""6**!!! 4LTN	"	
 ! 	5 	5L&TTrT(:; 5 5&&z22 %f;;U;;;HE8$$% % % % % % % % % % % % % % % ]!&"2335 5 5 55	5 	5s   0BBB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                            ||           d S )Nc                     | j         \  }}t          j        | |||f          }t          j        |dd          }|                                }t          j        |d|f          }|d d|z
           ||dz
  d d d f<   |S Nr   rc   r   )r1   r,   r0   swapaxesr?   r&   r   r   rcrA   r  ccds           r   unfold_flattenzITestArrayManipulation.test_readonly_after_flatten.<locals>.unfold_flatten  s    7DAqAq!9--AAq!$$AB
2Aw''AWq1uW:Aa!effaaaiLHr   Tr   r  rb   rb   rb   ra   ra   ra   rb   r   r,   r   r   assert_array_equal)r   rW  r   r  res_nbres_pys         r   test_readonly_after_flattenz1TestArrayManipulation.test_readonly_after_flatten  s    	 	 	  "T"""6** rxIIIyyy ABBAFF)))YYY			!BCCQGG

%%ff5555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                            ||           d S )Nc                     | j         \  }}t          j        | |||f          }t          j        |dd          }|                                }t          j        |d|f          }|d d|z
           ||dz
  d d d f<   |S rP  )r1   r,   r0   rQ  rF   r&   rR  s           r   unfold_ravelzETestArrayManipulation.test_readonly_after_ravel.<locals>.unfold_ravel  s    7DAqAq!9--AAq!$$AB
2Aw''AWq1uW:Aa!effaaaiLHr   Tr   r  rX  rY  rb   rZ  )r   ra  r   r  r\  r]  s         r   test_readonly_after_ravelz/TestArrayManipulation.test_readonly_after_ravel  s    	 	 	 "T"""6** rxIIIyyy ABBAFF)))YYY			!BCCQGG

%%ff55555r   c                    |                                   t          j        d                              d                                          }|                    d          }d|j        _        d|j        _        d }|} t          d          |          } ||          } ||          }d	}|                     |j        j         |           d
}|                     |j        j        |           d S )NrY  r  rZ  ro  Fc                 .    |                                  }|S r%   rE   )rA   r!   s     r   try_ravel_w_copyzKTestArrayManipulation.test_mutability_after_ravel.<locals>.try_ravel_w_copy  s    WWYYF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,   rd   r&   rZ   r   r@  r   
assertTrue)	r   a_ca_fre  r   r  ret_cret_frO  s	            r   test_mutability_after_ravelz1TestArrayManipulation.test_mutability_after_ravel  s     	!!!ill""6**//11hhSh!!#	#		 	 	 ""T"""6**c

c

6EK113777O-s33333r   )A__name__
__module____qualname____doc__r   r   r  r  r  r,  r0  r3  r5  r:  r=  rK  rV  enable_pyobj_flagsr`  rc  rs  rw  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  staticmethodr  r!  r#  r1  r5  r9  r;  r>  rB  rF  rH  rJ  rM  r^  rb  rk  __classcell__)r   s   @r   r   r      s        ) ) ) ) )n" n" n"`\* \* \*|  >S S S-$ -$ -$^- - -
- - -
- - -
& & &+ + +". ". ".HA A AH (:# / / / /&B B B
 &8 !P !P !P !PF += 
/ 
/ 
/ 
/4 4 49 9 9 *<    8 8 8 (: 
/ 
/ 
/ 
/8 8 8*3 *3 *3XM M M- - -FA FA FAP,! ,! ,!\!3 !3 !3F5 5 5,.6 .6 .6`/ / /	) 	) 	)	3 	3 	3/ / /(3 (3 (3T1 1 1.T T TX X X(- - -03 3 3*3 3 3.   \$3 3 33 3 3
/ 
/ 
/M M M<[ [ [4[ [ [B3 3 3/ / // / /
K 
K 
K
P 
P 
P5 5 5,6 6 6(6 6 6(4 4 4 4 4 4 4r   r   __main__r%   )F)B	functoolsr   	itertoolsr   numpyr,   unittestnumba.core.compilerr   r   numbar   r   r	   r
   numba.np.numpy_supportr   numba.core.errorsr   
numba.corer   r   numba.tests.supportr   r   r   r   rp  enable_pyobjectrb  nrtr#   r*   r-   r2   r6   r:   r=   rB   rG   rJ   rL   rP   rS   rX   r[   r]   r_   rl   ro   rq   rt   rw   ry   r   r   r   r   r   r   r   r   r   r   rl  mainr   r   r   <module>r     st         " " " " " "      7 7 7 7 7 7 7 7 / / / / / / / / / / / / 0 0 0 0 0 0 ) ) ) ) ) ) $ $ $ $ $ $ $ $& & & & & & & & & & & & UWW %)  "   ,! ! !% % %' ' '& & && & &, , ,            ( ( (/ / /  & & &    # # #               ? ? ?L L L P P P P    , , , ,      n4 n4 n4 n4 n4OX n4 n4 n4b) zHMOOOOO r   