
    *i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  \R4                  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column_stackdsplitdstackexpand_dimshsplitkronput_along_axissplittake_along_axistilevsplit)	AxisError)assert_assert_array_equalassert_equalassert_raises        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       ]/var/www/html/ai-backend/venv/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                  0 4[        [        R                  5      [        [        R                  5      0 4[        [        R                  5      [        [        R                  5      0 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argsortr&   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"))$<bA266"M"))$<bA
 &+!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 )
   rB   )rB      dtype   r   rB   N)r   onesintpr   r   
ValueErrorarray
IndexErrorastypeboolfloatr   r:   r   ais      r    test_invalidTestTakeAlongAxis.test_invalid;   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.   r/   )r-   r   r/   rD   rF   r   Nr   rG   rH   r   r   shaper:   r   rP   actuals       r    
test_emptyTestTakeAlongAxis.test_emptyN   sB    GGI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.   rF   rF   rC   r/   rD   rF   r   r-   rC   r/   NrT   rV   s       r    test_broadcast TestTakeAlongAxis.test_broadcastV   s>    GGIWWYbgg. Q/V\\9-r#    N)	__name__
__module____qualname____firstlineno__r?   rQ   rX   r_   __static_attributes__ra   r#   r    r(   r(   (   s    M$E&-.r#   r(   c                   &    \ rS rSrS rS rS rSrg)TestPutAlongAxis^   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rB         <   r)   2   r   i)r   rJ   r7   r8   r9   copyr&   r6   r   r4   r   )r:   a_baser   r   i_maxi_mins         r    test_replace_max!TestPutAlongAxis.test_replace_max_   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\   rB   rD   r]   r.   rm   rF   r   N)r   rG   arangerH   reshaper   r   r   rO   s      r    r_   TestPutAlongAxis.test_broadcasto   sQ    GGI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 rk   rn   r   rF   rC   r   rC   rC   rC   rF   rF   rF   Nzsingle dimension)	r   rJ   rq   r   allr   rI   str	exception)r:   rr   indicesvaluesr   excs         r    rQ   TestPutAlongAxis.test_invalidv   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/ra   N)rb   rc   rd   re   ru   r_   rQ   rf   ra   r#   r    rh   rh   ^   s    ' 98r#   rh   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rm   rB   dr   rF   r   rG   r   r   lenrU   r:   r   s     r    test_simpleTestApplyAlongAxis.test_simple   sC    GGHc"S!Q'Q"''!''!*2E)E	Gr#   c                     [         R                  " SS5      n[        [        [        SU5      [	        U5      [         R                  " UR
                  S   5      -  5        g )N)rB   e   r   r   rF   r   r   s     r    test_simple101!TestApplyAlongAxis.test_simple101   sC    GGIs#S!Q'Q"''!''!*2E)E	G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   rl   !   )$   '   *   )-   0   3   )r   rx   ry   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-  $ )NrC   ra   )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   ra   Nrb   rc   rd   re   rf   ra   r#   r    	MyNDArrayr          r#   r   r   rF   rC   r-   r.      )r   ndarrayrJ   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   rF   ra   N)rb   rc   rd   re   datarf   ra   r#   r    MinimalSubclassr      s    Dr#   r   c                     U R                   $ N)r   )rJ   s    r    minimal_function:TestApplyAlongAxis.test_subclass.<locals>.minimal_function   s    ::r#   r   r-   r   r}   )r   r   zerosr   r   r   rJ   )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   rG   r   r   r   r   r   r   rJ   )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 rF   T)keepdims)r   r9   r   squeezer   xs    r    	sum_to_0d3TestApplyAlongAxis.test_0d_array.<locals>.sum_to_0d   s*    #::bffQ677r#   r   r   r   rF   )r-   r-   r-   r-   r-   r-   )r   rG   r   r   r   r   r   rJ   )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 xrF   N)r   r9   r   )r   r   s    r    f1to25TestApplyAlongAxis.test_axis_insertion.<locals>.f1to2   s9    #ddGaDk)//44r#      r   r   rF   r   r   Z   )r   r/   r-   rC   )
r   rx   ry   r   stackr8   rU   r   r   type)	r:   r   r   a2drW   ir   a3djs	    `       r    test_axis_insertion&TestApplyAlongAxis.test_axis_insertion   s   	5
 ii&&v. "%C088&+CIIaL&9
&9E#ad)&9
DI 	 	T&\4>2V& "%C088&+CIIaL&9
&9E#d)&9
49 	 	T&\4>2V& ii	"**95!%C088 399Q<(	
 ) HH-2399Q<-@-@cQ'l#-@ )	

 
 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   ra   Nr   ra   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   rF   Nr   r/   r   )r   r9   r   mamasked_where)r   r   s     r    r   8TestApplyAlongAxis.test_axis_insertion_ma.<locals>.f1to2   sK    #DbD'Aab$hK'C55%%cAglC88r#   r   r   r   r-   rF   rC   )r   rx   ry   r   r   r   r   masked_arrayr   r9   r   mask)r:   r   r   r   s       r    test_axis_insertion_ma)TestApplyAlongAxis.test_axis_insertion_ma   s    	9
 IIe$$V,ua+
3 2 234SXXq!3q!Qw<,,eAadGn.A.AB3q!Qw<,,eAadGn.A.AB3q!Qw<,,eAadGn.A.ABr#   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$ )NrF   r   ra   r   s    r    	sample_1d7TestApplyAlongAxis.test_tuple_func1d.<locals>.sample_1d  s    Q41:r#   rF   rC   r-   r.   )r   r   rJ   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   rF   c                 2    [        [        U 5      S:H  5        g)Nr   rF   )r   r   r   s    r    
empty_to_11TestApplyAlongAxis.test_empty.<locals>.empty_to_1  s    CFaK r#   )rB   r   rB   )r   emptyr   rI   r   r   rG   )r:   r   r   r   rW   s        r    rX   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 )NrF      rC      r-   r   r.   ,   r/   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   >   rF   r.   r  r  >   rC   r/   r  r  >   r-   r   r   r  )r   rJ   r   r   ndindexrU   r   )r:   r   rW   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#   ra   N)rb   rc   rd   re   r   r   r   r   r   r   r   r   r   r   r   r   r   rX   r  rf   ra   r#   r    r   r      se    G
G
G
-$
 %'JJ ? !#

 H ')jj #'J2C<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   rC   r-   r.   r   ro   \   |   )r   rx   ry   r   r   r   rJ   )r:   r   aoa_as      r    r   TestApplyOverAxes.test_simple/  sW    IIbM!!!Q*Aq625"((bTB4#,?+@"ABr#   ra   N)rb   rc   rd   re   r   rf   ra   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)	TestExpandDimsi5  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rC   r-   r.   r/   r.   rF   )r   r   r8   r	   r   rU   r   )r:   sr   r   bs        r    test_functionality!TestExpandDims.test_functionality6  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   rF   rC   r   )rF   rF   rF   r-   r-   r-   )r   r   )rF   r-   r-   r-   rF   rF   )r   r-   r/   )rF   r-   r-   rF   r-   rF   )r   r  )rF   rF   r-   rF   r-   r-   )r   r   r	   rU   r   s     r    test_axis_tupleTestExpandDims.test_axis_tuple>  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  r/   r   )r   r&  )r   r/   )r   r   r   r   r	   )r:   r  r   s      r    test_axis_out_of_range%TestExpandDims.test_axis_out_of_rangeE  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   rF   rF   r   )r   r   r   rI   r	   r   s     r    test_repeated_axis!TestExpandDims.test_repeated_axisO  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 )	NrB   )rC   r/   r-   r   r   rF   r   )rC   rF   r/   )r   rx   ry   r   rJ   r	   r   r   MaskedArrayr   rU   r   )r:   r   expandeds      r    test_subclassesTestExpandDims.test_subclassesS  s    IIbM!!&)EEKKA
K+>>!!,
8RUU%6%678X^^Y/X]](()4r#   ra   N)
rb   rc   rd   re   r  r#  r'  r+  r1  rf   ra   r#   r    r  r  5  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)TestArraySpliti]  c                 \    [         R                  " S5      n[        [        [        US5        g )NrB   r   )r   rx   r   rI   r   r   s     r    test_integer_0_split#TestArraySplit.test_integer_0_split^  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 )NrB   rF   rC   r/   r-   r.      r      	   r  )r   rx   r   compare_resultsrJ   r:   r   r   desireds       r    test_integer_split!TestArraySplit.test_integer_splitb  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 )NrB   r-   r   r   r   rB   r   rF   	r   rJ   rx   r   r   r<  r   rE   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 )NrB   r-   r   r   r.   r9  )r   rJ   rx   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
        rB   r-   rB  r   NrC  rD  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   rC   r.   )i   @rC   )r   broadcast_tor   r8   r   r   rU   )r:   r   r   chunkrE  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 )	NrB   )rF   r/   r9  r   r   r   rF   r/   r9  )r   rx   r   r<  r:   r   r   r   r>  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 )NrB   )r   r/   r9  r   r   r   r/   r9  r   rx   r   rJ   r<  rU  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 )NrB   )r   r/   r9  rB      r   r   r   r/   r9  rY  rU  s        r    test_index_split_high_bound*TestArraySplit.test_index_split_high_bound  su    IIbM#!2.88B<1a"))Aq/99Q#RXXb\288B<A%r#   ra   N)rb   rc   rd   re   r6  r?  rF  rI  rL  pytestmarkskipifIS_64BITrR  rV  rZ  r^  rf   ra   r#   r    r4  r4  ]  sW    5;&z4&4 [[H-CD5 E5&&&r#   r4  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 )NrB   rC   r/   )r   rx   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 )NrB   r-   )r   rx   r   rI   r   r   s     r    test_unequal_splitTestSplit.test_unequal_split  s    IIbMj%A.r#   ra   N)rb   rc   rd   re   rg  rj  rf   ra   r#   r    re  re    s    
&/r#   re  c                   ,    \ rS rSrS rS rS rS rSrg)TestColumnStacki  c                 .    [        [        [        S5        g NrF   )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rF   rC   r-   )rC   r-   r.   rF   rC   r-   r.   r   rJ   r   r   r:   r   r  r   rW   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 )NrF   rC   r-   r.   rv  rw  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   rx   .0_s     r    	<genexpr>1TestColumnStack.test_generator.<locals>.<genexpr>  s     8x!1x   #%rC   )r`  raisesrp  r   r8   rq  s    r    test_generatorTestColumnStack.test_generator  s0    ]]9,EF8uQx88 GFF	   ?
Ara   N)	rb   rc   rd   re   rr  rx  r{  r  rf   ra   r#   r    rm  rm    s    2''9r#   rm  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 ro  )r   rp  r   rq  s    r    rr  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 NrF   rC   r   rJ   r   r   r:   r   r  r   r>  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>2  s     2A299Q<<r  rC   )r`  r  rp  r   r8   rq  s    r    r  TestDstack.test_generator0  s0    ]]9,EF2q22 GFFr  ra   N)rb   rc   rd   re   rr  r  r  r  r  r  rf   ra   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)	
TestHspliti7  &Only testing for integer splits.

    c                 0    [        [        [        SS5        g ro  )r   rI   r
   rq  s    r    rr  TestHsplit.test_non_iterable;      j&!Q/r#   c                     [         R                  " S5      n [        US5        [        S5        g ! [         a     g f = f)NrF   rC   r   )r   rJ   r
   r   rI   r   s     r    r  TestHsplit.test_0D_array>  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rF   rC   r-   r.   rC   rF   r-   r.   r   rJ   r
   r<  r=  s       r    r  TestHsplit.test_1D_arrayF  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_arrayL  sc    HHl  !Ql88aVaV,-rxx!Q!Q8H/IJ%r#   ra   N
rb   rc   rd   re   __doc__rr  r  r  r  rf   ra   r#   r    r  r  7  s    0&&r#   r  c                   0    \ rS rSrSrS rS rS rS rSr	g)	
TestVsplitiT  r  c                 0    [        [        [        SS5        g ro  )r   rI   r   rq  s    r    rr  TestVsplit.test_non_iterableX  r  r#   c                 \    [         R                  " S5      n[        [        [        US5        g r  )r   rJ   r   rI   r   r   s     r    r  TestVsplit.test_0D_array[      HHQKj&!Q/r#   c                     [         R                  " / SQ5      n [        US5        [        S5        g ! [         a     g f = fNr  rC   r   )r   rJ   r   r   rI   r   s     r    r  TestVsplit.test_1D_array_  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  rC   )r   rJ   r   r<  r=  s       r    r  TestVsplit.test_2D_arrayg  sM    HHl  !Ql88\N+RXX|n-EF%r#   ra   Nr  ra   r#   r    r  r  T  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)	
TestDsplitio  c                 0    [        [        [        SS5        g ro  )r   rI   r   rq  s    r    rr  TestDsplit.test_non_iterableq  r  r#   c                 \    [         R                  " S5      n[        [        [        US5        g r  r   rJ   r   rI   r   r   s     r    r  TestDsplit.test_0D_arrayt  r  r#   c                 `    [         R                  " / SQ5      n[        [        [        US5        g r  r  r   s     r    r  TestDsplit.test_1D_arrayx  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   rJ   r   r   rI   r   s     r    r  TestDsplit.test_2D_array|  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   rJ   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#   ra   N)
rb   rc   rd   re   rr  r  r  r  r  rf   ra   r#   r    r  r  o  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+   rm   rB   rF   )rm   rB   rB   )rm   rB   rm   r   g      ?)
r0   r,   r   r   r   ry   r   r9   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#   ra   Nrb   rc   rd   re   r  rf   ra   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 )	NrF   rC   r-   r.   r   r;  r]  r:  )r   rJ   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      ?ra   N)rb   rc   rd   re   __array_priority__rf   ra   r#   r    myarrayr    s    !$r#   r  rC   )	r   r   rG   rU   rE   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   rG   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 )	NrF   rC   r-   r.   r   r.  )rF   r.   r.      rD   )r   r   rJ   diagidentityrM   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*  )ru  )r.   r/   r   )rC   rC   r|   ))rF   r   r*  )rC   r   rC   r  ))rC   r   r   rC   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)rF   r   zUnexpected shape from kron)r   rG   r5   r   multiplyr   array_equalrU   )	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,+F$GG'Q!C3w<#g,+F$GG'Q%7LGGAM~~) ) 	G*F	G )r#   ra   N)rb   rc   rd   re   r  r  r`  ra  parametrizer   asarrayasmatrixr  r  r  rf   ra   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   rF   rC   r-   r.   )r   rF   rC   r   rF   rC   r  rF   rC   )rF   rC   rF   rC   )r-   r.   r-   r.   rC   rF   )r   rJ   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 )Nr/   rF   rC   )r   rx   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 )NrC   r^   )rC   r   )r-   rC   r   )r   rJ   r   rU   r   )r:   r   r  r  r   s        r    rX   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))rC   r   r  r  )rC   r-   rC   )r-   rC   ))r-   )rC   r-   )r-   r.   r-   )r-   rC   r-   )r.   r-   rC   r.   r  rB   )size)r0   r
  r   rG   rE   r   r   r   )
r:   r
  repsrU   r  r  rr   largeklarges
             r    test_kroncompareTestTile.test_kroncompare  s]    (@JA2A&AGGAww'Q
aU+	  r#   ra   N)	rb   rc   rd   re   r  r  rX   r  rf   ra   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)rp   ro   )rl   ro   r   r   rC   rF   )r   rG   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#   ra   Nr  ra   r#   r    r  r    s    7r#   r  c                 @    [        XSS9 H  u  p#[        X#5        M     g)zCompare lists of arrays.F)strictN)zipr   )r   r>  r   ys       r    r<  r<  *  s    C/1  0r#   ).r$   sysr`  numpyr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   numpy.exceptionsr   numpy.testingr   r   r   r   maxsizerc  r&   r(   rh   r   r  r  r4  re  rm  r  r  r  r  r  r  r  r  r<  ra   r#   r    <module>r!     s     
       ' R R;;3. 3.l'8 '8Tc= c=LC C%5 %5PC& C&L/ / 9 9:"3 "3N& &:& &6& &B, ,&LG LG^%, %,P7 7 !r#   