
    >iefG                   &   d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlZd dl	Z	d dl
mZ  ej        d          Zd dlmZ d dlmZmZ d dlmZmZ d Zd	 Zd
 Zej                            dg d          d             Zej                            dg d          ej                            d e             e            fddddg          d                         Zej                            dg d          ej                            d e ej          e            ddddgd                              d                         Z!d Z"d Z#d Z$d Z%ej                            ddd g          ej                            d!g d"          d#                         Z&d$ Z'd% Z(ej                            d&d'i fd(i fd)i fd)d*d ifd)d*d+ifd)d*difd)d*d,ifd)d*d-ifg          ej                            d! e            ddddg          d.                         Z)ej                            d/i d0d1id0d2id0d3id0d4ig          ej                            d! e            ddddg          d5                         Z*ej                            d6g g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dJg dKg dLg dMg dNg dOg dPg dQg dRg dSg dTg dUg dV          dW             Z+dX Z,ej                            d0g dY          dZ             Z-ej                            d[g d\          d]             Z.d^ Z/d_ Z0d` Z1da Z2ej                            ddbdcg          dd             Z3ej                            ddbdcg          de             Z4ej                            dfdgdh digdjdk digdldm digdndo digdpdq drgg          ej                            dsdtd gdtd+gdtdgdtd,gg          du                         Z5ej                            dvdwdx gdydz gdld{ gg          ej                            d|dt e            gdtd gdtd}gdtd~gdtdgg          d                         Z6ej                            ddtdgdtd gdtd+gdtdgdtd,gg          d             Z7ej                            ddtd gdtd+gdtdgdtd,gg          ej                            dg d3          d                         Z8ej                            dg d3          d             Z9ej                            dg d3          d             Z:d Z;ej                            d!ddg          ej                            dddgd d gd+dgddggg          d                         Z<ej                            dg dg dg dg dg dg dg dg ddte=                    e>                    d                    e=                    e>                    d                    fd-gdtde=                    e>                    d                    fd-gdte=                    e>                    d                    fd,gg          ej                            dd+dg          d                         Z?d Z@ej                            de                    g dejA                  e                    g dejB                  g          d             ZCd ZDd ZEej                            dg d+g d+gd gd+d gd+gg ddddgdgg ddg ddgg ddg dgdgg dddd gddgdd,gddggdgg          ej                            dddg          d                         ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMej                            ddddddg d3fdd gfde                    d d+gg          fd ej        d d+gg          fg d3gdfe                    g d3g          df ej        g d3g          dfg          d             ZNej                            ddrdig          ej                            ddrdig          ej                            dg d¢          ej                            ddidrg          dĄ                                                 ZOej                            ddrdig          ej                            ddrdig          dń                         ZPdƄ ZQej                            ddrdig          ej                            ddrdig          ej                            dddg          dɄ                                     ZRej                            ddrdig          ej                            ddrdig          dʄ                         ZSd˄ ZTd̄ ZUd̈́ ZVd΄ ZWdτ ZXdЄ ZYdф ZZd҄ Z[dӄ Z\dԄ Z]dՄ Z^dք Z_dׄ Z`d؄ Zadل Zbdڄ Zcej                            ddidrg          ej                            ddidrg          ej                            ddidrg          dބ                                     Zdej                            dddg          ej                            dd dgg          ej                            dddgddgddgddgg          d                                     Zeej                            dddg          ej                            dd dgg          ej                            dddgddgddgddgg          ej                            dddgddgddgddgg          ej                            ddrdig          d                                                             Zfej                            ddrdig          d             Zgd Zhej                            d[ddg          ej                            dg d          ej                            d*g d          d                                     Zid Zjd Zkej                            d!g d          d             Zlej                            d!g d          ej                            ddrdig          d                         Zmd Znd Zod Zpej                            d*g d          d              Zqej                            ddrdig          ej                            d*g d          d                         Zrej                            d!d}d4g          d             Zsd Ztd Zud Zvej                            dejw        ejw        d fejx        ejx        d+fejy        ejy        dfg          d	             Zzd
 Z{d Z|d Z}d Z~d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            d          d             Zd Zd Zd Zd Zd Zd  Zd! Zd" Zd# Zej                            d*g d$          d%             Zd& Zej                            d*g d$          d'             Zd( Zd) Zd* Zd+ Zd, Zd- Zej                            d.d/ d0 d1 ej        ej        g          ej                            d2g d3g d4gd2 ed5d67          fg d3g d4gd8 ed5d97          fg d3g d4gd+ edd:;          fg d3g d4gd2 ed<d=;          fg d3gd4 edd67          fg d3g d4g d>gd? ed@d67          fe>                    dA                              ddd+                                          dB ed@d67          fd+ddggd edCD          fd+ddgd+dgddgddAgddEgggd edFD          fg	          dG                         ZdH ZdI Zej                            dJ ej        ddg           eddgdK          g          ej                            dLdidrg          dM                         ZdN ZdO ZdP Zej                            d[dQ  edRdS          D                       dT             Zej                            dUg dV          dW             ZdX ZdY ZdZ Zd[ Zd\ Zd] Zej                            d^g d_          d`             Zej                            dag db          dc             Zej                            ddg de          df             Zej                            dgg dh          di             Zej                            djddg          dk             Zdl Zdm Zdn Zdo Zej                            dpe>                    d          e>                    dA                              d          g          ej                            dqdrdig          dr                         Zej                            dpe>                    d          e>                    dA                              d          g          ds             Zej                            dtdidrg          du             Zdv Zdw Zdx Zdy Zdz Zej                            d{g d|          d}             ZdS (~      )annotationsN)Number)delayednumpy)	AxisError
_numpy_123)	assert_eq	same_keysc                 x   t                               dd          } t          j        ddd          }t          t          j        |dd          t                               | dd                     t          j        dd	
          } t          j        |           }t          |t          j                  sJ d S )N   i4dtype   )chunksr   i8)ndminr   )d   r   
   r   )nponesdar	   array
isinstanceArray)xdys      >lib/python3.11/site-packages/dask/array/tests/test_routines.py
test_arrayr!      s    
A
!4(((Abhq...!40P0PQQQ 	$$$A
Aa"""""""    c                     g d} t          j        |           }t          |t           j                  sJ t	          | |           d S )N)r         r   )r   r   r   r   r	   r   dxs     r    test_array_return_typer(       sF    A	!Bb"(#####ar"   c                 n    dt           j        j        j        v sJ dt           j        j        j        v sJ d S )Nz*This docstring was copied from numpy.arrayzCreate an array.)r   routinesr   __doc__ r"   r    test_derived_docstringsr-   (   s:    72;;L;TTTTT!2!:::::::r"   funcname)
atleast_1d
atleast_2d
atleast_3dc                    t          t          |           }t          t          |           } |            } |            }||k    sJ d S N)getattrr   r   )r.   np_funcda_funcnp_r_nda_r_ns        r    test_atleast_nd_no_argsr9   -   sM    b(##Gb(##GWYYFWYYFVr"   zshape, chunks)   r%   )r;      r%   r   )r;   r>      r%   r   r;   )r;   r>   rA   r   r%   r   r;   r   c                4   t           j                                                            |          }t          j        ||          }t          t           |           }t          t          |           } ||          } ||          }t          ||           d S Nr   )r   randomdefault_rngr   
from_arrayr4   r	   )	r.   shaper   np_ada_ar5   r6   np_rda_rs	            r    test_atleast_nd_one_argrO   8   s     9  ""))%00D=f---Db(##Gb(##G74==D74==DdDr"   zshape1, shape2r:   r=   r@   rC   r%   c                   t           j                                                            |          }t          j        |t          d |D                                 }t           j                                                            |          }t          j        |t          d |D                                 }||g}||g}t          t           |           }	t          t          |           }
 |	| } |
| }t          |          t          |          u sJ t          |          t          |          k    sJ t          ||          D ]\  }}t          ||           d S )Nc              3      K   | ]	}|d z  V  
dS r%   Nr,   .0cs     r    	<genexpr>z+test_atleast_nd_two_args.<locals>.<genexpr>[   &      /G/G1Q/G/G/G/G/G/Gr"   r   c              3      K   | ]	}|d z  V  
dS rR   r,   rS   s     r    rV   z+test_atleast_nd_two_args.<locals>.<genexpr>^   rW   r"   )r   rG   rH   r   rI   tupler4   typelenzipr	   )r.   shape1shape2np_a_1da_a_1np_a_2da_a_2np_a_nda_a_nr5   r6   r7   r8   rM   rN   s                  r    test_atleast_nd_two_argsre   P   sZ    Y""$$++F33F]6%/G/G/G/G/G*G*GHHHFY""$$++F33F]6%/G/G/G/G/G*G*GHHHFfFfFb(##Gb(##GWfFWfF<<4<<''''v;;#f++%%%%&&))  
d$ r"   c                 n   t                               d                              d          } t          j        | d          }t          |                    d          |                     d                     t          |                    d          |                    d                    sJ t          |                    ddd          |                     ddd                     t          |                    ddd          |                    ddd                    sJ t          j	        t                    5  |                    dd           d d d            n# 1 swxY w Y   t          j	        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )	N   )r;   r>   r   rB   r%   r   r$   r%   r   r$   r$   r%   )r   arangereshaper   rI   r	   	transposer
   pytestraises
ValueErrorr   r   s     r    test_transposerq   q   s   
		#z**A
a##Aakk)$$akk)&<&<===Q[[++Q[[-C-CDDDDDakk!Q""AKK1a$8$8999Q[[Aq))1;;q!Q+?+?@@@@@	z	"	"  	Aq               
z	"	"  	F                 s$    E##E'*E'F**F.1F.c                     t                               d          } t          j        dd          }t          |                     g d          |                    g d                     d S )NrD   r   r   )r   r$   )r   r   r   r	   rl   r   r   s     r    test_transpose_negative_axesrv      s]    
A
Q'''Aakk...))1;;~~~+F+FGGGGGr"   c                     t          j        dd          } |                     d          | u sJ |                     d          | u sJ d S )NrB   r   r   r   r$   r%   )rt   rs   )r   r   rl   r   s    r    !test_transpose_skip_when_possibler{      sV    
	!$$$A;;y!!Q&&&&;;|$$))))))r"   c                    t           j                                                            ddd          } t	          j        | d          }t          t                               | dd          t	          j        |dd                     t          t                               | dd          t	          j        |dd                     t          |                     dd          |                    dd                     t          |                     dd          |                    dd                     t          |                     dd          |                    dd                     t          |                     dd	          |                    dd	                     t          |                     d	d          |                    d	d                     |                    dd          j        |                    dd          j        k    sJ |                    dd          j        |                    dd          j        k    sJ d S )
Nr   r   r         sizer;   r   r%   r   r$   r%   rs   )	r   rG   rH   normalr   rI   r	   swapaxesnamerp   s     r    test_swapaxesr      s   
	&&q";&??A
a	***Abkk!Q""BK1a$8$8999bkk!Q""BK1a$8$8999ajjA

1a 0 0111ajjA

1a 0 0111ajjA

1a 0 0111ajjBAr!2!2333ajjQB!2!2333::a AJJq!$4$4$99999::a AJJq!$4$4$9999999r"   moveaxisrollaxisrJ   )r,   r   )r   r   r   r   c           
        t           j                                                            |          }t          j        |t          |          dz            }t          t           |           }t          t          |           }t          |j         |j                  D ]m}t           ||d|          t          j
                  sJ t          |j         |j                  D ](}t           ||||           ||||                     )nd S )Nr<   r   r   )r   rG   rH   r   rI   r[   r4   rangendimr   r   r	   )r.   rJ   r   r   r5   r6   axis1axis2s           r    test_moveaxis_rollaxisr      s    		&&u--A
aUd!2444Ab(##Gb(##Gw'' J J''!Q..99999AF7AF++ 	J 	JEgga..5%0H0HIIII	JJ Jr"   c                 j   t           j                                                            d          } t          j        | d          }t          t                               | dd          t          j        |dd                     t          t                               | d          t          j        |d                     t          t          j        |d          t          j	                  sJ t          t                               | dd          t          j        |dd                     d S )	Nr}   r   r   r$   r   )destinationsourcer%   )startaxis)
r   rG   rH   r   rI   r	   r   r   r   r   rp   s     r    test_moveaxis_rollaxis_keywordr      s    
	&&{33A
a	***A
A1Q//QAVW1X1X1X   bkk!QQ!2!2333bk!Q''22222bkk!11k--r{1AA/N/N/NOOOOOr"   c                 <   t           j                                                            dd          } t                              | dd          }t          |t           j                  sJ t          |t                              |                                 dd                     t          	                    | dd          }t          |t           j                  sJ t          |t          	                    |                                 dd                     d S )Nr;   r;   r;   r%   r   r   )
r   rG   rH   r   r   r   r   r	   computer   )aresults     r     test_moveaxis_rollaxis_numpy_apir      s    
	&&y&;;A[[Aq!!Ffbh'''''fbkk!))++q!44555[[Aq!!Ffbh'''''fbkk!))++q!4455555r"   zfuncname, kwargsflipudfliplrflipr   r$   rs   r   r%   c                   |                     d          }|5| dk    rd}nD| dk    rd}n;| dk    rt          t          |                    }nt          |t                    s|f}t
          j                                                            |          }t          j	        |d          }t          t
          |           }t          t          |           }	 |D ]}t          |j                  |          	  ||fi |}	 ||fi |}
t          |	|
           d S # t          $ r@ t          j        t                     5   ||fi | d d d            Y d S # 1 swxY w Y   Y d S w xY w)	Nr   r   r   r   r$   r   r$   r   )getr   r[   r   rY   r   rG   rH   r   rI   r4   r   r	   
IndexErrorrm   rn   ro   )r.   kwargsrJ   r   rK   rL   r5   r6   axrM   rN   s              r    	test_flipr      s    ::fD|xDD!!DDU$$De$$ w9  ""))%00D=a(((Db(##Gb(##G
 	! 	!B$)R   	! wt&&v&&wt&&v&&$  $ $ $]:&& 	$ 	$GD##F###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$$s6   D #E%>
EE%E	E%E	E%$E%r   axesr$   r   r?   rx   r$   r$   c                   |                      dd          }t          j                                                            |          }t	          j        |d          }t          j        }t          j        }	 |d d         D ]}t          |j                  |          	 t          |          dk    s|d         |d         k    r=t          j        t                    5   ||fi |  d d d            d S # 1 swxY w Y   d S t          dd          D ](} ||fd	|i| }	 ||fd	|i| }
t          |	|
           )d S # t          $ r@ t          j        t                    5   ||fi |  d d d            Y d S # 1 swxY w Y   Y d S w xY w)
Nr   r   r$   r$   r   r%   r   ry   	   k)r   r   rG   rH   r   rI   rot90r   r   r[   rm   rn   ro   r	   r   )r   rJ   r   rK   rL   r5   r6   r   r   rM   rN   s              r    
test_rot90r      sc    ::ff%%D9  ""))%00D=a(((DhGhG&!H 	# 	#D$)T"""	# t99>>T!WQ//z** ( ('''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 2q\\ & &wt33q3F33wt33q3F33$%%%%& &  $ $ $]:&& 	$ 	$GD##F###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$$sH   7'D< 
C44C8;C8<#F
E7)F7E;	;F>E;	?FFz$x_shape, y_shape, x_chunks, y_chunks)r,   r,   r,   r,   )r,   r   r,   r,   )r,   r      r,   r,   )r,   r   r      r,   r,   )r,   r   r   r      r,   r,   )r   r,   r,   r,   )r   r   r,   r,   )r   r   r   r,   r,   )r   r   r   r   r,   r,   )r   r   r   r   r   r,   r,   )r   r,   r,   r,   )r   r   r,   r,   )r   r   r,   r,   ))r   r   r   r,   r,   ))r   r   r   r,   r,   )r   r,   r,   r,   )r   r   r,   r,   )r   )r   r   r,   r,   )r   r   r,   r,   )r   r   r   r   r,   r,   )r   r,   r,   r,   )r   r   r,   r,   )r   )r   r   r,   r,   )r   )r   r      r,   r,   )r   r   r,   r,   )r,   r   r,   r   )r,   r   r,   )r$   r   r   r   )r   r   r   r   )r   r   )r   r   r;   r%   )r   r   r   r   )r   r   )r   r   r   )r   r   r   r   ))r   r         )r   r   r   r   )r$   r   r%   r>   )r$   r   r   r   c                   t           j                            d          }|                    |           d         }|                    |          d         }t          j        ||pt          d |j        D                                 }t          j        ||pt          d |j        D                                 }d }		 t                               ||          }	n# t          $ r Y nw xY wt          j
        ||g||g          D ]\  }
}|j        dk    s|j        dk    rGt          j        t                    5  t          j        |
|           d d d            n# 1 swxY w Y   bt          |	t          j        |
|                     d S )Ni  r,   c              3      K   | ]	}|d z  V  
dS rR   r,   rT   is     r    rV   ztest_matmul.<locals>.<genexpr>9  &      1L1Lq161L1L1L1L1L1Lr"   r   c              3      K   | ]	}|d z  V  
dS rR   r,   r   s     r    rV   ztest_matmul.<locals>.<genexpr>:  r   r"   r   )r   rG   rH   r   rI   rY   rJ   matmulro   	itertoolsproductr   rm   rn   r	   )x_shapey_shapex_chunksy_chunksrngr   r   r   bexpectedd1d2s               r    test_matmulr     s   N )


