
    J/Ph                         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	d1d$            Z/d% Z0d& Z1d2d(Z2d) Z3d* Z4d+ Z5d, Z6d- Z7 G d. d/ee          Z8e9d0k    r ej:                     dS dS )3    )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                  (      fdD             S )Nc                 (    g | ]} |gR i S  r   ).0pyfuncargsfunckwargss     c/var/www/html/test/jupyter/venv/lib/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+   +   s    :c8$$$r   c                 ,    t          j        | |          S r#   r*   broadcast_to)r&   shapes     r   numpy_broadcast_tor0   0   s    ?3&&&r   c                      t          j        |  S r#   )r*   broadcast_shapesr   s    r   numpy_broadcast_shapesr4   4       %%r   c                      t          j        |  S r#   )r*   broadcast_arraysr3   s    r   numpy_broadcast_arraysr8   8   r5   r   c                 8    t          j        | |          |         S r#   r-   )r&   r/   idxs      r   numpy_broadcast_to_indexingr;   <   s    ?3&&s++r   c                 *    |                                  S r#   )flattenas    r   flatten_arrayr@   @       99;;r   c                 *    |                                  S r#   ravelr>   s    r   ravel_arrayrE   D   s    7799r   c                 4    |                                  j        S r#   )rD   sizer>   s    r   ravel_array_sizerH   H   s    7799>r   c                 *    t          j        |           S r#   )r*   rD   r>   s    r   numpy_ravel_arrayrJ   L   s    8A;;r   c                 *    |                                  S r#   	transposer>   s    r   transpose_arrayrN   P   s    ;;==r   c                 *    t          j        |           S r#   r*   rM   r>   s    r   numpy_transpose_arrayrQ   T   s    <??r   c                 .    t          j        | |          S N)axesrP   r&   rT   s     r    numpy_transpose_array_axes_kwargrV   X   s    <$''''r   c                 R    t          j        | |                                          S rS   )r*   rM   copyrU   s     r   %numpy_transpose_array_axes_kwarg_copyrY   ]   s#    <$''',,...r   c                 ,    |                      |          S r#   rL   rU   s     r   array_transpose_axesr[   b   s    ==r   c                 P    |                      |                                          S r#   )rM   rX   rU   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      ra   )r*   r$   arangeTrM   )mnr1r2r_difzs         r   transpose_issue_4708rj   l   sz    	BIa!eai((1a)	4	4B	BIa!e$$q!f	-	-B"$YMEL	**E	AHr   c                 *    |                                  S r#   )squeezer>   s    r   squeeze_arrayrm   v   rA   r   c                 ,    t          j        | |          S r#   )r*   expand_dims)r?   axiss     r   ro   ro   z   s    >!T"""r   c                      t          j        |  S r#   )r*   
