
    uhhk                     L   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j        dk    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-dS )(    N)apply_along_axisapply_over_axesarray_splitcolumn_stackdsplitdstackexpand_dimshsplitkronput_along_axissplittake_along_axistilevsplit)	AxisError)assert_assert_array_equalassert_equalassert_raises        c                 F     t          j                    fd            }|S )z: hack in keepdims behavior into a function taking an axis c                 N     | fd|i|}|d}t          j        ||          S )Naxisr   r   )npr	   )ar   kwargsresfuncs       V/var/www/histauto/venv/lib/python3.11/site-packages/numpy/lib/tests/test_shape_base.pywrappedz_add_keepdims.<locals>.wrapped   s>    d1**4*6**<D~c----    )	functoolswraps)r   r!   s   ` r    _add_keepdimsr%      s8    _T. . . . .
 Nr"   c                   &    e Zd Zd Zd Zd Zd ZdS )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 ]d\  }}}t          t          |j                            dgz   D ]8} ||fd|i|} ||fd|i|}	t          |t          ||	|                     9edS )	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&   %%%%%%DAqMM Wbj"%26""M")$<$<bA26""M")$<$<bA
 &+ 	M 	M!D'6U16]]++tf4 M Ma55d5f55!'!99$9&99V_Qd%K%K%KLLLLM	M 	Mr"   c                 B   t          j        d          }t          j        dt           j                  }t          ||d           t	          t
          t          |t          j        d          d           t	          t          t          ||                    t                    d           t	          t          t          ||                    t                    d           t	          t          t          ||d           t	          t
          t          ||d           dS )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    GHWWBG,,, 	2A&&&& 	j/1bhqkkJJJJj/1biiooANNNNj/1bii6F6FQOOOOi!RbAAAAj/1btDDDDDDr"   c                     t          j        d          }t          j        dt           j                  }t          ||d          }t	          |j        |j                   dS )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   sU    GIWYbg... BQ///V\28,,,,,r"   c                     t          j        d          }t          j        dt           j                  }t          ||d          }t	          |j        d           dS )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   sS    GIWYbg... BQ///V\9-----r"   N)__name__
__module____qualname__r=   rN   rT   rZ    r"   r    r'   r'   (   sV        M M M$E E E&- - -. . . . .r"   r'   c                        e Zd Zd Zd Zd ZdS )TestPutAlongAxisc                    t          j        g dg dg          }t          t          |j                            d gz   D ]}|                                } t          t           j                  ||          }t          ||d|            t          t           j	                  ||          }t          ||           d S )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7v{++,,v5 	' 	'DA -M"),,QT:::E1eSt4444 -M"),,QT:::E&&&&	' 	'r"   c                     t          j        d          }t          j        dt           j                                      d          dz  }t          ||dd           t          t          ||d          d           d	S )
rV   rW   r?   rA   rX   r,   rd   rC   r   N)r   rD   arangerE   reshaper   r   r   rL   s      r    rZ   zTestPutAlongAxis.test_broadcasto   sv    GIYr)))11)<<q@q"bq))))_Q333R88888r"   c                    t          j        g dg dg          }t          j        dgdgg          }t          j        dgdgg          }|                                }t          |||d           t          j        |g dg dgk              sJ |                                }t          t                    5 }t          |||d	           d	d	d	           n# 1 swxY w Y   d
t          |j                  v sJ d	S )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   sA   <<<677(QC!:&&A3*%% KKMMq'62222vaIIIyyy1122222 KKMM:&& 	:#1gvD9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:!S%7%7777777s   :CC!CN)r[   r\   r]   rm   rZ   rN   r^   r"   r    r`   r`   ^   sA        ' ' ' 9 9 98 8 8 8 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dS )TestApplyAlongAxisc                     t          j        dd          }t          t          t          d|          t	          |          t          j        |j        d                   z             d S )Nrd   r?   dr   rC   r   rD   r   r   lenrQ   r8   r   s     r    test_simplezTestApplyAlongAxis.test_simple   s`    GHc""S!Q''Q"'!'!*2E2E)E	G 	G 	G 	G 	Gr"   c                     t          j        dd          }t          t          t          d|          t	          |          t          j        |j        d                   z             d S )N)r?   e   r~   r   rC   r   r   s     r    test_simple101z!TestApplyAlongAxis.test_simple101   s`    GIs##S!Q''Q"'!'!*2E2E)E	G 	G 	G 	G 	Gr"   c                     t          j        d                              d          }t          t	          t           j        d|          g dg dg dg           d S )N   r+   r+   r+   r   )r   rc   !   )$   '   *   )-   0   3   )r   ro   rp   r   r   sumr   s     r    test_3dzTestApplyAlongAxis.test_3d   se    IbMM!!),,+BFAq99(LL,,,E	G 	G 	G 	G 	Gr"   c                    d } G d dt           j                  }t          j        ddgddgg                              |          }t          j        ddgdd	gg                              |          }t	          |d|          }t          t          ||                     t          ||           t	          |d|          }t          t          ||                     t          ||           d S )
Nc                     | dz  S )Nr@   r^   )rows    r    doublez9TestApplyAlongAxis.test_preserve_subclass.<locals>.double   s    7Nr"   c                       e Zd ZdS )<TestApplyAlongAxis.test_preserve_subclass.<locals>.MyNDArrayNr[   r\   r]   r^   r"   r    	MyNDArrayr              Dr"   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   	 	 		 	 	 	 	
 	 	 	 Hq!fq!f%&&++I668aVaV,--229==!&!Q//
69--...68,,,!&!Q//
69--...68,,,,,r"   c                      G d dt           j                  }d }t          j        d                              |          }t	          t          |d|          t          j        g d                     d S )Nc                       e Zd ZdZdS )9TestApplyAlongAxis.test_subclass.<locals>.MinimalSubclassrC   N)r[   r\   r]   datar^   r"   r    MinimalSubclassr      s        DDDr"   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   s    	 	 	 	 	bj 	 	 		 	 	 HV!!/22-q!44bhyyy6I6I	
 	
 	
 	
 	
r"   c                 2   t          j        d                              |          }t          t           j        d|          }t          t          ||                     t          |t          j        g d                              |                     d S )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   sz    GFOO  %%rvq!,,
3$$%%%3 3 3 8 8 = =>>>>>r"   c                    d }t          j        d                              |          }t          |d|          }t	          t          ||                     t          |t          j        g d                              |                     t          |d|          }t	          t          ||                     t          |t          j        g d                              |                     d S )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   s3    ###:bfQ6667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 	8 	8 GFOO  %%y!Q//
3$$%%%3 3 3 8 8 = =>>>y!Q//
3$$%%%3););); < < A A# F FGGGGGr"   c                 J   fdt          j        d                              d          t          d          }t          j        fdt          j        d                   D             d                                        }t          t          |          t          |                     t          ||           t          d          }t          j        fd	t          j        d                   D             d                                        }t          t          |          t          |                     t          ||           t          j        d
                              d          t          d          }t          j        fdt          j        d                   D             d                                        }t          t          |          t          |                     t          ||           d S )Nc                     t          | j        d           | ddd         | dddf         z                                S )/produces an asymmetric non-square matrix from xrC   N)r   r7   r   )r   r   s    r    f1to2z5TestApplyAlongAxis.test_axis_insertion.<locals>.f1to2   sD    ###dddGaDk)//444r"      r   r   c                 :    g | ]} d d |f                   S r   r^   .0ia2dr   s     r    
<listcomp>z:TestApplyAlongAxis.test_axis_insertion.<locals>.<listcomp>   s<     
 
 
!"EE#aaad)
 
 
r"   rC   r   r   c                 :    g | ]} |d d f                   S r   r^   r   s     r    r   z:TestApplyAlongAxis.test_axis_insertion.<locals>.<listcomp>   s<     
 
 
!"EE#ad)
 
 
r"   Z   )r   r-   r+   c           	          g | ]>t          j        fd t          j        d                   D             d          ?S )c                 <    g | ]} |d d f                   S r   r^   )r   r   a3dr   js     r    r   zETestApplyAlongAxis.test_axis_insertion.<locals>.<listcomp>.<listcomp>   s>       ()c!QQQ'l##  r"   r   r   )r   stackr6   rQ   )r   r   r   r   s    @r    r   z:TestApplyAlongAxis.test_axis_insertion.<locals>.<listcomp>   s~     
 
 
  H      -239Q<-@-@    
 
 
r"   r@   )
r   ro   rp   r   r   r6   rQ   r   r   type)r8   r   rS   r   r   r   r   s    `  @@@r    test_axis_insertionz&TestApplyAlongAxis.test_axis_insertion   sJ   	5 	5 	5 	5 	5
 i&&v.. "%C008 
 
 
 
 
