
    Bwg`k                        d dl Zd dlZd dlZd dlZd dl mZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZmZ ej6                  dkD  Zd Z G d d      Z G d	 d
      Z G d d      Z  G d d      Z! G d d      Z" G d d      Z# G d d      Z$ G d d      Z% G d d      Z& G d d      Z' G d d      Z( G d d      Z) G d d       Z* G d! d"      Z+ G d# d$      Z, G d% d&      Z-d' Z.y)(    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                 B     t        j                          fd       }|S )z: hack in keepdims behavior into a function taking an axis c                 P     | fd|i|}|d}t        j                  ||      S )Naxisr   r   )npr   )ar   kwargsresfuncs       V/var/www/horilla/myenv/lib/python3.12/site-packages/numpy/lib/tests/test_shape_base.pywrappedz_add_keepdims.<locals>.wrapped   s2    1*4*6*<D~~c--    )	functoolswraps)r    r"   s   ` r!   _add_keepdimsr&      s%    __T. .
 Nr#   c                   $    e Zd Zd Zd Zd Zd Zy)TestTakeAlongAxisc           
          ddl m}  |ddd      }t        j                  t        j                  t               ft        t        j                        t        t        j                        t               ft        t        j                        t        t        j                        t               fg}|D ][  \  }}}t        t        |j                              dgz   D ]0  } ||fd|i|} ||fd|i|}	t        |t        ||	|             2 ] y)	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_argequivalentz$TestTakeAlongAxis.test_argequivalent    s    %AqM WWbjj$&)266"M"))$<dfE266"M"))$<dfE
 &+ 	M!D'6U166]+tf4 Ma5d5f5!!9$9&9V_Qd%KLM	Mr#   c                    t        j                  d      }t        j                  dt         j                        }t        ||d       t	        t
        t        |t        j                  d      d       t	        t        t        ||j                  t              d       t	        t        t        ||j                  t              d       t	        t        t        ||d       t	        t
        t        ||d       y)z4 Test it errors when indices has too few dimensions )
   rA   )rA      dtype   r   rA   N)r   onesintpr   r   
ValueErrorarray
IndexErrorastypeboolfloatr   r:   r   ais      r!   test_invalidzTestTakeAlongAxis.test_invalid2   s    GGHWWWBGG, 	2A& 	j/1bhhqkJj/1biioANj/1bii6FQOi!RbAj/1btDr#   c                     t        j                  d      }t        j                  dt         j                        }t        ||d      }t	        |j
                  |j
                         y)zC Test everything is ok with empty results, even with inserted dims )r,   r-   r.   )r,   r   r.   rC   rE   r   Nr   rF   rG   r   r   shaper:   r   rO   actuals       r!   
test_emptyzTestTakeAlongAxis.test_emptyE   sD    WWYWWYbgg. BQ/V\\288,r#   c                     t        j                  d      }t        j                  dt         j                        }t        ||d      }t	        |j
                  d       y)D Test that non-indexing dimensions are broadcast in both directions r,   r-   rE   rE   rB   r.   rC   rE   r   r,   rB   r.   NrR   rT   s       r!   test_broadcastz TestTakeAlongAxis.test_broadcastM   s@    WWYWWYbgg. BQ/V\\9-r#   N)__name__
__module____qualname__r?   rP   rV   r\    r#   r!   r(   r(      s    M$E&-.r#   r(   c                       e Zd Zd Zd Zd Zy)TestPutAlongAxisc                 b   t        j                  g dg dg      }t        t        |j                              d gz   D ]o  }|j                         } t        t         j                        ||      }t        ||d|        t        t         j                        ||      }t        ||       q y )NrA         <   (   2   r   i)r   rI   r7   r8   r9   copyr&   r6   r   r4   r   )r:   a_baser   r   i_maxi_mins         r!   test_replace_maxz!TestPutAlongAxis.test_replace_maxV   s    <67v{{+,v5 	'DA -M")),QT:E1eSt4 -M")),QT:E&	'r#   c                     t        j                  d      }t        j                  dt         j                        j	                  d      dz  }t        ||dd       t        t        ||d      d       y	)
rX   rY   rA   rC   rZ   r-   rf   rE   r   N)r   rF   arangerG   reshaper   r   r   rN   s      r!   r\   zTestPutAlongAxis.test_broadcastf   sU    WWYYYr)11)<q@q"bq)_Q3R8r#   c                    t        j                  g dg dg      }t        j                  dgdgg      }t        j                  dgdgg      }|j                         }t        |||d       t        j                  |g dg dgk(        sJ |j                         }t        t              5 }t        |||d	       d	d	d	       d
t        j                        v sJ y	# 1 sw Y   #xY w)z Test invalid inputs rd   rg   r   rE   rB   r   rB   rB   rB   rE   rE   rE   Nzsingle dimension)	r   rI   rk   r   allr   rH   str	exception)r:   rl   indicesvaluesr   excs         r!   rP   zTestPutAlongAxis.test_invalidm   s    <67((QC!:&A3*% KKMq'62vvaIy11222 KKM:& 	:#1gvD9	:!S%7777	: 	:s   ,CC'N)r]   r^   r_   ro   r\   rP   r`   r#   r!   rb   rb   U   s    ' 98r#   rb   c                       e Zd Zd Zd Zd Zd Zd Zej                  fdZ
ej                  fdZej                  fdZd	 Zd
 Zd Zd Zd Zy)TestApplyAlongAxisc                     t        j                  dd      }t        t        t        d|      t	        |      t        j                  |j
                  d         z         y )Nrf   rA   dr   rE   r   rF   r   r   lenrS   r:   r   s     r!   test_simplezTestApplyAlongAxis.test_simple   sC    GGHc"S!Q'Q