%
%C

7BA

7BA
a LE1L1LAG1L1L1L,L,LMMMA
a LE1L1LAG1L1L1L,L,LMMMAH99Q??    #QFQF33 3 3B6Q;;!&A++z** " "	"b!!!" " " " " " " " " " " " " " " h	"b 1 122223 3s$   C 
C*)C*:EE 	#E 	c            	        t                               d                              d          } t          j        | d          }t                               d                              d          }t          j        |d          }dD ]}t          t          j        |||	          t                               | ||	                     t          t          j        | ||	          t                               | ||	                     t          t          j        |||	          t                               | ||	                     t          t          j        ||d
	          t          j        ||d
	                    sJ t          j	        t          j
                  5  t          t          j        ||d	          t          j        ||d	                    rJ 	 d d d            d S # 1 swxY w Y   d S )N  r   r   r   r;   r      r   r   r;   r   )r$   r   r   r   r   r$   )r   rj   rk   r   rI   r	   	tensordotr
   rm   warnsPerformanceWarning)r   r   r   r   r   s        r    test_tensordotr   J  s   
		#x((A
a'''A
		#x((A
a'''A P P",q!$///a1N1NOOO",q!$///a1N1NOOO",q!$///a1N1NOOOOR\!QV444bl1af6U6U6UVVVVV 
b+	,	, U UR\!QQ777aQR9S9S9STTTTTTU U U U U U U U U U U U U U U U U Us   &=G11G58G5)r   r$   r   r   )r   r%   r$   )ri   r%   r   )r   ri   c                   t                               d                              d          }t          j        |d          }t          t          j        |||           t                               |||                      d S )N@   r   r%   r   r   r   rj   rk   r   rI   r	   r   )r   r   r   s      r    test_tensordot_2r   \  sp     			)$$Y//A
a"""Abl1ad+++R\\!QT\-J-JKKKKKr"   r   )autor=   r?   r;   r   r%   r>   c                   t                               d                              dd          }t          j        ||           }t          t          j        ||d          t                               ||d                     d S )N   r;   r>   r   r%   r   r   )r   r   r   s      r    &test_tensordot_double_contraction_neq2r   f  sp     			"a##A
a'''Abl1aa(((",,q!!,*D*DEEEEEr"   c                 "   t                               d                              ddd          } t                               d                              ddd          }t          j        |           }t          j        |          }t          t          j        ||d          t                               | |d                     t                               d                              ddd          } t                               d                              ddd          }t          j        | d          }t          j        |          }t          t          j        ||d          t                               | |d                     d S )Ng      N@r   r;   r   r%   r   r   r   )r   r   uvs       r    &test_tensordot_double_contraction_ngt2r   n  s3   
		$1a((A
		$1a((A
aA
aAbl1aa(((",,q!!,*D*DEEE
		$1a((A
		$1a((A
a"""A
aAbl1aa(((",,q!!,*D*DEEEEEr"   c                     d} t                               ddg| z            }t          j        |d          }t	          t          j        |||           t                               d| z                       d S )N   r$   r%   rs   r   )r   broadcast_tor   rI   r	   r   r   )r   r   r'   s      r     test_tensordot_more_than_26_dimsr     sh    D
A3:&&A	q	$	$	$Bbl2r4(("((1d7*;*;<<<<<r"   c                 ~   t                               d                              d          } t          j        | d          }t                               d                              d          }t          j        |d          }t          |                    |          |                     |                     d S )Nr   r   r   r   r   r   r   )r   rj   rk   r   rI   r	   dot)r   r   r   r   s       r    test_dot_methodr     s    
		#x((A
a'''A
		#x((A
a'''AaeeAhha!!!!!r"   c                    t           j                                                            dd          } d| | dk     <   |                                 }|                                 }t          j        | |                                           }t          j        ||                                          }t                              ||          }t                              ||          sJ t                              ||          sJ d S )Nr;   r;   r%   r%   r   r   g?)r   rG   rH   persistr   r   r   allclose)r   r   zr1r2rrs         r    test_dot_persist_equivalencer    s    
	&&vf&==AAa$hK			A			A	1				B	1				B	1B;;r2;;r2r"   ))r   r>   )r   r?   c                   t           j                            d          }d|                    d| z             z  dz
  }|d         d|d         z  z   }d|                    d| z             z  dz
  }|d         d|d         z  z   }t          j        ||          }t          j        ||          }t          t                               ||          t          j        ||                     t          t                               ||          t          j        ||                     t          t          j        ||          t          j        ||                                                     d S )N9  r%   r<   r$   r   y              ?r   )r   rG   rH   r   rI   r	   vdotconj)rJ   r   r   r   r   r   r   s          r    	test_vdotr	    s+   
)


%
%C	CJJte|$$$q(A	!rAaDyA	CJJte|$$$q(A	!rAaDyA
a'''A
a'''AbggammRWQ]]+++bggammRWQ]]+++bgammRWQ]]//1122222r"   c                   t           j                            d          }d|                    |           z  dz
  }d|                    |          z  dz
  }t          j        |d          }t          j        |d          }t          t                               ||          t          j        ||                     t          t                               ||          t          j        ||                     d S )Nr  r%   r$   r   r   )r   rG   rH   r   rI   r	   outer)r]   r^   r   r   r   r   r   s          r    
test_outerr    s    
)


%
%C	CJJv"A	CJJv"A
a"""A
a"""Abhhq!nnbhq!nn---bhhq!nnbhq!nn-----r"   z)func1d_name, func1d, specify_output_propsr   c                    | j         S r3   r   rz   s    r    <lambda>r    s    16 r"   Fsumc                *    |                                  S r3   r  rz   s    r    r  r    s    !%%'' r"   r   c                R    |                                  |                                 gS r3   minmaxrz   s    r    r  r    s    QUUWWaeegg. r"   range2c                    |                                  |                                 g|                                 |                                  ggS r3   r  rz   s    r    r  r    s5    quuww015577AEEGG2DE r"   cumsumc                6    t                               |           S r3   )r   r  rz   s    r    r  r    s    RYYq\\ r"   Tzinput_shape, axisr   r   r   c           	        t           j                                                            dd|          }t	          j        |t          |          dz            }d }d }|rcdg|j        z  }	t          d           |	|<   t          |	          }	t           
                     |||	                             }
|
j        }|
j        }t          t	          j        |||||          t                               |||                     d S )Nr   r   r   r   )r   rJ   )r   rG   rH   integersr   rI   r[   r   slicerY   r   rJ   r   r	   apply_along_axis)func1d_namefunc1dspecify_output_propsinput_shaper   r   r   output_shapeoutput_dtypeslicessamples              r    test_apply_along_axisr(    s     		((B<<A
a[!1!1D!8:::ALL $qvT{{tv&&6++,,||
FD!<|TTT
FD!,,    r"   zfunc_name, funcsum0c                .    |                      |          S )Nr   r  r   r   s     r    r  r    s    D!1!1 r"   sum1c                0    |                      |d          S )NTr   keepdimsr  r,  s     r    r  r    s    D4!@!@ r"   c                    t                               |                     |d          |                     |d          g|          S )NTr/  r+  )r   concatenater  r  r,  s     r    r  r    sD    BNND400!%%TD%2Q2QR +   r"   zshape, axesr   )rs   r$   rh   c                4   t           j                                                            dd|          }t	          j        |t          |          dz            }t          t	          j        |||          t                               |||                     d S Nr   r   r   r   )	r   rG   rH   r  r   rI   r[   r	   apply_over_axes)	func_namefuncrJ   r   r   r   s         r    test_apply_over_axesr8    s    2 		((B66A
aUd!2444Ab q$//1C1CD!T1R1RSSSSSr"   zshape, axisc                0   t           j                                                            dd|           }t	          j        |t          |           dz            }t          t	          j        ||          t                               ||                     d S r4  )	r   rG   rH   r  r   rI   r[   r	   ptp)rJ   r   r   r   s       r    test_ptpr;    st     		((B66A
aUd!2444AbfQoorvva/////r"   nc                4   t           j                                                            dd|           }t	          j        |t          |           dz            }t          t	          j        |||          t                               |||                     d S r4  )	r   rG   rH   r  r   rI   r[   r	   diff)rJ   r<  r   r   r   s        r    	test_diffr?    s|     		((B66A
aUd!2444AbgaD!!2771a#6#677777r"   c                   t                               d          dz   }t          j        |d          }t	          t          j        || d          t                               || d                     t	          t          j        || dg          t                               || dg                     t	          t          j        || ddg          t                               || ddg                     t                               d                              d	d	          }t          j        |d          }t	          t          j        || dd
          t                               || dd
                     t	          t          j        || ddgdgdgdgg
          t                               || ddgdgdgdgg
                     t	          t          j        || dd
          t                               || dd
                     t	          t          j        || dg dg
          t                               || dg dg
                     | dk    rct          j        t                    5  t          j        || t           
                    d                     d d d            d S # 1 swxY w Y   d S d S )Nr   r$   r%   r   r   )prependrs      r;   )r   rA  r   r   r   r   r   r   r   rj   r   rI   r	   r>  rk   rm   rn   ro   zerosr<  r   r   s      r    test_diff_prependrH    s   
		!qA
a"""AbgaA&&&1a(@(@AAAbgaQC((("''!Q'*D*DEEEbgaRG,,,bggaRGg.L.LMMM
		"a##A
a"""AbgaA...11a0P0PQQQ
11sQC!qc&:;;;
11sQC!qc&:;;   bgaA...11a0P0PQQQ
11|||n555
11|||n55  
 	1uu ]:&& 	4 	4GAq"((6"2"23333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 u   ;0J88J<?J<c                   t                               d          dz   }t          j        |d          }t	          t          j        || d          t                               || d                     t	          t          j        || dg          t                               || dg                     t	          t          j        || ddg          t                               || ddg                     t                               d                              d	d	          }t          j        |d          }t	          t          j        || dd
          t                               || dd
                     t	          t          j        || ddgdgdgdgg
          t                               || ddgdgdgdgg
                     t	          t          j        || dd
          t                               || dd
                     t	          t          j        || dg dg
          t                               || dg dg
                     | dk    rct          j        t                    5  t          j        || t           
                    d                     d d d            d S # 1 swxY w Y   d S d S )Nr   r$   r%   r   r   )appendrs   rB  r;   )r   rK  rC  rD  rE  rG  s      r    test_diff_appendrL  7  s   
		!qA
a"""Abga1%%%rwwq!Aw'>'>???bgaA3'''Aqc)B)BCCCbgaB7+++RWWQ2q'W-J-JKKK
		"a##A
a"""Abga1---rwwq!!Aw/N/NOOO
11qcA3aS%9:::
11qcA3aS%9::   bga1---rwwq!!Aw/N/NOOO
11lll^444
11lll^44  
 	1uu]:&& 	3 	3 GAq&!1!12222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 urI  c                     t          j        t                    5  t          j        t          j        d          d           d d d            d S # 1 swxY w Y   d S )Nr   rs   )rm   rn   ro   r   r>  rj   r,   r"   r    test_diff_negative_orderrN  S  s    	z	"	" # #
	"r"""# # # # # # # # # # # # # # # # # #s   (AAAr   )r   r   zto_end, to_beginr   r;   c                4   t           j                                                            dd|           }t	          j        |t          |           dz            }t          t	          j        |||          t                               |||                     d S r4  )	r   rG   rH   r  r   rI   r[   r	   ediff1d)rJ   to_endto_beginr   r   s        r    test_ediff1drT  X  s|     		((B66A
aUd!2444AbjFH--rzz!VX/N/NOOOOOr"   zshape, varargs, axis)r  r,   N)r  r<   N)r  )      ?      ?       @N)r  r,   r   )r  r,   r$   )r  r,   r%   )r  r,   rs   )r  r,   r   r   r         ?
edge_orderc                   t           j                                                            dd|           }t	          j        |t          |           dz            }t          j        |g|R ||d}t	          j        |g|R ||d}t          |t                    rt          ||           d S t          |          t          |          k    sJ t          ||          D ]\  }}	t          ||	           t          t	          j        t          t          t          j        |                              t                               t          t          t           j        |                                         d S )Nr   r   r   r   )r   rY  )r   rG   rH   r  r   rI   r[   gradientr   r   r	   r\   sqrtr  mapsquare)
rJ   varargsr   rY  r   d_ar_ar_d_ae_r_d_ae_r_as
             r    test_gradientre  a  s\   $ 		((B66A
-3u::#4
6
6
6C
+a
D'
D
D
D
D
DCKHgHHDZHHHE$ 

%5zzSXX%%%%!%oo 	& 	&NGUgu%%%%GCBIu--..//SC=P=P9Q9Q1R1R	
 	
 	
 	
 	
r"   c                    t                               g d          } t          j        | d          }t          j        |d          }t          |t                               | d                     t          t          j        |d          |          sJ |j        dk    sJ |j        dk    sJ t          j        |d          j	        t          j        |d          j	        k    sJ t          j        |d          j	        t          j        |d          j	        k    sJ t                               g d	|j
        
          }t          |dd          |           d S )Nr%   r$   r   r%   r$   r%   r   r>   )	minlengthr  )r  r   )r   r%   r%   r   r   r$   r   r   )r   r   r   rI   bincountr	   r
   rJ   r   r   r   )r   r   eexpected_outputs       r    test_bincountrl    sL   
