
    m[h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 ej4                  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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                 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       k/var/www/html/p-interativo-gestao-midia/env/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                  i ft        t        j                        t        t        j                        i ft        t        j                        t        t        j                        i 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argsortr%   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"))$<bA266"M"))$<bA
 &+!D'6U166]+tf4a5d5f5!!9$9&9V_Qd%KL 5 &+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 )
   r?   )r?      dtype   r   r?   N)r   onesintpr   r   
ValueErrorarray
IndexErrorastypeboolfloatr   r8   r   ais      r    test_invalidzTestTakeAlongAxis.test_invalid;   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-   rA   rC   r   Nr   rD   rE   r   r   shaper8   r   rM   actuals       r    
test_emptyzTestTakeAlongAxis.test_emptyN   sD    GGI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,   rC   rC   r@   r-   rA   rC   r   r+   r@   r-   NrP   rR   s       r    test_broadcastz TestTakeAlongAxis.test_broadcastV   s@    GGIWWYbgg. BQ/V\\9-r"   N)__name__
__module____qualname__r=   rN   rT   rZ    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r?         <   (   2   r   i)r   rG   r5   r6   r7   copyr%   r4   r   r2   r   )r8   a_baser   r   i_maxi_mins         r    test_replace_maxz!TestPutAlongAxis.test_replace_max_   s    <67v{{+,v5DA -M")),QT:E1eSt4 -M")),QT:E& 6r"   c                     t        j                  d      }t        j                  dt         j                        j	                  d      dz  }t        ||dd       t        t        ||d      d       y	)
rV   rW   r?   rA   rX   r,   rd   rC   r   N)r   rD   arangerE   reshaper   r   r   rL   s      r    rZ   zTestPutAlongAxis.test_broadcasto   sU    GGI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 rb   re   r   rC   r@   r   r@   r@   r@   rC   rC   rC   Nzsingle dimension)	r   rG   ri   r   allr   rF   str	exception)r8   rj   indicesvaluesr   excs         r    rN   zTestPutAlongAxis.test_invalidv   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]   rm   rZ   rN   r^   r"   r    r`   r`   ^   s    ' 98r"   r`   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rd   r?   dr   rC   r   rD   r   r   lenrQ   r8   r   s     r    test_simplezTestApplyAlongAxis.test_simple   sC    GGHc"S!Q'Q"''!''!*2E)E	Gr"   c                     t        j                  dd      }t        t        t        d|      t	        |      t        j                  |j
                  d         z         y )N)r?   e   r~   r   rC   r   r   s     r    test_simple101z!TestApplyAlongAxis.test_simple101   sC    GGIs#S!Q'Q"''!''!*2E)E	G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   rc   !   )$   '   *   )-   0   3   )r   ro   rp   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 )Nr@   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   rC   r@   r+   r,      )r   ndarrayrG   viewr   r   
isinstancer   )r8   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>.MinimalSubclassrC   N)r[   r\   r]   datar^   r"   r    MinimalSubclassr      s    Dr"   r   c                     | j                   S N)r   )rG   s    r    minimal_functionz:TestApplyAlongAxis.test_subclass.<locals>.minimal_function   s    ::r"   r   r+   r   rs   )r   r   zerosr   r   r   rG   )r8   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   rD   r   r   r   r   r   r   rG   )r8   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 rC   T)keepdims)r   r7   r   squeezer   xs    r    	sum_to_0dz3TestApplyAlongAxis.test_0d_array.<locals>.sum_to_0d   s*    #::bffQ677r"   r   r   r   rC   )r+   r+   r+   r+   r+   r+   )r   rD   r   r   r   r   r   rG   )r8   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 xrC   N)r   r7   r   )r   r   s    r    f1to2z5TestApplyAlongAxis.test_axis_insertion.<locals>.f1to2   s9    #ddGaDk)//44r"      r   r   rC   r   r   Z   )r   r-   r+   r@   )
r   ro   rp   r   stackr6   rQ   r   r   type)	r8   r   r   a2drS   ir   a3djs	    `       r    test_axis_insertionz&TestApplyAlongAxis.test_axis_insertion   s   	5
 ii&&v. "%C088&+CIIaL&9
&9E#ad)&9
DI 	 	T&\4>2VX& "%C088&+CIIaL&9
&9E#ad)&9
49 	 	T&\4>2VX& ii	"**95!%C088 399Q<(	
 ) HH-2399Q<-@-@c!Q'l#-@ )	

 
 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   )r8   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   rC   Nr   r-   r   )r   r7   r   mamasked_where)r   r   s     r    r   z8TestApplyAlongAxis.test_axis_insertion_ma.<locals>.f1to2   sK    #DbD'Aab$hK'C55%%cAglC88r"   r   r   r   r+   rC   r@   )r   ro   rp   r   r   r   r   masked_arrayr   r7   r   mask)r8   r   r   r   s       r    test_axis_insertion_maz)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           	          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 )NrC   r   r^   r   s    r    	sample_1dz7TestApplyAlongAxis.test_tuple_func1d.<locals>.sample_1d  s    Q41:r"   rC   r@   r+   r,   )r   r   rG   r   )r8   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   rC   c                 2    t        t        |       dk(         y)Nr   rC   )r   r   r   s    r    