0C)C	Er#   c                     t        j                  dd      }t        t        t        d|      t	        |      t        j                  |j
                  d         z         y )N)rA   e   r   r   rE   r   r   s     r!   test_simple101z!TestApplyAlongAxis.test_simple101   sC    GGIs#S!Q'Q
0C)C	Er#   c                     t        j                  d      j                  d      }t        t	        t         j
                  d|      g dg dg dg       y )N   r,   r,   r,   r   )r   re   !   )$   '   *   )-   0   3   )r   rq   rr   r   r   sumr   s     r!   test_3dzTestApplyAlongAxis.test_3d   s=    IIbM!!),+BFFAq9(,E	Gr#   c                    d } G d dt         j                        }t        j                  ddgddgg      j                  |      }t        j                  ddgdd	gg      j                  |      }t	        |d|      }t        t        ||             t        ||       t	        |d|      }t        t        ||             t        ||       y )
Nc                     | dz  S )NrB   r`   )rows    r!   doublez9TestApplyAlongAxis.test_preserve_subclass.<locals>.double   s    7Nr#   c                       e Zd Zy)<TestApplyAlongAxis.test_preserve_subclass.<locals>.MyNDArrayNr]   r^   r_   r`   r#   r!   	MyNDArrayr          r#   r   r   rE   rB   r,   r-      )r   ndarrayrI   viewr   r   
isinstancer   )r:   r   r   mexpectedresults         r!   test_preserve_subclassz)TestApplyAlongAxis.test_preserve_subclass   s    		

 	 HHq!fq!f%&++I688aVaV,-229=!&!Q/
69-.68,!&!Q/
69-.68,r#   c                      G d dt         j                        }d }t        j                  d      j                  |      }t	        t        |d|      t        j                  g d             y )Nc                       e Zd ZdZy)9TestApplyAlongAxis.test_subclass.<locals>.MinimalSubclassrE   N)r]   r^   r_   datar`   r#   r!   MinimalSubclassr      s    Dr#   r   c                     | j                   S N)r   )rI   s    r!   minimal_functionz:TestApplyAlongAxis.test_subclass.<locals>.minimal_function   s    ::r#   r   r,   r   ru   )r   r   zerosr   r   r   rI   )r:   r   r   r   s       r!   test_subclassz TestApplyAlongAxis.test_subclass   sR    	bjj 		 HHV!!/2-q!4bhhy6I	
r#   c                    t        j                  d      j                  |      }t        t         j                  d|      }t        t        ||             t        |t        j                  g d      j                  |             y )Nr   r   r   r   r   )	r   rF   r   r   r   r   r   r   rI   )r:   clsr   r   s       r!   test_scalar_arrayz$TestApplyAlongAxis.test_scalar_array   sY    GGFO  %rvvq!,
3$%3 3 8 8 =>r#   c                    d }t        j                  d      j                  |      }t        |d|      }t	        t        ||             t        |t        j                  g d      j                  |             t        |d|      }t	        t        ||             t        |t        j                  g d      j                  |             y )Nc                     t        | j                  d       t        j                  t        j                  | d            S )z/ Sum x, returning a 0d array of the same class rE   T)keepdims)r   r9   r   squeezer   xs    r!   	sum_to_0dz3TestApplyAlongAxis.test_0d_array.<locals>.sum_to_0d   s*    #::bffQ677r#   r   r   r   rE   )r,   r,   r,   r,   r,   r,   )r   rF   r   r   r   r   r   rI   )r:   r   r   r   r   s        r!   test_0d_arrayz TestApplyAlongAxis.test_0d_array   s    	8 GGFO  %y!Q/
3$%3 3 8 8 =>y!Q/
3$%3); < A A# FGr#   c                    fd}t        j                  d      j                  d      }t        |d|      }t        j                  t        |j                  d         D cg c]  } ||d d |f          c}d      j                        }t        t        |      t        |             t        ||       t        |d|      }t        j                  t        |j                  d         D cg c]  } |||d d f          c}d      j                        }t        t        |      t        |             t        ||       t        j                  d      j                  d	      }t        |d|      }t        j                  t        |j                  d
         D cg c]K  }t        j                  t        |j                  d         D cg c]  } |||d d |f          c}d      M c}}d      j                        }t        t        |      t        |             t        ||       y c c}w c c}w c c}w c c}}w )Nc                 r    t        | j                  d       | ddd   | dddf   z  j                        S )/produces an asymmetric non-square matrix from xrE   N)r   r9   r   )r   r   s    r!   f1to2z5TestApplyAlongAxis.test_axis_insertion.<locals>.f1to2   s9    #ddGa4j(..s33r#      r   r   rE   r   r   Z   )r   r.   r,   rB   )