!!A
a"""A
A###AaQ!,,---R[a000!444447d????8w;qA&&&+r{1/J/J/J/OOOOO;qA&&&+r{1/J/J/J/OOOOOhh111hAAOae_%%%%%r"   weights)r$   r%   r$   rX  r$   r   )r$   r%   r$   r   r$   c                   t                               g d          }t          j        |d          }t          j        | d          }t          j        ||d          }t          |t                               ||                                d                     t          t          j        ||d          |          sJ d S )Nrg  r%   r   r>   )rm  rh  )r   r   r   rI   ri  r	   r   r
   )rm  r   r   dweightsrj  s        r    test_bincount_with_weightsrp    s     	!!A
a"""A}WQ///H
Ax1555AaQ(8(8(:(:aHHIIIR[HBBBAFFFFFFFr"   c                 x   t                               g d          } t          j        | d          }t          j        |          }t          |t                               |                      t          t          j        |          |          sJ t          |                                          dk    sJ d S )N)r$   r$   r   r   r   r%   r   rA   )	r   r   r   rI   ri  r	   r
   r[   r   )r   r   rj  s      r    #test_bincount_unspecified_minlengthrr    s    
!!A
a"""A
AAaQ   R[^^Q'''''qyy{{q      r"   c            
        t                               g d          } t                               g d          }dD ]]}dD ]X}t          j        | |          }t	          t          j        |||          t                               | ||                     Y^t           j                                                            d          } t           j                                                            d	          }|                                 d
D ]]}dD ]X}t          j        | |          }t	          t          j        |||          t                               | ||                     Y^d S )N)r%   r;   r   r>   r$   )r$   r%   r   r;   r   r%   r;   )FTr   )right)r   r   r   r   )r   r   )r   r   )r      )W   6   )	r   r   r   rI   r	   digitizerG   rH   sort)r   binsr   ru  r   s        r    test_digitizer}    sy   
!!A88OOO$$D  " 	 	Ea///AAt51112;;q$e;3T3T   	 		&&J&77A9  ""))r)22DIIKKK:  " 	 	Ea///AAt51112;;q$e;3T3T   	 r"   za, a_chunks, v, v_chunks)r   r   r   r   r   r   )r   r   r$   r~  r   %   r   r   r   r~  r   r   sideleftru  c                   t                               |           } t                               |          }t          j        | |          }t          j        ||          }t          j        |||          }|j        |j        k    sJ |j        |j        k    sJ t          |t                               | ||                     d S rF   )r   r   r   asarraysearchsortedrJ   r   r	   )r   a_chunksr   v_chunksr  advdouts           r    test_searchsortedr    s     	A
A	Ah	'	'	'B	Ah	'	'	'B
/"b$
'
'C9    :""""c2??1a../////r"   c            	        t          j        t                    5  t          j        t          j        ddg          t          j        dg          t          j        ddg                     d d d            d S # 1 swxY w Y   d S )Nr$   r   )sorter)rm   rn   NotImplementedErrorr   r  r  r,   r"   r    (test_searchsorted_sorter_not_implementedr    s    	*	+	+ X X

Aq6**BJsOOBJPQSTvDVDVWWWWX X X X X X X X X X X X X X X X X Xs   AA::A>A>c                     d} t           j                                                            | d          }t                              ddd          }t          j        ||          \  }}t                              ||          \  }}|                    d          | k    sJ |                    d          | k    sJ t          ||           t          t          j        ||          d         |          sJ d S )	Nr   r   r   r   )\(?{Gz?r|  r+  )	r   rG   rH   r   rj   	histogramr  r	   r
   )r<  r   r|  a1b1a2b2s          r    test_histogramr    s    A
	&&q&44A99Qd##D|AD)))HR||AD|))HR 66q6>>Q66q6>>Qb"R\!$///2B7777777r"   c                     t           j                                                            dd          } t          j        | dd          \  }}t                              | dd          \  }}t          ||           t          ||           d S )Nr   r   r   r   r|  r   )r   rG   rH   r  r   r	   r   r  r  r  r  s        r    %test_histogram_alternative_bins_ranger    s    
	&&s2&66A|ABf555HR||ABf|55HRb"b"r"   c                 0   t          j        t                              dt          j        dg          d          } t          j        | dd          \  }}t                              | dd          \  }}t          ||           t          ||           d S )Nrt   r%   r$   r   r   ry   r   r  )r   rI   r   r   nanr  r	   r  s        r    (test_histogram_bins_range_with_nan_arrayr    s    
bhhBFA//:::A|ABg666HR||ABg|66HRb"b"r"   c                    t           j                                                            dd          } t                              ddd          }t                              dddd	
          }t          t          j        | dz  |          d         t                              | dz  |          d                    d S )Nr   r   r   r   r  r  r   r$   r   r   r  )r   rG   rH   r   rj   r	   r  )r   r|  s     r    test_histogram_return_typer    s    
	&&s2&66A99Qd##D99QAT9**Dbl1r6---a0",,q2vD,2Q2QRS2TUUUUUr"   c            
     R   t                               ddd          } t          j                                                            dd          }|| t          j        d|j                  dz  ft          j                                                            dd          | t          j        dd          dz  fg}|D ]\  }} }t          t          j        || d	
          d         t                               || d	
          d                    t          t          j        || |          d         t                               || |          d                    t          t          j        || |d	          d         t          j        || |d	          d                    d S )Nr   r  r  r   r   r   r   )2   r  Tr|  density)r|  rm  )r|  rm  r  )	r   rj   r   rG   rH   r   r   r	   r  )r|  r   dataws       r    $test_histogram_extra_args_and_shapesr    s   99Qd##D
	&&s2&66A	
D"'#ah///!34I!!##**8B*??GHR(((1,	
D  
 

4Lt444Q7LLtL44Q7	
 	
 	
 	Lq111!4LLqL11!4	
 	
 	

 	Lq$???BLq$???B	
 	
 	
 	

 
r"   c                 F   t          j        d          } t          j        t                    5 }t          j        | g dd           d d d            n# 1 swxY w Y   dt          |j                  v sJ dt          |j                                                  v sJ d S )Nr   r$   r%   r   Tr|  normedr  
deprecated)	r   rj   rm   rn   ro   r  strvaluelower)r   infos     r    !test_histogram_normed_deprecationr  ,  s    
	"A	z	"	" 5d