atleast_1dr3   s    r   rr   rr   ~       =$r   c                      t          j        |  S r#   )r*   
atleast_2dr3   s    r   ru   ru      rs   r   c                      t          j        |  S r#   )r*   
atleast_3dr3   s    r   rw   rw      rs   r   c                     | j         d         dz  f| j         dd          z   }t          j        j                            | |          S )Nr   r`   ra   strides)rz   r*   libstride_tricks
as_strided)r?   rz   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 )Nr_   ra   )r/   rz   )r/   rz   r*   r{   r|   r}   )r?   windowr/   rz   s       r   as_strided2r      se    FGCRCLAGBK&014f==Ei19R=**G6**1E7*KKKr   c                 P    t           j        j                            | ||          S )N)rp   )r*   r{   r|   sliding_window_view)xwindow_shaperp   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)ra   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*   r/   r   s    r   numpy_shaper      s    8C==r   c                 *    t          j        |           S r#   )r*   rG   r   s    r   
numpy_sizer      s    73<<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    9Q	"""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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. Z0d/ Z1e2d0             Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@S )A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                              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                      | ||          S r#   r   )r   r&   r/   s      r   generic_runz=TestArrayManipulation.test_array_reshape.<locals>.generic_run   s    6#u%%%r   c                     |                      ||          }                                  | ||          }                    ||           ~                                 d S 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11H""$$$+fc511C##C222%%'''''r   c                                                        | ||          }                    |j        |                               |j        |j                   ~                                 d S r#   )r   assertEqualr/   rG   r   )r   r&   r/   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&   r/   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   )      )   r_   )r   ra   r_   )ra   r   ra   ra   r_   ra   r`   r_   r   r   )   )r   r   )r   r_   r`   )ra   r   ra   r_   ra   r`   ra   r   r   )r`      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   )ra   r   r`   )r   7   ra   r   r`   r   r   r   r   r   r   )r   r   )r   r   )r   r   r   )r   r   r   r   ra   ra   r`   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   )r_   r`   r   )	r(   r+   r!   r*   rb   r$   rc   arraydisable_leak_check)
r   r   r   r   r&   r   r   r   r   r   s
   `     @@@@r   test_array_reshapez(TestArrayManipulation.test_array_reshape   sA   ')<=	& 	& 	& 
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           	          t           t          t          t          g}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        j        |j        j                                       |j        j        |j        j                   d S r#   )r   r   r   flagsf_contiguousc_contiguous)r   r&   rT   r   r   r   s        r   r   z>TestArrayManipulation.test_array_transpose_axes.<locals>.check9  s    ~~c400H&d##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&   rT   r   r   s       r   check_err_axis_repeatedzPTestArrayManipulation.test_array_transpose_axes.<locals>.check_err_axis_repeatedC  s    "":.. "&sD!!!" " " " " " " " " " " " " " "S!1229; ; ; ; ;   599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_oobJ  s    "":.. "&sD!!!" " " " " " " " " " " " " " "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&   rT   r   s      r   check_err_invalid_argszOTestArrayManipulation.test_array_transpose_axes.<locals>.check_err_invalid_argsQ  s    ""I{#;<< " "sD!!!" " " " " " " " " " " " " " " " " "s   =AAr   r   r   r`   r_   ra   @   r   c                     g | ]}|z
  S r   r   )r   r   ndims     r   r   zCTestArrayManipulation.test_array_transpose_axes.<locals>.<listcomp>b  s    !9!9!9q!d(!9!9!9r   c                     |                      ||          } | ||          }t          j                            ||           d S r#   )r   r*   testingassert_equal)r   rd   re   r   r   s        r   check_issue_4708zITestArrayManipulation.test_array_transpose_axes.<locals>.check_issue_4708f  sD    ~~a++H&A,,C J##C22222r   r   foo)r   g333333@)333333?r   r   )r`   r   r   )r_   r`   ra   ra   r   ra   )r   r   r`   )r`   r   r   )r_   ra   r`   )ra   r`   )r_   ra   r`   r   )r_   ra   r`   Tr   z#np.transpose does not accept tuples)rV   rY   r[   r]   r!   r*   rb   r$   rangelenr   tupler   rj   r   r   r	   r   rQ   r   assertInr   r   )r   r   r   r   r   r   arrsirT   neg_axesr   er   s   `           @r   test_array_transpose_axesz/TestArrayManipulation.test_array_transpose_axes3  s   :?.35
 