r   rq   rr   r   stackr8   rS   r   r   type)	r:   r   r   a2drU   ir   a3djs	    `       r!   test_axis_insertionz&TestApplyAlongAxis.test_axis_insertion   s   	4
 iin$$V, "%C088%*399Q<%8
 !E#ac(O
DI 	 	T&\4>2VX& "%C088%*399Q<%8
 !E#ac(O
49 	 	T&\4>2VX& ii&&y1!%C088 399Q<(	
  HH+01+>&'c!Aa%j!

 
 DI 	 	T&\4>2VX&3


s$   !H6/H;".I
I 'I
 I
c                      G d dt         j                        }| j                  |       | j                  |       | j	                  |       y )Nc                       e Zd Zy)FTestApplyAlongAxis.test_subclass_preservation.<locals>.MinimalSubclassNr   r`   r#   r!   r   r      r   r#   r   )r   r   r   r   r   )r:   r   s     r!   test_subclass_preservationz-TestApplyAlongAxis.test_subclass_preservation   s<    	bjj 	/?+  1r#   c                 <   d }t        j                  d      j                  d      }t        |d|      }t	        t        |t         j                  j                               t        |j                  d       t        |d d d d df   j                   ||d d df         j                         t        |d d d d df   j                   ||d d df         j                         t        |d d d d df   j                   ||d d df         j                         y )Nc                     t        | j                  d       | ddd   | dddf   z  }t        j                  j	                  |dz  dk(  |      S )r   rE   Nr   r.   r   )r   r9   r   mamasked_where)r   r   s     r!   r   z8TestApplyAlongAxis.test_axis_insertion_ma.<locals>.f1to2   sK    #DbD'AabgJ&C55%%c!eQh44r#   r   r   r   r,   rE   rB   )r   rq   rr   r   r   r   r   masked_arrayr   r9   r   mask)r:   r   r   r   s       r!   test_axis_insertion_maz)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           	          d }t        j                  |dt        j                  ddgddgg            }t        |t        j                  ddgddgg             y )Nc                     | d   | d   fS )NrE   r   r`   r   s    r!   	sample_1dz7TestApplyAlongAxis.test_tuple_func1d.<locals>.sample_1d   s    Q41:r#   rE   rB   r,   r-   )r   r   rI   r   )r:   r   r   s      r!   test_tuple_func1dz$TestApplyAlongAxis.test_tuple_func1d   sQ    	!!)Q1a&1a&9I0JK31a&1a&)9 :;r#   c                    d }t        j                  d      }t        t        t         j                  |d|       t        t        t         j                  |d|       d }t        j                  d      }t        j                  |d|      }t        |t        j                  d             t        t        t         j                  |d|       y )Nc                     t        d       y )NF)r   r   s    r!   
never_callz1TestApplyAlongAxis.test_empty.<locals>.never_call  s	    ENr#   )r   r   r   rE   c                 2    t        t        |       dk(         y)Nr   rE   )r   r   r   s    r!   
empty_to_1z1TestApplyAlongAxis.test_empty.<locals>.empty_to_1  s    CFaK r#   )rA   r   rA   )r   emptyr   rH   r   r   rF   )r:   r   r   r   rU   s        r!   rV   zTestApplyAlongAxis.test_empty  s    	 HHVj""5"5z1aHj""5"5z1aH	 HHW$$ZA6VRWWR[)j""5"5z1aHr#   c                 j   t        j                  ddhddhddhgddhd	d
hddhgg      }t        j                  d d|      }t        j                  h dh dh dg      }t        ||       t        j                  |j
                        D ]&  }t        t        ||         t        ||                ( y )NrE      rB      r,   r   r-   ,   r.   7   r   B   c                 &    t        j                  |  S r   )setunion)r   s    r!   <lambda>z>TestApplyAlongAxis.test_with_iterable_object.<locals>.<lambda>  s    syy!} r#   r   >   rE   r-   r   r   >   rB   r.   r   r   >   r,   r   r   r   )r   rI   r   r   ndindexrS   r   )r:   r   rU   r   r   s        r!   test_with_iterable_objectz,TestApplyAlongAxis.test_with_iterable_object  s    HHWq"g2w'Wq"g2w'
  $$%<aC88^^^LMVX& FLL) 	=AfQi$x{*;<	=r#   N)r]   r^   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   rV   r   r`   r#   r!   r}   r}      se    E
E
G
-$
 %'JJ ? !#

 H ')jj #'J2@<I&=r#   r}   c                       e Zd Zd Zy)TestApplyOverAxesc                     t        j                  d      j                  ddd      }t        t         j                  |ddg      }t        |t        j                  dgdgdggg             y )	N   rB   r,   r-   r   rh   \   |   )r   rq   rr   r   r   r   rI   )r:   r   aoa_as      r!   r   zTestApplyOverAxes.test_simple'  sW    IIbM!!!Q*Aq625"((bTB4#,?+@"ABr#   N)r]   r^   r_   r   r`   r#   r!   r   r   &  s    Cr#   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestExpandDimsc                     d}t        j                  |      }t        dd      D ]T  }t        ||      }t	        |j
                  |   dk(         t	        t        j                  |      j
                  |k(         V y )NrB   r,   r-   r.   r-   rE   )r   r   r8   r   r   rS   r   )r:   sr   r   bs        r!   test_functionalityz!TestExpandDims.test_functionality.  se    HHQK"aL 	.DAt$AAGGDMQ&'BJJqM''1,-	.r#   c                 ^   t        j                  d      }t        j                  |d      j                  dk(  sJ t        j                  |d      j                  dk(  sJ t        j                  |d      j                  dk(  sJ t        j                  |d	      j                  d