QYYYt44445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 DJ''''3tz??0022222222s   AAAzbins, hist_range)NN)r   Nr   r$   )N)r$   r   c                J   t           j                                                            dd          }t          j        t
          t          f          5 }t          j        || |           d d d            n# 1 swxY w Y   t          |j	                  }d|v sd|v sJ d S d S )Nr   r%   r   r  r|  r   )
r   rG   rH   rm   rn   ro   	TypeErrorr  r  r  )r|  
hist_ranger  r  err_msgs        r    test_histogram_bin_range_raisesr  5  s    " 9  ""))"Q)77D	
I.	/	/ 84
TJ77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8$*ooGW7 2 2 2 2 2 2s   A88A<?A<r  weightednon_delayed_iNr   r$   delay_n_binsc                
   d}t           j                                                            |          }t          j        |d          }|rLt           j                                                            |          }t          j        ||j                  }|                                |                                g}	||	|                                         |	|<   t          j	        ||r| st          j
        |          n||	| |r|nd           \  }
}t           	                    |||                                |                                g| |r|nd           \  }}t          |
|           t          ||           d S )Nr   r   r   r|  r   r  rm  )r   rG   rH   r   rI   r   r  r  r   r  r   r	   )r  r  r  r  r<  r   r  rm  	weights_dd_rangehist_dbins_dhistr|  s                 r    test_histogram_delayed_ranger  M  ss   
 	A
	&&q))A	q	$	$	$B =)''))0033M'")<<<	vvxx"G !(!7!?!?!A!A\
(??RXa[[[a%/		4  NFF 	uuww #-   JD$ fdfdr"   c                   d}t           j                                                            |          }t                               g d          }t	          j        |d          }t	          j        |d          }|rLt           j                                                            |          }t	          j        ||j                  }t	          j        |||d         |d         g| |r|nd           \  }	}
t                               |||d         |d         g| |r|nd           \  }}||
u sJ t          |	|           t          |
|           d S )	Nr   )r   皙?rX  皙?r$   r   r   r%   r   rs   r  )	r   rG   rH   r   r   rI   r   r  r	   )r  r  r<  r   r|  r  r  rm  r  r  bins_d2r  s               r    test_histogram_delayed_binsr  q  sd    	A
	&&q))A88)))**D	q	$	$	$B]4***F =)''))0033M'")<<<	l
ay&*%%/		4  OFG 	AwR!#-   JD$ Wfdgtr"   c                 ,   t           j                                                            dd          } t          j        t
          d          5  t          j        | t          j        d          ddgd	           d d d            d S # 1 swxY w Y   d S )
Nr   r%   r   z%`bins` cannot be a scalar Dask objectmatchr   r$   T)r|  r   r  )r   rG   rH   rm   rn   r  r  r   r  s    r    1test_histogram_delayed_n_bins_raises_with_densityr    s    9  ""))"Q)77D	#J
 
 
 J J 	TQFDIIIIJ J J J J J J J J J J J J J J J J Js   -B		BBr|  r   r>   c           
        t           j                                        }d}|}d}|                    dd|fd          }|                    dd|fd          }| r|                    dd|fd          nd }	t          j        ||||||		          \  }
}}t
                              ||||||		          \  }}}t
                              |                                |                                |||| r|	                                nd 	          \  }}}t          |
|           t          |
|           | s6|s4|
                                |k    sJ |                                |k    sJ t          t          j        ||||||		          d         |
          sJ |
                                j
        |j
        k    sJ d S )
N   r   r   r   r$   r   r   r   r  皙?r  r   rG   rH   uniformhistogram2dr   r   r	   r  r
   rJ   )rm  r  r|  r   r<  r   rr   r   r  r  b1xb1yr  b2xb2ya3b3xb3ys                      r    test_histogram2dr    s    )


!
!CAAAAqtF33AAqtF33A;BLCA4777A>!QQaRSTTTLBS>>!QQaRS>TTLBS>>						&0		D "  LBS b"b" w vvxx1}}}}vvxx1}}}}
q!!1gqIII!L
     ::<<))))))r"   c           	        t           j                                        }d}g d}g d}||g}|                    dd|fd          }|                    dd|fd          }| r|                    dd	|fd          nd }	t          j        |||||	
          \  }
}}t
                              |||||	
          \  }}}t
                              |                                |                                ||| r|	                                nd 
          \  }}}t          |
|           t          |
|           | s6|s4|
                                |k    sJ |                                |k    sJ t          t          j        |||||	
          d         |
          sJ |
                                j
        |j
        k    sJ d S )Nr  )        r  g333333??rU  )r  皙?g?rX  rU  r   r$   r  r  r  r  )r|  r  rm  r  )rm  r  r   r<  xbinsybinsr   r   r   r  r  r  r  r  r  r  r  r  r  s                      r    test_histogram2d_array_binsr    s    )


!
!CA%%%E%%%E	AAqtF33AAqtF33A;BLCA4777A>!QQKKKLBS>>!QQ>KKLBS>>						&0		D "  LBS b"b" w vvxx1}}}}vvxx1}}}}
q!!Wa@@@C
     ::<<))))))r"   c                    d\  } }t           j                                                            dd| |fd          }g dg dg dg}t          j        ||	          \  }}t
                              ||	          \  }}t
                              |                                |	          \  }}	t          ||           t          ||           |                                | k    sJ |                                | k    sJ t          t          j        ||	          d         |          sJ |                                j
        |j
        k    sJ d S )
Nr  r   r   r$   r   r   r  r   rX  r$   r         ?g333333?r$   r   rX  r  r$   r  )r   rG   rH   r  histogramddr   r   r	   r  r
   rJ   )
n1n2r   r|  r  r  r  r  r  b3s
             r    test_histogramddr    sA   FB
	''1B8H'MMAKK+++-=-=-=>D~ad+++HR~~ad~++HR~~aiikk~55HRb"b"6688r>>>>6688r>>>>R^AD111!4b99999::<<))))))r"   c                    t           j                                        } d}|                     |fd          }|                     |fd          }g d}g d}t          j        ||g||g          \  }}t
                              ||g||g          \  }}	t
                              |                                |                                f||g          \  }
}t          ||           t          ||
           d S )Nr  r   r  )r  r        ?rU  )r  333333?ffffff?r  rU  r  )r   rG   rH   r  r  r   r   r	   )r   r  r   r   bxbyr  r  r  r  r  r  s               r    test_histogramdd_seq_of_arraysr    s    
)


!
!C	B"s++A"s++A			B	$	$	$B~q!fB8444HR~~q!fB8~44HR~~qyy{{AIIKK8Bx~HHHRb"b"r"   c                    d\  } }t           j                                                            dd| |fd          }d}dt	          |          z  }t          j        |||          \  }}t                              |||          \  }}t                              |                                ||          \  }	}
t          ||           t          ||	           d	}t          j        |||          \  }}t                              |||          \  }}t          ||           |	                                | k    sJ |	                                | k    sJ t          t          j        |||          d         |          sJ d S )
NiX  r   r   r$   )r   r   r   r   r  r   r   r;   r   r  r;   )r   rG   rH   r  r[   r  r   r   r	   r  r
   )r  r  r   r|  rangesr  r  r  r  r  r  s              r    'test_histogramdd_alternative_bins_ranger    sv   FB
	''	1B8$; 	( 	 	A DT"F~ad&999HR~~ad&~99HR~~aiikkF~CCHRb"b"D~ad&999HR~~ad&~99HRb"6688r>>>>6688r>>>>R^AD???BBGGGGGGGr"   c                 f   t           j                                        } d\  }}|                     dd||fd          }|                     dd|fd          }d	}d
t	          |          z  }t          j        ||||          \  }}t                              ||||          \  }	}
t                              |                                |||                                          \  }}t          ||	           t          ||           d}t          j        ||||          \  }}t                              ||||          \  }	}
t                              |                                |||                                          \  }}t          ||	           t          ||           d S )Nr  r   r$   r   r  rX  r  r   r  r  r|  r   rm  r;   )	r   rG   rH   r  r[   r  r   r   r	   r   r  r  r   r  r|  r  r  r  r  r  r  r  s                r    test_histogramdd_weightedr	    s   
)


!
!CFBAqBx0GHHACB555ADT"F~ad&!DDDHR~~ad&!~DDHR~~aiikkFAIIKK~XXHRb"b"D~ad&!DDDHR~~ad&!~DDHR~~aiikkFAIIKK~XXHRb"b"r"   c                 Z   d\  } }t           j                                                            dd| |fd          }g dg dg dg}t          j        ||d	
          \  }}t
                              ||d	
          \  }}t          j        ||d	          \  }}	t
                              |                                |d	
          \  }
}t          ||           t          ||           t          ||
           t          t          j        ||d	
          d         |          sJ d S )Nr  r   r$   r  r  r  r  r  Tr  r  )	r   rG   rH   r  r  r   r   r	   r
   )r  r  r   r|  r  r  r  r  r  r  a4b4s               r    test_histogramdd_densityr  &  s+   FB
	''1B8H'MMAKK+++-=-=-=>D~adD999HR~~adD~99HR~ad4888HR~~aiikkd~CCHRb"b"b"R^AD$???BBGGGGGGGr"   c                    t           j                                        } d\  }}|                     ||fd          }|                     dd|fd          }d}dt          |          z  }t          j        ||||d	
          \  }}t                              ||||d	
          \  }	}
t          j        ||||d	          \  }}t          ||	           t          ||           d S )N)i  r;   )r   r;   r  rX  g333333?r   r   r>   r   rA   ))r;   T)r|  r   rm  r  )r|  r   rm  r  )	r   rG   rH   standard_normalr  r[   r  r   r	   r  s                r    !test_histogramdd_weighted_densityr  4  s    
)


!
!CFB"b(;;ACB555AD#d))#F~ad&!TRRRHR~~ad&!T~RRHR~ad&!DQQQHRb"b"r"   c                    t           j                                                            dd          } t          j        t
          d          5  t          j        | dd           d d d            d S # 1 swxY w Y   d S )	Nr   r   )r   r$   r  z2Input array can only be chunked along the 0th axisr  r   r   r   r   r  r   rG   rH   rm   rn   ro   r  r  s    r    .test_histogramdd_raises_incompat_sample_chunksr  B  s    9  ""))wv)FFD	N
 
 
 ; ; 	t"M::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   A44A8;A8c                 h   t           j                                        } |                     dd          }|                     dd          }|                     dd          }t          j        t
          d          5  t          j        |||fdd	           d d d            d S # 1 swxY w Y   d S )
NrO  r%   r  r   z2All coordinate arrays must be chunked identically.r  )r   r   r   r  r  r  )r   r   r   r   s       r    0test_histogramdd_raises_incompat_multiarg_chunksr  J  s   
)


!
!C

a
((A

a
((A

a
((A	N
 
 
 F F 	1ayx}EEEEF F F F F F F F F F F F F F F F F Fs   ?B''B+.B+c                 Z   t           j                                        } |                     dd          }|                     dd          }t          j        ||f          j                            d          }|                     dd          }t          j        t          d          5  t          j	        ||fdd	|
           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j	        |dd	|
           d d d            d S # 1 swxY w Y   d S )NrO  r%   r  r   r   zFInput arrays and weights must have the same shape and chunk structure.r  rD  r  r  z_Input array and weights must have the same shape and chunk structure along the first dimension.)
r   rG   rH   r0   Trechunkrm   rn   ro   r  )r   r   r   r   r  s        r    .test_histogramdd_raises_incompat_weight_chunksr  U  s   
)


!
!C

a
((A

a
((A
q!f''//A

a
((A	V
 
 
 N N 	1vHM1MMMM	N N N N N N N N N N N N N N N
 
o
 
 
 I I 	qx}aHHHH	I I I I I I I I I I I I I I I I I Is$   -CCC:D  D$'D$c                 ^   t           j                                                            dd          } d}dt          |          z  }d}t	          j        t          d          5  t          j        | ||	           d d d            n# 1 swxY w Y   d}d
}t	          j        t          d          5  t          j        | ||	           d d d            n# 1 swxY w Y   t	          j        t          d          5  t          j        | |d	           d d d            d S # 1 swxY w Y   d S )N)r   r;   r   r  rD   r  rB   zCThe dimension of bins must be equal to the dimension of the sample.r  r  r  zArange argument requires one entry, a min max pair, per dimension.z,range argument should be a sequence of pairs)r   rx   r   r   )r   rG   rH   r[   rm   rn   ro   r  r  r|  r  s      r    .test_histogramdd_raises_incompat_bins_or_ranger   g  s   9  ""))wv)FFDDT"F D	S
 
 
 6 6 	t$f5555	6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 DF	Q
 
 
 6 6 	t$f5555	6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
H
 
 
 I I 	t$.GHHHHI I I I I I I I I I I I I I I I I Is6   %B		BB3CCC=D""D&)D&c                    t           j                                                            dd          } d}d}t          j        t
          d          5  t          j        | ||dd	           d d d            d S # 1 swxY w Y   d S )
Nr  r   r   r  r;   r   r>   r  z*Cannot specify both 'normed' and 'density'r  T)r|  r   r  r  )r   rG   rH   rm   rn   r  r  r  s      r    )test_histogramdd_raise_normed_and_densityr$    s    9  ""))wv)FFDDF	y(T	U	U	U Q Q
t$fT4PPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   A::A>A>c                    t           j                                                            dd          } t          j        t
          d          5  t          j        | dd           d d d            n# 1 swxY w Y   t           j                                                            d	d
          } t          j        t
          d          5  t          j        | dd           d d d            d S # 1 swxY w Y   d S )NrO  r<   r  z4Single array input to histogramdd should be columnarr  r;   )r  r  r   )r%   r%   r%   r  r  s    r    %test_histogramdd_raise_incompat_shaper&    su   9  ""))uT)BBD	P
 
 
 7 7 	t!:66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 9  ""))y)KKD	P
 
 
 7 7 	t!:66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s$   A33A7:A7C11C58C5c                    t           j                                                            dd          } t                              g d          t                              g d          t                              g d          g}t          j        | |          \  }}t                              |                                 |          \  }}t          ||          D ]\  }}t          ||           t          j        | dd	
          \  }}t                              |                                 dd	
          \  }}t          ||          D ]\  }}t          ||           d S )Nr  r"  r  )r  r  r  rU  )r  r  r  r  )r  rX  r  r  r   r  r  )	r   rG   rH   r   r   r  r   r\   r	   )r  edgesr  r  r  r  ib1ib2s           r    test_histogramdd_edgesr+    sL   9  ""))wv)FFD
%%%&&
%%%&&
!!E ^Du---FB^^DLLNN^77FBBKK  S#s^Dq>>>FB^^DLLNN-^HHFBBKK  S#s r"   c                 X   t                               d                              d          } t          j        | d          }t          t          j        |          t                               |                      t          t          j        |d          t                               | d                     t          j                    5  t          j	        dt                     t          t          j        |d	
          t                               | d	
                     d d d            n# 1 swxY w Y   t          t          j        |d          t                               | d                     t          t          j        ||          t                               | |                      t                               d          }t          j        |d          }t          t          j        ||          t                               | |                     t          t          j        ||          t                               ||                      t          j        t                    5  t          j        |d
           d d d            d S # 1 swxY w Y   d S )N8   r   rA   r   r   r   rowvarignorecategoryr   )ddofr$   )biasrA   r:   rV  )r   rj   rk   r   rI   r	   covwarningscatch_warningssimplefilterRuntimeWarningrm   rn   ro   r   r   r   rj  s       r    test_covr<    s|   
		"f%%A
a'''AbfQii###bfQq!!!266!A6#6#6777		 	"	" : :h@@@@"&$$$bffQRf&8&8999: : : : : : : : : : : : : : : bfQQ!2!2333bfQllBFF1aLL)))
		!A
a%%%AbfQllBFF1aLL)))bfQllBFF1aLL)))	z	"	"  
qs                 s%   AD55D9<D9;JJ#&J#c                 D   t                               d                              d          } t          j        | d          }t          t          j        |          t                               |                      t          t          j        |d          t                               | d                     t          t          j        ||          t                               | |                      t                               d          }t          j        |d          }t          t          j        ||          t                               | |                     t          t          j        ||          t                               ||                      d S )	Nr-  r.  r   r   r   r/  rA   r:   )r   rj   rk   r   rI   r	   corrcoefr;  s       r    test_corrcoefr?    s+   
		"f%%A
a'''Abk!nnbkk!nn---bk!A&&&Aa(@(@AAAbk!QQ!2!2333
		!A
a%%%Abk!QQ!2!2333bk!QQ!2!233333r"   c                 v   t           j                                                            d          } t          j        | d          }dD ]8}t          |                     |          |                    |                     9t          |                    d          t          j        |d                     d S )Nr   r;   r   )r   r$   r;   r   r%   )r   rG   rH   r   rI   r	   round)r   r   r   s      r    
test_roundrB    s    
	&&r**A
a"""A * *!''!**aggajj))))aggajj"(1a..)))))r"   return_indexreturn_inversereturn_countsc                `   t          | ||          }t                              g d          }t          j        |d          }t          j        |fi |}t          j        |fi |}t          | ||g          s>t          |t          j                  sJ t          |t          j	                  sJ |f}|f}t          |          t          |          k    sJ |r+dt          |           z   }|j        f||         j        k    sJ t          ||          D ]\  }	}
t          |
|	           d S )NrC  rD  rE  )r$   r%   r;   r;   r   r%   r  r   r$   )dictr   r   r   rI   uniqueanyr   ndarrayr   r[   intr   rJ   r\   r	   )rC  rD  rE  r   r   r   ra  r_dr   rd  e_r_ds              r    test_unique_kwargsrO    s\    !%#  F 	###$$A
a%%%A
)A
 
 
 
 C
)A
 
 
 
 Cnm<== #rz*****#rx(((((ffs88s3xx )L!!!yCFL((((C    u%   r"   seed   i  z	low, highr   r  r   r   r%   r   c                   t           j                            |           }|                    |||          }t	          j        ||          }t          ddd          }t          j        |fi |}	t	          j        |fi |}
t          |	          t          |
          k    sJ |j	        f|
d         j
        k    sJ t          |	|
          D ]\  }}t          ||           d S )Nr   r   TrG  r%   )r   rG   rH   r  r   rI   rH  rI  r[   r   rJ   r\   r	   )rP  lowhighrJ   r   r   r   r   r   ra  rM  rd  rN  s                r    test_unique_randrV    s     )


%
%CS$U++A
a'''AtDMMMF
)A
 
 
 
 C
)A
 
 
 
 Cs88s3xxF9A$$$$C    u%   r"   zelements_shape, elements_chunksztest_shape, test_chunksinvertc                    t           j                            |           }|                    |||          }	t	          j        |	|          }
|                    |||          dz
  }t	          j        ||          }t          j                    5  t          j        dt          j	                   t           
                    |	||          }t	          j
        |
||          }d d d            n# 1 swxY w Y   t          ||           d S )Nr   r   r   r1  r2  )rW  )r   rG   rH   r  r   rI   r7  r8  r9  r   isinr	   )rP  rT  rU  elements_shapeelements_chunks
test_shapetest_chunksrW  r   r  r   r  r   ra  rM  s                  r    test_isin_randr^    s6    )


%
%C	c4n	5	5B	r/	2	2	2B	c4j	1	1A	5B	r+	.	.	.B		 	"	" - -h1FGGGGggb"Vg,,gb"V,,,- - - - - - - - - - - - - - - c3s   AC33C7:C7assume_uniquec                &   t                               d          }t          j        |d          }t                               ddd          }t                               |||           }t          j        |||           }t          ||           d S )Nr   r   r   r   r%   )r_  )r   rj   r   rI   rY  r	   )r_  r  r   test_elementsra  rM  s         r    test_isin_assume_uniquerb  4  s}    	2B	r$	'	'	'BIIaQ''M
''"m='
A
AC
'"m=
A
A
ACc3r"   c                D    	 t          |           S # t          $ r Y dS w xY wNr   )r[   r  )ls    r    
_maybe_lenrf  ?  s4    1vv   qqs    
r   shift)r   r   r   )r   r   )r   r%   )Nr   r$   rs   r   r   c                   t           j                                                            dd          }t	          j        ||           }t          |          t          |          k    rSt          j        |t          nt                    5  t	          j        |||           d d d            d S # 1 swxY w Y   d S t          t                               |||          t	          j        |||                     d S )Nr   r=   r   r   )r   rG   rH   r  r   rI   rf  rm   rn   r  ro   rollr	   )r   rg  r   r   r   s        r    	test_rollrj  F  s    		((&(99A
a'''A%Jt,,,,]99*EE 	$ 	$GAud###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	"''!UD))271eT+B+BCCCCCs   B00B47B4c                 f    t          j        dd          } t          j        | d          }|| usJ d S )Nr%   r   r$   )r   rj   ri  ru   s     r    'test_roll_always_results_in_a_new_arrayrl  T  s1    
	!QA
1AA::::::r"   c                     t                               t                               d          d          } t          j        t          j        d          d          }t	          | |           d S rd  )r   ri  rF  r   r	   )r   actuals     r    "test_roll_works_even_if_shape_is_0ro  Z  sN    wwrxx{{A&&HWRXa[[!$$Fhr"   )rO  r   r   )r   r   r   c                d   t           j                                                            |           }t                              |          | k    sJ t           j                                                            |           }t                              |          t          |           k    sJ d S r3   )r   rG   rH   r   rJ   r   r[   )rJ   r   s     r    test_shape_and_ndimrr  `  s    
	&&u--A88A;;%
	&&u--A771::U######r"   ))r~   rs  )r   )r   r;   )rs  )r$   r>   r%   reversec                   | \  }}t                               d                              |          }t                               dd                              |          }|r|d d d         }t          j        |          }t          j        |          }t                               ||          }t                               ||          }	t          |t          j                  sJ t          ||	           d S )Nr~   r>      rs   )	r   rj   rk   r   rI   union1dr   r   r	   )
rJ   rt  s1s2x1x2dx1dx2r   r   s
             r    test_union1dr~  i  s    
 FB	2		r	"	"B	1b			!	!"	%	%B "X
-

C
-

CZZS!!Fzz"b!!Hfbh'''''fhr"   c                    t           j                                                            dd          } dD ]}t	          j        | |          }t          |                                 |                                           t          |                                j	                  t          |j	                  t          |j
        d                   z   k    sJ t          | d                                         |d                                                    |                                }t          |                                |           t           j                                                            dd          } d	D ]L}t	          j        | |          }t          |                                 |                                           Mt          |                                 |                                           t          t                               |           t	          j        |                     d S )