n	%	%	: 	: 	: 	: 
&	%	: 
n	%	%	; 	; 	; 	; 
&	%	; 
n	%	%	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                     t           }t          |          }d } |            D ]/\  }}|                      |||           |||                     0d S )Nc               3     K   t          j        ddgddgg          dfV  t          j        ddgddgg          dfV  t          j        ddgddgg          dfV  t          j        ddgddgg          dfV  t          j        ddgddgg          d	fV  t          j        ddgddgg          d
fV  t          j        dt                    dfV  t          j        ddgddgg          dfV  t          j        ddgddgg          dfV  t          j        dt                    dfV  t          j        g t                    dfV  g ddfV  dV  d S )Nra   r`   r_   r   )r`   r   )r   r`   )r   r_   r   r   r`   r   r   dtyper`   ra   r   ra   r_   )r   ra   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44(QFQF+,,f4444(QFQF+,,f4444(QFQF+,,d2222(QFQF+,,f4444(QFQF+,,f4444(1e,,,f4444(QFQF+,,d2222(QFQF+,,a////(63///7777(2u---v5555,,&&&&OOOOOr   )r   r   r   )r   r   cfuncr  r?   r   s         r   test_numpy_resize_basicz-TestArrayManipulation.test_numpy_resize_basic  s{    V	 	 	" #FHH 	O 	OLAy##FF1i$8$8%%9:M:MNNNN	O 	Or   c                    |                                   t          t                    }|                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |t          j	        ddgddgg          d           d d d            n# 1 swxY w Y   |                     dt          |j                             |                     t                    5 } |t          j	        ddgddgg          d	           d d d            n# 1 swxY w Y   |                     d
t          |j                             |                     t                    5 } |t          j	        ddgddgg          d           d d d            n# 1 swxY w Y   |                     d
t          |j                             d S )Nabcr  z#The argument "a" must be array-liker   ra   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  s   !!!\""{++ 	!vE%   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!<&*++	- 	- 	- {++ 	2vE"(QqE1Q%=))5111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 -&*++	- 	- 	- z** 	4fE"(QqE1Q%=))7333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4I&*++	- 	- 	- z** 	/fE"(QqE1Q%=))2...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/I&*++	- 	- 	- 	- 	-sH   AA #A )%CC!C'%EEE%%GGGc                 z    t           t                     fdfd}t          j        d          } ||           t          j        d                              d          } ||            ||j                    ||d d d                    t          j        d          } ||           d S )Nc                      | |          }                                   | |          }                    ||           ~                                 d S r#   )r   r   r   )r&   rp   r   r   r  r   r   s       r   r   z5TestArrayManipulation.test_expand_dims.<locals>.check  sh    vc4((H""$$$%T""C##C222%%'''''r   c                 h    t          | j         dz
  | j        dz             D ]} | |           d S )Nra   )r   r   )r&   rp   r   s     r   check_all_axesz>TestArrayManipulation.test_expand_dims.<locals>.check_all_axes  sI    sxi!mSX\:: ! !c4    ! !r   r   r   r   r   *   )ro   r   r*   rb   r$   rc   r   )r   r  r&   r  r   r   s   `  @@@r   test_expand_dimsz&TestArrayManipulation.test_expand_dims  s    V	( 	( 	( 	( 	( 	( 	(	! 	! 	! 	! 	!
 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   hellor_   z#First argument "a" must be an arrayz"Argument "axis" must be an integer)ro   r   r*   rb   assertTypingErrorr   r   r   )r   r   r  r&   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   r  r   r      )r`   r`   r`   r`   )r*   r   rb   r$   rc   )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   )rr   r   r4  r   r   r  s      r   test_atleast_1dz%TestArrayManipulation.test_atleast_1d  =    "T"""6**fe,,,,,r   c                 r    t           } t          d          |          }|                     ||           d S r6  )ru   r   r4  r7  s      r   test_atleast_2dz%TestArrayManipulation.test_atleast_2d  r9  r   c                 r    t           } t          d          |          }|                     ||           d S r6  )rw   r   r4  r7  s      r   test_atleast_3dz%TestArrayManipulation.test_atleast_3d"  r9  r   c                      t                     fd}t          j        d          } ||            ||                    d                      ||                    d                     d S )Nc                 `     |           } |           }                     ||           d S r#   r   )r&   r   r   r  r   r   s      r   r   z5TestArrayManipulation.check_as_strided.<locals>.check*  s9    vc{{H%**C##C22222r   r   r   )r   ra   r   )r   r*   rb   r$   )r   r   r   r&   r  s   ``  @r   check_as_stridedz&TestArrayManipulation.check_as_strided'  s    V	3 	3 	3 	3 	3 	3 	3
 immc


ckk&!!"""ckk)$$%%%%%r   c                 n    |                      t                     |                      t                     d S r#   )rA  r~   r   r   s    r   test_as_stridedz%TestArrayManipulation.test_as_strided4  s0    k***k*****r   c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )Nc                      t          j        d                              d          } t           j        j                            | d           S )Nr   r   ry   )r*   rb   r$   r{   r|   r}   r   s    r   r   z>TestArrayManipulation.test_as_strided_stride_none.<locals>.foo:  s;    )B--''//C6'2232EEEr   zstrides argument cannot be None)r   r   r   r	   r   r   r   )r   r   r   msgs       r   test_as_strided_stride_nonez1TestArrayManipulation.test_as_strided_stride_none8  s    		F 	F 
	F v122 	fCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 0c3v/0011111s   AAA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   rp   r   r   r   s        r   r   z=TestArrayManipulation.test_sliding_window_view.<locals>.checkF  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   ra   ra   r   )ra   r   )r   r   r   r`   )r   )r   r   z4d array, axis=r_   r`   z2d array, repeated axes)r   r_   r_   )r   ra   r   )r*   rb   subTestr$   )r   r   arr1rp   arr2arr4s   `     r   test_sliding_window_viewz.TestArrayManipulation.test_sliding_window_viewE  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   rG  r   r   r   s      r   _raiseszFTestArrayManipulation.test_sliding_window_view_errors.<locals>._raisesj  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   rY  s      r   _typing_errorzLTestArrayManipulation.test_sliding_window_view_errors.<locals>._typing_erroro  s    ""6#566 +&#T**+ + + + + + + + + + + + + + +MM#s6#34455555s   
7;;r   rL  rM  rN  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)rM  r`   z$2d window shape, only one axis givenra   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))r_  z
axis=floatz1axis must be None, an integer or tuple of integerzaxis=tuple(float))r   r*   rb   r$   rR  )r   rZ  r\  rS  rT  s   `    r   test_sliding_window_view_errorsz5TestArrayManipulation.test_sliding_window_view_errorsi  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fi ||          } ||          } ||          }t           j
                            ||           d S )N	   r_   FA)layout)r*   rb   r$   rc   r@   r   rX   r   rf  r   r   r   )	r   r   rf  r?   r   
arraytype1r  r   r   s	            r   test_flatten_arrayz(TestArrayManipulation.test_flatten_array  s    IaLL  A&&S==AAYY
S==#44J*F333+ZM++U++F336!99eAhh

#.....r   c                     |                      t                     |                      t          d           |                      t          d           d S )Nr   rd  )r   rf  re  )rh  no_pyobj_flagsrC  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fi 	|           } | |          } ||          }t          j                            ||           |j        j        |j        j        k    }|j        j        |j        j        k    }
                    ||dk               
                    ||           d S )Nra  )	r   r   rf  r   r*   r   r   ctypesdata)r   r?   assume_layoutrg  r  r   r   	py_copied	nb_copiedr   r   s            r   generic_checkz=TestArrayManipulation.test_ravel_array.<locals>.generic_check  s    JZ.>>>/C////77E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   rc  r_   ra  )rq  rd  order   r`   r   re  $   )r   rE   rJ   r*   rb   r$   )r   r   rt  r   rv  rw  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fi ||          } ||          } ||          }t           j                            ||           d S Nrc  r_   )r*   rb   r$   rH   r   r   r   r   r   r   r?   r   rg  r  r   r   s           r   test_ravel_array_sizez+TestArrayManipulation.test_ravel_array_size  s    IaLL  A&&!AYY
+ZM++U++F336!99eAhh

#.....r   c                 <    |                      t                     d S Nrj  )r|  rk  rC  s    r   test_ravel_array_npmz*TestArrayManipulation.test_ravel_array_npm  s    N33333r   c                 <    |                      t                     d S r  )r  rk  rC  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fi |           } | |          } ||          }t           j                            ||           d S r~  )r*   rb   r$   r   r   r   r   )r   r?   rg  r  r   r   r   s         r   r   z9TestArrayManipulation.test_transpose_array.<locals>.check  s    	!$$Q**AJ/C////77EvayyH%((CJ##Hc22222r   )r!   rN   rQ   )r   r   r   s    ` r   test_transpose_arrayz*TestArrayManipulation.test_transpose_array  sG    	(=>	?	?	3 	3 	3 	3 
@	?	3 	r   c                 <    |                      t                     d S r  )r  rk  rC  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fi ||          } ||          } ||          }t           j                            ||           d S )Nr   r`   ra   r_   r   )r*   rb   r$   rm   r   r   r   r   r  s           r   test_squeeze_arrayz(TestArrayManipulation.test_squeeze_array  s    I'((00Aq!Q??AYY
+ZM++U++F33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 )Nrj  rl   )r   r   r	   r  rk  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   )r?   r:   s     r   np_new_axis_getitemz@TestArrayManipulation.test_add_axis.<locals>.np_new_axis_getitem  s    S6Mr   c                     || |<   | S r#   r   )r?   r:   items      r   np_new_axis_setitemz@TestArrayManipulation.test_add_axis.<locals>.np_new_axis_setitem  s    AcFHr   iH  )r   r   r      ra   r`   r_   )r   r*   rb   r$   slicenewaxisEllipsisr   r   r   
zeros_likerX   )r   r  r  r?   	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          ||f          t                     d d d            n# 1 swxY w Y   | 	                    dt          |j                             d S )Nr   r   r`   ra  zUnsupported array index type)r  r   r*   r  int32r
   Arrayr   r   r   r   r   )r   r   rg  
arraytype2s       r   test_bad_index_npmz(TestArrayManipulation.test_bad_index_npmE  s    ##%% 	6#BHsBHo/2BHo.? %@ %@ A AJU[!S99J*D*j)**9555		6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6
 	4c&:J6K6KLLLLLs   A;BB #B c           	      &   |                                  5 } t          t          j        t          j        dd          f          t
                     d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr`   ra  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_npmM  s    ##%% 	I7D%+emQ44677HHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I<&*++	- 	- 	- 	- 	-s   =A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 )Nr`   ra   ra   ra   ra   r   )re   s    r   _shape_variationszITestArrayManipulation.test_fill_diagonal_basic.<locals>._shape_variationsW  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 )Nra   gA`"	@Tr   r  r   rc  6   r_   r`   r   )r*   naninfrb   r$   asfortranarrayr   r   r   _val_variationszGTestArrayManipulation.test_fill_diagonal_basic.<locals>._val_variationse  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 )Nr  )r*   r  r  r  ones)re   r/   r  s     r   #_multi_dimensional_array_variationsz[TestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variationss  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 r`   r   r   r   s     r   r   zwTestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variations_strided.<locals>.<listcomp>{  s    %;%;%;a!e%;%;%;r   r  c              3   >   K   | ]}t          d |dz  d          V  dS )r   r`   N)r  r  s     r   	<genexpr>zvTestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variations_strided.<locals>.<genexpr>|  s2      AAauQAq11AAAAAAr   )r*   r  r   r  )re   r/   tmpslicerr  s       r   +_multi_dimensional_array_variations_stridedzcTestArrayManipulation.test_fill_diagonal_basic.<locals>._multi_dimensional_array_variations_stridedy  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   )rX   r   )	r&   r   r   r?   bparamsr  r   r   s	         r   _check_fill_diagonalzLTestArrayManipulation.test_fill_diagonal_basic.<locals>._check_fill_diagonal  s    ) . .HHJJHHJJ<FF$d^Fq#(((((a'''''''1----. .r   r_   rc  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_basicS  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   ra   r   z'The first argument must be at least 2-D)r_   r_   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]^^^^^r   r_   r_   r  ffffff
@)ra   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** 	!!! "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   r_   ra   r  ra   r`   r_   r_   r  r  r`   r   r   r  r  r`   r`   )r0   r   r*   r   r  rb   r   )r   r   r  rp  input_arrayr/   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)r0   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** 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  ra   ra   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)r0   r   r*   r  r	   r   r   r   r   r   r   )	r   r   r  rp  r&   target_shapeerrrG  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 )Nr?   r  r-   r   r   r   _broadcast_to_1zMTestArrayManipulation.test_broadcast_to_corner_cases.<locals>._broadcast_to_13  s    ?3///r   )r   r   r   )r   r  r   r   s       r   test_broadcast_to_corner_casesz4TestArrayManipulation.test_broadcast_to_corner_cases2  sW    		0 	0 
	0 #**,,o#.....r   c                 L   t           } t          d          |          }t          j        dt          j                  }d} |||          }d|d<   |                     |                                d           |                     |                                d           d S )	NTr   r`   r  r  rM  r   rN  )r0   r   r*   r  r  r   sum)r   r   r  r  r/   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   r`   r  r   )r;   r   r*   r  r   )	r   r   r  rp  r  r/   r:   r   r   s	            r   test_broadcast_to_indexingz0TestArrayManipulation.test_broadcast_to_indexingF  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*   r.   rG   r/   rz   )r&   rets     r   r   z@TestArrayManipulation.test_broadcast_to_array_attrs.<locals>.fooT  s(    /#v..C#)S[88r   r_   )r   r*   rb   r   r   )r   r   r&   r   r   s        r   test_broadcast_to_array_attrsz3TestArrayManipulation.test_broadcast_to_array_attrsQ  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  )r_   r   ))r   r  r   r   ra   r  )r   ra   r  r  r  r_   ra   rP  r   rO  r   r   r  r`   rQ  )r4   r   assertIsInstancer   r   )r   r   r  rp  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  ra   r_   r   r`   r_   r_   )r   r  rQ  )rM  r   r`   =shape mismatch: objects cannot be broadcast to a single shaper4   r   r   r   r   r   r   r   )r   r   r  rp  r  r   s         r   test_broadcast_shapes_raisesz2TestArrayManipulation.test_broadcast_shapes_raises  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   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  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   r?   )ra   r   z#must be either an int or tuple[int])r4   r   r   r   r	   r   r   r   )r   r   r  inpsinpr   s         r   "test_broadcast_shapes_invalid_typez8TestArrayManipulation.test_broadcast_shapes_invalid_type  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#   r@  r   r   r   r  r   r   s      r   r   z/TestArrayManipulation.test_shape.<locals>.check  9    vayyH%((C##C22222r   r   r   r  )r   r   r   ra   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  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 ]!}t          j        |          } ||           "dddt          j        d          t          j        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#   r@  r  s      r   r   z.TestArrayManipulation.test_size.<locals>.check  r  r   r  ra   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  sW   "T"""6**	3 	3 	3 	3 	3 	3 	3 0 	 	A(1++CE#JJJJ UD"'!**bj.?.?@ 	 	AE!HHHH{++ 	vE#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	B&*++	- 	- 	- 	- 	-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   r`   rd  rx  r   ra   r'  )r*   rb   fullr   randomrandnabsr$   r?   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  r?   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   r`   r   r  ra   )g      r  r   r  r  r   g      ?r  rd  rx  r   )r*   rb   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   ra   r`   r_   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 r6  )r   r   r'  r   r   r   r  r?   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 r6  )r   r   r'  r   r)  s         r   test_argwhere_array_likez.TestArrayManipulation.test_argwhere_array_like6  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>D  s     666ABHQKK666r   c                     g | ]	}|j         
S r   r/   r   r?   s     r   r   zOTestArrayManipulation.broadcast_arrays_assert_correct_shape.<locals>.<listcomp>G      ***1qw***r   r8   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  rO  r^  rP  )r_   r   r  r  r  )r8   r   r:  )r   r   r  rp  r/   r7  input_shapes2input_shapes3s           r   'test_broadcast_arrays_same_input_shapesz=TestArrayManipulation.test_broadcast_arrays_same_input_shapesJ  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  rP  r   rO  r   r:  r   rp  r7  r   s       r   9test_broadcast_arrays_two_compatible_by_ones_input_shapeszOTestArrayManipulation.test_broadcast_arrays_two_compatible_by_ones_input_shapesh  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   rO  rP  r   r@  rA  s       r   Dtest_broadcast_arrays_two_compatible_by_prepending_ones_input_shapeszZTestArrayManipulation.test_broadcast_arrays_two_compatible_by_prepending_ones_input_shapes  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   ra   r`   r   r  c                     g | ]	}|j         
S r   r3  r4  s     r   r   zLTestArrayManipulation.test_broadcast_arrays_scalar_input.<locals>.<listcomp>  s    ...q17...r   r6  )	r   r   r  rp  r8  r   r9  r   r   s	            r   "test_broadcast_arrays_scalar_inputz8TestArrayManipulation.test_broadcast_arrays_scalar_input  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   r3  r4  s     r   r   zKTestArrayManipulation.test_broadcast_arrays_tuple_input.<locals>.<listcomp>  r5  r   )r8   r   r   r   r   r  r9  r   r   s         r   !test_broadcast_arrays_tuple_inputz7TestArrayManipulation.test_broadcast_arrays_tuple_input  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   r`   r  r  c                     g | ]	}|j         
S r   r3  r4  s     r   r   zOTestArrayManipulation.test_broadcast_arrays_non_array_input.<locals>.<listcomp>  r5  r   )r8   r   r*   intpr  r   rJ  s         r   %test_broadcast_arrays_non_array_inputz;TestArrayManipulation.test_broadcast_arrays_non_array_input  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)r8   r   r   r   r	   r*   rb   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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   r_   r  zhello worldzArgument "1" must be array-like)r8   r   r   r   r	   r*   r  r  r   r   r   )r   r   r  r   r&   r1  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/  r0  s     r   r   zdTestArrayManipulation.test_broadcast_arrays_incompatible_shapes_raise_valueerror.<locals>.<listcomp>  s     ;;;;;;r   r  )r8   r   r   r   r   r   r   r   )r   r   r  rp  r7  r/   r   r8  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   ra   r   )r/   r*   r.   swapaxesr=   r$   r   r   rcr?   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  r`   r`   r`   r_   r_   r_   r`   r   r*   r   r   assert_array_equal)r   r`  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 rY  )r/   r*   r.   rZ  rD   r$   r[  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  ra  rb  r`   rc  )r   rj  r   r  re  rf  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 )Nrc  r  rd  rx  Fc                 .    |                                  }|S r#   rC   )r?   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*   rb   r$   rX   r   rK  r   
assertTrue)	r   a_ca_frn  r   r  ret_cret_frG  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   N)C__name__
__module____qualname____doc__r   r   r  r  r  r  r4  r8  r;  r=  rA  rD  rH  rV  r`  enable_pyobj_flagsrh  rl  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#  staticmethodr'  r*  r,  r:  r>  rB  rD  rG  rK  rO  rQ  rS  rV  rg  rk  rt  r   r   r   r   r      s2        m" m" m"^X* X* X*tO O O.- - -6  8S S S-$ -$ -$^- - -
- - -
- - -
& & &+ + +2 2 2". ". ".HA A AH (:# / / / /$B B B
 &8  P  P  P  PD += 	/ 	/ 	/ 	/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- - -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 4r   r   __main__r#   )F);	functoolsr   	itertoolsr   numpyr*   unittestnumbar   r   r   r   numba.core.errorsr	   
numba.corer
   r   numba.tests.supportr   r   ry  rk  r!   r(   r+   r0   r4   r8   r;   r@   rE   rH   rJ   rN   rQ   rV   rY   r[   r]   rj   rm   ro   rr   ru   rw   r~   r   r   r   r   r   r   r   r   r   r   r   ru  mainr   r   r   <module>r     s         " " " " " "      / / / / / / / / / / / / ) ) ) ) ) ) $ $ $ $ $ $ $ $ 9 9 9 9 9 9 9 9 $' D11  , ! ! ! % % %' ' '& & && & &, , ,             ( ( ( / / /    & & &     # # #               ? ? ?L L L P P P P    , , , ,        # # #p4 p4 p4 p4 p4OX p4 p4 p4f+ zHMOOOOO r   