k(  sJ y )Nr   r   rE   rB   r   )rE   rE   rE   r,   r,   r,   )r   r   )rE   r,   r,   r,   rE   rE   )r   r,   r.   )rE   r,   r,   rE   r,   rE   )r   r   )rE   rE   r,   rE   r,   r,   )r   r   r   rS   r   s     r!   test_axis_tuplez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                    d}t        j                  |      }t        t        t        |d       t        t        t        |d       t        j                  d      }t        t        t        |d       t        t        t        |d       y )Nr   r.   r   )r   r   )r   r.   )r   r   r   r   r   )r:   r   r   s      r!   test_axis_out_of_rangez%TestExpandDims.test_axis_out_of_range=  sZ    HHQKia4ia3HHYia9ia8r#   c                 \    t        j                  d      }t        t        t        |d       y )Nr   rE   rE   r   )r   r   r   rH   r   r   s     r!   test_repeated_axisz!TestExpandDims.test_repeated_axisG  s    HHYj+qv>r#   c                    t        j                  d      j                  d      }t         j                  j	                  ||dz  dk(        }t        j
                  |d      }t        t        |t         j                  j                               t        |j                  d       t        |j                  j                  d       y )	NrA   )rB   r.   r,   r   r   rE   r   )rB   rE   r.   )r   rq   rr   r   rI   r   r   r   MaskedArrayr   rS   r   )r:   r   expandeds      r!   test_subclasseszTestExpandDims.test_subclassesK  s    IIbM!!&)EEKK!qK)>>!!,
8RUU%6%678X^^Y/X]](()4r#   N)r]   r^   r_   r   r   r  r  r	  r`   r#   r!   r   r   -  s    .O9?5r#   r   c                       e Zd Zd Zd Zd Zd Zd Zej                  j                  e d      d        Zd	 Zd
 Zd Zy)TestArraySplitc                 Z    t        j                  d      }t        t        t        |d       y )NrA   r   )r   rq   r   rH   r   r   s     r!   test_integer_0_splitz#TestArraySplit.test_integer_0_splitV  s    IIbMj+q!4r#   c                 &   t        j                  d      }t        |d      }t        j                  d      g}t        ||       t        |d      }t        j                  d      t        j                  dd      g}t        ||       t        |d      }t        j                  d      t        j                  dd      t        j                  dd      g}t        ||       t        |d      }t        j                  d      t        j                  dd      t        j                  dd	      t        j                  d	d      g}t        ||       t        |d      }t        j                  d      t        j                  dd      t        j                  dd      t        j                  dd	      t        j                  d	d      g}t        ||       t        |d      }t        j                  d      t        j                  dd      t        j                  dd      t        j                  dd	      t        j                  d	d
      t        j                  d
d      g}t        ||       t        |d      }t        j                  d      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd	      t        j                  d	d
      t        j                  d
d      g}t        ||       t        |d	      }t        j                  d      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd	      t        j                  d	d
      t        j                  d
d      g}t        ||       t        |d
      }t        j                  d      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd	      t        j                  d	d
      t        j                  d
d      g	}t        ||       t        |d      }t        j                  d      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd	      t        j                  d	d
      t        j                  d
d      g
}t        ||       t        |d      }t        j                  d      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd	      t        j                  d	d
      t        j                  d
