
    Kh`k                        S SK rS SKrS SKrS SKrS SK JrJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJr  S SKJr  S SKJrJrJrJrJr  \R6                  S:  rS r " S S5      r " S	 S
5      r " S S5      r  " S S5      r! " S S5      r" " S S5      r# " S S5      r$ " S S5      r% " S S5      r& " S S5      r' " S S5      r( " S S5      r) " S S 5      r* " S! S"5      r+ " S# S$5      r, " S% S&5      r-S' r.g)(    N)apply_along_axisapply_over_axesarray_splitsplithsplitdsplitvsplitdstackcolumn_stackkrontileexpand_dimstake_along_axisput_along_axis)	AxisError)assert_assert_equalassert_array_equalassert_raisesassert_warns        c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )z9hack in keepdims behavior into a function taking an axis c                 L   > T" U 4SU0UD6nUc  Sn[         R                  " X1S9$ )Naxisr   r   )npr   )ar   kwargsresfuncs       Q/var/www/html/env/lib/python3.13/site-packages/numpy/lib/tests/test_shape_base.pywrapped_add_keepdims.<locals>.wrapped   s0    1*4*6*<D~~c--    )	functoolswraps)r    r"   s   ` r!   _add_keepdimsr'      s%    __T. .
 Nr$   c                   ,    \ rS rSrS rS rS rS rSrg)TestTakeAlongAxis   c                    SSK Jn  U" SSS5      n[        R                  [        R                  [        5       4[        [        R                  5      [        [        R                  5      [        5       4[        [        R                  5      [        [        R                  5      [        5       4/nU HY  u  pEn[        [        UR                  5      5      S/-    H-  nU" U4SU0UD6nU" U4SU0UD6n	[        U[        X)US95        M/     M[     g)	z,Test it translates from arg<func> to <func> r   rand         Nr   r   )numpy.randomr-   r   sortargsortdictr'   minargminmaxargmaxlistrangendimr   r   )
selfr-   r   funcsr    argfuncr   r   a_funcai_funcs
             r!   test_argequivalent$TestTakeAlongAxis.test_argequivalent    s    %AqM WWbjj$&)266"M"))$<dfE266"M"))$<dfE
 &+!D6U166]+tf4a5d5f5!!9$9&9V_Qd%KL 5 &+r$   c                    [         R                  " S5      n[         R                  " S[         R                  S9n[        XSS9  [	        [
        [        U[         R                  " S5      SS9  [	        [        [        XR                  [        5      SS9  [	        [        [        XR                  [        5      SS9  [	        [        [        XSS9  [	        [
        [        XSS9  g)z3Test it errors when indices has too few dimensions )
   rD   )rD      dtype   r   rD   N)r   onesintpr   r   
ValueErrorarray
IndexErrorastypeboolfloatr   r<   r   ais      r!   test_invalidTestTakeAlongAxis.test_invalid2   s    GGHWWWBGG, 	A& 	j/1bhhqkJj/1iioANj/1ii6FQOi!bAj/1tDr$   c                     [         R                  " S5      n[         R                  " S[         R                  S9n[        XSS9n[	        UR
                  UR
                  5        g)zBTest everything is ok with empty results, even with inserted dims )r.   r/   r0   )r.   r   r0   rF   rH   r   Nr   rI   rJ   r   r   shaper<   r   rR   actuals       r!   
test_emptyTestTakeAlongAxis.test_emptyE   sB    WWYWWYbgg. Q/V\\288,r$   c                     [         R                  " S5      n[         R                  " S[         R                  S9n[        XSS9n[	        UR
                  S5        g)CTest that non-indexing dimensions are broadcast in both directions r.   r/   rH   rH   rE   r0   rF   rH   r   r.   rE   r0   NrV   rX   s       r!   test_broadcast TestTakeAlongAxis.test_broadcastM   s>    WWYWWYbgg. Q/V\\9-r$    N)	__name__
__module____qualname____firstlineno__rA   rS   rZ   ra   __static_attributes__rc   r$   r!   r)   r)      s    M$E&-.r$   r)   c                   &    \ rS rSrS rS rS rSrg)TestPutAlongAxisU   c                 N   [         R                  " / SQ/ SQ/5      n[        [        UR                  5      5      S /-    Hc  nUR                  5       n[        [         R                  5      " X2S9n[        X4SUS9  [        [         R                  5      " X2S9n[        XT5        Me     g )NrD         <   (   2   r   i)r   rL   r9   r:   r;   copyr'   r8   r   r6   r   )r<   a_baser   r   i_maxi_mins         r!   test_replace_max!TestPutAlongAxis.test_replace_maxV   s}    <67v{{+,v5DA "")),Q:E1St4 "")),Q:E& 6r$   c                     [         R                  " S5      n[         R                  " S[         R                  S9R	                  S5      S-  n[        XSSS9  [        [        XSS9S5        g	)
r]   r^   rD   rF   r_   r/   ro   rH   r   N)r   rI   arangerJ   reshaper   r   r   rQ   s      r!   ra   TestPutAlongAxis.test_broadcastf   sQ    WWYYYr)11)<q@qbq)_Q3R8r$   c                    [         R                  " / SQ/ SQ/5      n[         R                  " S/S//5      n[         R                  " S/S//5      nUR                  5       n[        XBUSS9  [         R                  " U/ SQ/ SQ/:H  5      (       d   eUR                  5       n[        [        5       n[        XBUS	S9  S	S	S	5        S
[        WR                  5      ;   d   eg	! , (       d  f       N*= f)zTest invalid inputs rm   rp   r   rH   rE   r   rE   rE   rE   rH   rH   rH   Nzsingle dimension)	r   rL   rt   r   allr   rK   str	exception)r<   ru   indicesvaluesr   excs         r!   rS   TestPutAlongAxis.test_invalidm   s    <67((QC!:&A3*% KKMq62vvaIy112222 KKM:&#1vD9 '!S%7777 '&s   1C!!
C/rc   N)rd   re   rf   rg   rx   ra   rS   rh   rc   r$   r!   rj   rj   U   s    ' 98r$   rj   c                       \ rS rSrS rS rS rS rS r\	R                  4S jr\	R                  4S jr\	R                  4S	 jrS
 rS rS rS rS rSrg)TestApplyAlongAxis   c                     [         R                  " SS5      n[        [        [        SU5      [	        U5      [         R                  " UR
                  S   5      -  5        g )Nro   rD   dr   rH   r   rI   r   r   lenrW   r<   r   s     r!   test_simpleTestApplyAlongAxis.test_simple   sC    GGHc"S!Q'Q
0C)C	Er$   c                     [         R                  " SS5      n[        [        [        SU5      [	        U5      [         R                  " UR
                  S   5      -  5        g )N)rD   e   r   r   rH   r   r   s     r!   test_simple101!TestApplyAlongAxis.test_simple101   sC    GGIs#S!Q'Q
0C)C	Er$   c                     [         R                  " S5      R                  S5      n[        [	        [         R
                  SU5      / SQ/ SQ/ SQ/5        g )N   r.   r.   r.   r   )r   rn   !   )$   '   *   )-   0   3   )r   r{   r|   r   r   sumr   s     r!   test_3dTestApplyAlongAxis.test_3d   s=    IIbM!!),+BFFAq9(,E	Gr$   c                    S n " S S[         R                  5      n[         R                  " SS/SS//5      R                  U5      n[         R                  " SS/SS	//5      R                  U5      n[	        USU5      n[        [        XR5      5        [        XT5        [	        USU5      n[        [        XR5      5        [        XT5        g )