empty_to_1z1TestApplyAlongAxis.test_empty.<locals>.empty_to_1  s    CFaK r"   )r?   r   r?   )r   emptyr   rF   r   r   rD   )r8   r   r   r   rS   s        r    rT   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 )NrC      r@      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   >   rC   r,   r   r   >   r@   r-   r   r   >   r+   r   r   r   )r   rG   r   r   ndindexrQ   r   )r8   r~   rS   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   rT   r   r^   r"   r    r{   r{      se    G
G
G
-$
 %'JJ ? !#

 H ')jj #'J2C<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   r@   r+   r,   r   rf   \   |   )r   ro   rp   r   r   r   rG   )r8   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r@   r+   r,   r-   r,   rC   )r   r   r6   r	   r   rQ   r   )r8   sr   r   bs        r    test_functionalityz!TestExpandDims.test_functionality6  s`    HHQK"aLD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   rC   r@   r   )rC   rC   rC   r+   r+   r+   )r   r   )rC   r+   r+   r+   rC   rC   )r   r+   r-   )rC   r+   r+   rC   r+   rC   )r   r   )rC   rC   r+   rC   r+   r+   )r   r   r	   rQ   r   s     r    test_axis_tuplez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                    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	   )r8   r   r   s      r    test_axis_out_of_rangez%TestExpandDims.test_axis_out_of_rangeE  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   rC   rC   r   )r   r   r   rF   r	   r   s     r    test_repeated_axisz!TestExpandDims.test_repeated_axisO  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 )	Nr?   )r@   r-   r+   r   r   rC   r   )r@   rC   r-   )r   ro   rp   r   rG   r	   r   r   MaskedArrayr   rQ   r   )r8   r   expandeds      r    test_subclasseszTestExpandDims.test_subclassesS  s    IIbM!!&)EEKKA
K+>>!!,
8RUU%6%678X^^Y/X]](()4r"   N)r[   r\   r]   r   r   r   r  r  r^   r"   r    r   r   5  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 )Nr?   r   )r   ro   r   rF   r   r   s     r    test_integer_0_splitz#TestArraySplit.test_integer_0_split^  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 )Nr?   rC   r@   r-   r+   r,      r      	   r   )r   ro   r   compare_resultsrG   r8   r   r   desireds       r    test_integer_splitz!TestArraySplit.test_integer_splitb  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 )Nr?   r+   r   r   r   r?   r   rC   	r   rG   ro   r   r   r  r   rB   r   r8   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 )Nr?   r+   r   r   r,   r  )r   rG   ro   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
        r?   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   r@   r,   )i   @r@   )r   broadcast_tor   r6   r   r   rQ   )r8   r   r   chunkr  r   s         r    ,test_integer_split_2D_rows_greater_max_int32z;TestArraySplit.test_integer_split_2D_rows_greater_max_int32  si    OOQC.!Q\2gks3xAQs1v||4 !r"   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 )	Nr?   )rC   r-   r  r   r   r   rC   r-   r  )r   ro   r   r  r8   r   rw   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 )Nr?   )r   r-   r  r   r   r   r-   r  r   ro   r   rG   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 )Nr?   )r   r-   r  r?      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	  ]  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 )Nr?   r@   r-   )r   ro   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 )Nr?   r+   )r   ro   r   rF   r   r   s     r    test_unequal_splitzTestSplit.test_unequal_split  s    IIbMj%A.r"   N)r[   r\   r]   r3  r5  r^   r"   r    r1  r1    s    
&/r"   r1  c                   $    e Zd Zd Zd Zd Zd Zy)TestColumnStackc                 .    t        t        t        d       y NrC   )r   	TypeErrorr   r8   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rC   r@   r+   )r@   r+   r,   rC   r@   r+   r,   r   rG   r   r   r8   r   r   r   rS   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 )NrC   r@   r+   r,   r?  r@  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   ro   .0_s     r    	<genexpr>z1TestColumnStack.test_generator.<locals>.<genexpr>  s     8x!1x   !r@   )r,  raisesr:  r   r6   r;  s    r    test_generatorzTestColumnStack.test_generator  s0    ]]9,EF8uQx88 GFF   AA
N)r[   r\   r]   r<  rA  rC  rQ  r^   r"   r    r7  r7    s    2''9r"   r7  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 r9  )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 NrC   r@   r   rG   r   r   r8   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 rW  rX  rY  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 rW  rX  rY  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 rW  rX  rY  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)NrE  rF  c              3   F   K   | ]  }t        j                  d         ywrI  rJ  rK  s     r    rN  z,TestDstack.test_generator.<locals>.<genexpr>2  s     2A299Q<rO  r@   )r,  rP  r:  r   r6   r;  s    r    rQ  zTestDstack.test_generator0  s0    ]]9,EF2q22 GFFrR  N)	r[   r\   r]   r<  rZ  r\  r^  r`  rQ  r^   r"   r    rT  rT    s     ,))))3r"   rT  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 r9  )r   rF   r
   r;  s    r    r<  zTestHsplit.test_non_iterable;      j&!Q/r"   c                 |    t        j                  d      }	 t        |d       t        d       y # t        $ r Y y w xY w)NrC   r@   r   )r   rG   r
   r   rF   r   s     r    rZ  zTestHsplit.test_0D_array>  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rC   r@   r+   r,   r@   rC   r+   r,   r   rG   r
   r  r  s       r    r\  zTestHsplit.test_1D_arrayF  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 rj  rl  r  s       r    r^  zTestHsplit.test_2D_arrayL  se    HHl  !Ql88aVaV,-rxx!Q!Q8H/IJW%r"   Nr[   r\   r]   __doc__r<  rZ  r\  r^  r^   r"   r    rd  rd  7  s    0&&r"   rd  c                   (    e Zd ZdZd Zd Zd Zd Zy)