&+CIaL&9&9
 
 
  DII 	 	T&\\4>>222VX&&& "%C008 
 
 
 
 
&+CIaL&9&9
 
 
  499 	 	T&\\4>>222VX&&& i	""**955!%C008 
 
 
 
 
 39Q<((	
 
 

   
 DII 	 	T&\\4>>222VX&&&&&r"   c                      G d dt           j                  }|                     |           |                     |           |                     |           d S )Nc                       e Zd ZdS )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   sp    	 	 	 	 	bj 	 	 	///?+++  11111r"   c                 Z   d }t          j        d                              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                   d S )Nc                     t          | j        d           | ddd         | dddf         z  }t          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   sT    ###DDbD'Aabb$hK'C5%%cAglC8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 	9 	9
 Ie$$V,,ua++
3 233444SXq!!!3qqq!!!Qw<,eeAaaadGnn.ABBB3qqq!!!Qw<,eeAaaadGnn.ABBB3qqq!!!Qw<,eeAaaadGnn.ABBBB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                     d S )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  si    	 	 	!)Q1a&1a&9I0J0JK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|           d S )Nc                 $    t          d           d S )NF)r   r   s    r    
never_callz1TestApplyAlongAxis.test_empty.<locals>.never_call  s    ENNNNNr"   )r   r   r   rC   c                 F    t          t          |           dk               dS )Nr   rC   )r   r   r   s    r    
empty_to_1z1TestApplyAlongAxis.test_empty.<locals>.empty_to_1  s    CFFaK   1r"   )r?   r   r?   )r   emptyr   rF   r   r   rD   )r8   r   r   r   rS   s        r    rT   zTestApplyAlongAxis.test_empty  s    	 	 	 HVj""5z1aHHHj""5z1aHHH	 	 	 HW$ZA66VRWR[[)))j""5z1aHHHHHr"   c                    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 ]8}t          t          ||                   t          ||                              9d S )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    sy!} 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    HWq"g2w'Wq"g2w'
   $%<%<aCC8^^^^^^^^^LMMVX&&& FL)) 	= 	=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{      s       G G G
G G G
G G G
- - -$
 
 
 %'J ? ? ? ? !#
 H H H H ')j #' #' #' #'J2 2 2C C C< < <I I I&= = = = =r"   r{   c                       e Zd Zd ZdS )TestApplyOverAxesc                     t          j        d                              ddd          }t          t           j        |ddg          }t          |t          j        dgdgdggg                     d S )	N   r@   r+   r,   r   rf   \   |   )r   ro   rp   r   r   r   rG   )r8   r   aoa_as      r    r   zTestApplyOverAxes.test_simple/  sh    IbMM!!!Q**Aq6225"(bTB4#,?+@"A"ABBBBBr"   N)r[   r\   r]   r   r^   r"   r    r   r   .  s(        C C C C Cr"   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestExpandDimsc                    d}t          j        |          }t          dd          D ]Z}t          ||          }t	          |j        |         dk               t	          t          j        |          j        |k               [d S )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~    HQKK"aLL 	. 	.DAt$$AAGDMQ&'''BJqMM'1,----	. 	.r"   c                 6   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 d S )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    HY~ai0006:LLLLL~ak2228<NNNNN~ai0006:LLLLL~ak2228<NNN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           d S )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  sy    HQKKia444ia333HYia999ia88888r"   c                 h    t          j        d          }t          t          t          |d           d S )Nr   rC   rC   r   )r   r   r   rF   r	   r   s     r    test_repeated_axisz!TestExpandDims.test_repeated_axisO  s.    HYj+qv>>>>>>r"   c                    t          j        d                              d          }t           j                            ||dz  dk              }t          j        |d          }t          t          |t           j        j                             t          |j
        d           t          |j        j
        d           d S )	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    IbMM!!&))EKKA