Nr   r=   r   )r=   r   r   r   r   r   rB   )r;   )r$   r   r;   )r   rG   rH   r  r   rI   r	   ravelr[   daskr   flatten)r   r   r   a_flats       r    
test_ravelr    s   
	((&(99A # E EM!F+++!''))QWWYY'''17799>""c!&kkC4D4D&DDDDDD agmmooqw}}/// WWYYFfllnnf%%% 		(()(<<A  ( (M!F+++!''))QWWYY''''aiikk199;;'''bhhqkk28A;;'''''r"   c                    t           j                                                            dd          } t	          j        | d          }t          |                                |                                            t          ||dk                                             | | dk                                                        d S )Nr   r   r   r   r%   )r   rG   rH   r  r   rI   r	   r  r&   s     r    test_ravel_1D_no_opr    s    
	((#(66A	q	$	$	$Bbhhjj!''))$$$baj  !AE(.."2"233333r"   c                    t          t                              d          t          j        d                     t	          t          j        d          t          j        j                  sJ t          t                              ddg          t          j        ddg                     t	          t          j        ddg          t          j        j                  sJ t          t                              d          t          j        d                     t	          t          j        d          t          j        j                  sJ t          t                              ddg          t          j        ddg                     t	          t          j        ddg          t          j        j                  sJ d S )Nr   r  r   )r	   r   r  r   r   corer   r,   r"   r    test_ravel_with_array_liker    sH   bhhqkk28A;;'''bhqkk27=11111 bhh1v!Q 0 0111bh1v&&66666 bhhv 0 0111bhv&&66666 bhhd|$$bhd|&<&<===bhd|,,bgm<<<<<<<r"   )Nr   r$   rs   r   r   ri   r%   c                n   t                               d          }t          j        |d          }| Jt	          j        t                    5  t          j        ||            d d d            d S # 1 swxY w Y   d S | dk    rJt	          j        t                    5  t          j        ||            d d d            d S # 1 swxY w Y   d S t                               ||           }t          j        ||           }t          ||           t          |t          j        ||                     sJ d S )Nr   r  r   r+  r%   )r   rj   r   rI   rm   rn   r  expand_dimsr   r	   r
   )r   r   r   a_ed_es        r    test_expand_dimsr    s   
		"A
a%%%A|]9%% 	) 	)N14((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)	]9%% 	) 	)N14((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) nnQTn**nQT***#sbnQT:::;;;;;;;s$   A00A47A4C  CCis_func)Nr   rs   )r   rs   c                0   t                               d          d d d d d f         t          j        d          }| r3t                                         }t          j        |          }n,                              }|                              }t          ||           t          |t          j        |                    sJ "t          t          j	                            n5t          t                    rnft          fdD                       t          fdt          |j                  D                       t          fdt          |j                  D                       }|j        |k    sJ d S )Nr   )r$   r   r$   r$   r   r+  c              3  ,   K   | ]}|j         z  V  d S r3   r  )rT   r   r   s     r    rV   ztest_squeeze.<locals>.<genexpr>  s)      ..AQZ......r"   c              3  P   K   | ] \  }}|v 	t          |          d k    |V  !dS )r$   N)r[   rT   r   rU   r   s      r    rV   ztest_squeeze.<locals>.<genexpr>  s9      PPtq!a4iiCFFaKKKKKKPPr"   c              3  *   K   | ]\  }}|v	|V  d S r3   r,   r  s      r    rV   ztest_squeeze.<locals>.<genexpr>  s+      NNA1NNr"   )r   rj   r   rI   squeezer	   r
   rY   r   r   r   	enumerater   )r  r   r   a_sd_sexp_d_s_chunksr   s    `    @r    test_squeezer    s    			"dAAAtT)*A
a---A #jjj&&j&&&iiTi""iiTi""c3S"*QT22233333|U16]]##!$..;ttTG.........PPPPy22PPPPPDNNNN18)<)<NNNNNN:''''''r"   c                z   t                               | d          }t                               |          }t          j        |d          }t          j        |          }t          |t          j                  sJ t          |                                t           j                  sJ t          ||           d S )Nr%   )rJ   
fill_valuer$   r   )
r   fullr  r   rI   r   r   r   rK  r	   )rJ   r   r  r   r  s        r    test_squeeze_1d_arrayr    s    
e**A
**Q--C
a$$$A
*Q--Cc28$$$$$ckkmmRZ00000c3r"   c            
        t                               d          } t                               d          }t          j        dd          }t          j        dd          }t	          t                               | |f          t          j        ||f                     t	          t                               | |d d d f         f          t          j        ||d d d f         f                     d S Nr   r%   r   )r   rj   r   r   r	   vstackr   r   r   r   s       r    test_vstackr    s    
		!A


A
	!AA
!AbiiAAq6!2!2333biiAdAAAgJ((")Q$'
O*D*DEEEEEr"   c            
        t                               d          } t                               d          }t          j        dd          }t          j        dd          }t	          t                               | d d d f         |d d d f         f          t          j        |d d d f         |d d d f         f                     t	          t                               | |f          t          j        ||f                     d S r  )r   rj   r   r   r	   hstackr  s       r    test_hstackr    s    
		!A


A
	!AA
!Abii47QtQQQwZ01129aaaaj!DRSRSRSG*=U3V3VWWWbiiAAq6!2!233333r"   c                    t                               d          } t                               d          }t          j        dd          }t          j        dd          }t	          t                               | d d d d f         |d d d d f         f          t          j        |d d d d f         |d d d d f         f                     t	          t                               | d d d f         |d d d f         f          t          j        |d d d f         |d d d f         f                     t	          t                               | |f          t          j        ||f                     d S r  )r   rj   r   r   r	   dstackr  s       r    test_dstackr    sU   
		!A


A
	!AA
!A
		1T4]#QtT111}%5677
	1T4]#QtT111}%5677   bii47QtQQQwZ01129aaaaj!DRSRSRSG*=U3V3VWWWbiiAAq6!2!233333r"   znp_func,dsk_func,nan_chunkc                   d}t          j        |d          }t                              |          }t          |j                  }t          j        fdz  ||<   t          |          |_        t          j        t                    5   |||f           d d d            n# 1 swxY w Y    | ||f          } |||fd          }t          ||           d S )N)r   r   r   )r  r  r  r   r%   T)allow_unknown_chunksizes)r   r   r   list_chunksr  rY   rm   rn   ro   r	   )	r5   dsk_func	nan_chunkrJ   r   r   tmp
np_stackeddsk_stackeds	            r    test_stack_unknown_chunk_sizesr    s   
 E
l+++A
A
qy//CfY]C	Nc

AI	z	"	"  !Q               !QJ(Aq6DAAAKj+&&&&&s   B!!B%(B%c                    t                               d                              d          } t          j        | d          }t          t                               | dd          t          j        |dd                     t          t                               | g dd	          t          j        |g dd	                     t          j        t                    5  t          j        |dd
           d d d            n# 1 swxY w Y   t          t          j        |g dd	          t          j        |g dd	                    sJ d S )Nr   r   r   r   r   r   r+  )r   r;   r   rs   r%   )r   rj   rk   r   rI   r	   takerm   rn   ro   r
   r   r   s     r    	test_taker  %  sf   
		#x((A
a'''Abggag##RWQ%:%:%:;;;bggag,,bga.L.L.LMMM	z	"	"  
11               RWQ			333RWQ			PR5S5S5STTTTTTTs   !DD	D	c                 h   t                               d                              d          } t          j        t                               g d          d          }t          j        | dz  |          }|j        |j        k    sJ t          |t                               g d                     d S )Nr   f8)r$   r%   r   r   r%   r$   r   r   r%   )rW        @      @r  r  rW  )	r   rj   astyper   rI   r   r  r   r	   )r   r   r   s      r    test_take_dask_from_numpyr  2  s    
		!D!!A
bhh111221===A
AqA8qxa88899:::::r"   c            	     F   t                               d                              d          } t          j        | d          }t                               g d          }t                               ddg          }ddg}t          j        |d          }t          j        |d	          }||f||f||f||f||f||ffD ]H\  }}d
D ]>}	t          j        |||	          }
t          t                               || |	          |
           t          |t          j	                  rw|	pd}	t           
                    |
j        |	                                                   sJ t           
                    |
j        |	                                                   sJ |	pd}	t                               |          |
j        |	         k    sJ t           
                    |
j        |	                                                   rJ @Jt!          j        t$                    5  t          j        ddg|d           d d d            n# 1 swxY w Y   t!          j        t$                    5  t          j        dgdgg|d           d d d            d S # 1 swxY w Y   d S )N   r   r   r   TFTFTTFr   r%   r  r+  r   r   )r   rj   rk   r   rI   r   compressr	   r   r   isnanrJ   allr   count_nonzerorJ  rm   rn   ro   )r   r   c1c2c3dc1dc2rU   dcr   ress              r    test_compressr  <  s   
		"f%%A
a'''A	222	3	3B	4-	 	 B
B
-1
%
%
%C
-1
%
%
%Cr(RHr2hS	B9r3iP < <2  	< 	<D+b!$///Cbkk!QTk22C888"bh'' < yqxx	$004466666xx
4 01155777777 yq''++sy>>>>88CJt$45599;;;;;;	<" 
z	"	" 0 0
T5M13////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
z	"	" 4 4
dVeW%qs33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s$   #I		II-JJJc                    t                               d                              d          } t          j        | d          }t                               g d          }t                               ddgddgg          }t                               ddg          }t          j        |d          }t          j        |d	          }t          j        |d
          }||f||f||f||f||f||ffD ]\  }}	t          j        |	|          }
t          t                               ||           |
           t          |	t          j	                  r9t           
                    |
j        d                                                   sJ d S )Nr  r   r   r   r  TFr   r   r%   r   )r   rj   rk   r   rI   r   extractr	   r   r   r  r   r  )r   r   r  r  r  r  r  dc3rU   r  r  s              r    test_extractr  _  sj   
		"f%%A
a'''A	222	3	3B	D%=4-0	1	1B	4-	 	 B
-1
%
%
%C
-6
*
*
*C
-1
%
%
%Cr(RHr2hS	B9r3iP 1 12jQ"**Q""C(((b"(## 	188CJqM**..00000	1 1r"   c                    t                               dt           j        g          } t          j        | d          }t          j        t                    5  t          t          j	        |          t           
                    |                      t          t          j        |          t           
                    |                       d d d            d S # 1 swxY w Y   d S )Nr$   r<   r   )r   r   r  r   rI   
contextlibsuppressImportErrorr	   isnullr  notnullr  s     r    test_isnullr  q  s    
!RVA
a%%%A		[	)	) 1 1")A,,,,,"*Q--288A;;0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   A6CC Cc                 r   t          j        t                              dt          j                  d          } t          j        t                    5  t          j        | d                   	                                }t          |          t          j        u sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r   rs   r   r   )r   rI   r   rj   int64r  r  r  r  r   rZ   rK  )arrr   s     r    test_isnull_result_is_an_arrayr  y  s    
-		!28	44R
@
@
@C		[	)	) * *3q6""**,,F||rz)))))* * * * * * * * * * * * * * * * * *s   A
B,,B03B0c                 ~   t                               dt           j        ddg          } t                               dt           j        ddg          }t          j        | d          }t          j        |d          }t          t          j        ||d	          t                               | |d	                     d S )
Nr   r$   rV  &.>r%   r<   r   T	equal_nan)r   r   r  r   rI   r	   iscloser  s       r    test_iscloser    s    
!RVQ$%%A
$1%&&A
a%%%A
a%%%AbjA...

1a4
0P0PQQQQQr"   c                    t                               dt           j        ddg          } t                               dt           j        ddg          }t          j        | d          }t          j        |d          }t                               | |d	          }t          j        ||d	          }t          t                               |          d
         |           d S )Nr   r$   rV  r  r%   r<   r   Tr  r,   )r   r   r  r   rI   r   r	   )n_an_br`  d_bn_rd_rs         r    test_allcloser    s    
((Arvq#&
'
'C
((D"&!Q'
(
(C
-D
)
)
)C
-D
)
)
)C
++c3$+
/
/C
+c3$
/
/
/CbhhsmmB%%%%%r"   c                    t           j                                                            dd          } t	          j        | d          }t          t	          j        |dk    d|g          t                               | dk    d| g                     t          t	          j        |dk    | |g          t                               | dk    |  | g                     |dk    }| dk    }t          |                    d|g          |                    d| g                     t          |                    | |g          |                    |  | g                     d S )Nr   r   rB  r   r   r   r   r   )r   rG   rH   r  r   rI   r	   choose)r   r   
index_daskindex_numpys       r    test_chooser    s:   
	((((;;A
a'''AbiA1v&&		!a%!Q(@(@AAAbiAAw''1q5A2q')B)BCCC QJa%KjA''););QF)C)CDDDj!Q((+*<*<qb!W*E*EFFFFFr"   c            
     Z   t           j                            d          } |                     dd          }t	          j        |d          }t          t                               ||dk     |dk    gd dgd	d
          t	          j        ||dk     |dk    gd dgd	d
                     d S )Nr  r   r  r   r   r   r   c                    | dz   S Nr$   r,   rj  r   r   s      r    r  z test_piecewise.<locals>.<lambda>  
    !a% r"   r$   r%   r   c                    | dz   S r  r,   r  s      r    r  z test_piecewise.<locals>.<lambda>  r  r"   r   rG   rH   r  r   rI   r	   	piecewiser   r   r   s      r    test_piecewiser    s    
)


%
%CRh''A
a'''A
QQQ*?*?)CQ!LL
QQQ*?*?)CQ!LLL    r"   c            
     f   t           j                            d          } |                     dd          }t	          j        |d          }t          t                               ||dk    |dk    gd	 d
 d gdd          t	          j        ||dk    |dk    gd d d gdd                     d S )Nr  r   r  r   r   r   r   r%   c                    | dz   S r  r,   r  s      r    r  z*test_piecewise_otherwise.<locals>.<lambda>  
    QU r"   c                    || z  S r3   r,   r  s      r    r  z*test_piecewise_otherwise.<locals>.<lambda>  
    AE r"   c                    dS rd  r,   r  s      r    r  z*test_piecewise_otherwise.<locals>.<lambda>      1 r"   r$   r  c                    | dz   S r  r,   r  s      r    r  z*test_piecewise_otherwise.<locals>.<lambda>  r  r"   c                    || z  S r3   r,   r  s      r    r  z*test_piecewise_otherwise.<locals>.<lambda>  r  r"   c                    dS rd  r,   r  s      r    r  z*test_piecewise_otherwise.<locals>.<lambda>  r  r"   r  r  s      r    test_piecewise_otherwiser    s    
)