d      t        j                  g       g}t        ||       y )NrA   rE   rB   r.   r,   r-      r      	   r   )r   rq   r   compare_resultsrI   r:   r   r   desireds       r!   test_integer_splitz!TestArraySplit.test_integer_splitZ  sw   IIbM!Q99R=/W%!Q99Q<1b!12W%!Q99Q<1a"))Ar2BCW%!Q99Q<1a"))Aq/99Q#%W%!Q99Q<1a"))Aq/99Q?BIIa$46W%!Q99Q<1a"))Aq/99Q?BIIaORYYq"5EGW%!Q99Q<1a"))Aq/99Q?BIIaORYYq!_99Q#% 	W%!Q99Q<1a"))Aq/99Q?BIIaORYYq!_99Q?BIIa$46 	W%!Q99Q<1a"))Aq/99Q?BIIaORYYq!_99Q?BIIaORYYq"5EG 	W%!R 99Q<1a"))Aq/99Q?BIIaORYYq!_99Q?BIIaORYYq!_99Q#% 	W%!R 99Q<1a"))Aq/99Q?BIIaORYYq!_99Q?BIIaORYYq!_99Q#RXXb\3 	W%r#   c                 b   t        j                  t        j                  d      t        j                  d      g      }t        |dd      }t        j                  t        j                  d      g      t        j                  t        j                  d      g      t        j                  d      g}t        ||       t        |j                  j                  |d   j                  j                  u        t        |ddgd      }t        j                  d      t        j                  t        j                  d      g      t        j                  t        j                  d      g      g}t        ||       t        |j                  j                  |d   j                  j                  u        y )NrA   r,   r   r   r   rA   r   rE   	r   rI   rq   r   r   r  r   rD   r   r:   r   r   tgts       r!   test_integer_split_2D_rowsz)TestArraySplit.test_integer_split_2D_rows  s   HHbiimRYYr]34!QQ'xx2("((BIIbM?*C88G$&S!B 2 223 !aV!,xx "((BIIbM?";xx2(*S!B 2 223r#   c           	      &   t        j                  t        j                  d      t        j                  d      g      }t        |dd      }t        j                  t        j                  d      t        j                  d      g      t        j                  t        j                  dd      t        j                  dd      g      t        j                  t        j                  dd      t        j                  dd      g      g}t	        ||       y )NrA   r,   r   r   r-   r  )r   rI   rq   r   r  r  s       r!   test_integer_split_2D_colsz)TestArraySplit.test_integer_split_2D_cols  s    HHbiimRYYr]34!QR(88RYYq\299Q<8988RYYq!_bii1o>?88RYYq"-ryyB/?@AC 	W%r#   c                    t        j                  t        j                  d      t        j                  d      g      }t        |d      }t        j                  t        j                  d      g      t        j                  t        j                  d      g      t        j                  d      g}t        ||       t        |j                  j                  |d   j                  j                  u        y)z2 This will fail if we change default axis
        rA   r,   r  r   Nr  r  s       r!   test_integer_split_2D_defaultz,TestArraySplit.test_integer_split_2D_default  s     HHbiimRYYr]34!Qxx2("((BIIbM?*C88G$&S!B 2 223r#   zNeeds 64bit platform)reasonc                    t        j                  dgd      }t        |d      }t        j                  dgd      }|gdz  }t        t	        |            D ](  }t        ||   j                  ||   j                         * y )Nr   )r   rB   r-   )i   @rB   )r   broadcast_tor   r8   r   r   rS   )r:   r   r   chunkr  r   s         r!   ,test_integer_split_2D_rows_greater_max_int32z;TestArraySplit.test_integer_split_2D_rows_greater_max_int32  sn    OOQC.!Q\2gks3x 	5AQs1v||4	5r#   c                    t        j                  d      }g d}t        ||d      }t        j                  dd      t        j                  dd      t        j                  dd      t        j                  dd      g}t        ||       y )	NrA   )rE   r.   r  r   r   r   rE   r.   r  )r   rq   r   r  r:   r   ry   r   r  s        r!   test_index_split_simplez&TestArraySplit.test_index_split_simple  sf    IIbM!W2.99Q?BIIaORYYq!_99Q#%W%r#   c                    t        j                  d      }g d}t        ||d      }t        j                  g       t        j                  dd      t        j                  dd      t        j                  dd      g}t	        ||       y )NrA   )r   r.   r  r   r   r   r.   r  r   rq   r   rI   r  r&  s        r!   test_index_split_low_boundz)TestArraySplit.test_index_split_low_bound  sd    IIbM!W2.88B<1a"))Aq/99Q#%W%r#   c                 d   t        j                  d      }g d}t        ||d      }t        j                  g       t        j                  dd      t        j                  dd      t        j                  dd      t        j                  g       t        j                  g       g}t	        ||       y )NrA   )r   r.   r  rA      r   r   r   r.   r  r)  r&  s        r!   test_index_split_high_boundz*TestArraySplit.test_index_split_high_bound  sy    IIbM#!W2.88B<1a"))Aq/99Q#RXXb\288B<AW%r#   N)r]   r^   r_   r  r  r  r  r  pytestmarkskipifIS_64BITr$  r'  r*  r-  r`   r#   r!   r  r  U  sW    5;&z4&4 [[H-CD5 E5&&&r#   r  c                       e Zd Zd Zd Zy)	TestSplitc                     t        j                  d      }t        |d      }t        j                  d      t        j                  dd      g}t        ||       y )NrA   rB   r.   )r   rq   r   r  r  s       r!   test_equal_splitzTestSplit.test_equal_split  sA    IIbMAqk99Q<1b!12W%r#   c                 Z    t        j                  d      }t        t        t        |d       y )NrA   r,   )r   rq   r   rH   r   r   s     r!   test_unequal_splitzTestSplit.test_unequal_split  s    IIbMj%A.r#   N)r]   r^   r_   r5  r7  r`   r#   r!   r3  r3    s    