K++>!!,,,
8RU%677888X^Y///X]()44444r"   N)r[   r\   r]   r   r  r  r	  r  r^   r"   r    r   r   5  sb        . . .O O O9 9 9? ? ?5 5 5 5 5r"   r   c                       e Zd Zd Zd Zd Zd Zd Zej	        
                    e d          d             Zd	 Zd
 Zd ZdS )TestArraySplitc                 f    t          j        d          }t          t          t          |d           d S )Nr?   r   )r   ro   r   rF   r   r   s     r    test_integer_0_splitz#TestArraySplit.test_integer_0_split^  s)    IbMMj+q!44444r"   c                 R   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          ||           d S )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  s   IbMM!Q9R==/W%%%!Q9Q<<1b!1!12W%%%!Q9Q<<1a")Ar2B2BCW%%%!Q9Q<<1a")Aq//9Q##%W%%%!Q9Q<<1a")Aq//9Q??BIa$4$46W%%%!Q9Q<<1a")Aq//9Q??BIaOORYq"5E5EGW%%%!Q9Q<<1a")Aq//9Q??BIaOORYq!__9Q##% 	W%%%!Q9Q<<1a")Aq//9Q??BIaOORYq!__9Q??BIa$4$46 	W%%%!Q9Q<<1a")Aq//9Q??BIaOORYq!__9Q??BIaOORYq"5E5EG 	W%%%!R  9Q<<1a")Aq//9Q??BIaOORYq!__9Q??BIaOORYq!__9Q##% 	W%%%!R  9Q<<1a")Aq//9Q??BIaOORYq!__9Q??BIaOORYq!__9Q##RXb\\3 	W%%%%%r"   c                 6   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            d S )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<   HbimmRYr]]344!QQ'''x2(("(BIbMM?*C*C8G$$&S!!!B 22333 !aV!,,,x  "(BIbMM?";";x2((*S!!!B 223333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	          ||           d S )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    HbimmRYr]]344!QR(((8RYq\\29Q<<8998RYq!__bi1oo>??8RYq"--ryB/?/?@A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            dS )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     HbimmRYr]]344!Qx2(("(BIbMM?*C*C8G$$&S!!!B 223333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                   )d S )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  s    OQC..!Q\22gks3xx 	5 	5AQs1v|4444	5 	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          ||           d S )	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  s}    IbMM))!W2...9Q??BIaOORYq!__9Q##%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	          ||           d S )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  s{    IbMM))!W2...8B<<1a")Aq//9Q##%W%%%%%r"   c                 h   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	          ||           d S )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  s    IbMM###!W2...8B<<1a")Aq//9Q##RXb\\28B<<AW%%%%%r"   N)r[   r\   r]   r  r  r   r"  r$  pytestmarkskipifIS_64BITr)  r,  r/  r2  r^   r"   r    r  r  ]  s        5 5 5;& ;& ;&z4 4 4& & &4 4 4 [H-CDD5 5 ED5& & && & && & & & &r"   r  c                       e Zd Zd Zd ZdS )	TestSplitc                     t          j        d          }t          |d          }t          j        d          t          j        dd          g}t          ||           d S )Nr?   r@   r-   )r   ro   r   r  r  s       r    test_equal_splitzTestSplit.test_equal_split  sP    IbMMAqkk9Q<<1b!1!12W%%%%%r"   c                 f    t          j        d          }t          t          t          |d           d S )Nr?   r+   )r   ro   r   rF   r   r   s     r    test_unequal_splitzTestSplit.test_unequal_split  s)    IbMMj%A.....r"   N)r[   r\   r]   r:  r<  r^   r"   r    r8  r8    s2        