%
%CRh''A
a'''A
UAFO""$9$9;L;LM 	 	
 	
 	UAFO""$9$9;L;LM	
 	
 	
    r"   c                    t                               g d          t                               g d          t                               g d          g} t                               g d          t                               g d          t                               g d          g}t          j        | d          }t          j        |          }t	          t                               | |          t          j        ||                     d S )	N)FFFF)FTFT)FFTTr$   r%   r   r;   r  )r   r   r   r~   rR  r   )r   r   r   rI   r	   select
conditionschoicesd_conditions	d_choicess       r    test_selectr    s    
---..
+++,,
+++,,J 	

!!G
 =F;;;Lg&&Ibii
G,,bii.P.PQQQQQr"   c                    t           j                                                            d          } t          j        | d          }t                               | dk     | dk    | dk    g| | dz  | dz  gd          }t          j        |dk     |dk    |dk    g||dz  |dz  gd          }t          |t          j                  sJ t          ||           d S )	N)r   r  r%   )r  r  r$   r   r   r%   r$   r   default)	r   rG   rH   r   rI   r  r   r   r	   )r   r   res_xres_ys       r    test_select_multidimensionr    s    
	&&|44A
a,,,AIIq1ua!eQU+aQA->IJJEIq1ua!eQU+aQA->JJJEeRX&&&&&eUr"   c                 b   t                               dddt           j        ddg          } t                               |           }t	          j        |           }t	          j        |          }t          t                               |g| g          t	          j        |g|g          d           d S )Nr$   r%   r   r   r   Tr  )r   r   r  r  r   rI   r	   r  )r   md_dd_ms       r    test_select_return_dtyper    s    
!Q261a())A
A
-

C
(3--CbiiaS!!29cUSE#:#:dKKKKKKr"   z/broadcasting in da.select() not implemented yet)reasonc                 &   t                               d          t                               g d          g} dt                               d                              dd          g}t	          j        |           }t	          j        |          }t          t                               | |          t	          j        ||                     t          t                               dgdgdg          t	          j        dgdgdg                     d S )	NT)FTFr$   r~   r;   r   r   r  )r   r   rj   rk   r   rI   r	   r  r	  s       r    test_select_broadcastingr    s    ((4.."((+?+?+?"@"@AJ"))B--''1--.G=,,Lg&&Ibii
G,,bii.P.PQQQbiiaSi1129dVaSSTRU3V3V3VWWWWWr"   c                 $   dD ]\  } }t           j                                                            d|           }t	          j        ||          }t                               |          }t	          j        |          }t          ||           d S N))r   r,   r  r  r  r   r   r   r   )r   rG   rH   r  r   rI   argwherer	   )rJ   r   r   r   x_nzd_nzs         r    test_argwherer$    s    H  vI!!##,,Re,<<M!F+++{{1~~{1~~$ r"   c                 D   t           j                                                            dd                              t
                    } t          j        | d          }t                               |           }t          j        |          }t          ||           d S Nr   r  r   r   r   )
r   rG   rH   r  r  objectr   rI   r!  r	   r   r   r"  r#  s       r    test_argwhere_objr)     s|    
	((((;;BB6JJA
a'''A;;q>>D;q>>DdDr"   c                     t                               t          d                    } t          j        | d          }t                               |           }t          j        |          }t          ||           d S )NzHello worldr:   r   )r   r   r  r   rI   r!  r	   r(  s       r    test_argwhere_strr+  
  sc     	m$$%%A
a%%%A;;q>>D;q>>DdDr"   c            
        t           j                                        } |                     dd          }dx|d<   |d<   t	          j        |d          }|                     dd	                              t           j                  }t	          j        |d
          }|dk    |dk    f||fddddt           j        t           j        fdt           j	        t           j	        ff	D ]|\  }}d|d d d f          |d d d f          f|d d         |d d         ffD ]G\  }}t	          j
        |||          }	t           
                    |||          }
t          |	|
           H}d S )Nr   )r      r   r   r   r   r   r   r   r:   r   r   r  )TT)FFr-  )r   rG   rH   r  r   rI   r  uint8True_False_wherer	   )r   r   r   r   rj  r  r  r  r  w1w2s              r    
test_wherer4    sy   
)


!
!CRh''AAdGag
a'''ARb!!((22A
a%%%A 
QA	
A	28	BI
  B 111d7a4j[9AcrcFAcrcF;KL 	 	FB"a$$B"a$$Bb"	 r"   c                 "   t                               d          } t                               g dt           j                  }t                               g d          }t	          j        |d          }t	          j        |d          }t                               || |          }t	          j        || |          }t          ||           t                               d| |          }t	          j        d| |          }t          ||           d S )Nr   r#  r   )r$   r   r$   r%   r   T)r   int32r   int16r   rI   r1  r	   )	r   y1r  y2r  r2  r3  w3w4s	            r    test_where_scalar_dtyper<  0  s    
A	)))28	,	,B	)))		B	r!	$	$	$B	r!	$	$	$B	"a		B	"a		Bb"	$2		B	$2		Bb"r"   c                    t           j                                        } |                     dd          }t	          j        |d          }|                     dd          }t	          j        |d          }ddt           j        t           j        dd	fD ]P}t	          j        |||          }t                               |||          }t          ||           |r|n|}||u sJ Qd S )
Nr   r  r   r   r   TFr$   r   )
r   rG   rH   r  r   rI   r/  r0  r1  r	   )	r   r   r   r   rj  rU   r2  r3  ex_w1s	            r    test_where_bool_optimizationr?  ?  s    
)


!
!CRh''A
a'''ARh''A
a'''AE28RY15  XaAXXaA"bAU{{{{{ r"   c                    dD ]\  } }t           j                                                            d|           }t	          j        ||          }t                               |          }t	          j        |          }t          |t          |                    sJ t          |          t          |          k    sJ t          t          |                    D ]}t          ||         ||                    d S r  )r   rG   rH   r  r   rI   r1  r   rZ   r[   r   r	   )rJ   r   r   r   x_wd_wr   s          r    test_where_nonzerorC  Q  s    H & &vI!!##,,Re,<<M!F+++hhqkkhqkk#tCyy)))))3xx3s88####s3xx 	& 	&Ac!fc!f%%%%	&& &r"   c                     t          j        dd          } dD ]G}|| i}	 t          j        | dk    fi | # t          $ r}dt	          |          v sJ Y d }~@d }~ww xY wd S )Nr   r   r   ru   r   z1either both or neither of x and y should be given)r   r   r1  ro   r  )r   kwdr   rj  s       r    test_where_incorrect_argsrF  `  s    
!A Q Qq	QHQU%%f%%%% 	Q 	Q 	QF#a&&PPPPPPPPP	Q	Q Qs   7
AAAc                    dD ]\  } }t           j                                                            d|           }t	          j        ||          }t                               |          }t	          j        |          }|j        t                      k    r||	                                k    sJ t          ||           d S r  r   rG   rH   r  r   rI   r  rJ   rY   r   r	   )rJ   r   r   r   x_cd_cs         r    test_count_nonzerorK  k  s    H 
  
 vI!!##,,Re,<<M!F+++q!!q!!9#++--'''''c3
  
 r"   )Nr   r   r   c                   dD ]\  }}t           j                                                            d|          }t	          j        ||          }t                               ||           }t	          j        ||           }|j        t                      k    r||	                                k    sJ t          ||           d S )N)r  r   r   r   r   rH  )r   rJ   r   r   r   rI  rJ  s          r    test_count_nonzero_axisrM  y  s    ? 
  
 vI!!##,,Re,<<M!F+++q$''q$''9#++--'''''c3
  
 r"   c                    t           j                                                            dd                              t
                    } t          j        | d          }t                               |           }t          j        |          }|j	        t                      k    r||                                k    sJ d S t          ||           d S r&  )r   rG   rH   r  r  r'  r   rI   r  rJ   rY   r   r	   r   r   rI  rJ  s       r    test_count_nonzero_objrP    s    
	((((;;BB6JJA
a'''A


1

C

1

C
yEGGckkmm#######sr"   c                   t           j                                                            dd                              t
                    }t          j        |d          }t                               ||           }t          j        ||           }|j	        t                      k    r||                                k    sJ d S t          |                    t           j                  |           d S r&  )r   rG   rH   r  r  r'  r   rI   r  rJ   rY   r   r	   intp)r   r   r   rI  rJ  s        r    test_count_nonzero_obj_axisrS    s    
	((((;;BB6JJA
a'''A


1d
#
#C

1d
#
#C
yEGGckkmm###### 	#**RW%%s+++++r"   c                    t                               t          d                    } t          j        | d          }t                               |           }t          j        |          }||                                k    sJ d S )NzHellow orldr:   r   )r   r   r  r   rI   r  r   rO  s       r    test_count_nonzero_strrU    ss     	m$$%%A
a%%%A


1

C

1

C#++--r"   c                 $   dD ]\  } }t           j                                                            d|           }t	          j        ||          }t                               |          }t	          j        |          }t          ||           d S r  )r   rG   rH   r  r   rI   flatnonzeror	   )rJ   r   r   r   x_fnzd_fnzs         r    test_flatnonzerorZ    s    H    vI!!##,,Re,<<M!F+++q!!q!!%   r"   c                    dD ]\  } }t           j                                                            d|           }t	          j        ||          }t                               |          }t	          j        |          }t          |t          |                    sJ t          |          t          |          k    sJ t          t          |                    D ]}t          ||         ||                    d S r  r   rG   rH   r  r   rI   nonzeror   rZ   r[   r   r	   rJ   r   r   r   r"  r#  r   s          r    test_nonzeror_    s    H ( (vI!!##,,Re,<<M!F+++zz!}}z!}}$T

+++++4yyCII%%%%s4yy!! 	( 	(Ad1gtAw''''	(( (r"   c                    dD ]\  } }t           j                                                            d|           }t	          j        ||          }|                                }|                                }t          |t          |                    sJ t          |          t          |          k    sJ t          t          |                    D ]}t          ||         ||                    d S r  r\  r^  s          r    test_nonzero_methodra    s    H ( (vI!!##,,Re,<<M!F+++yy{{yy{{$T

+++++4yyCII%%%%s4yy!! 	( 	(Ad1gtAw''''	(( (r"   c                    t                      } t                              dt                    }t	          j        |d          }t                              ||           }t	          j        ||           }t          |t          |                    sJ t          |          t          |          cxk    rdk    sn J d S )Nr   r   r$   r   )
rY   r   r   rL  r   rI   unravel_indexr   rZ   r[   )rJ   findices
d_findicesindices	d_indicess        r    test_unravel_index_emptyrh    s    GGExxx%%Hx222Jx//G U33Iig/////y>>S\\....Q........r"   c                    t           j                                        } dD ]Y\  }}}|                     |          }t          j        |d          }|                     t                               |t                    |          }t          j        |d          }t                               |||          }t          j        |||          }	t          |	t          |                    sJ t          |	          t          |          k    sJ t          t          |                    D ]}
t          |	|
         ||
                    t          |j        t          j        |	          ||                    [d S )N))r   r   C)r$   r   rj  )r   r   rj  )r   r   F)r%   r  rj  )r%   r  rk  r$   r   r   r   )r   rG   rH   r   rI   r  prodrL  rc  r   rZ   r[   r   r	   vindexr  r   )r   nindicesrJ   orderr  darrrd  re  rf  rg  r   s              r    test_unravel_indexrq    s\   
)


!
!C# G G% jj}S+++<<S 9 9<II]8A666
""8UE::$Z>>	)T']]333339~~W----s7||$$ 	0 	0AilGAJ////$+dlI67WFFFF/G Gr"   r  c                    | S r3   r,   rz   s    r    r  r  	  s    ! r"   c                    d | D             S )Nc                B    g | ]}t                               |          S r,   )r   r  rT   r   s     r    
<listcomp>z<lambda>.<locals>.<listcomp>
  s"    ,,,Q2::a==,,,r"   r,   rz   s    r    r  r  
      ,,!,,, r"   c                    d | D             S )Nc                6    g | ]}t          j        |          S r,   )r   r  ru  s     r    rv  z<lambda>.<locals>.<listcomp>  s     ,,,Q2:a==,,,r"   r,   rz   s    r    r  r    rw  r"   zarr, chunks, kwargsr   r>   r>   r;   r   r$   r   r>   rj  )dimsro  r   rk  clip)r}  moder   )r~  wrap)rA   r>   r%   )r   r$   )r   r>   r   r>   )r$   r%   r$   )rA   r   r}  rA   rA   r   r   c                   t          d |D                       r-| t          j        t          j        fv rt          j                     | t          j        u r1t                              |          }t          j        ||          }n | |          x}}t          t          j        |fi |t          j        |fi |           d S )Nc              3  J   K   | ]}t                               |          V  d S r3   )r   isscalarrT   r   s     r    rV   z)test_ravel_multi_index.<locals>.<genexpr>'  s,      