&/r#   r3  c                   $    e Zd Zd Zd Zd Zd Zy)TestColumnStackc                 .    t        t        t        d       y NrE   )r   	TypeErrorr   r:   s    r!   test_non_iterablez!TestColumnStack.test_non_iterable  s    iq1r#   c                     t        j                  d      }t        j                  d      }t        j                  ddgddgddgg      }t        j                  ||f      }t        ||       y )NrE   rB   r,   )rB   r,   r-   rE   rB   r,   r-   r   rI   r   r   r:   r   r   r   rU   s        r!   test_1D_arrayszTestColumnStack.test_1D_arrays  sc    HHYHHY88aVVV% & !Q(VX&r#   c                     t        j                  dgdgdgg      }t        j                  dgdgdgg      }t        j                  ddgddgddgg      }t        j                  ||f      }t        ||       y )NrE   rB   r,   r-   rA  rB  s        r!   test_2D_arrayszTestColumnStack.test_2D_arrays  s{    HHqcA3_%HHqcA3_%88aVVV% & !Q(VX&r#   c                     t        j                  t        d      5  t        d t	        d      D               d d d        y # 1 sw Y   y xY w)Narrays to stack must bematchc              3   F   K   | ]  }t        j                  d         ywr,   Nr   rq   .0_s     r!   	<genexpr>z1TestColumnStack.test_generator.<locals>.<genexpr>  s     8!18   !rB   )r.  raisesr<  r   r8   r=  s    r!   test_generatorzTestColumnStack.test_generator  s8    ]]9,EF 	98uQx88	9 	9 	9   AA
N)r]   r^   r_   r>  rC  rE  rS  r`   r#   r!   r9  r9    s    2''9r#   r9  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)
TestDstackc                 .    t        t        t        d       y r;  )r   r<  r
   r=  s    r!   r>  zTestDstack.test_non_iterable	  s    i+r#   c                     t        j                  d      }t        j                  d      }t        ||g      }t        j                  ddggg      }t        ||       y NrE   rB   r   rI   r
   r   r:   r   r   r   r  s        r!   test_0D_arrayzTestDstack.test_0D_array  sI    HHQKHHQKaVn((aVH:&3(r#   c                     t        j                  dg      }t        j                  dg      }t        ||g      }t        j                  ddggg      }t        ||       y rY  rZ  r[  s        r!   test_1D_arrayzTestDstack.test_1D_array  sM    HHaSMHHaSMaVn((aVH:&3(r#   c                     t        j                  dgdgg      }t        j                  dgdgg      }t        ||g      }t        j                  ddggddggg      }t        ||       y rY  rZ  r[  s        r!   test_2D_arrayzTestDstack.test_2D_array  sd    HHqcA3Z HHqcA3Z aVn((aVH1xj123(r#   c                     t        j                  ddg      }t        j                  ddg      }t        ||g      }t        j                  ddgddggg      }t        ||       y rY  rZ  r[  s        r!   test_2D_array2zTestDstack.test_2D_array2!  s[    HHaVHHaVaVn((aVaV,-.3(r#   c                     t        j                  t        d      5  t        d t	        d      D               d d d        y # 1 sw Y   y xY w)NrG  rH  c              3   F   K   | ]  }t        j                  d         ywrK  rL  rM  s     r!   rP  z,TestDstack.test_generator.<locals>.<genexpr>*  s     2A299Q<2rQ  rB   )r.  rR  r<  r
   r8   r=  s    r!   rS  zTestDstack.test_generator(  s8    ]]9,EF 	32q22	3 	3 	3rT  N)	r]   r^   r_   r>  r\  r^  r`  rb  rS  r`   r#   r!   rV  rV    s     ,))))3r#   rV  c                   (    e Zd ZdZd Zd Zd Zd Zy)
TestHsplit&Only testing for integer splits.

    c                 0    t        t        t        dd       y r;  )r   rH   r   r=  s    r!   r>  zTestHsplit.test_non_iterable3      j&!Q/r#   c                 |    t        j                  d      }	 t        |d       t        d       y # t        $ r Y y w xY w)NrE   rB   r   )r   rI   r   r   rH   r   s     r!   r\  zTestHsplit.test_0D_array6  s6    HHQK	1aLAJ 		s   / 	;;c                     t        j                  g d      }t        |d      }t        j                  ddg      t        j                  ddg      g}t        ||       y NrE   rB   r,   r-   rB   rE   r,   r-   r   rI   r   r  r  s       r!   r^  zTestHsplit.test_1D_array>  sI    HH\"Ql88QF#RXXq!f%56W%r#   c                     t        j                  g dg dg      }t        |d      }t        j                  ddgddgg      t        j                  ddgddgg      g}t        ||       y rl  rn  r  s       r!   r`  zTestHsplit.test_2D_arrayD  se    HHl  !Ql88aVaV,-rxx!Q!Q8H/IJW%r#   Nr]   r^   r_   __doc__r>  r\  r^  r`  r`   r#   r!   rf  rf  /  s    0&&r#   rf  c                   (    e Zd ZdZd Zd Zd Zd Zy)