TestVsplitre  c                 0    t        t        t        dd       y r9  )r   rF   r   r;  s    r    r<  zTestVsplit.test_non_iterableX  rg  r"   c                 Z    t        j                  d      }t        t        t        |d       y rW  )r   rG   r   rF   r   r   s     r    rZ  zTestVsplit.test_0D_array[      HHQKj&!Q/r"   c                     t        j                  g d      }	 t        |d       t        d       y # t        $ r Y y w xY wNrk  r@   r   )r   rG   r   r   rF   r   s     r    r\  zTestVsplit.test_1D_array_  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 Nrk  r@   )r   rG   r   r  r  s       r    r^  zTestVsplit.test_2D_arrayg  sO    HHl  !Ql88\N+RXX|n-EFW%r"   Nrn  r^   r"   r    rq  rq  T  s    00&r"   rq  c                   *    e Zd Zd Zd Zd Zd Zd Zy)
TestDsplitc                 0    t        t        t        dd       y r9  )r   rF   r   r;  s    r    r<  zTestDsplit.test_non_iterableq  rg  r"   c                 Z    t        j                  d      }t        t        t        |d       y rW  r   rG   r   rF   r   r   s     r    rZ  zTestDsplit.test_0D_arrayt  rt  r"   c                 ^    t        j                  g d      }t        t        t        |d       y rx  r}  r   s     r    r\  zTestDsplit.test_1D_arrayx  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rv  )r   rG   r   r   rF   r   s     r    r^  zTestDsplit.test_2D_array|  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 rj  )r   rG   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<  rZ  r\  r^  r  r^   r"   r    rz  rz  o  s    000&r"   rz  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)   rd   r?   rC   )rd   r?   r?   )rd   r?   rd   r}   g      ?)
r.   r*   r   r   r   rp   r   r7   r   r   )r8   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 )	NrC   r@   r+   r,   r   r  r*  r  )r   rG   r   r   )r8   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  r@   )	r   r   rD   rQ   rB   r   r   r   r   )r8   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   rD   r   r   )r8   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 )	NrC   r@   r+   r,   r   r  )rC   r,   r,      rA   )r   r   rG   diagidentityrJ   r   r   )r8   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   )r@   r@   rr   ))rC   r   r  )r@   r   r@   r  ))r@   r   r   r@   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)rC   r   zUnexpected shape from kron)r   rD   r3   r   multiplyr   array_equalrQ   )	r8   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,+F$GG'Q!C3w<#g,+F$GG'Q%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   rC   r@   r+   r,   )r   rC   r@   r   rC   r@   r  rC   r@   )rC   r@   rC   r@   )r+   r,   r+   r,   r@   rC   )r   rG   r   r   r8   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-   rC   r@   )r   ro   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 )Nr@   rY   )r@   r   )r+   r@   r   )r   rG   r   rQ   r   )r8   r   r   r  r~   s        r    rT   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))r@   r  r  r  )r@   r+   r@   )r+   r@   ))r+   )r@   r+   )r+   r,   r+   )r+   r@   r+   )r,   r+   r@   r,   r  r?   )size)r.   r  r   rD   rB   r   r   r   )
r8   r  repsrQ   r   r   rr   largeklarges
             r    test_kroncomparezTestTile.test_kroncompare  se    (@JA2A&AGGAqww'Q
aUF+	  r"   N)r[   r\   r]   r  r  rT   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)rh   rf   )rc   rf   r   r   r@   rC   )r   rD   r   may_share_memory)r8   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                 H    t        | |d      D ]  \  }}t        ||        y)zCompare lists of arrays.F)strictN)zipr   )r   r  r   ys       r    r  r  *  s#    C/11a  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   maxsizer/  r%   r'   r`   r{   r   r   r	  r1  r7  rT  rd  rq  rz  r  r  r  r  r  r^   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"   