'
'a2;;q>>
'
'
'
'
'
'r"   r   )	rJ  r   r  r   rI   rm   skipr	   ravel_multi_index)r  r  r   r   inputs        r    test_ravel_multi_indexr    s    B 
'
'3
'
'
''' G
BM7R,R,R"-jjooc&111gcll"e
S++F++
U--f--    r"   c                    t          j        g dg dg dg          } | | dk                        d                   } |                                 }t                              | j                                                  sJ t          t          	                    |d          t          j	        | d                     d S )	Nrz  r{  )rs   rs   rs   r   r$   r+  r|  r  )
r   rI   r  r   r   r  rJ   rJ  r	   r  )multi_indexmulti_index_nps     r    $test_ravel_multi_index_unknown_shaper  6  s    -III||| DEEK{Q333;;<K ((**N88K%&&**,,,,,
^&99
[v666    r"   c            	     H   t          j        g dd          } | | dk             } t          j        ddgddgddgd	d
gddgddggd          }||dk                        d                   }d| |g}t                              | j                                                  sJ t                              |j                                                  sJ t          j        t          d          5  t          j
        |d           d d d            d S # 1 swxY w Y   d S )N)r%   rs   r   rs   r%   r   r   r$   rs   r   r;   r   r>   r   rA   r   r+  zArrays' chunk sizesr  r  r  )r   rI   r  r   r  rJ   rJ  rm   rn   ro   r  )multi_index1multi_index2r  s      r    *test_ravel_multi_index_unknown_shape_failsr  C  su   =:::Lq 01L=
Q"bAq6Aq6Aq6B8<V  L  !1 6 6A 6 > >?LlL1K88L&''++-----88L&''++-----	z)>	?	?	? ; ;
[z::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   3DDDr}  )noutwrap_in_listc                    t          j        t          d          5  t          j        d|r| d         | d         gn|            d d d            d S # 1 swxY w Y   d S )NzDask types are not supportedr  r   r   r$   )rm   rn   r  r   r  )r}  r  s     r    #test_ravel_multi_index_delayed_dimsr  T  s     
*2P	Q	Q	Q S S
V<%Qd1gtAw%7%7TRRRS S S S S S S S S S S S S S S S S Ss   (AAAc                     t          j        t          d          5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nzonly int indices permittedr  )rU  r%   rp  )rm   rn   r  r   r  r,   r"   r    $test_ravel_multi_index_non_int_dtyper  [  s    	y(D	E	E	E 
 

	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   ?AAc            
        t           j                                                            dd          } t	          j        | d          }t          t          j                            t           j	        | ddd          t	          j        t           j	        |ddd                     t          t          j                            t           j	        | ddd          t	          j        t          j	        |ddd                     t          t          j                            t           j
        | dddd	
          t	          j        t          j
        |dddd	
                     d S )Nr   )r   r   r   )r;   rA   r   r%   r;   r   float32r   )r   rG   rH   r  r   rI   r	   chunkcoarsenr  meanrp   s     r    test_coarsenr  c  s2   
	((((;;A
a'''A
aLL112:bfaQST3V3V   
aLL112:bfaQST3V3V   
!q\\CC

27A1||9===    r"   c                 b   t          j        dd          } t          t          j        t          j        | ddid          t                              ddg                     t          t          j        t          j        | ddid          t                              g d                     d S )	Nr   r   r   r   Ttrim_excessr   )r   r~      )r   rj   r	   r  r   r  r   r  rz   s    r    test_coarsen_with_excessr  s  s    
	"QAbjQF===rxxA?O?OPPP

261q!f$777
22233    r"   c                    g | ]}|fd z  	S r  r,   r  s     r    rv  rv  |  s    #D#D#DQD1H#D#D#Dr"   rB      c           	     N   t          j        t                              |           d          }|                    t          |                     }t          t          j        t          j        |ddid          t          j        t          j        |ddid                     d S )Nr   r   r   r   Tr  )r   rj   r   r  r  rY   r	   r  )r   rz  r{  s      r    test_coarsen_bad_chunksr  |  s    	266&>>!	,	,	,B	E&MM	"	"B

2622wD999

2622wD999    r"   zchunks, divisor)
)r   r$   )r   r%   ))r$   r$   r$   r%   )r  r   )r   r   r   rQ  r   r   )r  rA   ))r   r   r   (   r%   r   ))r   r   r   *   rQ  r   rB  ))r   r   r   /   rQ  r   r   ))r%   r   r   r  rQ  r   r;   c                    ddl m}  | |          t                                        |z  dk    }t                              t                                         |z  dk              d         }t                    t                     k    sJ  fd|D             fd|D             k    sJ t                                        dk                                    sJ t                    t                     dz   k    sJ |                                dv sJ |                                dk    r|d         dk    sJ d S d S )Nr   )aligned_coarsen_chunksc                     g | ]
}|         S r,   r,   )rT   idxr   s     r    rv  z/test_aligned_coarsen_chunks.<locals>.<listcomp>  s    000CF3K000r"   c                     g | ]
}|         S r,   r,   )rT   r  aligned_chunkss     r    rv  z/test_aligned_coarsen_chunks.<locals>.<listcomp>  s+     5 5 5 #s5 5 5r"   r$   r   rs   )dask.array.routinesr  r   r   r1  r  r  r[   )r   divisoraccany_remaindersvalid_chunksr  s   `    @r    test_aligned_coarsen_chunksr    s     BAAAAAS))Nhh~..8Q>N88RXXf--7A=>>qAL ~#f++----0000<000 5 5 5 5'35 5 5     HH^$$q(--/////~#f++/11116))))q  b!Q&&&& ! &&r"   c            
     j   t           j                                        } |                     dd          }t	          j        |d          }|                     dd          }t	          j        |d          }t          t                               |dd	d
          t	          j        |dd	d
                     t          t                               |dd	d	
          t	          j        |dd	d	
                     t          t                               |dd	d
          t	          j        |dd	d
                     t          t                               |d	d	d
          t	          j        |d	d	d
                     t          t                               |g dd	d
          t	          j        |g dd	d
                     t          t                               |g dd	d
          t	          j        |g dd	d
                     t          t                               |t          dd          d	d
          t	          j        |t          dd          d	d
                     t          t                               |dgdz  dgdz  z   |d
          t	          j        |dgdz  dgdz  z   |d
                     t          t                               |d|d         d
          t	          j        |d|d         d
                     t          t	          j        |g dd	d
          t	          j        |g dd	d
                    sJ t          j        t                    5  t	          j        |ddgd	d
           d d d            n# 1 swxY w Y   t          j        t                    5  t	          j        |dgd	d
           d d d            n# 1 swxY w Y   t          j        t                    5  t	          j        |dgd	d
           d d d            d S # 1 swxY w Y   d S )Nr   rv  r   r   r   rp  r   r   rs   r+  r   r   r$   rt   r%   r   r   )r%   r   rA   rA   rt   rt   r;   r%   ry   )r   rG   rH   r  r   rI   r	   insertr  r
   rm   rn   r  r   )r   r   r   r   r   s        r    test_insertr    s   
)


!
!CRh''A
a'''ARg&&A
a'''Abii1bqi))29Q2A+F+F+FGGGbii1bri**BIaBR,H,H,HIIIbii1bqi))29Q2A+F+F+FGGGbii2ri++RYq"br-J-J-JKKKbii999bqi1129Q			2TU3V3V3VWWW
		!)))2A	66
	!)))2A666   
		!U1a[["1	--ryE!QKKRS/T/T/T   
		!aS1WsQw&	22
	!aS1WsQw&222   bii1adi++RYq!QqT-J-J-JKKK
	!)))2A666
	!)))2A666    
 
*	+	+ ) )
	!aVRa(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
y	!	! & &
	!aS"1%%%%& & & & & & & & & & & & & & & 
y	!	! ' '
	!aS"2&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's6   ,NNN7OO!$O!P((P,/P,c                    t           j                                        } |                     dd          }t	          j        |d          }|                     dd          }t	          j        |d          }|                     dd          }t	          j        |d          }t          t                               ||d 	          t	          j        ||d 	                     t          t                               ||d 	          t	          j        ||d 	                     t          t                               ||d 	          t	          j        ||d 	                     t          t                               ||d
	          t	          j        ||d
	                     t          t                               ||d	          t	          j        ||d	                     t          t                               ||d	          t	          j        ||d	                     t          t                               ||d	          t	          j        ||d	                     t          t                               |dd 	          t	          j        |dd 	                     t          t                               |dd
	          t	          j        |dd
	                     t          t                               |dd	          t	          j        |dd	                     t          j	        t                    5  t	          j        |dd	           d d d            n# 1 swxY w Y   t          j	        t                    5  t	          j        |dd	           d d d            n# 1 swxY w Y   t          j	        t                    5  t	          j        |dd
	           d d d            d S # 1 swxY w Y   d S )Nr   rv  r   r   r   )r   r   r   rp  r+  r   rt   r$   rs   )

r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r%   ry   r  )r   rG   rH   r  r   rI   r	   rK  rm   rn   r   ro   )r   r   r   r8  r  y0b0s          r    test_appendr    sE   
)


!
!CRh''A
a'''A 
bw	'	'B	r&	)	)	)B 
bw	'	'B	r&	)	)	)B bii14i((")Aqt*D*D*DEEEbii2Di))29Q+F+F+FGGGbii2Di))29Q+F+F+FGGG bii2Ai&&	!Ra(@(@(@AAAbii2Bi''1br)B)B)BCCC bii2Ai&&	!Ra(@(@(@AAAbii2Bi''1br)B)B)BCCC 
		!&T	22
	!&T222   
		!&Q	//1>OVW1X1X1X   
		!&Q	//1>OVW1X1X1X  
 
y	!	! 0 0
	!&Q////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	y	!	! 1 1
	!&R00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
z	"	" ( (
	!YQ''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s6   ?M##M'*M'N++N/2N/O44O8;O8c                    t           j                                                            dd          } t	          j        | d          }t          t                               t                               | ddgdd          dgdd          t	          j        t	          j        |ddgdd          dgdd                     d S )	Nr   ri   r   r   r   r$   rs   r+  )r   rG   rH   r  r   rI   r	   r  )r   rU   s     r    test_multi_insertr  	  s    
	((&(99A
a'''A
		"))A1vr)22QC!	DD
	")A1vr222QC!DDD    r"   c                    t           j                                                            dd          } t	          j        | d          }t          t                               | dd          t	          j        |dd                     t          t                               | dd	          t	          j        |dd	                     t          t                               | d