TestVsplitrg  c                 0    t        t        t        dd       y r;  )r   rH   r	   r=  s    r!   r>  zTestVsplit.test_non_iterableP  ri  r#   c                 Z    t        j                  d      }t        t        t        |d       y rY  )r   rI   r   rH   r	   r   s     r!   r\  zTestVsplit.test_0D_arrayS      HHQKj&!Q/r#   c                     t        j                  g d      }	 t        |d       t        d       y # t        $ r Y y w xY wNrm  rB   r   )r   rI   r	   r   rH   r   s     r!   r^  zTestVsplit.test_1D_arrayW  s7    HH\"	1aLAJ 		s   1 	==c                     t        j                  g dg dg      }t        |d      }t        j                  g dg      t        j                  g dg      g}t        ||       y Nrm  rB   )r   rI   r	   r  r  s       r!   r`  zTestVsplit.test_2D_array_  sO    HHl  !Ql88\N+RXX|n-EFW%r#   Nrp  r`   r#   r!   rs  rs  L  s    00&r#   rs  c                   *    e Zd Zd Zd Zd Zd Zd Zy)
TestDsplitc                 0    t        t        t        dd       y r;  )r   rH   r   r=  s    r!   r>  zTestDsplit.test_non_iterablei  ri  r#   c                 Z    t        j                  d      }t        t        t        |d       y rY  r   rI   r   rH   r   r   s     r!   r\  zTestDsplit.test_0D_arrayl  rv  r#   c                 ^    t        j                  g d      }t        t        t        |d       y rz  r  r   s     r!   r^  zTestDsplit.test_1D_arrayp  s    HH\"j&!Q/r#   c                     t        j                  g dg dg      }	 t        |d       t        d       y # t        $ r Y y w xY wrx  )r   rI   r   r   rH   r   s     r!   r`  zTestDsplit.test_2D_arrayt  sA    HHl  !	1aLAJ 		s   5 	A Ac                    t        j                  g dg dgg dg dgg      }t        |d      }t        j                  ddgddggddgddggg      t        j                  ddgddggddgddggg      g}t        ||       y rl  )r   rI   r   r  r  s       r!   test_3D_arrayzTestDsplit.test_3D_array}  s    HH|!!" # Ql88q!fq!f-AA/?@A88q!fq!f-AA/?@ACW%r#   N)r]   r^   r_   r>  r\  r^  r`  r  r`   r#   r!   r|  r|  g  s    000&r#   r|  c                       e Zd Zd Zy)TestSqueezec                 F   ddl m}  |ddddd      } |ddddd      } |dddd      }t        t        j                  |      t        j
                  |d             t        t        j                  |      t        j
                  |d             t        t        j                  |      t        j
                  |d             d	ggg}t        j                  |      }t        |d	       t        |j                  d       t        t        |      t        j                         y )
Nr   r*   rf   rA   rE   )rf   rA   rA   )rf   rA   rf   r   g      ?)
r/   r+   r   r   r   rr   r   r9   r   r   )r:   r+   r   r   cr   s         r!   
test_basicz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#   Nr]   r^   r_   r  r`   r#   r!   r  r    s    ,r#   r  c                       e Zd Zd Zd Zej                  j                  dej                  ej                  g      d        Zd Zej                  j                  dg d      d        Zy	)
TestKronc                    t        j                  d      }t        j                  ddgddgg      }t        j                  ddgddgg      }t        t        j                  ||      |       t        j                  ddgddgg      }t        j                  d      }t        t        j                  ||      |       t        j                  dg      }t        j                  ddgddgg      }t        j                  ddgddgg      }t        t        j                  ||      |       t        j                  ddgddgg      }t        j                  dg      }t        t        j                  ||      |       t        j                  dggdggg      }t        j                  ddgddgg      }t        j                  ddgddggddgddggg      }t        t        j                  ||      |       t        j                  ddgddgg      }t        j                  dggdggg      }t        j                  ddgddggddgddggg      }t        t        j                  ||      |       y )	NrE   rB   r,   r-   r   r  r,  r  )r   rI   r   r   )r:   r   r   ks       r!   r  zTestKron.test_basic  s   HHQKHHq!fq!f%&HHq!fq!f%&2771a=!,HHq!fq!f%&HHQK2771a=!, HHaSMHHq!fq!f%&HHq!fq"g&'2771a=!,HHq!fq!f%&HHaSM2771a=!, HHseqcU^$HHq!fq!f%&HH1v1v&!Q!Q(89:2771a=!,HHq!fq!f%&HHseqcU^$HH1v1v&!Q!Q(89:2771a=!,r#   c                     G d dt         j                        }t        j                  ddg      } ||j                  |j                  |j
                        }t        t        t        ||            t         j                         t        t        t        ||            |       t        t        t        ||            |       t        t        t        ||            |       y )Nc                       e Zd ZdZy)*TestKron.test_return_type.<locals>.myarrayg      ?N)r]   r^   r_   __array_priority__r`   r#   r!   myarrayr    s    !$r#   r  rB   )	r   r   rF   rS   rD   r   r   r   r   )r:   r  r   r   s       r!   test_return_typezTestKron.test_return_type  s    	%bjj 	% GGQFOQWWaggqvv.T$q!*%rzz2T$r2,'1T$q"+&0T$r1+&0r#   array_classc                      |t        j                  ddg            } |t        j                  ddg            } |t        j                  ddg            }t        t        j                  ||      |       y )Nr,   r  )r   rF   r   r   )r:   r  r   r   r  s        r!   test_kron_smokezTestKron.test_kron_smoke  sZ     A(A(A(2771a=!,r#   c                 d   t         j                  j                  ddgddggddgddgg      }t         j                  j                  t        j                  g d      t        j                  t        j                  d      t
                     }t        |t        j                  ||             y )	NrE   rB   r,   r-   r   r  )rE   r-   r-      rC   )r   r   rI   diagidentityrL   r   r   )r:   r   r  s      r!   test_kron_mazTestKron.test_kron_ma  s    EEKK!Q!Q(AA/?K@EEKK.hhr{{1~T::  < 	1bggam,r#   zshape_a,shape_b))r  r  )r@  )r-   r.   r   )rB   rB   rt   ))rE   r   r  )rB   r   rB   r  ))rB   r   r   rB   r  c                    t        j                  |      }t        j                  |      }dt        dt        |      t        |      z
        z  |z   }dt        dt        |      t        |      z
        z  |z   }t        j                  ||      }t        j
                  ||      }t        j                  |j                  |      sJ d       y )N)rE   r   zUnexpected shape from kron)r   rF   r5   r   multiplyr   array_equalrS   )	r:   shape_ashape_br   r   normalised_shape_anormalised_shape_bexpected_shaper  s	            r!   test_kron_shapezTestKron.test_kron_shape  s     GGGGGG!C3w<G+D$EEO!C3w<G+D$EEO%79KLGGAqM~~) 	G*F	G )r#   N)r]   r^   r_   r  r  r.  r/  parametrizer   asarrayasmatrixr  r  r  r`   r#   r!   r  r    ss    -:	1 [[