Nc                     U S-  $ )NrE   rc   )rows    r!   double9TestApplyAlongAxis.test_preserve_subclass.<locals>.double   s    7Nr$   c                       \ rS rSrSrg)<TestApplyAlongAxis.test_preserve_subclass.<locals>.MyNDArray   rc   Nrd   re   rf   rg   rh   rc   r$   r!   	MyNDArrayr          r$   r   r   rH   rE   r.   r/      )r   ndarrayrL   viewr   r   
isinstancer   )r<   r   r   mexpectedresults         r!   test_preserve_subclass)TestApplyAlongAxis.test_preserve_subclass   s    		

 	 HHq!fq!f%&++I688aVaV,-229=!&!Q/
6-.6,!&!Q/
6-.6,r$   c                      " S S[         R                  5      nS n[         R                  " S5      R                  U5      n[	        [        USU5      [         R                  " / SQ5      5        g )Nc                       \ rS rSrSrSrg)9TestApplyAlongAxis.test_subclass.<locals>.MinimalSubclass   rH   rc   N)rd   re   rf   rg   datarh   rc   r$   r!   MinimalSubclassr      s    Dr$   r   c                     U R                   $ N)r   )rL   s    r!   minimal_function:TestApplyAlongAxis.test_subclass.<locals>.minimal_function   s    ::r$   r   r.   r   r   )r   r   zerosr   r   r   rL   )r<   r   r   r   s       r!   test_subclass TestApplyAlongAxis.test_subclass   sR    	bjj 		 HHV!!/2-q!4bhhy6I	
r$   c                    [         R                  " S5      R                  U5      n[        [         R                  SU5      n[        [        X15      5        [        U[         R                  " / SQ5      R                  U5      5        g )Nr   r   r   r   r   )	r   rI   r   r   r   r   r   r   rL   )r<   clsr   r   s       r!   test_scalar_array$TestApplyAlongAxis.test_scalar_array   sW    GGFO  %rvvq!,
3$%3 3 8 8 =>r$   c                    S n[         R                  " S5      R                  U5      n[        USU5      n[	        [        XA5      5        [        U[         R                  " / SQ5      R                  U5      5        [        USU5      n[	        [        XA5      5        [        U[         R                  " / SQ5      R                  U5      5        g )Nc                     [        U R                  S5        [        R                  " [        R                  " U SS95      $ )z.Sum x, returning a 0d array of the same class rH   T)keepdims)r   r;   r   squeezer   xs    r!   	sum_to_0d3TestApplyAlongAxis.test_0d_array.<locals>.sum_to_0d   s*    #::bffQ677r$   r   r   r   rH   )r.   r.   r.   r.   r.   r.   )r   rI   r   r   r   r   r   rL   )r<   r   r   r   r   s        r!   test_0d_array TestApplyAlongAxis.test_0d_array   s    	8 GGFO  %y!Q/
3$%3 3 8 8 =>y!Q/
3$%3); < A A# FGr$   c                   ^ U4S jn[         R                  " S5      R                  S5      n[        USU5      n[         R                  " [        UR                  S   5       Vs/ s H  oR" US S 2U4   5      PM     snSS9R                  T5      n[        [        U5      [        U5      5        [        XF5        [        USU5      n[         R                  " [        UR                  S   5       Vs/ s H  oR" X5S S 24   5      PM     snSS9R                  T5      n[        [        U5      [        U5      5        [        XF5        [         R                  " S5      R                  S	5      n[        USU5      n[         R                  " [        UR                  S
   5       VVs/ s HK  n[         R                  " [        UR                  S   5       Vs/ s H  oR" XuS S 2U4   5      PM     snSS9PMM     snnSS9R                  T5      n[        [        U5      [        U5      5        [        XF5        g s  snf s  snf s  snf s  snnf )Nc                 r   > [        U R                  S5        U SSS2   U SS2S4   -  R                  T5      $ )/produces an asymmetric non-square matrix from xrH   N)r   r;   r   )r   r   s    r!   f1to25TestApplyAlongAxis.test_axis_insertion.<locals>.f1to2   s9    #ddGa4j(..s33r$      r   r   rH   r   r   Z   )r   r0   r.   rE   )
r   r{   r|   r   stackr:   rW   r   r   type)	r<   r   r   a2drY   ir   a3djs	    `       r!   test_axis_insertion&TestApplyAlongAxis.test_axis_insertion   s   	4
 iin$$V, "%C088%*399Q<%8
%8E#ac(O%8
DI 	 	T&\4>2V& "%C088%*399Q<%8
%8E#c(O%8
49 	 	T&\4>2V& ii&&y1!%C088 399Q<(	
 ) HH+01+>+>acAa%j!+> )	

 
 DI 	 	T&\4>2V&3


s$   $H51H:#0I
H?+
I
?I
c                      " S S[         R                  5      nU R                  U5        U R                  U5        U R	                  U5        g )Nc                       \ rS rSrSrg)FTestApplyAlongAxis.test_subclass_preservation.<locals>.MinimalSubclass   rc   Nr   rc   r$   r!   r   r      r   r$   r   )r   r   r   r   r   )r<   r   s     r!   test_subclass_preservation-TestApplyAlongAxis.test_subclass_preservation   s<    	bjj 	/?+  1r$   c                 >   S n[         R                  " S5      R                  S5      n[        USU5      n[	        [        U[         R                  R                  5      5        [        UR                  S5        [        US S 2S S 2S4   R                  U" US S 2S4   5      R                  5        [        US S 2S S 2S4   R                  U" US S 2S4   5      R                  5        [        US S 2S S 2S4   R                  U" US S 2S4   5      R                  5        g )Nc                     [        U R                  S5        U SSS2   U SS2S4   -  n[        R                  R	                  US-  S:H  U5      $ )r   rH   Nr   r0   r   )r   r;   r   mamasked_where)r   r   s     r!   r   8TestApplyAlongAxis.test_axis_insertion_ma.<locals>.f1to2   sK    #DbD'AabgJ&C55%%c!eQh44r$   r   r   r   r.   rH   rE   )r   r{   r|   r   r   r   r   masked_arrayr   r;   r   mask)r<   r   r   r   s       r!   test_axis_insertion_ma)TestApplyAlongAxis.test_axis_insertion_ma   s    	5
 IIcN""6*ua+
3 2 234SXXq!3q1u:??E!AaC&M,>,>?3q1u:??E!AaC&M,>,>?3q1u:??E!AaC&M,>,>?r$   c           	          S n[         R                  " US[         R                  " SS/SS//5      5      n[        U[         R                  " SS/SS//5      5        g )Nc                     U S   U S   4$ )NrH   r   rc   r   s    r!   	sample_1d7TestApplyAlongAxis.test_tuple_func1d.<locals>.sample_1d   s    Q41:r$   rH   rE   r.   r/   )r   r   rL   r   )r<   r   r   s      r!   test_tuple_func1d$TestApplyAlongAxis.test_tuple_func1d   sQ    	!!)Q1a&1a&9I0JK31a&1a&)9 :;r$   c                    S n[         R                  " S5      n[        [        [         R                  USU5        [        [        [         R                  USU5        S n[         R                  " S5      n[         R                  " USU5      n[        U[         R                  " S5      5        [        [        [         R                  USU5        g )Nc                     [        S5        g )NF)r   r   s    r!   
never_call1TestApplyAlongAxis.test_empty.<locals>.never_call  s	    ENr$   )r   r   r   rH   c                 2    [        [        U 5      S:H  5        g)Nr   rH   )r   r   r   s    r!   
empty_to_11TestApplyAlongAxis.test_empty.<locals>.empty_to_1  s    CFaK r$   )rD   r   rD   )r   emptyr   rK   r   r   rI   )r<   r   r   r   rY   s        r!   rZ   TestApplyAlongAxis.test_empty  s    	 HHVj""5"5z1aHj""5"5z1aH	 HHW$$ZA6VRWWR[)j""5"5z1aHr$   c                 p   [         R                  " SS1SS1SS1/SS1S	S
1SS1//5      n[         R                  " S SU5      n[         R                  " 1 Sk1 Sk1 Sk/5      n[        X#5        [         R                  " UR
                  5       H%  n[        [        X$   5      [        X4   5      5        M'     g )NrH      rE      r.   r   r/   ,   r0   7   r   B   c                 (    [         R                  " U 6 $ r   )setunion)r   s    r!   <lambda>>TestApplyAlongAxis.test_with_iterable_object.<locals>.<lambda>  s    syy!}r$   r   >   rH   r/   r  r  >   rE   r0   r  r  >   r.   r   r   r  )r   rL   r   r   ndindexrW   r   )r<   r   rY   r   r   s        r!   test_with_iterable_object,TestApplyAlongAxis.test_with_iterable_object  s    HHWq"g2w'Wq"g2w'
  $$%<aC88^^^LMV& FLL)Afi$x{*;< *r$   rc   N)rd   re   rf   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   rZ   r  rh   rc   r$   r!   r   r      se    E
E
G
-$
 %'JJ ? !#

 H ')jj #'J2@<I&=r$   r   c                       \ rS rSrS rSrg)TestApplyOverAxesi&  c                     [         R                  " S5      R                  SSS5      n[        [         R                  USS/5      n[        U[         R                  " S/S/S///5      5        g )	N   rE   r.   r/   r   rq   \   |   )r   r{   r|   r   r   r   rL   )r<   r   aoa_as      r!   r   TestApplyOverAxes.test_simple'  sW    IIbM!!!Q*Aq625"((bTB4#,?+@"ABr$   rc   N)rd   re   rf   rg   r   rh   rc   r$   r!   r  r  &  s    Cr$   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestExpandDimsi-  c                     Sn[         R                  " U5      n[        SS5       HU  n[        X#5      n[	        UR
                  U   S:H  5        [	        [         R                  " U5      R
                  U:H  5        MW     g )NrE   r.   r/   r0   r/   rH   )r   r  r:   r   r   rW   r   )r<   sr   r   bs        r!   test_functionality!TestExpandDims.test_functionality.  s^    HHQK"aLDA$AAGGDMQ&'BJJqM''1,- !r$   c                 X   [         R                  " S5      n[         R                  " USS9R                  S:X  d   e[         R                  " USS9R                  S:X  d   e[         R                  " USS9R                  S:X  d   e[         R                  " US	S9R                  S
:X  d   eg )Nr   r   rH   rE   r   )rH   rH   rH   r.   r.   r.   )r   r   )rH   r.   r.   r.   rH   rH   )r   r.   r0   )rH   r.   r.   rH   r.   rH   )r   r  )rH   rH   r.   rH   r.   r.   )r   r  r   rW   r   s     r!   test_axis_tupleTestExpandDims.test_axis_tuple6  s    HHY~~ai066:LLLL~~ak288<NNNN~~ai066:LLLL~~ak288<NNNNr$   c                    Sn[         R                  " U5      n[        [        [        US5        [        [        [        US5        [         R                  " S5      n[        [        [        US5        [        [        [        US5        g )Nr  r0   r   )r   r)  )r   r0   )r   r  r   r   r   )r<   r  r   s      r!   test_axis_out_of_range%TestExpandDims.test_axis_out_of_range=  sZ    HHQKia4ia3HHYia9ia8r$   c                 X    [         R                  " S5      n[        [        [        USS9  g )Nr   rH   rH   r   )r   r  r   rK   r   r   s     r!   test_repeated_axis!TestExpandDims.test_repeated_axisG  s    HHYj+qv>r$   c                    [         R                  " S5      R                  S5      n[         R                  R	                  XS-  S:H  S9n[         R
                  " USS9n[        [        U[         R                  R                  5      5        [        UR                  S5        [        UR                  R                  S5        g )	NrD   )rE   r0   r.   r   r   rH   r   )rE   rH   r0   )r   r{   r|   r   rL   r   r   r   MaskedArrayr   rW   r   )r<   r   expandeds      r!   test_subclassesTestExpandDims.test_subclassesK  s    IIbM!!&)EEKK!qK)>>!!,
8RUU%6%678X^^Y/X]](()4r$   rc   N)
rd   re   rf   rg   r   r&  r*  r.  r4  rh   rc   r$   r!   r  r  -  s    .O9?5r$   r  c                       \ rS rSrS rS rS rS rS r\	R                  R                  \(       + SS9S	 5       rS
 rS rS rSrg)TestArraySplitiU  c                 \    [         R                  " S5      n[        [        [        US5        g )NrD   r   )r   r{   r   rK   r   r   s     r!   test_integer_0_split#TestArraySplit.test_integer_0_splitV  s    IIbMj+q!4r$   c                    [         R                  " S5      n[        US5      n[         R                  " S5      /n[        X#5        [        US5      n[         R                  " S5      [         R                  " SS5      /n[        X#5        [        US5      n[         R                  " S5      [         R                  " SS5      [         R                  " SS5      /n[        X#5        [        US5      n[         R                  " S5      [         R                  " SS5      [         R                  " SS	5      [         R                  " S	S5      /n[        X#5        [        US5      n[         R                  " S5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS	5      [         R                  " S	S5      /n[        X#5        [        US5      n[         R                  " S5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS	5      [         R                  " S	S
5      [         R                  " S
S5      /n[        X#5        [        US5      n[         R                  " S5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS	5      [         R                  " S	S
5      [         R                  " S
S5      /n[        X#5        [        US	5      n[         R                  " S5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS	5      [         R                  " S	S
5      [         R                  " S
S5      /n[        X#5        [        US
5      n[         R                  " S5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS	5      [         R                  " S	S
5      [         R                  " S
S5      /	n[        X#5        [        US5      n[         R                  " S5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS	5      [         R                  " S	S
5      [         R                  " S
S5      /
n[        X#5        [        US5      n[         R                  " S5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS	5      [         R                  " S	S
5      [         R                  " S
S5      [         R                  " / 5      /n[        X#5        g )NrD   rH   rE   r0   r.   r/      r      	   r  )r   r{   r   compare_resultsrL   r<   r   r   desireds       r!   test_integer_split!TestArraySplit.test_integer_splitZ  sa   IIbM!Q99R=/%!Q99Q<1b!12%!Q99Q<1a"))Ar2BC%!Q99Q<1a"))Aq/99Q#%%!Q99Q<1a"))Aq/99Q?BIIa$46%!Q99Q<1a"))Aq/99Q?BIIaORYYq"5EG%!Q99Q<1a"))Aq/99Q?BIIaORYYq!_99Q#% 	%!Q99Q<1a"))Aq/99Q?BIIaORYYq!_99Q?BIIa$46 	%!Q99Q<1a"))Aq/99Q?BIIaORYYq!_99Q?BIIaORYYq"5EG 	%!R 99Q<1a"))Aq/99Q?BIIaORYYq!_99Q?BIIaORYYq!_99Q#% 	%!R 99Q<1a"))Aq/99Q?BIIaORYYq!_99Q?BIIaORYYq!_99Q#RXXb\3 	%r$   c                 l   [         R                  " [         R                  " S5      [         R                  " S5      /5      n[        USSS9n[         R                  " [         R                  " S5      /5      [         R                  " [         R                  " S5      /5      [         R                  " S5      /n[        X#5        [        UR                  R                  US   R                  R                  L 5        [        USS/SS9n[         R                  " S5      [         R                  " [         R                  " S5      /5      [         R                  " [         R                  " S5      /5      /n[        X#5        [        UR                  R                  US   R                  R                  L 5        g )NrD   r.   r   r   r   rD   r   rH   	r   rL   r{   r   r   r?  r   rG   r   r<   r   r   tgts       r!   test_integer_split_2D_rows)TestArraySplit.test_integer_split_2D_rows  s   HHbiimRYYr]34!QQ'xx2("((BIIbM?*C88G$&!B 2 223 !aV!,xx "((BIIbM?";xx2(*!B 2 223r$   c           	      6   [         R                  " [         R                  " S5      [         R                  " S5      /5      n[        USSS9n[         R                  " [         R                  " S5      [         R                  " S5      /5      [         R                  " [         R                  " SS5      [         R                  " SS5      /5      [         R                  " [         R                  " SS5      [         R                  " SS5      /5      /n[	        X#5        g )NrD   r.   r   r   r/   r<  )r   rL   r{   r   r?  r@  s       r!   test_integer_split_2D_cols)TestArraySplit.test_integer_split_2D_cols  s    HHbiimRYYr]34!QR(88RYYq\299Q<8988RYYq!_bii1o>?88RYYq"-ryyB/?@AC 	%r$   c                    [         R                  " [         R                  " S5      [         R                  " S5      /5      n[        US5      n[         R                  " [         R                  " S5      /5      [         R                  " [         R                  " S5      /5      [         R                  " S5      /n[        X#5        [        UR                  R                  US   R                  R                  L 5        g)z1This will fail if we change default axis
        rD   r.   rE  r   NrF  rG  s       r!   test_integer_split_2D_default,TestArraySplit.test_integer_split_2D_default  s     HHbiimRYYr]34!Qxx2("((BIIbM?*C88G$&!B 2 223r$   zNeeds 64bit platform)reasonc                    [         R                  " S/S5      n[        US5      n[         R                  " S/S5      nU/S-  n[        [	        U5      5       H'  n[        X%   R                  XE   R                  5        M)     g )Nr   )r   rE   r/   )i   @rE   )r   broadcast_tor   r:   r   r   rW   )r<   r   r   chunkrH  r   s         r!   ,test_integer_split_2D_rows_greater_max_int32;TestArraySplit.test_integer_split_2D_rows_greater_max_int32  se    OOQC.!Q\2gks3xAsv||4 !r$   c                    [         R                  " S5      n/ SQn[        XSS9n[         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      /n[        X45        g )	NrD   )rH   r0   r<  r   r   r   rH   r0   r<  )r   r{   r   r?  r<   r   r   r   rA  s        r!   test_index_split_simple&TestArraySplit.test_index_split_simple  sb    IIbM!2.99Q?BIIaORYYq!_99Q#%%r$   c                    [         R                  " S5      n/ SQn[        XSS9n[         R                  " / 5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      /n[	        X45        g )NrD   )r   r0   r<  r   r   r   r0   r<  r   r{   r   rL   r?  rX  s        r!   test_index_split_low_bound)TestArraySplit.test_index_split_low_bound  s`    IIbM!2.88B<1a"))Aq/99Q#%%r$   c                 h   [         R                  " S5      n/ SQn[        XSS9n[         R                  " / 5      [         R                  " SS5      [         R                  " SS5      [         R                  " SS5      [         R                  " / 5      [         R                  " / 5      /n[	        X45        g )NrD   )r   r0   r<  rD      r   r   r   r0   r<  r\  rX  s        r!   test_index_split_high_bound*TestArraySplit.test_index_split_high_bound  su    IIbM#!2.88B<1a"))Aq/99Q#RXXb\288B<A%r$   rc   N)rd   re   rf   rg   r9  rB  rI  rL  rO  pytestmarkskipifIS_64BITrU  rY  r]  ra  rh   rc   r$   r!   r7  r7  U  sW    5;&z4&4 [[H-CD5 E5&&&r$   r7  c                        \ rS rSrS rS rSrg)	TestSpliti  c                     [         R                  " S5      n[        US5      n[         R                  " S5      [         R                  " SS5      /n[        X#5        g )NrD   rE   r0   )r   r{   r   r?  r@  s       r!   test_equal_splitTestSplit.test_equal_split  s?    IIbMAqk99Q<1b!12%r$   c                 \    [         R                  " S5      n[        [        [        US5        g )NrD   r.   )r   r{   r   rK   r   r   s     r!   test_unequal_splitTestSplit.test_unequal_split  s    IIbMj%A.r$   rc   N)rd   re   rf   rg   rj  rm  rh   rc   r$   r!   rh  rh    s    
&/r$   rh  c                   ,    \ rS rSrS rS rS rS rSrg)TestColumnStacki  c                 .    [        [        [        S5        g NrH   )r   	TypeErrorr   r<   s    r!   test_non_iterable!TestColumnStack.test_non_iterable  s    iq1r$   c                     [         R                  " S5      n[         R                  " S5      n[         R                  " SS/SS/SS//5      n[         R                  " X45      n[        XC5        g )NrH   rE   r.   )rE   r.   r/   rH   rE   r.   r/   r   rL   r   r   r<   r   r  r   rY   s        r!   test_1D_arraysTestColumnStack.test_1D_arrays  s_    HHYHHY88aVVV% & !(V&r$   c                     [         R                  " S/S/S//5      n[         R                  " S/S/S//5      n[         R                  " SS/SS/SS//5      n[         R                  " X45      n[        XC5        g )NrH   rE   r.   r/   ry  rz  s        r!   test_2D_arraysTestColumnStack.test_2D_arrays  sw    HHqcA3_%HHqcA3_%88aVVV% & !(V&r$   c                     [         R                  " [        SS9   [        S [	        S5       5       5        S S S 5        g ! , (       d  f       g = f)Narrays to stack must bematchc              3   N   #    U  H  n[         R                  " S 5      v   M     g7fr.   Nr   r{   .0_s     r!   	<genexpr>1TestColumnStack.test_generator.<locals>.<genexpr>  s     8x!1x   #%rE   )rc  raisesrs  r   r:   rt  s    r!   test_generatorTestColumnStack.test_generator  s0    ]]9,EF8uQx88 GFF	   ?
Arc   N)	rd   re   rf   rg   ru  r{  r~  r  rh   rc   r$   r!   rp  rp    s    2''9r$   rp  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)

TestDstacki  c                 .    [        [        [        S5        g rr  )r   rs  r
   rt  s    r!   ru  TestDstack.test_non_iterable	  s    i+r$   c                     [         R                  " S5      n[         R                  " S5      n[        X/5      n[         R                  " SS///5      n[        X45        g NrH   rE   r   rL   r
   r   r<   r   r  r   rA  s        r!   test_0D_arrayTestDstack.test_0D_array  sE    HHQKHHQKaVn((aVH:&3(r$   c                     [         R                  " S/5      n[         R                  " S/5      n[        X/5      n[         R                  " SS///5      n[        X45        g r  r  r  s        r!   test_1D_arrayTestDstack.test_1D_array  sI    HHaSMHHaSMaVn((aVH:&3(r$   c                     [         R                  " S/S//5      n[         R                  " S/S//5      n[        X/5      n[         R                  " SS//SS///5      n[        X45        g r  r  r  s        r!   test_2D_arrayTestDstack.test_2D_array  s`    HHqcA3Z HHqcA3Z aVn((aVH1xj123(r$   c                     [         R                  " SS/5      n[         R                  " SS/5      n[        X/5      n[         R                  " SS/SS///5      n[        X45        g r  r  r  s        r!   test_2D_array2TestDstack.test_2D_array2!  sW    HHaVHHaVaVn((aVaV,-.3(r$   c                     [         R                  " [        SS9   [        S [	        S5       5       5        S S S 5        g ! , (       d  f       g = f)Nr  r  c              3   N   #    U  H  n[         R                  " S 5      v   M     g7fr  r  r  s     r!   r  ,TestDstack.test_generator.<locals>.<genexpr>*  s     2A299Q<<r  rE   )rc  r  rs  r
   r:   rt  s    r!   r  TestDstack.test_generator(  s0    ]]9,EF2q22 GFFr  rc   N)rd   re   rf   rg   ru  r  r  r  r  r  rh   rc   r$   r!   r  r    s     ,))))3r$   r  c                   0    \ rS rSrSrS rS rS rS rSr	g)	
TestHspliti/  &Only testing for integer splits.

    c                 0    [        [        [        SS5        g rr  )r   rK   r   rt  s    r!   ru  TestHsplit.test_non_iterable3      j&!Q/r$   c                     [         R                  " S5      n [        US5        [        S5        g ! [         a     g f = f)NrH   rE   r   )r   rL   r   r   rK   r   s     r!   r  TestHsplit.test_0D_array6  s6    HHQK	1aLAJ 		s   0 
==c                     [         R                  " / SQ5      n[        US5      n[         R                  " SS/5      [         R                  " SS/5      /n[        X#5        g NrH   rE   r.   r/   rE   rH   r.   r/   r   rL   r   r?  r@  s       r!   r  TestHsplit.test_1D_array>  sG    HH\"Ql88QF#RXXq!f%56%r$   c                     [         R                  " / SQ/ SQ/5      n[        US5      n[         R                  " SS/SS//5      [         R                  " SS/SS//5      /n[        X#5        g r  r  r@  s       r!   r  TestHsplit.test_2D_arrayD  sc    HHl  !Ql88aVaV,-rxx!Q!Q8H/IJ%r$   rc   N
rd   re   rf   rg   __doc__ru  r  r  r  rh   rc   r$   r!   r  r  /  s    0&&r$   r  c                   0    \ rS rSrSrS rS rS rS rSr	g)	
TestVsplitiL  r  c                 0    [        [        [        SS5        g rr  )r   rK   r	   rt  s    r!   ru  TestVsplit.test_non_iterableP  r  r$   c                 \    [         R                  " S5      n[        [        [        US5        g r  )r   rL   r   rK   r	   r   s     r!   r  TestVsplit.test_0D_arrayS      HHQKj&!Q/r$   c                     [         R                  " / SQ5      n [        US5        [        S5        g ! [         a     g f = fNr  rE   r   )r   rL   r	   r   rK   r   s     r!   r  TestVsplit.test_1D_arrayW  s7    HH\"	1aLAJ 		s   2 
??c                     [         R                  " / SQ/ SQ/5      n[        US5      n[         R                  " / SQ/5      [         R                  " / SQ/5      /n[        X#5        g Nr  rE   )r   rL   r	   r?  r@  s       r!   r  TestVsplit.test_2D_array_  sM    HHl  !Ql88\N+RXX|n-EF%r$   rc   Nr  rc   r$   r!   r  r  L  s    00&r$   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	
TestDsplitig  c                 0    [        [        [        SS5        g rr  )r   rK   r   rt  s    r!   ru  TestDsplit.test_non_iterablei  r  r$   c                 \    [         R                  " S5      n[        [        [        US5        g r  r   rL   r   rK   r   r   s     r!   r  TestDsplit.test_0D_arrayl  r  r$   c                 `    [         R                  " / SQ5      n[        [        [        US5        g r  r  r   s     r!   r  TestDsplit.test_1D_arrayp  s    HH\"j&!Q/r$   c                     [         R                  " / SQ/ SQ/5      n [        US5        [        S5        g ! [         a     g f = fr  )r   rL   r   r   rK   r   s     r!   r  TestDsplit.test_2D_arrayt  sA    HHl  !	1aLAJ 		s   6 
AAc                 
   [         R                  " / SQ/ SQ// SQ/ SQ//5      n[        US5      n[         R                  " SS/SS//SS/SS///5      [         R                  " SS/SS//SS/SS///5      /n[        X#5        g r  )r   rL   r   r?  r@  s       r!   test_3D_arrayTestDsplit.test_3D_array}  s    HH|!!" # Ql88q!fq!f-AA/?@A88q!fq!f-AA/?@AC%r$   rc   N)
rd   re   rf   rg   ru  r  r  r  r  rh   rc   r$   r!   r  r  g  s    000&r$   r  c                       \ rS rSrS rSrg)TestSqueezei  c                 T   SSK Jn  U" SSSSS5      nU" SSSSS5      nU" SSSS5      n[        [        R                  " U5      [        R
                  " US5      5        [        [        R                  " U5      [        R
                  " US5      5        [        [        R                  " U5      [        R
                  " US5      5        S	///n[        R                  " U5      n[        US	5        [        UR                  S5        [        [        U5      [        R                  5        g )
Nr   r,   ro   rD   rH   )ro   rD   rD   )ro   rD   ro   r   g      ?)
r1   r-   r   r   r   r|   r   r;   r   r   )r<   r-   r   r  cr   s         r!   
test_basicTestSqueeze.test_basic  s    %RQ"QAr"Ar22::a="**Q*EF2::a="**Q*EF2::a="**Q*AB eWIjjmS#SXXq!T#Y

+r$   rc   Nrd   re   rf   rg   r  rh   rc   r$   r!   r  r    s    ,r$   r  c                       \ rS rSrS rS r\R                  R                  S\	R                  \	R                  /5      S 5       rS r\R                  R                  S/ SQ5      S	 5       rS
rg)TestKroni  c                    [         R                  " S5      n[         R                  " SS/SS//5      n[         R                  " SS/SS//5      n[        [         R                  " X5      U5        [         R                  " SS/SS//5      n[         R                  " S5      n[        [         R                  " X5      U5        [         R                  " S/5      n[         R                  " SS/SS//5      n[         R                  " SS/SS//5      n[        [         R                  " X5      U5        [         R                  " SS/SS//5      n[         R                  " S/5      n[        [         R                  " X5      U5        [         R                  " S//S///5      n[         R                  " SS/SS//5      n[         R                  " SS/SS//SS/SS///5      n[        [         R                  " X5      U5        [         R                  " SS/SS//5      n[         R                  " S//S///5      n[         R                  " SS/SS//SS/SS///5      n[        [         R                  " X5      U5        g )	NrH   rE   r.   r/   r   r>  r`  r=  )r   rL   r   r   )r<   r   r  ks       r!   r  TestKron.test_basic  s   HHQKHHq!fq!f%&HHq!fq!f%&2771=!,HHq!fq!f%&HHQK2771=!, HHaSMHHq!fq!f%&HHq!fq"g&'2771=!,HHq!fq!f%&HHaSM2771=!, HHseqcU^$HHq!fq!f%&HH1v1v&!Q!Q(89:2771=!,HHq!fq!f%&HHseqcU^$HH1v1v&!Q!Q(89:2771=!,r$   c                     " S S[         R                  5      n[         R                  " SS/5      nU" UR                  UR                  UR
                  5      n[        [        [        X"5      5      [         R                  5        [        [        [        X35      5      U5        [        [        [        X#5      5      U5        [        [        [        X25      5      U5        g )Nc                       \ rS rSrSrSrg)*TestKron.test_return_type.<locals>.myarrayi  g      ?rc   N)rd   re   rf   rg   __array_priority__rh   rc   r$   r!   myarrayr    s    !$r$   r  rE   )	r   r   rI   rW   rG   r   r   r   r   )r<   r  r   r   s       r!   test_return_typeTestKron.test_return_type  s    	%bjj 	% GGQFOQWWaggqvv.T$q*%rzz2T$r,'1T$q+&0T$r+&0r$   array_classc                     U" [         R                  " SS/5      5      nU" [         R                  " SS/5      5      nU" [         R                  " SS/5      5      n[        [         R                  " X#5      U5        g )Nr.   r>  )r   rI   r   r   )r<   r  r   r  r  s        r!   test_kron_smokeTestKron.test_kron_smoke  sX     A(A(A(2771=!,r$   c                 X   [         R                  R                  SS/SS//SS/SS//S9n[         R                  R                  [         R                  " / SQ5      [         R                  " [         R                  " S5      [
        S9) S9n[        U[         R                  " X5      5        g )	NrH   rE   r.   r/   r   r1  )rH   r/   r/      rF   )r   r   rL   diagidentityrO   r   r   )r<   r   r  s      r!   test_kron_maTestKron.test_kron_ma  s    EEKK!Q!Q(AA/?K@EEKK.hhr{{1~T::  < 	1bggam,r$   zshape_a,shape_b))r-  r-  )rx  )r/   r0   r   )rE   rE   r   ))rH   r   r-  )rE   r   rE   r  ))rE   r   r   rE   r  c                    [         R                  " U5      n[         R                  " U5      nS[        S[        U5      [        U5      -
  5      -  U-   nS[        S[        U5      [        U5      -
  5      -  U-   n[         R                  " XV5      n[         R
                  " X45      n[         R                  " UR                  U5      (       d   S5       eg )N)rH   r   zUnexpected shape from kron)r   rI   r7   r   multiplyr   array_equalrW   )	r<   shape_ashape_br   r  normalised_shape_anormalised_shape_bexpected_shaper  s	            r!   test_kron_shapeTestKron.test_kron_shape  s     GGGGGG!C3w<G+D$EEO!C3w<G+D$EEO%7LGGAM~~) ) 	G*F	G )r$   rc   N)rd   re   rf   rg   r  r  rc  rd  parametrizer   asarrayasmatrixr  r  r  rh   rc   r$   r!   r  r    ss    -:	1 [[

BKK0--- [[ 
	G	Gr$   r  c                   ,    \ rS rSrS rS rS rS rSrg)TestTilei  c                    [         R                  " / SQ5      nSS/SS//n[        [        US5      / SQ5        [        [        US5      / SQ/ SQ/5        [        [        US5      / SQ/5        [        [        US5      / S	Q/ S
Q/5        [        [        US5      SS/SS/SS/SS//5        [        [        US5      / S	Q/ S
Q/ S	Q/ S
Q/5        g )Nr#  rH   rE   r.   r/   )r   rH   rE   r   rH   rE   r  rH   rE   )rH   rE   rH   rE   )r.   r/   r.   r/   rE   rH   )r   rL   r   r   r<   r   r  s      r!   r  TestTile.test_basic  s    HHYVaVT!QZ!34T!V_'9;M&NOT!V_'9&:;T!QZ,!=>T!V_1v1v1v1v&FGT!V_|\'3\'C 	Dr$   c                     [         R                  " S5      n[        US5      nUS-  n[        U[         R                  " S5      5        g )Nr0   rH   rE   )r   r{   r   r   r  s      r!   (test_tile_one_repetition_on_array_gh46791TestTile.test_tile_one_repetition_on_array_gh4679  s5    IIaLAJ	QQ		!%r$   c                     [         R                  " / //5      n[         R                  " / / /5      n[        US5      R                  n[        US5      R                  n[	        US5        [	        US5        g )NrE   r`   )rE   r   )r.   rE   r   )r   rL   r   rW   r   )r<   r   r  r  r   s        r!   rZ   TestTile.test_empty  s]    HHrdVHHb"XAJI$$QQ	"r$   c                     SSK Jn  / SQn/ SQnU HU  nU" SSUS9nU HD  n[        R                  " XeR                  5      n[        XV5      n[        Xu5      n	[        X5        MF     MW     g )Nr   )randint))rE   r  r  r  )rE   r.   rE   )r.   rE   ))r.   )rE   r.   )r.   r/   r.   )r.   rE   r.   )r/   r.   rE   r/   r  rD   )size)r1   r  r   rI   rG   r   r   r   )
r<   r  repsrW   r  r  rr   largeklarges
             r!   test_kroncompareTestTile.test_kroncompare  s]    (@JA2A&AGGAww'Q
aU+	  r$   rc   N)	rd   re   rf   rg   r  r  rZ   r  rh   rc   r$   r!   r  r    s    	D&#,r$   r  c                       \ rS rSrS rSrg)TestMayShareMemoryi  c           
         [         R                  " S5      n[         R                  " S5      n[        [         R                  " X5      5        [        [         R                  " XS S S2   5      5        [        [         R                  " XS S S2   5      5        [        [         R                  " XSS 2S S S24   5      5        [        [         R                  " US S S2   U5      (       + 5        [        [         R                  " US S S2   U5      (       + 5        [        [         R                  " USS 2S S S24   U5      (       + 5        [        [         R                  " USS 2S S S24   U5      5        g )N)rs   rq   )rn   rq   r   r   rE   rH   )r   rI   r   may_share_memory)r<   r   d2s      r!   r  TestMayShareMemory.test_basic  s   GGHWW[!##A)*##A2w/0##A1v./##ATrT{34B''$B$445B''#A#334B''!"dd(R889##Bqr4R4xL"56r$   rc   Nr  rc   r$   r!   r  r    s    7r$   r  c                     [        U 5      [        U5      :w  a  [        S5      e[        X5       H  u  p#[        X#5        M     g)zCompare lists of arrays.z Iterables have different lengthsN)r   rK   zipr   )r   rA  r   ys       r!   r?  r?  "  s7    
3x3w<;<<C!1  "r$   )/numpyr   r%   sysrc  r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   numpy.exceptionsr   numpy.testingr   r   r   r   r   maxsizerf  r'   r)   rj   r   r  r  r7  rh  rp  r  r  r  r  r  r  r  r  r?  rc   r$   r!   <module>r#     s     
    
 ' 
 ;;3. 3.l'8 '8Vc= c=LC C%5 %5PC& C&L/ / 9 9:"3 "3N& &:& &6& &B, ,&LG LG^%, %,P7 7 !r$   