d          t	          j        |d
d                     t          t                               | d	d          t	          j        |d	d                     t          t                               | g dd          t	          j        |g dd                     t          t                               | g dd          t	          j        |g dd                     t          t                               | t          dd          d          t	          j        |t          dd          d                     t          t                               | t          ddd	          d          t	          j        |t          ddd	          d                     t          t                               |ddgd          t	          j        |ddgd                     t          j
        t                    5  t	          j        |dgd           d d d            n# 1 swxY w Y   t          j
        t                    5  t	          j        |dgd           d d d            d S # 1 swxY w Y   d S )Nr   rv  r   r   r   r   r+  r   rs   r   r$   rt   r  )r%   r   rA   rA   r;   r%   ry   )r   rG   rH   r  r   rI   r	   deleter  rm   rn   r   r  s     r    test_deleter  	  si   
	((((;;A
a'''Abii11i%%ryAA'>'>'>???bii12i&&	!QR(@(@(@AAAbii11i%%ryAA'>'>'>???bii2Bi''1br)B)B)BCCCbii9991i--ryIIIA/N/N/NOOO
		!\\\	**
	!\\\***   bii5A;;Qi//1eAqkkPQ1R1R1RSSS
		!U1b"%%A	..	!U1b"=M=MTU0V0V0V   biiAq6i**BIa!Qa,H,H,HIII	y	!	! " "
	!aSq!!!!" " " " " " " " " " " " " " " 
y	!	! # #
	!aSr""""# # # # # # # # # # # # # # # # # #s$   )LLL2MMMc                    t          j        t                              dt          j                  d          } t          j        t                              dt          j                  d          }t          j        t                              dt          j                  d          }t                              dt          j                  }t          j        ||          t          j        k    sJ t          j        | ||          t          j        k    sJ t          j        |t          j                  t          j        k    sJ t          j        |t          	                    t          j                            t          j        k    sJ t          j        ||          t          j        k    sJ t          j        d|          t          j        k    sJ t          j        d|           t          j        k    sJ t          j        t                              d          |          t          j        k    sJ t          j        t                              dt          j                  |          t          j        k    sJ t          j        d|           t          j        k    sJ t          j        t                              dt          j                  d          }t          j        | |          t          j        k    sJ d S )Nr   r  r   r$   rU  r,   gZbti)
r   rI   r   r   r  r7  r  result_typefloat64r   )r   r   rU   r   s       r    test_result_typer  *	  s.   
bgga,,T:::A
bgga**4888A
bgga**4888A
2:A>!Q28++++>!Q""bj0000>!RZ((BJ6666>!RXXbj1122bj@@@@>!Q2:---->!Q28++++>#q!!RZ////>"((1++q))RX5555>"''"bh//33rx????>%##rz1111
bggb"*--b999A>!Q2:------r"   c           
         dddddddddd	d	d
dddddddd	fdfdfd| D             }fd| D             }d |D             }d t          ||          D             }||fS )Nr   r>   r   r   r$   r%   r   )	r   r   rU   r   rj  fgh*r?   )r%   r   r$   )r%   r   r%   )r;   r$   rt  r  r   c                :    t          fd| D                       S )Nc              3  (   K   | ]}|         V  d S r3   r,   )rT   rU   _dimensionss     r    rV   zE_numpy_and_dask_inputs.<locals>._shape_from_string.<locals>.<genexpr>[	  s'      //[^//////r"   rY   )sr  s    r    _shape_from_stringz2_numpy_and_dask_inputs.<locals>._shape_from_stringZ	  s&    ////Q//////r"   c                :    t          fd| D                       S )Nc              3  (   K   | ]}|         V  d S r3   r,   )rT   rU   r  s     r    rV   zF_numpy_and_dask_inputs.<locals>._chunks_from_string.<locals>.<genexpr>^	  s'      ++AWQZ++++++r"   r  )r  r  s    r    _chunks_from_stringz3_numpy_and_dask_inputs.<locals>._chunks_from_string]	  s&    ++++++++++r"   c                &    g | ]} |          S r,   r,   )rT   r  r  s     r    rv  z*_numpy_and_dask_inputs.<locals>.<listcomp>`	  s%    888  ##888r"   c                &    g | ]} |          S r,   r,   )rT   r  r  s     r    rv  z*_numpy_and_dask_inputs.<locals>.<listcomp>a	  s%    999!!!$$999r"   c                p    g | ]3}t           j                                                            |          4S r,   )r   rG   rH   )rT   r  s     r    rv  z*_numpy_and_dask_inputs.<locals>.<listcomp>c	  s4    CCCq&&((//22CCCr"   c                @    g | ]\  }}t          j        ||           S )r   )r   rI   )rT   r   rU   s      r    rv  z*_numpy_and_dask_inputs.<locals>.<listcomp>d	  s+    OOO1q+++OOOr"   )r\   )	
input_sigsshapesr   	np_inputs	da_inputsr  r  r  r  s	        @@@@r    _numpy_and_dask_inputsr  ?	  s     
 
K 
 
G0 0 0 0 0, , , , , 9888Z888F9999j999FCCFCCCIOOIv8N8NOOOIir"   einsum_signature)zabc,bad->abcdzabcdef,bcdfg->abcdegea,fb,abcd,gc,hd->efghzab,baaza,a->za,a->aza,aza,bza,b,cr   zba,bzba,b->zdefab,fedbc->defaczab...,bc...->ac...za...azabc...->cba...z...ab->...aza...a->a...z...abc,...abcd->...dzab...,b->ab...zaa->az
ab,ab,c->cz
aab,bc->aczaab,bcc->aczfdf,cdd,ccd,afe->aezfff,fae,bef,def->abdc                   |                      d          d                             dd                               d          }t          |          \  }}t          j                    5  t          j        dt          j                   t          t          j
        | g|R  t          j
        | g|R             d d d            d S # 1 swxY w Y   d S )N->r   z...r  ,r1  r2  )splitreplacer  r7  r8  r9  r   r   r	   r   einsum)r  r  r  r  s       r    test_einsumr  i	  s   F "''--a088DDJJ3OOJ1*==Iy		 	"	" 
 
h1FGGGGI&3333I&3333	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   (ACC
C
optimize_opts))TF)greedyF)optimalFc                l   d}|                     d          d                              d          }t          |          \  }}| \  }}t          t          j        |g|R d|it          j        |g|R d|i           t          t          j        |g|R d|it          j        |g|R d|i           d S )Nr  r  r   r  optimizer  r  r	   r   r  r   )r  sigr  r  r  opt1opt2s          r    test_einsum_optimizer  	  s     #C4#))#..J1*==IyJD$
	#1	111D11
	#1	111D11  
 
	#1	111D11
	#1	111D11    r"   ro  )rj  rk  AKc                    d}|                     d          d                              d          }t          |          \  }}t          t          j        |g|R d| it          j        |g|R d| i           d S )Nr  r  r   r  ro  r  )ro  r  r  r  r  s        r    test_einsum_orderr  	  s    
"C4#))#..J1*==Iy
	#/	/////31X1X1X1XRW1X1X    r"   casting)noequivsafe	same_kindunsafec                    d}|                     d          d                              d          }t          |          \  }}t          t          j        |g|R d| it          j        |g|R d| i           d S )Nr  r  r   r  r  r  )r  r  r  r  r  s        r    test_einsum_castingr   	  s    
"C4#))#..J1*==Iy
	#3	333733
	#3	333733    r"   split_everyc                    t          d          \  }}t          t          j        dg|R  t	          j        dg|R d| i           d S )Nr   r  )r  r	   r   r  r   )r  r  r  s      r    test_einsum_split_everyr  	  sa    1#66Iy
	#"	"""BIc$WI$W$W$W;$W$W    r"   c                     t          d          \  } }t          j        t                    5  t	          j        dg|R ddd d d d            d S # 1 swxY w Y   d S )Nr   r$   r%   )foobar)r  rm   rn   r  r   r  )_r  s     r    test_einsum_invalid_argsr  	  s    )#..LAy	y	!	! 1 1
	#0	00qa00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   AAAc                    t           j                                        } |                     d          }|                     d          }|                     d          }|                     d          }t          j        |d          }t          j        |d          }t          j        |d          }t          j        |d	          }t                               d
|||          }	t          j        d
|||          }
t          |	|
           |
|z  }t                               d||||          }	t          j        d||||          }
t          |	|
           t          |	|           d S )Nr$   r   r;   r=   r  r   r$   r?   r   r   r   r   r?   r   r   r   z	ijk,kl,jlzijk,kl,jl,i->ir   rG   rH   r   rI   r  r	   r   r   r   rU   r   r`  r  rJ  r  np_resda_resmul_ress               r    $test_einsum_broadcasting_contractionr  	  sG   
)


!
!C

9A

6A

6A

2A
-"5
6
6
6C
-"2
3
3
3C
-"2
3
3
3C
-6
+
+
+CYY{Aq!,,FY{Cc22FffqjGYY'Aq!44FY'c3<<Ffffgr"   c                    t           j                                        } |                     d          }|                     d          }|                     d          }|                     d          }t          j        |d          }t          j        |d          }t          j        |d          }t          j        |d	          }t                               d
|||          }	t          j        d
|||          }
t          |	|
           |
|z  }t                               d||||          }	t          j        d||||          }
t          |	|
           t          |	|           d S )N)r$   r$   r   r;   r=   r  r   r   )r$   r$   r?   r   r   r  r  r  z
abjk,kl,jlzabjk,kl,jl,ab->abr  r  s               r    %test_einsum_broadcasting_contraction2r  	  sI   
)


!
!C

<  A

6A

6A

6A
-"8
9
9
9C
-"2
3
3
3C
-"2
3
3
3C
-6
+
+
+CYY|Q1--FY|S#s33FffqjGYY*Aq!Q77FY*Cc3??Ffffgr"   c                 &   t           j                                        } |                     d          }|                     d          }|                     d          }|                     d          }t          j        |d          }t          j        |d          }t          j        |d          }t          j        |d	          }t                               d
||||          }	t          j        d
||||          }
t          |	|
           d S )Nr
  )r;   r$   r>   r  r  r  r   )r   r$   r   r  r  zajk,kbl,jl,ab->abr  )r   r   r   rU   r   r`  r  rJ  r  r  r  s              r    %test_einsum_broadcasting_contraction3r  
  s    
)


!
!C

9A

9A

6A

6A
-"5
6
6
6C
-"5
6
6
6C
-"2
3
3
3C
-6
+
+
+CYY*Aq!Q77FY*Cc3??Fffr"   r   returnedc                    t          j        | d          }t                              | |          }t          j        ||          }t	          ||           d S )Nr%   r   )r  )r   rI   r   averager	   )r   r  r`  np_avgda_avgs        r    test_averager  
  sW     -!
$
$
$CZZHZ--FZh///Fffr"   c                    t          j        | d          }t          j        |d          }t          r.t                              | d          }t          ||           d S d S )Nr%   r   T)r0  )r   rI   r  r   r   r	   )r   r`  r  r  s       r    test_average_keepdimsr!  
  sg    
-!
$
$
$CZd+++F "A--&&!!!!!" "r"   r0  c           	        t                               d                              d          }t          j        |d          }t                               ddg          }t          j        |d          }t          j        ||d|           }t          r.t          |t                               ||d|                      d S | s-t          |t                               ||d	                     d S d S )
Nr>   rR  r%   r   r  r  r$   )rm  r   r0  )rm  r   )	r   rj   rk   r   rI   r   r  r   r	   )r0  r   r`  rm  	d_weightsr  s         r    test_average_weightsr$  )
  s    
		!V$$A
-!
$
$
$Chhd|$$Gga000IZYQJJJF B&"**Qa(*SSTTTTT B&"**Qa*@@AAAAAB Br"   c                    t          j        dd          } t          j        t                    5  t          j        | g d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | t          j        |                     	                                 d d d            d S # 1 swxY w Y   d S )Nr   r%   r   r  )rm  )
r   rj   rm   rn   r  r  r   r:  
zeros_liker   )r`  s    r    test_average_raisesr'  9
  s5   
)Bq
!
!
!C	y	!	! + +

3			****+ + + + + + + + + + + + + + + 
n	%	% > >

3c 2 2333;;===> > > > > > > > > > > > > > > > > >s#   AAA9;CCCc                 :   t          j        t                              ddg          d          } t                              |           du sJ t          j        t                              ddg          d          } t                              |           du sJ d S )Nr$   r%   Fy       @        T)r   rI   r   r   iscomplexobj)r   s    r    test_iscomplexobjr*  C
  s    
bhh1v&&**A??1&&&&
bhh6{++Q//A??1%%%%%%r"   c            	     ~   t           j                                                            d          } dD ]}t	          j        | ||f          }t                               t	          j        |                                          t                               |                     sJ t                               t	          j	        |                                          t           	                    |                     sJ dD ]}t                               t	          j        ||                                          t                               | |                    sJ t                               t	          j	        ||                                          t           	                    | |                    sJ d S )Nr   r   )ir  iiiiiirs   r$   r;   r   r>   rA   r   r   r   rB  r   r   r  )
r   rG   rH   r  r   rI   r   triur   tril)r  chkdAr   s       r    test_tril_triur1  K
  s[   
	//99A H H]1sCj)){{272;;..00"''!**====={{272;;..00"''!**=====
 	H 	HA0 ;;rwr1~~5577AGGGGG;;rwr1~~5577AGGGGGG3	HH Hr"   c                    t           j                                                            ddd          } t	          j        | d          }t          t	          j        |          t                               |                      d S )Nr   r   )r   r   r   )r   r   r   r   )r   rG   rH   r  r   rI   r	   r-  r  r0  s     r    test_tril_ndimsr4  o
  sc    
	((B==A	q	+	+	+Bbgbkk2771::&&&&&r"   c                    t           j                                                            ddd          } t	          j        | d          }t          t	          j        |          t                               |                      t          t	          j        |          t                               |                      d S )Nr   r   )r   #   r   r   )	r   rG   rH   r  r   rI   r	   r-  r.  r3  s     r     test_tril_triu_non_square_arraysr7  u
  s    
	((B99A	q	(	(	(Bbgbkk2771::&&&bgbkk2771::&&&&&r"   zn, k, m, chunks))r   r   r   r   )r   r$   r   r   )r   rs   r   r   )r   r   r   r$   c                0   t          j        | |||          d         }t                              | ||          d         }t          j        dk    r)t          |                    |j                  |           nt          ||           t          j        | |||          d         }t                              | ||          d         }t          j        dk    r*t          |                    |j                  |           d S t          ||           d S )N)r<  r   r  r   r   )r<  r   r  win32)	r   tril_indicesr   sysplatformr	   r  r   triu_indices)r<  r   r  r   rn  r   s         r    test_tril_triu_indicesr>  |
  s   
 _qA6:::1=Fa1--a0H
|wMM(.))	
 	
 	
 	

 	&(###_qA6:::1=Fa1--a0H
|wMM(.))	
 	
 	
 	
 	

 	&(#####r"   )
__future__r   r  r   r;  r7  numbersr   rm   r  dask.delayedr   importorskipr   
dask.arrayr   r   dask.array.numpy_compatr   r   dask.array.utilsr	   r
   r!   r(   r-   markparametrizer9   rY   rO   r  combinations_with_replacementre   rq   rv   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r(  r8  r;  r?  rH  rL  rN  rT  exprj   re  rl  r  r6  rp  rr  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r   r$  r&  r+  r<  r?  rB  rO  rV  r^  rb  rf  rj  rl  ro  rr  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  xfailr  r$  r)  r+  r4  r<  r?  rC  rF  rK  rM  rP  rS  rU  rZ  r_  ra  rh  rq  r  rI   rH  rk   tolistr  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r!  r$  r'  r*  r1  r4  r7  r>  r,   r"   r    <module>rL     s   " " " " " "         



                     V!!       9 9 9 9 9 9 9 9 1 1 1 1 1 1 1 1# # #  ; ; ;
 %O%O%OPP  QP %O%O%OPP	%%''%	 	
 
	 	 QP
 %O%O%OPPD/	/UWWdFI}=q	
 	
     QP0  "H H H* * *: : :  j*%=>>":":":;;J J <; ?>JP P P6 6 6 	2	2		&!	&!	&!	&"	&&!"	  5577D&)]"STT  UT > &&	FF+fi-@66BRS  5577D&)]"STT& & UT	 
&2 *""" 	" 	"!!	"
 	&%%" 	" 	" 	!  " 	%$$" 	)((" 	" 	!  " 	#""" 	(''" 	,++"  	"!!!"" 	%$$#"$ 	'&&%"& 	+**'"( 	0//)"* 	&%%+", 	)((-". 	+**/"0 	0//1"2 	3223"6 	7"8 	1009": 	+**;"< 	+**="> 	-,,?"@ 	A@@A"B 	FEEC"% %L3 3M% %L3.U U U$ 
XXX L L L #K#K#KLLF F MLFF F F"= = =" " "
 
 
 =:J*KLL3 3 ML3" )M;K+LMM
. 
. NM
. /	!!5)	!!5)	..6	EEuM	))40	 	 Aq)L!+<|R>PQ  	 	 	* 	112	@@A 	

  	uuww	q	t	w	y!	 	T T	 	 0T 	t	q	q	q	r	 	0 0	 	0 Aq)L!+<|R>PQ  iii((8 8 )(	 
8 iii((4 4 )(46 iii((3 3 )(36# # #
 5("344+tTlQFaVaQRVDT-UVVP P WV 54P    """---"""	ryy}}--rvvbiimm/D/DEvN	RVVBIIbMM223V<	ryy}}--/4   1v..
 
 /.! "
(& & &  
""""*55
11 G G G! ! !  * 	QA
a!a			q2r(A.			q"C"C"CQG			q#D#D#D"EqI			qAq6C9r2hR"I6R
 
 &'!2330 0 43
 
0X X X
8 8 8    V V V
 
 
@3 3 3 	YYY	aS		RXX1vh 	XRX1vh 
))d	999+		%	999+		%  3 3!  3 T5M22dE]33,,,77%77  87 87 43 32@ T5M22dE]33  43 32BJ J J T5M22T5M22&!--* * .- 32 32*< T5M22T5M22* * 32 32*<* * *  H H H.  *H H H  ; ; ;F F FI I I$I I I:Q Q Q7 7 7  &  ,4 4 4* * * %77)E4=995$-88    98 :9 87 < "c++2wi00T]UDMFF#3h5GH    	  10 ,+ & "c++2wi00%T]UDMFF#3h5GH  T]UDMFF#3h5GH  D%=11  21	 	  10 ,+$ 4-88  98   FF#344";";";<<!A!A!ABBD D CB =< 54D        "?"?"?@@$ $ A@$ CCC  T5M22    32  &( ( (44 4 4= = =$ !L!L!LMM< < NM<$ T5M22!7!7!788( ( 98 32(2 4.11  21F F F4 4 44 4 4  iABIq 9BIryRS;TU ' '	 '"
U 
U 
U; ; ; 4  4  4F1 1 1$1 1 1* * *R R R
& 
& 
&G G G	 	 	  0R R R   L L L KLLX X MLX    
 
 
  2    $& & &Q Q Q      !8!8!899    :9 
 
 
 !8!8!899, , :9,$
  
  
      ( ( (( ( (	/ 	/ 	/G G G8 ,,,,


	 	  ))YYY	6)E)E)EF
))YYY	6)E)E)EF
))YYY	DDf6$B$B$BC
))YYY	6@P)Q)Q)QR
))fdd37778
))YYY				*FDDis4S4S4ST IIaLL  Aq))0022Dis+++	
 aVdDDf---.
aVq!fq!fq!fq!f5	6dd
>S>S>ST# , - 	 	@ 
 
 
; ; ;" -"-B"8"8''1b'PQ:R:R:R!STT%77S S 87 UTS

 
 
      #D#DeeBmm#D#D#DEE  FE    ' ' '0%' %' %'P.( .( .(b  # # #6. . .*'  '  ' T   ! !D

 

E! !D

 KKK   $ "6"6"677  87 $R$R$RSS  TS q	22  321 1 1  0  0  " ryy}}biill.B.B6.J.JKLLdE]33  43 ML ryy}}biill.B.B6.J.JKLL" " ML" eT]33B B 43B> > >& & &!H !H !HH' ' '' ' ' LLL $ $	 $ $ $r"   