BKK0--- [[ 
	G	Gr#   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestTilec                    t        j                  g d      }ddgddgg}t        t        |d      g d       t        t        |d      g dg dg       t        t        |d      g dg       t        t        |d      g d	g d
g       t        t        |d      ddgddgddgddgg       t        t        |d      g d	g d
g d	g d
g       y )Nr   rE   rB   r,   r-   )r   rE   rB   r   rE   rB   r  rE   rB   )rE   rB   rE   rB   )r,   r-   r,   r-   rB   rE   )r   rI   r   r   r:   r   r   s      r!   r  z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                     t        j                  d      }t        |d      }|dz  }t        |t        j                  d             y )Nr.   rE   rB   )r   rq   r   r   r  s      r!   (test_tile_one_repetition_on_array_gh4679z1TestTile.test_tile_one_repetition_on_array_gh4679  s5    IIaLAJ	QQ		!%r#   c                     t        j                  g gg      }t        j                  g g g      }t        |d      j                  }t        |d      j                  }t	        |d       t	        |d       y )NrB   r[   )rB   r   )r,   rB   r   )r   rI   r   rS   r   )r:   r   r   r  r   s        r!   rV   zTestTile.test_empty  s]    HHrdVHHb"XAJI$$QQ	"r#   c                     ddl m} g d}g d}|D ]X  } |dd|      }|D ]F  }t        j                  ||j                        }t        ||      }t        ||      }	t        ||	       H Z y )Nr   )randint))rB   r  r  r  )rB   r,   rB   )r,   rB   ))r,   )rB   r,   )r,   r-   r,   )r,   rB   r,   )r-   r,   rB   r-   r  rA   )size)r/   r  r   rF   rD   r   r   r   )
r:   r  repsrS   r   r   rr   largeklarges
             r!   test_kroncomparezTestTile.test_kroncompare  so    (@J 	,A2A&A ,GGAqww'Q
aUF+	,	,r#   N)r]   r^   r_   r  r  rV   r  r`   r#   r!   r  r    s    	D&#,r#   r  c                       e Zd Zd Zy)TestMayShareMemoryc           
         t        j                  d      }t        j                  d      }t        t        j                  ||             t        t        j                  ||d d d                t        t        j                  ||d d d                t        t        j                  ||dd d d df                t        t        j                  |d d d   |              t        t        j                  |d d d   |              t        t        j                  |dd d d df   |              t        t        j                  |dd d d df   |             y )N)rj   rh   )re   rh   r   r   rB   rE   )r   rF   r   may_share_memory)r:   r   d2s      r!   r  zTestMayShareMemory.test_basic  s   GGHWW[!##Aq)*##Aq2w/0##Aq1v./##AqTrT{34B''$B$445B''#A#334B''!"dd(R889##Bqr4R4xL"56r#   Nr  r`   r#   r!   r  r    s    7r#   r  c                     t        |       t        |      k7  rt        d      t        | |      D ]  \  }}t        ||        y)zCompare lists of arrays.z Iterables have different lengthsN)r   rH   zipr   )r   r  r   ys       r!   r  r  "  sB    
3x3w<;<<C! !11a !r#   )/numpyr   r$   sysr.  r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   numpy.exceptionsr   numpy.testingr   r   r   r   r   maxsizer1  r&   r(   rb   r}   r   r   r  r3  r9  rV  rf  rs  r|  r  r  r  r  r  r`   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#   