& & &/ / / / /r"   r8  c                   &    e Zd Zd Zd Zd Zd ZdS )TestColumnStackc                 <    t          t          t          d           d S NrC   )r   	TypeErrorr   r8   s    r    test_non_iterablez!TestColumnStack.test_non_iterable  s    iq11111r"   c                     t          j        d          }t          j        d          }t          j        ddgddgddgg          }t          j        ||f          }t          ||           d S )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  su    HYHY8a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          ||           d S )NrC   r@   r+   r,   rF  rG  s        r    test_2D_arrayszTestColumnStack.test_2D_arrays  s    HqcA3_%%HqcA3_%%8aVVV% & & !Q((VX&&&&&r"   c                     t          j        t          d          5  t          d t	          d          D                        d d d            d S # 1 swxY w Y   d S )Narrays to stack must bematchc              3   >   K   | ]}t          j        d           V  dS r+   Nr   ro   r   _s     r    	<genexpr>z1TestColumnStack.test_generator.<locals>.<genexpr>  s*      88!1888888r"   r@   )r3  raisesrA  r   r6   rB  s    r    test_generatorzTestColumnStack.test_generator  s    ]9,EFFF 	9 	988uQxx888888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9   'AAAN)r[   r\   r]   rC  rH  rJ  rV  r^   r"   r    r>  r>    sP        2 2 2' ' '' ' '9 9 9 9 9r"   r>  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )
TestDstackc                 <    t          t          t          d           d S r@  )r   rA  r   rB  s    r    rC  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          ||           d S NrC   r@   r   rG   r   r   r8   r   r   r   r  s        r    test_0D_arrayzTestDstack.test_0D_array  sX    HQKKHQKKaVnn(aVH:&&3(((((r"   c                     t          j        dg          }t          j        dg          }t          ||g          }t          j        ddggg          }t          ||           d S r\  r]  r^  s        r    test_1D_arrayzTestDstack.test_1D_array  s\    HaSMMHaSMMaVnn(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          ||           d S r\  r]  r^  s        r    test_2D_arrayzTestDstack.test_2D_array"  su    HqcA3Z  HqcA3Z  aVnn(aVH1xj12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          ||           d S r\  r]  r^  s        r    test_2D_array2zTestDstack.test_2D_array2)  sl    HaVHaVaVnn(aVaV,-..3(((((r"   c                     t          j        t          d          5  t          d t	          d          D                        d d d            d S # 1 swxY w Y   d S )NrL  rM  c              3   >   K   | ]}t          j        d           V  dS rP  rQ  rR  s     r    rT  z,TestDstack.test_generator.<locals>.<genexpr>2  s*      22A29Q<<222222r"   r@   )r3  rU  rA  r   r6   rB  s    r    rV  zTestDstack.test_generator0  s    ]9,EFFF 	3 	322q222222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3rW  N)	r[   r\   r]   rC  r_  ra  rc  re  rV  r^   r"   r    rY  rY    sn        , , ,) ) )) ) )) ) )) ) )3 3 3 3 3r"   rY  c                   *    e Zd ZdZd Zd Zd Zd ZdS )
TestHsplit&Only testing for integer splits.

    c                 >    t          t          t          dd           d S r@  )r   rF   r
   rB  s    r    rC  zTestHsplit.test_non_iterable;      j&!Q/////r"   c                     t          j        d          }	 t          |d           t          d           d S # t          $ r Y d S w xY w)NrC   r@   r   )r   rG   r
   r   rF   r   s     r    r_  zTestHsplit.test_0D_array>  sR    HQKK	1aLLLAJJJJJ 	 	 	DD	s   7 
AAc                     t          j        g d          }t          |d          }t          j        ddg          t          j        ddg          g}t          ||           d S NrC   r@   r+   r,   r@   rC   r+   r,   r   rG   r
   r  r  s       r    ra  zTestHsplit.test_1D_arrayF  s^    H\\\""Qll8QF##RXq!f%5%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          ||           d S ro  rq  r  s       r    rc  zTestHsplit.test_2D_arrayL  s    Hlll,,  ! !Qll8aVaV,--rx!Q!Q8H/I/IJW%%%%%r"   Nr[   r\   r]   __doc__rC  r_  ra  rc  r^   r"   r    ri  ri  7  sZ         0 0 0  & & && & & & &r"   ri  c                   *    e Zd ZdZd Zd Zd Zd ZdS )
TestVsplitrj  c                 >    t          t          t          dd           d S r@  )r   rF   r   rB  s    r    rC  zTestVsplit.test_non_iterableX  rl  r"   c                 f    t          j        d          }t          t          t          |d           d S r\  )r   rG   r   rF   r   r   s     r    r_  zTestVsplit.test_0D_array[  )    HQKKj&!Q/////r"   c                     t          j        g d          }	 t          |d           t          d           d S # t          $ r Y d S w xY wNrp  r@   r   )r   rG   r   r   rF   r   s     r    ra  zTestVsplit.test_1D_array_  sX    H\\\""	1aLLLAJJJJJ 	 	 	DD	s   9 
AAc                     t          j        g dg dg          }t          |d          }t          j        g dg          t          j        g dg          g}t          ||           d S Nrp  r@   )r   rG   r   r  r  s       r    rc  zTestVsplit.test_2D_arrayg  sr    Hlll,,  ! !Qll8\\\N++RX|||n-E-EFW%%%%%r"   Nrs  r^   r"   r    rv  rv  T  sZ         0 0 00 0 0  & & & & &r"   rv  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )
TestDsplitc                 >    t          t          t          dd           d S r@  )r   rF   r   rB  s    r    rC  zTestDsplit.test_non_iterableq  rl  r"   c                 f    t          j        d          }t          t          t          |d           d S r\  r   rG   r   rF   r   r   s     r    r_  zTestDsplit.test_0D_arrayt  ry  r"   c                 j    t          j        g d          }t          t          t          |d           d S r}  r  r   s     r    ra  zTestDsplit.test_1D_arrayx  s/    H\\\""j&!Q/////r"   c                     t          j        g dg dg          }	 t          |d           t          d           d S # t          $ r Y d S w xY wr{  )r   rG   r   r   rF   r   s     r    rc  zTestDsplit.test_2D_array|  sh    Hlll,,  ! !	1aLLLAJJJJJ 	 	 	DD	s   = 
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          ||           d S ro  )r   rG   r   r  r  s       r    test_3D_arrayzTestDsplit.test_3D_array  s    H|||<<!<<<<!" # # Qll8q!fq!f-AA/?@AA8q!fq!f-AA/?@AACW%%%%%r"   N)r[   r\   r]   rC  r_  ra  rc  r  r^   r"   r    r  r  o  s_        0 0 00 0 00 0 0  & & & & &r"   r  c                       e Zd Zd ZdS )TestSqueezec                 r   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	                   d S )
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   %%%%%%DRQ""DQAr""DAr22:a=="*Q*E*EFFF2:a=="*Q*E*EFFF2:a=="*Q*A*ABBB eWIjmmS#SXq!!!T#YY
+++++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                            dej	        ej
        g          d             Zd Zej                            dg d          d             Zd	S )
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        ||          |           d S )	NrC   r@   r+   r,   r   r  r1  r  )r   rG   r   r   )r8   r   r   ks       r    r  zTestKron.test_basic  sR   HQKKHq!fq!f%&&Hq!fq!f%&&271a==!,,,Hq!fq!f%&&HQKK271a==!,,, HaSMMHq!fq!f%&&Hq!fq"g&''271a==!,,,Hq!fq!f%&&HaSMM271a==!,,, HseqcU^$$Hq!fq!f%&&H1v1v&!Q!Q(89::271a==!,,,Hq!fq!f%&&HseqcU^$$H1v1v&!Q!Q(89::271a==!,,,,,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          ||                    |           d S )Nc                       e Zd ZdZdS )*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    	% 	% 	% 	% 	%bj 	% 	% 	% GQFOOWQWagqv..T$q!**%%rz222T$r2,,''111T$q"++&&000T$r1++&&00000r"   array_classc                     |t          j        ddg                    } |t          j        ddg                    } |t          j        ddg                    }t          t          j        ||          |           d S )Nr+   r  )r   rD   r   r   )r8   r  r   r   r  s        r    test_kron_smokezTestKron.test_kron_smoke  su     KA((KA((KA((271a==!,,,,,r"   c                 h   t           j                            ddgddggddgddgg          }t           j                            t          j        g d          t          j        t          j        d          t
                               }t          |t          j        ||                     d S )	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    EKK!Q!Q(AA/?K@@EKK..hr{1~~T::::  < < 	1bgamm,,,,,r"   zshape_a,shape_b))r  r  )rE  )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            d S )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     GGGG!C3w<<#g,,+F$G$GG'Q!C3w<<#g,,+F$G$GG'Q%79KLLGAqMM~) ) 	G 	G*F	G 	G 	G 	G 	Gr"   N)r[   r\   r]   r  r  r3  r4  parametrizer   asarrayasmatrixr  r  r  r^   r"   r    r  r    s        - - -:	1 	1 	1 [
BK0 - - -- - - [ 
 
 
 	G 	G 	G 	G 	Gr"   r  c                   &    e Zd Zd Zd Zd Zd ZdS )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           d S )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  s3   HYYYVaVT!QZZ!3!3!3444T!V__'9'9'9;M;M;M&NOOOT!V__'9'9'9&:;;;T!QZZ,,,!=>>>T!V__1v1v1v1v&FGGGT!V__|||\\\'3||\\\'C 	D 	D 	D 	D 	Dr"   c                     t          j        d          }t          |d          }|dz  }t          |t          j        d                     d S )Nr-   rC   r@   )r   ro   r   r   r  s      r    (test_tile_one_repetition_on_array_gh4679z1TestTile.test_tile_one_repetition_on_array_gh4679  sC    IaLLAJJ	QQ	!%%%%%r"   c                     t          j        g gg          }t          j        g g g          }t          |d          j        }t          |d          j        }t	          |d           t	          |d           d S )Nr@   rY   )r@   r   )r+   r@   r   )r   rG   r   rQ   r   )r8   r   r   r  r~   s        r    rT   zTestTile.test_empty  sp    HrdVHb"XAJJI$QQ	"""""r"   c                     ddl m} g d}g d}|D ]_} |dd|          }|D ]L}t          j        ||j                  }t          ||          }t          ||          }	t          ||	           M`d S )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  s    ((((((@@@JJJ 	, 	,A2A&&&A , ,GAqw''Q

aUF++++	,	, 	,r"   N)r[   r\   r]   r  r  rT   r  r^   r"   r    r  r    sS        	D 	D 	D& & &# # #, , , , ,r"   r  c                       e Zd Zd ZdS )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         |                     d S )N)rh   rf   )rc   rf   r   r   r@   rC   )r   rD   r   may_share_memory)r8   r~   d2s      r    r  zTestMayShareMemory.test_basic  se   GHW[!!#Aq))***#Aq2w//000#Aq1v..///#AqTTrT{33444B'$$B$444555B'##A#333444B'!""ddd(R888999#Bqrr44R4xL"5566666r"   Nr  r^   r"   r    r  r    s#        7 7 7 7 7r"   r  c                 V    t          | |d          D ]\  }}t          ||           dS )zCompare lists of arrays.F)strictN)zipr   )r   r  r   ys       r    r  r  *  sA    C/// ! !11a    ! !r"   ).r#   sysr3  numpyr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   numpy.exceptionsr   numpy.testingr   r   r   r   maxsizer6  r%   r'   r`   r{   r   r   r  r8  r>  rY  ri  rv  r  r  r  r  r  r  r^   r"   r    <module>r     s       



                                      ' & & & & & R R R R R R R R R R R R;  3. 3. 3. 3. 3. 3. 3. 3.l'8 '8 '8 '8 '8 '8 '8 '8Tc= c= c= c= c= c= c= c=LC C C C C C C C%5 %5 %5 %5 %5 %5 %5 %5PC& C& C& C& C& C& C& C&L/ / / / / / / / 9 9 9 9 9 9 9 9:"3 "3 "3 "3 "3 "3 "3 "3N& & & & & & & &:& & & & & & & &6& & & & & & & &B, , , , , , , ,&LG LG LG LG LG LG LG LG^%, %, %, %, %, %, %, %,P7 7 7 7 7 7 7 7 ! ! ! ! !r"   