
    biS                   %   d dl mZ d dl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  ej0                         r e	j2                  dd	
       d Zd Zd Ze	j:                  j=                  dg d      d        Ze	j:                  j=                  dg d      e	j:                  j=                  d e         e        fddddg      d               Z!e	j:                  j=                  dg d      e	j:                  j=                  d e" ejF                   e        ddddgd                  d               Z$d Z%d Z&d  Z'd! Z(e	j:                  j=                  dd"d#g      e	j:                  j=                  d$g d%      d&               Z)d' Z*d( Z+e	j:                  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-d0ifg      e	j:                  j=                  d$ e        ddddg      d1               Z,e	j:                  j=                  d2i d3d4id3d5id3d6ig      e	j:                  j=                  d$ e        dddg      d7               Z-e	j:                  j=                  d8g 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g dWg dX      dY        Z.dZ Z/e	j:                  j=                  d3g d[      d\        Z0e	j:                  j=                  d]g d^      d_        Z1d` Z2da Z3db Z4dc Z5e	j:                  j=                  ddddeg      df        Z6e	j:                  j=                  ddddeg      dg        Z7e	j:                  j=                  dhdidj dkgdldm dkgdndo dkgdpdq dkgdrds d	gg      e	j:                  j=                  dtdud gdud.gdudgdud/gg      dv               Z8e	j:                  j=                  dwdxdy gdzd{ gdnd| gg      e	j:                  j=                  d}du e        gdud gdud~gdudgdudgg      d               Z9e	j:                  j=                  ddudgdud gdud.gdudgdud/gg      d        Z:e	j:                  j=                  ddud gdud.gdudgdud/gg      e	j:                  j=                  dg d6      d               Z;e	j:                  j=                  dg d6      d        Z<e	j:                  j=                  dg d6      d        Z=d Z>e	j:                  j=                  d$ddg      e	j:                  j=                  dddgd d gd.dgddggg      d               Z?e	j:                  j=                  dg dg dg dg dg dg dg dg dduej                  ej                  d            ej                  ej                  d            fd0gdudej                  ej                  d            fd0gduej                  ej                  d            fd/gg      e	j:                  j=                  dd.dg      d               ZBd ZCe	j:                  j=                  dej!                  g dej                        ej!                  g dej                        g      d        ZFd ZGd ZHe	j:                  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:                  j=                  dddg      d               ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPe	j:                  j=                  ddddddg d6fdd gfdej!                  d d.gg      fd ej                   d d.gg      fg d6gdfej!                  g d6g      df ej                   g d6g      dfg      d        ZQe	j:                  j=                  dd	dkg      e	j:                  j=                  dd	dkg      e	j:                  j=                  ddd g      e	j:                  j=                  ddkd	g      dĄ                             ZRe	j:                  j=                  dd	dkg      e	j:                  j=                  dd	dkg      dń               ZSdƄ ZTe	j:                  j=                  dd	dkg      e	j:                  j=                  dd	dkg      e	j:                  j=                  dddg      dɄ                      ZUe	j:                  j=                  dd	dkg      e	j:                  j=                  dd	dkg      dʄ               ZVd˄ ZWd̄ ZXd̈́ ZYd΄ ZZdτ Z[dЄ Z\dф Z]d҄ Z^dӄ Z_dԄ Z`dՄ Zadք Zbdׄ Zcd؄ Zddل Zedڄ Zfe	j:                  j=                  ddkd	g      e	j:                  j=                  ddkd	g      e	j:                  j=                  ddkd	g      dބ                      Zge	j:                  j=                  dddg      e	j:                  j=                  dddgddgddgddgg      d               Zhe	j:                  j=                  dddg      e	j:                  j=                  dd dgg      e	j:                  j=                  dddgddgddgddgg      e	j:                  j=                  dddgddgddgddgg      e	j:                  j=                  dd	dkg      d                                    Zie	j:                  j=                  dd	dkg      d        Zjd Zke	j:                  j=                  d]ddg      e	j:                  j=                  dg d      e	j:                  j=                  d-g d      d                      Zld Zmd Zne	j:                  j=                  d$g d      d        Zoe	j:                  j=                  d$g d      e	j:                  j=                  dd	dkg      d               Zpd Zqd Zrd Zse	j:                  j=                  d-g d      d         Zte	j:                  j=                  dd	dkg      e	j:                  j=                  d-g d      d               Zue	j:                  j=                  d$d~dg      d        Zvd Zwd Zxd Zye	j:                  j=                  d	ej                  ej                  d fej                  ej                  d.fej                  ej                  dfg      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 Zd Zd Ze	j:                  j                  d      d        Zd Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% Ze	j:                  j=                  d-g d&      d'        Zd( Ze	j:                  j=                  d-g d&      d)        Zd* Zd+ Zd, Zd- Zd. Zd/ Ze	j:                  j=                  d0d1 d2 d3 ejB                  ejD                  g      e	j:                  j=                  d4g d5g d6gd5 ed7d89      fg d5g d6gd: ed7d;9      fg d5g d6gd. edd<=      fg d5g d6gd5 ed>d?=      fg d5gd edd89      fg d5g d6g d@gdA edBd89      fej                  dC      jI                  ddd.      jK                         dD edBd89      fd.ddggd edEF      fd.ddgd.dgddgddCgddGgggd edHF      fg	      dI               ZdJ ZdK Ze	j:                  j=                  dL ejD                  ddg       eddgdM      g      e	j:                  j=                  dNdkd	g      dO               ZdP ZdQ ZdR Ze	j:                  j=                  d] edSdT      D  cg c]  } | fdz  
 c}       dU        Ze	j:                  j=                  dVg dW      dX        ZdY ZdZ Zd[ Zd\ Zd] Zd^ Ze	j:                  j=                  d_g d`      da        Zdb Ze	j:                  j=                  dcg dd      de        Ze	j:                  j=                  dfg dg      dh        Ze	j:                  j=                  dig dj      dk        Ze	j:                  j=                  dlddg      dm        Zdn Zdo Zdp Zdq Zdr Ze	j:                  j=                  dsej                  d      ej                  dC      jI                  d      g      e	j:                  j=                  dtd	dkg      du               Ze	j:                  j=                  dsej                  d      ej                  dC      jI                  d      g      dv        Ze	j:                  j=                  dwdkd	g      dx        ZÐdy ZĐdz ZŐd{ ZƐd| Zǐd} Ze	j:                  j=                  d~g d      d        Zɐd Zyc c} w (      )annotationsN)Number)delayednumpy)NUMPY_GE_200	AxisError)	assert_eq	same_keysz'parametrize using unsupported functionsT)allow_module_levelc                 b   t         j                  dd      } t        j                  ddd      }t        t        j                  |dd      t         j	                  | dd             t        j                  dd	
      } t        j                  |       }t        |t        j                        sJ y )N   i4dtype   chunksr   i8)ndminr   )d   r   
   r   )nponesdar	   array
isinstanceArray)xdys      Y/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_routines.py
test_arrayr#      s    
A
!4(Abhhq.!40PQ 	$A
Aa"""    c                     g d} t        j                  |       }t        |t         j                        sJ t	        | |       y )N)r         r   )r   r   r   r   r	   r   dxs     r"   test_array_return_typer*   $   s2    A	!Bb"((###ar$   c                     dt         j                  j                  j                  v sJ dt         j                  j                  j                  v sJ y )Nz*This docstring was copied from numpy.arrayzCreate an array.)r   routinesr   __doc__ r$   r"   test_derived_docstringsr/   ,   s>    72;;;L;L;T;TTTT!2!2!:!::::r$   funcname)
atleast_1d
atleast_2d
atleast_3dc                n    t        t        |       }t        t        |       } |       } |       }||k(  sJ y N)getattrr   r   )r0   np_funcda_funcnp_r_nda_r_ns        r"   test_atleast_nd_no_argsr;   1   s6    b(#Gb(#GYFYFVr$   zshape, chunks)   r'   )r=      r'   r   )r=   r@      r'   r   r=   )r=   r@   rC   r   r'   r   r=   r   c                   t         j                  j                         j                  |      }t        j                  ||      }t        t         |       }t        t        |       } ||      } ||      }t        ||       y Nr   )r   randomdefault_rngr   
from_arrayr6   r	   )	r0   shaper   np_ada_ar7   r8   np_rda_rs	            r"   test_atleast_nd_one_argrQ   <   se     99  "))%0D==f-Db(#Gb(#G4=D4=DdDr$   zshape1, shape2r<   r?   rB   rE   r'   c                Z   t         j                  j                         j                  |      }t        j                  |t        d |D                    }t         j                  j                         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        ||        y )Nc              3  &   K   | ]	  }|d z    ywr'   Nr.   .0cs     r"   	<genexpr>z+test_atleast_nd_two_args.<locals>.<genexpr>_        /G1Q/G   r   c              3  &   K   | ]	  }|d z    ywrT   r.   rU   s     r"   rX   z+test_atleast_nd_two_args.<locals>.<genexpr>b   rY   rZ   )r   rI   rJ   r   rK   tupler6   typelenzipr	   )r0   shape1shape2np_a_1da_a_1np_a_2da_a_2np_a_nda_a_nr7   r8   r9   r:   rO   rP   s                  r"   test_atleast_nd_two_argsrh   T   s    YY""$++F3F]]6%/G/G*GHFYY""$++F3F]]6%/G/G*GHFfFfFb(#Gb(#GfFfF<4<'''v;#f+%%%&&) 
d$r$   c                    t         j                  d      j                  d      } t        j                  | d      }t        |j                  d      | j                  d             t        |j                  d      |j                  d            sJ t        |j                  ddd      | j                  ddd             t        |j                  ddd      |j                  ddd            sJ t        j                  t              5  |j                  dd       d d d        t        j                  t              5  |j                  d       d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)	N   )r=   r@   r   rD   r'   r   r&   r'   r   r&   r&   r'   )r   arangereshaper   rK   r	   	transposer
   pytestraises
ValueErrorr   r    s     r"   test_transposert   u   s   
		#z*A
a#Aakk)$akk)&<=Q[[+Q[[-CDDDakk!Q"AKK1a$89Q[[Aq)1;;q!Q+?@@@	z	" 	Aq 
z	" 	F   s   E<E#E #E,c                     t         j                  d      } t        j                  dd      }t        | j	                  g d      |j	                  g d             y )NrF   r   r   )r   r&   )r   r   r   r	   ro   r   r!   s     r"   test_transpose_negative_axesry      s<    
A
Q'Aakk.)1;;~+FGr$   c                     t        j                  dd      } | j                  d      | u sJ | j                  d      | u sJ y )NrD   r   r   r   r&   r'   )rw   rv   )r   r   ro   r   s    r"   !test_transpose_skip_when_possibler~      s@    
	!$A;;y!Q&&&;;|$)))r$   c                    t         j                  j                         j                  ddd      } t	        j
                  | d      }t        t         j                  | dd      t	        j                  |dd             t        t         j                  | dd      t	        j                  |dd             t        | j                  dd      |j                  dd             t        | j                  dd      |j                  dd             t        | j                  dd      |j                  dd             t        | j                  dd	      |j                  dd	             t        | j                  d	d      |j                  d	d             |j                  dd      j                  |j                  dd      j                  k(  sJ |j                  dd      j                  |j                  dd      j                  k7  sJ y )
Nr   r   r         sizer=   r   r'   r   r&   r'   rv   )	r   rI   rJ   normalr   rK   r	   swapaxesnamers   s     r"   test_swapaxesr      s~   
		&&q";&?A
a	*Abkk!Q"BKK1a$89bkk!Q"BKK1a$89ajjA

1a 01ajjA

1a 01ajjA

1a 01ajjBAr!23ajjQB!23::a  AJJq!$4$9$9999::a  AJJq!$4$9$9999r$   moveaxisrollaxisrL   )r.   r   )r   r   r   r   c           
        t         j                  j                         j                  |      }t        j                  |t        |      dz        }t        t         |       }t        t        |       }t        |j                   |j                        D ]h  }t         ||d|      t        j                        sJ t        |j                   |j                        D ]  }t         ||||       ||||               j y )Nr>   r   r   )r   rI   rJ   r   rK   r^   r6   rangendimr   r   r	   )r0   rL   r   r    r7   r8   axis1axis2s           r"   test_moveaxis_rollaxisr      s     			&&u-A
aUd!24Ab(#Gb(#Gw' J'!Q.999AFF7AFF+ 	JEga.5%0HI	JJr$   c                 4   t         j                  j                         j                  d      } t        j                  | d      }t        t         j                  | dd      t        j                  |dd             t        t         j                  | d      t        j                  |d             t        t        j                  |d      t        j                        sJ t        t         j                  | dd      t        j                  |dd             y )	Nr   r   r   r&   r   )destinationsourcer'   )startaxis)
r   rI   rJ   r   rK   r	   r   r   r   r   rs   s     r"   test_moveaxis_rollaxis_keywordr      s    
		&&{3A
a	*A
A1Q/QAVW1X bkk!QQ!23bkk!Q'222bkk!11k-r{{1AA/NOr$   c                    t         j                  j                         j                  dd      } t        j	                  | dd      }t        |t         j                        sJ t        |t        j	                  | j                         dd             t        j                  | dd      }t        |t         j                        sJ t        |t        j                  | j                         dd             y )Nr=   r=   r=   r'   r   r   )
r   rI   rJ   r   r   r   r   r	   computer   )aresults     r"    test_moveaxis_rollaxis_numpy_apir      s    
		&&y&;A[[Aq!Ffbhh'''fbkk!))+q!45[[Aq!Ffbhh'''fbkk!))+q!45r$   zfuncname, kwargsflipudfliplrflipr   r&   rv   r   r'   c                x   |j                  d      }|*| dk(  rd}n5| dk(  rd}n-| dk(  r(t        t        |            }nt        |t              s|f}t
        j                  j                         j                  |      }t        j                  |d      }t        t
        |       }t        t        |       }	 |D ]  }t        |j                        |     	  ||fi |}	 ||fi |}
t        |	|
       y # t        $ r; t        j                  t               5   ||fi | d d d        Y y # 1 sw Y   Y y xY ww xY w)	Nr   r   r   r   r&   r   r&   r   )getr   r^   r   r\   r   rI   rJ   r   rK   r6   r   r	   
IndexErrorrp   rq   rr   )r0   kwargsrL   r   rM   rN   r7   r8   axrO   rP   s              r"   	test_flipr      s+    ::fD|xD!DU$De$w99  "))%0D==a(Db(#Gb(#G
 	!B$))R 	! t&v&t&v&$  $]]:& 	$D#F#	$ 	$ 	$$s*   6C5 5"D9
D+!D9+D5	0D95D9r   axesr&   r   rA   r{   c                   | j                  dd      }t        j                  j                         j                  |      }t	        j
                  |d      }t        j                  }t        j                  }	 |d d D ]  }t        |j                        |     	 t        |      dk7  s|d   |d   k(  r,t        j                  t              5   ||fi |  d d d        y t        dd      D ]$  } ||fd	|i| }	 ||fd	|i| }
t        |	|
       & y # 1 sw Y   y xY w# t        $ r; t        j                  t              5   ||fi |  d d d        Y y # 1 sw Y   Y y xY ww xY w)
Nr   r   r&   r'   r   r   r&   r|   	   k)r   r   rI   rJ   r   rK   rot90r   r   r^   rp   rq   rr   r	   r   )r   rL   r   rM   rN   r7   r8   r   r   rO   rP   s              r"   
test_rot90r      sT   & ::ff%D99  "))%0D==a(DhhGhhG&!H 	#D$))T"	# t9>T!WQ/z* (''( ( 2q\ &t3q3F3t3q3F3$%&( (  $]]:& 	$D#F#	$ 	$ 	$$s6   8"D  
DD "E$
EE$E 	E$ E$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   r   c                    t         j                  j                  d      }|j                  |       d   }|j                  |      d   }t        j                  ||xs t        d |j                  D                    }t        j                  ||xs t        d |j                  D                    }d }		 t         j                  ||      }	t        j                  ||g||g      D ]|  \  }
}|j                  dk(  s|j                  dk(  r9t        j                  t              5  t        j                  |
|       d d d        ]t        |	t        j                  |
|             ~ y # t        $ r Y w xY w# 1 sw Y   xY w)Ni  r.   c              3  &   K   | ]	  }|d z    ywrT   r.   rV   is     r"   rX   ztest_matmul.<locals>.<genexpr>J       1Lq161LrZ   r   c              3  &   K   | ]	  }|d z    ywrT   r.   r   s     r"   rX   ztest_matmul.<locals>.<genexpr>K  r   rZ   r   )r   rI   rJ   r   rK   r\   rL   matmulrr   	itertoolsproductr   rp   rq   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 LE1LAGG1L,LMA
a LE1LAGG1L,LMAH99Q? ##QFQF3 3B66Q;!&&A+z* "		"b!" " h		"b 123  
" "s   5E% "E4%	E10E14E=	c            	        t         j                  d      j                  d      } t        j                  | d      }t         j                  d      j                  d      }t        j                  |d      }dD ]  }t        t        j                  |||	      t         j                  | ||	             t        t        j                  | ||	      t         j                  | ||	             t        t        j                  |||	      t         j                  | ||	              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        y # 1 sw Y   y xY w)N  r   r   r   r=   r      r   r   r=   r   )r&   r   )rv   r   r   r   r   r&   )r   rm   rn   r   rK   r	   	tensordotr
   rp   warnsPerformanceWarning)r   r   r!   r   r   s        r"   test_tensordotr   [  s\   
		#x(A
a'A
		#x(A
a'A$ P",,q!$/a1NO",,q!$/a1NO",,q!$/a1NOP
 R\\!QV4bll1af6UVVV 
b++	, UR\\!QQ7aQR9STTTTU U Us   ;GG)r   r&   r   r   )r   r'   r&   )rl   r'   r   )r   rl   c                    t         j                  d      j                  d      }t        j                  |d      }t        t        j                  |||       t         j                  |||              y )N@   r   r'   r   r   r   rm   rn   r   rK   r	   r   )r   r   r!   s      r"   test_tensordot_2r   m  sS     			)$$Y/A
a"Abll1ad+R\\!QT\-JKr$   r   )autor?   rA   r=   r   r'   r@   c                    t         j                  d      j                  dd      }t        j                  ||       }t        t        j                  ||d      t         j                  ||d             y )N   r=   r@   r   r'   r   r   )r   r   r!   s      r"   &test_tensordot_double_contraction_neq2r   w  sT     			"a#A
a'Abll1aa(",,q!!,*DEr$   c                    t         j                  d      j                  ddd      } t         j                  d      j                  ddd      }t        j                  |       }t        j                  |      }t        t        j                  ||d      t         j                  | |d             t         j                  d      j                  ddd      } t         j                  d      j                  ddd      }t        j                  | d      }t        j                  |      }t        t        j                  ||d      t         j                  | |d             y )Ng      N@r   r=   r   r'   r   r   r   )r   r!   uvs       r"   &test_tensordot_double_contraction_ngt2r     s    
		$1a(A
		$1a(A
aA
aAbll1aa(",,q!!,*DE
		$1a(A
		$1a(A
a"A
aAbll1aa(",,q!!,*DEr$   c                     d} t         j                  ddg| z        }t        j                  |d      }t	        t        j
                  |||       t         j                  d| z               y )N   r&   r'   rv   r   )r   broadcast_tor   rK   r	   r   r   )r   r   r)   s      r"    test_tensordot_more_than_26_dimsr     sQ    D
A3:&A	q	$Bbll2r4("((1d7*;<r$   c                 D   t         j                  d      j                  d      } t        j                  | d      }t         j                  d      j                  d      }t        j                  |d      }t        |j                  |      | j                  |             y )Nr   r   r   r   r   r   r   )r   rm   rn   r   rK   r	   dot)r   r   r!   r   s       r"   test_dot_methodr     sl    
		#x(A
a'A
		#x(A
a'AaeeAha!r$   c                    t         j                  j                         j                  dd      } d| | dk  <   | j                         }| j	                         }t        j
                  | |       j	                         }t        j
                  ||      j	                         }t        j                  ||      }t        j                  ||      sJ t        j                  ||      sJ y )Nr=   r=   r'   r'   r   r   g?)r   rI   rJ   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   rA   c                   t         j                  j                  d      }d|j                  d| z         z  dz
  }|d   d|d   z  z   }d|j                  d| z         z  dz
  }|d   d|d   z  z   }t        j                  ||      }t        j                  ||      }t        t         j                  ||      t        j                  ||             t        t         j                  ||      t        j                  ||             t        t        j                  ||      t        j                  ||      j                                y )N9  r'   r>   r&   r   y              ?r   )r   rI   rJ   r   rK   r	   vdotconj)rL   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mRWWQ]+bggamRWWQ]+bggamRWWQ]//12r$   c                   t         j                  j                  d      }d|j                  |       z  dz
  }d|j                  |      z  dz
  }t        j                  |d      }t        j                  |d      }t        t         j                  ||      t        j                  ||             t        t         j                  ||      t        j                  ||             y )Nr	  r'   r&   r   r   )r   rI   rJ   r   rK   r	   outer)r`   ra   r   r   r!   r   r   s          r"   
test_outerr    s    
))


%C	CJJv"A	CJJv"A
a"A
a"Abhhq!nbhhq!n-bhhq!nbhhq!n-r$   z)func1d_name, func1d, specify_output_propsr   c                    | j                   S r5   r   r}   s    r"   <lambda>r    s
    166 r$   Fsumc                "    | j                         S r5   r  r}   s    r"   r  r    s    !%%' r$   r   c                B    | j                         | j                         gS r5   minmaxr}   s    r"   r  r    s    QUUWaeeg. r$   range2c                    | j                         | j                         g| j                         | j                         ggS r5   r  r}   s    r"   r  r    s-    quuw01557AEEG2DE r$   cumsumc                ,    t         j                  |       S r5   )r   r  r}   s    r"   r  r    s    RYYq\ r$   zinput_shape, axisr   r   r   c           	        t         j                  j                         j                  dd|      }t	        j
                  |t        |      dz        }d }d }|r_dg|j                  z  }	t        d       |	|<   t        |	      }	t         j                   |||	               }
|
j                  }|
j                  }t        t	        j                  |||||      t         j                  |||             y )Nr   r   r   r   )r   rL   )r   rI   rJ   integersr   rK   r^   r   slicer\   r   rL   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[!1D!8:ALLqvvT{tv&6+,||||
FD!<|T
FD!,r$   zfunc_name, funcsum0c                &    | j                  |      S )Nr   r  r   r   s     r"   r  r    s    D!1 r$   sum1c                (    | j                  |d      S )NTr   keepdimsr  r/  s     r"   r  r    s    D4!@ r$   c                x    t         j                  | j                  |d      | j                  |d      g|      S )NTr2  r.  )r   concatenater  r  r/  s     r"   r  r    s9    BNND40!%%TD%2QR +  r$   zshape, axesr   )rv   r&   rk   c                   t         j                  j                         j                  dd|      }t	        j
                  |t        |      dz        }t        t	        j                  |||      t         j                  |||             y Nr   r   r   r   )	r   rI   rJ   r   r   rK   r^   r	   apply_over_axes)	func_namefuncrL   r   r   r    s         r"   test_apply_over_axesr;    sf    2 			((B6A
aUd!24Ab  q$/1C1CD!T1RSr$   zshape, axisc                   t         j                  j                         j                  dd|       }t	        j
                  |t        |       dz        }t        t	        j                  ||      t         j                  ||             y r7  )	r   rI   rJ   r   r   rK   r^   r	   ptp)rL   r   r   r    s       r"   test_ptpr>    s\     			((B6A
aUd!24AbffQorvva/r$   nc                   t         j                  j                         j                  dd|       }t	        j
                  |t        |       dz        }t        t	        j                  |||      t         j                  |||             y r7  )	r   rI   rJ   r   r   rK   r^   r	   diff)rL   r?  r   r   r   s        r"   	test_diffrB     sb     			((B6A
aUd!24AbggaD!2771a#67r$   c                   t         j                  d      dz   }t        j                  |d      }t	        t        j
                  || d      t         j                  || d             t	        t        j
                  || dg      t         j                  || dg             t	        t        j
                  || ddg      t         j                  || ddg             t         j                  d      j                  d	d	      }t        j                  |d      }t	        t        j
                  || dd
      t         j                  || dd
             t	        t        j
                  || ddgdgdgdgg
      t         j                  || ddgdgdgdgg
             t	        t        j
                  || dd
      t         j                  || dd
             t	        t        j
                  || dg dg
      t         j                  || dg dg
             | dkD  rNt        j                  t              5  t        j
                  || t         j                  d             d d d        y y # 1 sw Y   y xY w)Nr   r&   r'   r   r   )prependrv      r=   )r   rD  r   r   r   r   r   r   r   rm   r   rK   r	   rA  rn   rp   rq   rr   zerosr?  r   r   s      r"   test_diff_prependrK  ,  s   
		!qA
a"AbggaA&1a(@AbggaQC("''!Q'*DEbggaRG,bggaRGg.LM
		"a#A
a"AbggaA.11a0PQ
11sQC!qc&:;
11sQC!qc&:; bggaA.11a0PQ
11|n5
11|n5
 	1u ]]:& 	4GGAq"((6"23	4 	4 	4 	4   6,I,,I5c                   t         j                  d      dz   }t        j                  |d      }t	        t        j
                  || d      t         j                  || d             t	        t        j
                  || dg      t         j                  || dg             t	        t        j
                  || ddg      t         j                  || ddg             t         j                  d      j                  d	d	      }t        j                  |d      }t	        t        j
                  || dd
      t         j                  || dd
             t	        t        j
                  || ddgdgdgdgg
      t         j                  || ddgdgdgdgg
             t	        t        j
                  || dd
      t         j                  || dd
             t	        t        j
                  || dg dg
      t         j                  || dg dg
             | dkD  rNt        j                  t              5  t        j
                  || t         j                  d             d d d        y y # 1 sw Y   y xY w)Nr   r&   r'   r   r   )appendrv   rE  r=   )r   rN  rF  rG  rH  rJ  s      r"   test_diff_appendrO  H  s   
		!qA
a"Abgga1%rwwq!Aw'>?bggaA3'Aqc)BCbggaB7+RWWQ2q'W-JK
		"a#A
a"Abgga1-rwwq!!Aw/NO
11qcA3aS%9:
11qcA3aS%9: bgga1-rwwq!!Aw/NO
11l^4
11l^4
 	1u]]:& 	3 GGAq&!12	3 	3 	3 	3rL  c                     t        j                  t              5  t        j                  t        j
                  d      d       d d d        y # 1 sw Y   y xY w)Nr   rv   )rp   rq   rr   r   rA  rm   r.   r$   r"   test_diff_negative_orderrQ  d  s9    	z	" #
		"r"# # #s   *AAr   )r   r   zto_end, to_beginr   r=   c                   t         j                  j                         j                  dd|       }t	        j
                  |t        |       dz        }t        t	        j                  |||      t         j                  |||             y r7  )	r   rI   rJ   r   r   rK   r^   r	   ediff1d)rL   to_endto_beginr   r   s        r"   test_ediff1drW  i  sb     			((B6A
aUd!24AbjjFH-rzz!VX/NOr$   zshape, varargs, axis)r  r.   N)r  r>   N)r  )      ?      ?       @N)r  r.   r   )r  r.   r&   )r  r.   r'   )r  r.   rv   )r  r.   r   r   r         ?
edge_orderc                   t         j                  j                         j                  dd|       }t	        j
                  |t        |       dz        }t        j                  |g|||d}t	        j                  |g|||d}t        |t              rt        ||       y t        |      t        |      k(  sJ t        ||      D ]  \  }}	t        ||	        t        t	        j                  t        t        t        j                  |                  t         j                  t        t        t         j                  |                         y )Nr   r   r   r   )r   r\  )r   rI   rJ   r   r   rK   r^   gradientr   r   r	   r_   sqrtr  mapsquare)
rL   varargsr   r\  r   d_ar_ar_d_ae_r_d_ae_r_as
             r"   test_gradientrh  r  s    $ 			((B6A
--3u:#4
6C
++a
D'
D
DCKKHgHDZHE$%5zSX%%%!%o 	&NGUgu%	& 	GGCBIIu-./SC=P9Q1R	
r$   c                    t         j                  g d      } t        j                  | d      }t        j                  |d      }t        |t         j	                  | 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                  k7  sJ t        j                  |d      j                  t        j                  |d      j                  k(  sJ t         j                  g d	|j                  
      }t        |dd  |       y )Nr'   r&   r   r'   r&   r'   r   r@   )	minlengthr  )r  r   )r   r'   r'   r   r   r&   r   r   )r   r   r   rK   bincountr	   r
   rL   r   r   r   )r   r    eexpected_outputs       r"   test_bincountro    s   
!A
a"A
A#AaQ!,-R[[a0!44477d??88w;;qA&++r{{1/J/O/OOOO;;qA&++r{{1/J/O/OOOOhh1hAOae_%r$   weights)r&   r'   r&   r[  r&   r   )r&   r'   r&   r   r&   c                f   t         j                  g d      }t        j                  |d      }t        j                  | d      }t        j                  ||d      }t        |t         j	                  ||j                         d             t        t        j                  ||d      |      sJ y )Nrj  r'   r   r@   )rp  rk  )r   r   r   rK   rl  r	   r   r
   )rp  r   r    dweightsrm  s        r"   test_bincount_with_weightsrs    s     	!A
a"A}}WQ/H
Ax15AaQ(8(8(:aHIR[[HBAFFFr$   c                 F   t         j                  g d      } t        j                  | d      }t        j                  |      }t        |t         j	                  |              t        t        j                  |      |      sJ t        |j                               dk(  sJ y )N)r&   r&   r   r   r   r'   r   rC   )	r   r   r   rK   rl  r	   r
   r^   r   )r   r    rm  s      r"   #test_bincount_unspecified_minlengthru    sp    
!A
a"A
AAaQ R[[^Q'''qyy{q   r$   c            
        t         j                  g d      } t         j                  g d      }dD ]X  }dD ]Q  }t        j                  | |      }t	        t        j
                  |||      t         j                  | ||             S Z t         j                  j                         j                  d      } t         j                  j                         j                  d	      }|j                          d
D ]X  }dD ]Q  }t        j                  | |      }t	        t        j
                  |||      t         j                  | ||             S Z y )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   rK   r	   digitizerI   rJ   sort)r   binsr   rx  r    s        r"   test_digitizer    s   
!A88O$D " 	Ea/AAt512;;q$e;3T	 			&&J&7A99  "))r)2DIIK: " 	Ea/AAt512;;q$e;3T	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leftrx  c                   t         j                  |       } t         j                  |      }t        j                  | |      }t        j                  ||      }t        j                  |||      }|j
                  |j
                  k(  sJ |j                  |j                  k(  sJ t        |t         j	                  | ||             y rH   )r   r   r   asarraysearchsortedrL   r   r	   )r   a_chunksr   v_chunksr  advdouts           r"   test_searchsortedr    s     	A
A	Ah	'B	Ah	'B
//"b$
'C99   ::"""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        y # 1 sw Y   y xY w)Nr&   r   )sorter)rp   rq   NotImplementedErrorr   r  r  r.   r$   r"   (test_searchsorted_sorter_not_implementedr    s^    	*	+ X


Aq6*BJJsOBJJPQSTvDVWX X Xs   AA::Bc                    d} t         j                  j                         j                  | d      }t        j	                  ddd      }t        j
                  ||      \  }}t        j                  ||      \  }}|j                  d      | k(  sJ |j                  d      | k(  sJ t        ||       t        t        j
                  ||      d   |      sJ y )	Nr   r   r   r   )\(?{Gz?r  r.  )	r   rI   rJ   r   rm   	histogramr  r	   r
   )r?  r   r  a1b1a2b2s          r"   test_histogramr    s    A
		&&q&4A99Qd#D||AD)HR||AD|)HR 66q6>Q66q6>Qb"R\\!$/2B777r$   c                     t         j                  j                         j                  dd      } t        j                  | dd      \  }}t        j                  | dd      \  }}t        ||       t        ||       y )Nr   r   r   r   r  r   )r   rI   rJ   r  r   r	   r   r  r  r  r  s        r"   %test_histogram_alternative_bins_ranger    sf    
		&&s2&6A||ABf5HR||ABf|5HRb"b"r$   c                    t        j                  t        j                  dt        j                  dg      d      } t        j
                  | dd      \  }}t        j                  | dd      \  }}t        ||       t        ||       y )Nrw   r'   r&   r   r   r|   r   r  )r   rK   r   r   nanr  r	   r  s        r"   (test_histogram_bins_range_with_nan_arrayr    sg    
bhhBFFA/:A||ABg6HR||ABg|6HRb"b"r$   c                 F   t         j                  j                         j                  dd      } t        j	                  ddd      }t        j	                  dddd	
      }t        t        j                  | dz  |      d   t        j                  | dz  |      d          y )Nr   r   r   r   r  r  r   r&   r   r   r  )r   rI   rJ   r   rm   r	   r  )r   r  s     r"   test_histogram_return_typer    s    
		&&s2&6A99Qd#D99QAT9*Dbll1r6-a0",,q2vD,2QRS2TUr$   c            
         t         j                  ddd      } t        j                  j	                         j                  dd      }|| t        j
                  d|j                        dz  ft        j                  j	                         j                  dd      | t        j
                  dd      dz  fg}|D ]  \  }} }t        t        j                  || d	
      d   t         j                  || d	
      d          t        t        j                  || |      d   t         j                  || |      d          t        t        j                  || |d	      d   t        j                  || |d	      d           y )Nr   r  r  r   r   r   r   )2   r  Tr  density)r  rp  )r  rp  r  )	r   rm   r   rI   rJ   r   r   r	   r  )r  r   dataws       r"   $test_histogram_extra_args_and_shapesr    sO   99Qd#D
		&&s2&6A	
D"''#ahh/!34II!!#**8B*?GGHR(1,	
D  

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

 	LLq$?BLLq$?B	

r$   c                 >   t        j                  d      } t        j                  t              5 }t        j
                  | g dd       d d d        dt        j                        v sJ dt        |j                        j                         v sJ y # 1 sw Y   JxY w)Nr   r&   r'   r   Tr  normedr  
deprecated)	r   rm   rp   rq   rr   r  strvaluelower)r   infos     r"   !test_histogram_normed_deprecationr  =  sy    
		"A	z	" 5d
QYt45 DJJ'''3tzz?002222	5 5s   BBzbins, hist_range)NN)r   Nr   r&   )N)r&   r   c                :   t         j                  j                         j                  dd      }t        j                  t
        t        f      5 }t        j                  || |       d d d        t        j                        }d|v sd|v sJ y y # 1 sw Y   *xY w)Nr   r'   r   r  r  r   )
r   rI   rJ   rp   rq   rr   	TypeErrorr  r  r  )r  
hist_ranger  r  err_msgs        r"   test_histogram_bin_range_raisesr  F  s    " 99  "))"Q)7D	
I.	/ 84
TJ78$**oGW7 222 28 8s   BBr  weightednon_delayed_idelay_n_binsc                   d}t         j                  j                         j                  |      }t        j                  |d      }|rNt         j                  j                         j                  |      }t        j                  ||j
                        }|j                         |j                         g}	||	|   j                         |	|<   t        j                  ||r| st        j                  |      n||	| |rnd       \  }
}t         j                  |||j                         |j                         g| |rnd       \  }}t        |
|       t        ||       y )Nr   r'   r   r  r   r  rp  )r   rI   rJ   r   rK   r   r  r  r   r  r   r	   )r  r  r  r  r?  r   r  rp  	weights_dd_rangehist_dbins_dhistr  s                 r"   test_histogram_delayed_ranger  ^  s$   
 	A
		&&q)A	q	#B))'')003MM'"))<	vvx"G !(!7!?!?!A\\
(RXXa[a%	4NFF 	uuw #  JD$ fdfdr$   c                t   d}t         j                  j                         j                  |      }t         j                  g d      }t	        j
                  |d      }t	        j
                  |d      }|rNt         j                  j                         j                  |      }t	        j
                  ||j                        }t	        j                  |||d   |d   g| |rnd       \  }	}
t         j                  |||d   |d   g| |rnd       \  }}||
u sJ t        |	|d	
       t        |
|d	
       y )Nr   )r   皙?r[  皙?r&   r   r   r'   r   rv   r  F)check_graph)	r   rI   rJ   r   r   rK   r   r  r	   )r  r  r?  r   r  r  r  rp  r  r  bins_d2r  s               r"   test_histogram_delayed_binsr    s    	A
		&&q)A88)*D	q	$B]]4*F))'')003MM'"))<	ll
ay&*%%	4OFG 	AwR!#  JD$ W fd.gt/r$   c                    t         j                  j                         j                  dd      } t        j                  t
        d      5  t        j                  | t        j                  d      ddgd	       d d d        y # 1 sw Y   y xY w)
Nr   r'   r   z%`bins` cannot be a scalar Dask objectmatchr   r&   T)r  r   r  )r   rI   rJ   rp   rq   r  r  r   r  s    r"   1test_histogram_delayed_n_bins_raises_with_densityr    so    99  "))"Q)7D	#J
 J 	TQFDIJ J Js   /BBr  r   r@   c           
         t         j                  j                         }d}|}d}|j                  dd|fd      }|j                  dd|fd      }| r|j                  dd|fd      nd }	t        j                  ||||||		      \  }
}}t
        j	                  ||||||		      \  }}}t
        j	                  |j                         |j                         |||| r|	j                         nd 	      \  }}}t        |
|       t        |
|       | s,|s*|
j                         |k(  sJ |j                         |k(  sJ t        t        j                  ||||||		      d   |
      sJ |
j                         j                  |j                  k(  sJ y )
N   r   r   r   r&   r   r   r   r  皙?r  r   rI   rJ   uniformhistogram2dr   r   r	   r  r
   rL   )rp  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3AAqtF3A;BCA47A>>!QQaRSTLBS>>!QQaRS>TLBS>>						&		D " LBS b"b"wvvx1}}vvx1}}
q!!1gqI!L
   ::<)))r$   c           	     (   t         j                  j                         }d}g d}g d}||g}|j                  dd|fd      }|j                  dd|fd      }| r|j                  dd	|fd      nd }	t        j                  |||||	
      \  }
}}t
        j	                  |||||	
      \  }}}t
        j	                  |j                         |j                         ||| r|	j                         nd 
      \  }}}t        |
|       t        |
|       | s,|s*|
j                         |k(  sJ |j                         |k(  sJ t        t        j                  |||||	
      d   |
      sJ |
j                         j                  |j                  k(  sJ y )Nr  )        r  g333333??rX  )r  皙?g?r[  rX  r   r&   r  r  r  r  )r  r  rp  r  )rp  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3AAqtF3A;BCA47A>>!QQKLBS>>!QQ>KLBS>>						&		D " LBS b"b"wvvx1}}vvx1}}
q!!Wa@C
   ::<)))r$   c                 d   d\  } }t         j                  j                         j                  dd| |fd      }g dg dg dg}t        j                  ||	      \  }}t
        j	                  ||	      \  }}t
        j	                  |j                         |	      \  }}	t        ||       t        ||       |j                         | k(  sJ |j                         | k(  sJ t        t        j                  ||	      d   |      sJ |j                         j                  |j                  k(  sJ y )
Nr  r   r   r&   r   r   r  r   r[  r&   r         ?g333333?r&   r   r[  r  r&   r  )r   rI   rJ   r  histogramddr   r   r	   r  r
   rL   )
n1n2r   r  r  r  r  r  r  b3s
             r"   test_histogramddr    s    FB
		''1B8H'MA+-=>D~~ad+HR~~ad~+HR~~aiik~5HRb"b"668r>>668r>>R^^AD1!4b999::<)))r$   c                    t         j                  j                         } d}| j                  |fd      }| j                  |fd      }g d}g d}t        j                  ||g||g      \  }}t
        j	                  ||g||g      \  }}	t
        j	                  |j                         |j                         f||g      \  }
}t        ||       t        ||
       y )Nr  r   r  )r  r        ?rX  )r  333333?ffffff?r  rX  r  )r   rI   rJ   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4HR~~q!fB8~4HR~~qyy{AIIK8Bx~HHRb"b"r$   c                    d\  } }t         j                  j                         j                  dd| |fd      }d}dt	        |      z  }t        j
                  |||      \  }}t        j                  |||      \  }}t        j                  |j                         ||      \  }	}
t        ||       t        ||	       d	}t        j
                  |||      \  }}t        j                  |||      \  }}t        ||       |j                         | k(  sJ |j                         | k(  sJ t        t        j
                  |||      d   |      sJ y )
NiX  r   r   r&   )r   r   r   r   r  r   r   r=   r   r  r=   )r   rI   rJ   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    s3   FB
		''	1B8$; 	( 	A DT"F~~ad&9HR~~ad&~9HR~~aiikF~CHRb"b"D~~ad&9HR~~ad&~9HRb"668r>>668r>>R^^AD?BBGGGr$   c                    t         j                  j                         } d\  }}| j                  dd||fd      }| j                  dd|fd      }d	}d
t	        |      z  }t        j
                  ||||      \  }}t        j                  ||||      \  }	}
t        j                  |j                         |||j                               \  }}t        ||	       t        ||       d}t        j
                  ||||      \  }}t        j                  ||||      \  }	}
t        j                  |j                         |||j                               \  }}t        ||	       t        ||       y )Nr  r   r&   r  r  r[  r  r   r  r  r  r   rp  r=   )	r   rI   rJ   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HACB55ADT"F~~ad&!DHR~~ad&!~DHR~~aiikFAIIK~XHRb"b"D~~ad&!DHR~~ad&!~DHR~~aiikFAIIK~XHRb"b"r$   c                    d\  } }t         j                  j                         j                  dd| |fd      }g dg dg dg}t        j                  ||d	
      \  }}t
        j	                  ||d	
      \  }}t        j                  ||d	      \  }}	t
        j	                  |j                         |d	
      \  }
}t        ||       t        ||       t        ||
       t        t        j                  ||d	
      d   |      sJ y )Nr  r   r&   r  r  r  r  r  Tr  r  )	r   rI   rJ   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'MA+-=>D~~adD9HR~~adD~9HR~~ad48HR~~aiikd~CHRb"b"b"R^^AD$?BBGGGr$   c                    t         j                  j                         } d\  }}| j                  ||fd      }| j	                  dd|fd      }d}dt        |      z  }t        j                  ||||d	
      \  }}t        j                  ||||d	
      \  }	}
t        j                  ||||d	      \  }}t        ||	       t        ||       y )N)i  r=   )r   r=   r  r[  g333333?r   r   r@   r   rC   ))r=   T)r  r   rp  r  )r  r   rp  r  )	r   rI   rJ   standard_normalr  r^   r  r   r	   r  s                r"   !test_histogramdd_weighted_densityr  H  s    
))


!CFB"b(;ACB55AD#d)#F~~ad&!TRHR~~ad&!T~RHR~~ad&!DQHRb"b"r$   c                     t         j                  j                         j                  dd      } t        j                  t
        d      5  t        j                  | dd       d d d        y # 1 sw Y   y xY w)	Nr   r   )r   r&   r  z2Input array can only be chunked along the 0th axisr  r   r   r   r   r  r   rI   rJ   rp   rq   rr   r  r  s    r"   .test_histogramdd_raises_incompat_sample_chunksr  V  s]    99  "))wv)FD	N
 ; 	t"M:; ; ;s   A--A6c                 H   t         j                  j                         } | j                  dd      }| j                  dd      }| j                  dd      }t        j                  t
        d      5  t        j                  |||fdd	       d d d        y # 1 sw Y   y xY w)
NrR  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  ^  s    
))


!C

a
(A

a
(A

a
(A	N
 F 	1ayx}EF F Fs   3BB!c                 :   t         j                  j                         } | j                  dd      }| j                  dd      }t        j                  ||f      j                  j                  d      }| j                  dd      }t        j                  t        d      5  t        j                  ||fdd	|
       d d d        t        j                  t        d      5  t        j                  |dd	|
       d d d        y # 1 sw Y   GxY w# 1 sw Y   y xY w)NrR  r'   r  r   r   zFInput arrays and weights must have the same shape and chunk structure.r  rG  r  r
  z_Input array and weights must have the same shape and chunk structure along the first dimension.)
r   rI   rJ   r2   Trechunkrp   rq   rr   r  )r   r   r!   r  r  s        r"   .test_histogramdd_raises_incompat_weight_chunksr   i  s    
))


!C

a
(A

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

a
(A	V
 N 	1vHM1M	N
 
o
 I 	qx}aH	I IN N
I Is   #D"DDDc                 >   t         j                  j                         j                  dd      } d}dt        |      z  }d}t	        j
                  t        d      5  t        j                  | ||	       d d d        d}d
}t	        j
                  t        d      5  t        j                  | ||	       d d d        t	        j
                  t        d      5  t        j                  | |d	       d d d        y # 1 sw Y   xY w# 1 sw Y   RxY w# 1 sw Y   y xY w)N)r   r=   r   r  rF   r  rD   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   r{   r   r   )r   rI   rJ   r^   rp   rq   rr   r  r  r  r  s      r"   .test_histogramdd_raises_incompat_bins_or_ranger#  {  s   99  "))wv)FDDT"F D	S
 6 	t$f5	6 DF	Q
 6 	t$f5	6 
H
 I 	t$.GHI I!6 66 6I Is$   C;DD;DDDc                     t         j                  j                         j                  dd      } d}d}t        j                  t
        d      5  t        j                  | ||dd	       d d d        y # 1 sw Y   y xY w)
Nr  r   r   r  r=   r   r@   r  z*Cannot specify both 'normed' and 'density'r  T)r  r   r  r  )r   rI   rJ   rp   rq   r  r  r"  s      r"   )test_histogramdd_raise_normed_and_densityr'    sj    99  "))wv)FDDF	y(T	U Q
t$fT4PQ Q Qs   A33A<c                    t         j                  j                         j                  dd      } t        j                  t
        d      5  t        j                  | dd       d d d        t         j                  j                         j                  d	d
      } t        j                  t
        d      5  t        j                  | dd       d d d        y # 1 sw Y   uxY w# 1 sw Y   y xY w)NrR  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)    s    99  "))uT)BD	P
 7 	t!:67
 99  "))y)KD	P
 7 	t!:67 77 77 7s   C6C$C!$C-c                 v   t         j                  j                         j                  dd      } t        j	                  g d      t        j	                  g d      t        j	                  g d      g}t        j
                  | |      \  }}t        j                  | j                         |      \  }}t        ||      D ]  \  }}t        ||        t        j
                  | dd	
      \  }}t        j                  | j                         dd	
      \  }}t        ||      D ]  \  }}t        ||        y )Nr  r%  r  )r  r  r  rX  )r  r  r  r  )r  r[  r  r  r   r  r  )	r   rI   rJ   r   r   r  r   r_   r	   )r  edgesr  r  r  r  ib1ib2s           r"   test_histogramdd_edgesr.    s    99  "))wv)FD
%&
%&
!E ^^Du-FB^^DLLN^7FBBK S#s ^^Dq>FB^^DLLN-^HFBBK S#sr$   c                    t         j                  d      j                  d      } t        j                  | d      }t        t        j                  |      t         j                  |              t        t        j                  |d      t         j                  | d             t        j                         5  t        j                  dt               t        t        j                  |d	
      t         j                  | d	
             d d d        t        t        j                  |d      t         j                  | d             t        t        j                  ||      t         j                  | |              t         j                  d      }t        j                  |d      }t        t        j                  ||      t         j                  | |             t        t        j                  ||      t         j                  ||              t        j                  t              5  t        j                  |d
       d d d        y # 1 sw Y   BxY w# 1 sw Y   y xY w)N8   r   rC   r   r   r   rowvarignorecategoryr   )ddofr&   )biasrC   r<   rY  )r   rm   rn   r   rK   r	   covwarningscatch_warningssimplefilterRuntimeWarningrp   rq   rr   r   r    r!   rm  s       r"   test_covr?    s   
		"f%A
a'AbffQi#bffQq!266!A6#67		 	 	" :h@"&&$bffQRf&89: bffQQ!23bffQlBFF1aL)
		!A
a%AbffQlBFF1aL)bffQlBFF1aL)	z	" 
qs : : s   8AI
)I
II c                    t         j                  d      j                  d      } t        j                  | d      }t        t        j                  |      t         j                  |              t        t        j                  |d      t         j                  | d             t        t        j                  ||      t         j                  | |              t         j                  d      }t        j                  |d      }t        t        j                  ||      t         j                  | |             t        t        j                  ||      t         j                  ||              y )	Nr0  r1  r   r   r   r2  rC   r<   )r   rm   rn   r   rK   r	   corrcoefr>  s       r"   test_corrcoefrB    s    
		"f%A
a'Abkk!nbkk!n-bkk!A&Aa(@Abkk!QQ!23
		!A
a%Abkk!QQ!23bkk!QQ!23r$   c                 L   t         j                  j                         j                  d      } t        j                  | d      }dD ],  }t        | j                  |      |j                  |             . t        |j                  d      t        j                  |d             y )Nr   r=   r   )r   r&   r=   r   r'   )r   rI   rJ   r   rK   r	   round)r   r    r   s      r"   
test_roundrE    sv    
		&&r*A
a"A *!''!*aggaj)* aggaj"((1a.)r$   return_indexreturn_inversereturn_countsc                <   t        | ||      }t        j                  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        |
|	        y )NrF  rG  rH  )r&   r'   r=   r=   r   r'   r  r   r&   )dictr   r   r   rK   uniqueanyr   ndarrayr   r^   intr   rL   r_   r	   )rF  rG  rH  r   r   r    rd  r_dr   rg  e_r_ds              r"   test_unique_kwargsrR    s
    !%#F 	#$A
a%A
))A
 
 C
))A
 
 Cnm<=#rzz***#rxx(((ffs8s3xL!!yCFLL(((C  u% r$   seed   i  r   r  r   r   r'   r   c                   t         j                  j                  |       }|j                  dd|      }t	        j
                  ||      }t         j                  |ddd      }t	        j                  |ddd      }t        |d   |d          t        |d   |d          t        |d   |d          t        |d	   |d	          y )
Nr   r   r   r   TrJ  r&   r'   r   )r   rI   rJ   r   r   rK   rL  r	   )rS  rL   r   r   r   r    rd  rP  s           r"   test_unique_randrW    s     ))


%CQ'A
a'A
))ADT)
RC
))ADT
RCc!fc!fc!fc!fc!fc!fc!fc!fr$   z	low, highzelements_shape, elements_chunksztest_shape, test_chunksinvertc                   t         j                  j                  |       }|j                  |||      }	t	        j
                  |	|      }
|j                  |||      dz
  }t	        j
                  ||      }t        j                         5  t        j                  dt        j                         t         j                  |	||      }t	        j                  |
||      }d d d        t               y # 1 sw Y   xY w)Nr   r   r   r4  r5  )rX  )r   rI   rJ   r   r   rK   r:  r;  r<  r   isinr	   )rS  lowhighelements_shapeelements_chunks
test_shapetest_chunksrX  r   r  r   r  r   rd  rP  s                  r"   test_isin_randra  &  s     ))


%C	c4n	5B	r/	2B	c4j	1A	5B	r+	.B		 	 	" -h1F1FGggb"Vg,ggb"V,- c3	- -s   AC88Dassume_uniquec                   t         j                  d      }t        j                  |d      }t         j                  ddd      }t         j	                  |||       }t        j                  |||       }t        ||       y )Nr   r   r   r   r'   )rb  )r   rm   r   rK   rZ  r	   )rb  r  r   test_elementsrd  rP  s         r"   test_isin_assume_uniquere  C  sa    	2B	r$	'BIIaQ'M
''"m='
AC
''"m=
ACc3r$   c                8    	 t        |       S # t        $ r Y yw xY wNr   )r^   r  )ls    r"   
_maybe_lenri  N  s"    1v s   
 	r   shift)r   r   r   )r   r   )r   r'   )Nr   r&   rv   r   r   c                   t         j                  j                         j                  dd      }t	        j
                  ||       }t        |      t        |      k7  rBt        j                  |t        nt              5  t	        j                  |||       d d d        y t        t         j                  |||      t	        j                  |||             y # 1 sw Y   y xY w)Nr   r?   r   r   )r   rI   rJ   r   r   rK   ri  rp   rq   r  rr   rollr	   )r   rj  r   r   r   s        r"   	test_rollrm  U  s     			((&(9A
a'A%Jt,,]]9*E 	$GGAud#	$ 	$ 	"''!UD)2771eT+BC	$ 	$s   ?CC c                 h    t        j                  dd      } t        j                  | d      }|| usJ y )Nr'   r   r&   )r   rm   rl  rx   s     r"   'test_roll_always_results_in_a_new_arrayro  c  s,    
		!QA
1AA::r$   c                     t         j                  t         j                  d      d      } t        j                  t        j                  d      d      }t	        | |       y rg  )r   rl  rI  r   r	   )r   actuals     r"   "test_roll_works_even_if_shape_is_0rr  i  s<    wwrxx{A&HWWRXXa[!$Fhr$   )rR  r   r   )r   r   r   c                2   t         j                  j                         j                  |       }t        j	                  |      | k(  sJ t         j                  j                         j                  |       }t        j                  |      t        |       k(  sJ y r5   )r   rI   rJ   r   rL   r   r^   )rL   r   s     r"   test_shape_and_ndimru  o  sl    
		&&u-A88A;%
		&&u-A771:U###r$   ))r   rv  )r   )r   r=   )rv  )r&   r@   r'   reversec                   | \  }}t         j                  d      j                  |      }t         j                  dd      j                  |      }|r|d d d   }t        j                  |      }t        j                  |      }t         j                  ||      }t         j                  ||      }	t        |t        j                        sJ t        ||	       y )Nr   r@      rv   )	r   rm   rn   r   rK   union1dr   r   r	   )
rL   rw  s1s2x1x2dx1dx2r   r   s
             r"   test_union1dr  x  s    
 FB	2		r	"B	1b		!	!"	%B"X
--
C
--
CZZS!Fzz"b!Hfbhh'''fhr$   c                    t         j                  j                         j                  dd      } dD ]  }t	        j
                  | |      }t        | j                         |j                                t        |j                         j                        t        |j                        t        |j                  d         z   k(  rJ  t        | d   j                         d   j                                |j                         }t        |j                         |       t         j                  j                         j                  dd      } d	D ]A  }t	        j
                  | |      }t        | j                         |j                                C t        | j                         |j                                t        t         j                  |       t	        j                  |             y )
Nr   r?   r   )r?   r   r   r   r   r   rD   )r=   )r&   r   r=   )r   rI   rJ   r   r   rK   r	   ravelr^   daskr   flatten)r   r   r   a_flats       r"   
test_ravelr    s\   
		((&(9A # EMM!F+!'')QWWY'1779>>"c!&&kC4D&DDDDE agmmoqw}}/ WWYFfllnf% 			(()(<A  (MM!F+!'')QWWY'( aiik199;'bhhqk288A;'r$   c                 H   t         j                  j                         j                  dd      } t	        j
                  | d      }t        |j                         | j                                t        ||dkD     j                         | | dkD     j                                y )Nr   r   r   r   r'   )r   rI   rJ   r   r   rK   r	   r  r(   s     r"   test_ravel_1D_no_opr    st    
		((#(6A	q	$Bbhhj!'')$baj !AE(.."23r$   c                 t   t        t        j                  d      t        j                  d             t	        t        j                  d      t        j
                  j                        sJ t        t        j                  ddg      t        j                  ddg             t	        t        j                  ddg      t        j
                  j                        sJ t        t        j                  d      t        j                  d             t	        t        j                  d      t        j
                  j                        sJ t        t        j                  ddg      t        j                  ddg             t	        t        j                  ddg      t        j
                  j                        sJ y )Nr   r  r   )r	   r   r  r   r   corer   r.   r$   r"   test_ravel_with_array_liker    s   bhhqk288A;'bhhqk277==111 bhh1v!Q 01bhh1v&666 bhhv 01bhhv&666 bhhd|$bhhd|&<=bhhd|,bggmm<<<r$   )Nr   r&   rv   r   r   rl   r'   c                <   t         j                  d      }t        j                  |d      }| :t	        j
                  t              5  t        j                  ||        d d d        y | dk(  r:t	        j
                  t              5  t        j                  ||        d d d        y t         j                  ||       }t        j                  ||       }t        ||       t        |t        j                  ||             sJ y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   r  r   r.  r'   )r   rm   r   rK   rp   rq   r  expand_dimsr   r	   r
   )r   r   r    a_ed_es        r"   test_expand_dimsr    s    
		"A
a%A|]]9% 	)NN14(	) 	)	]]9% 	)NN14(	) 	) nnQTn*nnQT*#sbnnQT:;;;	) 	)	) 	)s   DDDDis_func)Nr   rv   )r   rv   c                   t         j                  d      d d d d d f   t        j                  d      }| r/t         j	                        }t        j                  |      }n$j	                        }|j	                        }t        ||       t        |t        j                  |            sJ t        t        j                              n)t        t              rnft        fdD              t        fdt        |j                        D              t        fdt        |j                        D              }|j                  |k(  sJ y )Nr   )r&   r   r&   r&   r   r.  c              3  <   K   | ]  }|j                   z    y wr5   r  )rV   r   r   s     r"   rX   ztest_squeeze.<locals>.<genexpr>  s     .AQZ.s   c              3  P   K   | ]  \  }}|v st        |      d k(  s|  yw)r&   N)r^   rV   r   rW   r   s      r"   rX   ztest_squeeze.<locals>.<genexpr>  s%     Ptq!a4iCFaKPs   &&&c              3  2   K   | ]  \  }}|vs|  y wr5   r.   r  s      r"   rX   ztest_squeeze.<locals>.<genexpr>  s     NA1Ns   )r   rm   r   rK   squeezer	   r
   r\   r   r   r   	enumerater   )r  r   r    a_sd_sexp_d_s_chunksr   s    `    @r"   test_squeezer    s    			"dAtT)*A
a-Ajjj&jj&iiTi"iiTi"c3S"**QT2333|U166]#!$.tTG...Py2PPDN188)<NNN::'''r$   r   c                X   t         j                  | d      }t         j                  |      }t        j                  |d      }t        j                  |      }t        |t        j                        sJ t        |j                         t         j                        sJ t        ||       y )Nr'   )rL   
fill_valuer&   r   )
r   fullr  r   rK   r   r   r   rN  r	   )rL   r   r  r    r  s        r"   test_squeeze_1d_arrayr    sv    
e*A
**Q-C
a$A
**Q-Cc288$$$ckkmRZZ000c3r$   c            
        t         j                  d      } t         j                  d      }t        j                  dd      }t        j                  dd      }t	        t         j                  | |f      t        j
                  ||f             t	        t         j                  | |d d d f   f      t        j
                  ||d d d f   f             y Nr   r'   r   )r   rm   r   r   r	   vstackr   r!   r   r   s       r"   test_vstackr    s    
		!A

A
		!AA
!AbiiAAq6!23biiAdAgJ("))Q$'
O*DEr$   c            
        t         j                  d      } t         j                  d      }t        j                  dd      }t        j                  dd      }t	        t         j                  | d d d f   |d d d f   f      t        j
                  |d d d f   |d d d f   f             t	        t         j                  | |f      t        j
                  ||f             y r  )r   rm   r   r   r	   hstackr  s       r"   test_hstackr    s    
		!A

A
		!AA
!Abii47QtQwZ01299aaj!DRSG*=U3VWbiiAAq6!23r$   c                 p   t         j                  d      } t         j                  d      }t        j                  dd      }t        j                  dd      }t	        t         j                  | 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         j                  | d d d f   |d d d f   f      t        j
                  |d d d f   |d d d f   f             t	        t         j                  | |f      t        j
                  ||f             y r  )r   rm   r   r   r	   dstackr  s       r"   test_dstackr    s    
		!A

A
		!AA
!A
		1T4]#QtT1}%567
		1T4]#QtT1}%567 bii47QtQwZ01299aaj!DRSG*=U3VWbiiAAq6!23r$   znp_func,dsk_func,nan_chunkc                   d}t        j                  |d      }t        j                  |      }t        |j                        }t        j
                  fdz  ||<   t        |      |_        t        j                  t              5   |||f       d d d         | ||f      } |||fd      }t        ||       y # 1 sw Y   ,xY w)N)r   r   r   )r  r  r  r   r'   T)allow_unknown_chunksizes)r   r   r   list_chunksr  r\   rp   rq   rr   r	   )	r7   dsk_func	nan_chunkrL   r   r!   tmp
np_stackeddsk_stackeds	            r"   test_stack_unknown_chunk_sizesr    s    
 E
l+A
A
qyy/CffY]C	Nc
AI	z	" !Q !QJAq6DAKj+& s   B::Cc                 j   t         j                  d      j                  d      } t        j                  | d      }t        t         j                  | dd      t        j                  |dd             t        t         j                  | g dd	      t        j                  |g dd	             t        j                  t              5  t        j                  |dd
       d d d        t        t        j                  |g dd	      t        j                  |g dd	            sJ y # 1 sw Y   HxY w)Nr   r   r   r   r   r   r.  )r   r=   r   rv   r'   )r   rm   rn   r   rK   r	   takerp   rq   rr   r
   r   r   s     r"   	test_taker  4  s    
		#x(A
a'Abggag#RWWQ%:;bggag,bgga.LM	z	" 
11 RWWQ	3RWWQ	PR5STTT s   	D))D2c                    t        j                  ddd      } t        j                  dd      }t        t        j                  | |d      |       t        j                  d	d
d      }t        t        j                  | |d      |       y )Nl    J))i int64r   r   r   r   r.  r  i,  )r   rm   r   r	   r  )r   r   s     r"   test_take_larger  A  si    
		#N'JA
		"G	$Abgga#Q'
		"c	)Abgga#Q'r$   c                 N   t         j                  d      j                  d      } t        j                  t         j                  g d      d      }t        j                  | dz  |      }|j                  |j                  k(  sJ t        |t         j                  g d             y )Nr   f8)r&   r'   r   r   r'   r&   r   r   r'   )rZ        @      @r  r  rZ  )	r   rm   astyper   rK   r   r  r   r	   )r   r!   r  s      r"   test_take_dask_from_numpyr  K  sr    
		!D!A
bhh121=A
AqA88qxxa89:r$   c            	        t         j                  d      j                  d      } t        j                  | d      }t         j                  g d      }t         j                  ddg      }ddg}t        j                  |d      }t        j                  |d	      }||f||f||f||f||f||ffD ]-  \  }}d
D ]!  }	t        j                  |||	      }
t        t         j                  || |	      |
       t        |t        j                        rk|	xs d}	t         j                  |
j                  |	         j                         sJ t         j                  |
j                  |	         j                         rJ |	xs d}	t         j                  |      |
j                  |	   k(  sJ t         j                  |
j                  |	         j                         s"J  0 t!        j"                  t$              5  t        j                  ddg|d       d d d        t!        j"                  t$              5  t        j                  dgdgg|d       d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)N   r   r   r   TFTFTTFr   r'   )Nr   r&   r.  r   r   )r   rm   rn   r   rK   r   compressr	   r   r   isnanrL   allr   count_nonzerorM  rp   rq   rr   )r   r   c1c2c3dc1dc2rW   dcr   ress              r"   test_compressr  U  s   
		"f%A
a'A	2	3B	4-	 B
B
--1
%C
--1
%Cr(RHr2hS	B9r3iP <2  	<D++b!$/Cbkk!QTk2C8"bhh' yqxx		$044666xx

4 0155777 yq''+syy>>>88CJJt$4599;;;	<<$ 
z	" 0
T5M13/0 
z	" 4
dVeW%qs34 40 04 4s   :I6I(I%(I1c                    t         j                  d      j                  d      } t        j                  | d      }t         j                  g d      }t         j                  ddgddgg      }t         j                  ddg      }t        j                  |d      }t        j                  |d	      }t        j                  |d
      }||f||f||f||f||f||ffD ]  \  }}	t        j                  |	|      }
t        t         j                  ||       |
       t        |	t        j                        sWt         j                  |
j                  d         j                         rJ  y )Nr  r   r   r   r  TFr   r   r'   r   )r   rm   rn   r   rK   r   extractr	   r   r   r  r   r  )r   r   r  r  r  r  r  dc3rW   r  r  s              r"   test_extractr  x  s$   
		"f%A
a'A	2	3B	D%=4-0	1B	4-	 B
--1
%C
--6
*C
--1
%Cr(RHr2hS	B9r3iP 12jjQ"**Q"C(b"((#88CJJqM*..000	1r$   c                    t         j                  dt         j                  g      } t        j                  | d      }t        j                  t              5  t        t        j                  |      t         j                  |              t        t        j                  |      t         j                  |               d d d        y # 1 sw Y   y xY w)Nr&   r>   r   )r   r   r  r   rK   
contextlibsuppressImportErrorr	   isnullr  notnullr  s     r"   test_isnullr    s    
!RVVA
a%A			[	) 1"))A,,"**Q-288A;01 1 1s   A&CCc                 \   t        j                  t        j                  dt        j                        d      } t        j                  t              5  t        j                  | d         j                         }t        |      t        j                  u sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r   rv   r   r   )r   rK   r   rm   r  r  r  r  r  r   r]   rN  )arrr   s     r"   test_isnull_result_is_an_arrayr    sw    
--		!288	4R
@C			[	) *3q6"**,F|rzz)))* * *s   AB""B+c                 l   t         j                  dt         j                  ddg      } t         j                  dt         j                  ddg      }t        j                  | d      }t        j                  |d      }t        t        j                  ||d	      t         j                  | |d	             y )
Nr   r&   rY  &.>r'   r>   r   T	equal_nan)r   r   r  r   rK   r	   iscloser  s       r"   test_iscloser    s~    
!RVVQ$%A
$1%&A
a%A
a%AbjjA.

1a4
0PQr$   c                    t         j                  dt         j                  ddg      } t         j                  dt         j                  ddg      }t        j                  | d      }t        j                  |d      }t         j                  | |d	      }t        j
                  ||d	      }t        t         j                  |      d
   |       y )Nr   r&   rY  r  r'   r>   r   Tr  r.   )r   r   r  r   rK   r  r	   )n_an_brc  d_bn_rd_rs         r"   test_allcloser    s    
((Arvvq#&
'C
((D"&&!Q'
(C
--D
)C
--D
)C
++c3$+
/C
++c3$
/CbhhsmB%r$   c                 \   t         j                  j                         j                  dd      } t	        j
                  | d      }t        t	        j                  |dkD  d|g      t         j                  | dkD  d| g             t        t	        j                  |dkD  | |g      t         j                  | dkD  |  | g             |dkD  }| dkD  }t        |j                  d|g      |j                  d| g             t        |j                  | |g      |j                  |  | g             y )Nr   r   rE  r   r   r   r   r   )r   rI   rJ   r   r   rK   r	   choose)r   r    
index_daskindex_numpys       r"   test_chooser    s    
		((((;A
a'AbiiA1v&		!a%!Q(@AbiiAAw'1q5A2q')BC QJa%KjA'););QF)CDj!Q(+*<*<qb!W*EFr$   c            
     :   t         j                  j                  d      } | j                  dd      }t	        j
                  |d      }t        t         j                  ||dk  |dk\  gd dgd	d
      t	        j                  ||dk  |dk\  gd dgd	d
             y )Nr	  r   r  r   r   r   r   c                    | dz   S Nr&   r.   rm  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   rI   rJ   r   r   rK   r	   	piecewiser   r   r    s      r"   test_piecewiser    s    
))


%CRh'A
a'A
QQQ*?)CQ!L
QQQ*?)CQ!Lr$   c            
     F   t         j                  j                  d      } | j                  dd      }t	        j
                  |d      }t        t         j                  ||dkD  |dk  gd	 d
 d gdd      t	        j                  ||dkD  |dk  gd d d gdd             y )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 r5   r.   r  s      r"   r  z*test_piecewise_otherwise.<locals>.<lambda>  
    AE r$   c                     yrg  r.   r  s      r"   r  z*test_piecewise_otherwise.<locals>.<lambda>      r$   r&   r  c                    | dz   S r  r.   r  s      r"   r  z*test_piecewise_otherwise.<locals>.<lambda>  r  r$   c                    || z  S r5   r.   r  s      r"   r  z*test_piecewise_otherwise.<locals>.<lambda>  r  r$   c                     yrg  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;LM 	 	
 	UAFO"$9;LM	
r$   c                    t         j                  g d      t         j                  g d      t         j                  g d      g} t         j                  g d      t         j                  g d      t         j                  g d      g}t        j                  | d      }t        j                  |      }t	        t         j                  | |      t        j
                  ||             y )	N)FFFF)FTFT)FFTTr&   r'   r   r=   r  )r   r   r   r   rU  r   )r   r   r   rK   r	   select
conditionschoicesd_conditions	d_choicess       r"   test_selectr    s    
-.
+,
+,J 	

!G
 ==F;Lg&Ibii
G,biii.PQr$   c                    t         j                  j                         j                  d      } t        j                  | d      }t         j                  | dk  | dkD  | dkD  g| | dz  | dz  gd      }t        j
                  |dk  |dkD  |dkD  g||dz  |dz  gd      }t        |t        j                        sJ t        ||       y )	N)r   r  r'   )r  r  r&   r   r   r'   r&   r   default)	r   rI   rJ   r   rK   r  r   r   r	   )r   r!   res_xres_ys       r"   test_select_multidimensionr    s    
		&&|4A
a,AIIq1ua!eQU+aQA->IJEIIq1ua!eQU+aQA->JEeRXX&&&eUr$   c                 H   t         j                  dddt         j                  ddg      } t         j                  |       }t	        j
                  |       }t	        j                  |      }t        t         j                  |g| g      t	        j                  |g|g      d       y )Nr&   r'   r   r   r   Tr  )r   r   r  r  r   rK   r	   r  )r    md_dd_ms       r"   test_select_return_dtyper    ss    
!Q2661a()A
A
--
C
((3-CbiiaS!299cUSE#:dKr$   z/broadcasting in da.select() not implemented yet)reasonc                    t         j                  d      t         j                  g d      g} dt         j                  d      j                  dd      g}t	        j
                  |       }t	        j
                  |      }t        t         j                  | |      t	        j                  ||             t        t         j                  dgdgdg      t	        j                  dgdgdg             y )	NT)FTFr&   r   r=   r   r   r  )r   r   rm   rn   r   rK   r	   r  r  s       r"   test_select_broadcastingr!    s    ((4."((+?"@AJ"))B-''1-.G==,Lg&Ibii
G,biii.PQbiiaSi1299dVaSSTRU3VWr$   c                    dD ]  \  } }t         j                  j                         j                  d|       }t	        j
                  ||      }t         j                  |      }t	        j                  |      }t        ||        y N))r   r.   r  r  r  r   r   r   r   )r   rI   rJ   r   r   rK   argwherer	   )rL   r   r   r    x_nzd_nzs         r"   test_argwherer)    sk    H vII!!#,,Re,<MM!F+{{1~{{1~$r$   c                 "   t         j                  j                         j                  dd      j	                  t
              } t        j                  | d      }t         j                  |       }t        j                  |      }t        ||       y Nr   r  r   r   r   )
r   rI   rJ   r   r  objectr   rK   r&  r	   r   r    r'  r(  s       r"   test_argwhere_objr.    sc    
		((((;BB6JA
a'A;;q>D;;q>DdDr$   c                     t         j                  t        d            } t        j                  | d      }t         j                  |       }t        j
                  |      }t        ||       y NzHello worldr<   r   )r   r   r  r   rK   r&  r	   r-  s       r"   test_argwhere_strr1  #  sK     	m$%A
a%A;;q>D;;q>DdDr$   c            
        t         j                  j                         } | j                  dd      }dx|d<   |d<   t	        j
                  |d      }| j                  dd	      j                  t         j                        }t	        j
                  |d
      }|dkD  |dkD  f||fddddt         j                  t         j                  fdt         j                  t         j                  ff	D ]f  \  }}d|d d d f    |d d d f    f|d d |d d ffD ]?  \  }}t	        j                  |||      }	t         j                  |||      }
t        |	|
       A h y )Nr   )r      r   r   r   r   r   r   r   r<   r   r   r  )TT)FFr3  )r   rI   rJ   r   r   rK   r  uint8True_False_wherer	   )r   r   r    r!   rm  r  r  r  r  w1w2s              r"   
test_wherer:  0  sI   
))


!CRh'AAdGag
a'ARb!((2A
a%A 
QA	
A	288	BII
 B 1d7a4j[9AcrFAcrF;KL 	FB"a$B"a$Bb"	r$   c                    t         j                  d      } t         j                  g dt         j                        }t         j                  g d      }t	        j
                  |d      }t	        j
                  |d      }t         j                  || |      }t	        j                  || |      }t        ||       t         j                  d| |      }t	        j                  d| |      }t        ||       y )Nr   r&  r   )r&   r   r&   r'   r   T)r   int32r   int16r   rK   r7  r	   )	r   y1r  y2r  r8  r9  w3w4s	            r"   test_where_scalar_dtyperB  I  s    
A	)288	,B	)	B	r!	$B	r!	$B	"a	B	"a	Bb"	$2	B	$2	Bb"r$   c                    t         j                  j                         } | j                  dd      }t	        j
                  |d      }| j                  dd      }t	        j
                  |d      }ddt         j                  t         j                  dd	fD ]H  }t	        j                  |||      }t         j                  |||      }t        ||       |r|n|}||u rHJ  y )
Nr   r  r   r   r   TFr&   r   )
r   rI   rJ   r   r   rK   r5  r6  r7  r	   )	r   r   r    r!   rm  rW   r8  r9  ex_w1s	            r"   test_where_bool_optimizationrE  X  s    
))


!CRh'A
a'ARh'A
a'AE288RYY15 XXaAXXaA"bAU{{r$   c                    dD ]  \  } }t         j                  j                         j                  d|       }t	        j
                  ||      }t         j                  |      }t	        j                  |      }t        |t        |            sJ t        |      t        |      k(  sJ t        t        |            D ]  }t        ||   ||            y r#  )r   rI   rJ   r   r   rK   r7  r   r]   r^   r   r	   )rL   r   r   r    x_wd_wr   s          r"   test_where_nonzerorI  j  s    H &vII!!#,,Re,<MM!F+hhqkhhqk#tCy)))3x3s8###s3x 	&Ac!fc!f%	&&r$   c                     t        j                  dd      } dD ]   }|| i}	 t        j                  | dkD  fi | " y # t        $ r}dt	        |      v sJ Y d }~Ad }~ww xY w)Nr   r   r   rx   r   z1either both or neither of x and y should be given)r   r   r7  rr   r  )r   kwdr   rm  s       r"   test_where_incorrect_argsrL  y  sm    
!A Qq	QHHQU%f%Q  	QF#a&PPP	Qs   >	A AA c                 j   dD ]  \  } }t         j                  j                         j                  d|       }t	        j
                  ||      }t         j                  |      }t	        j                  |      }|j                  t               k(  r||j                         k(  rJ t        ||        y r#  r   rI   rJ   r   r   rK   r  rL   r\   r   r	   )rL   r   r   r    x_cd_cs         r"   test_count_nonzerorQ    s    H 
 vII!!#,,Re,<MM!F+q!q!99#++-'''c3
 r$   )Nr   r   r   c                n   dD ]  \  }}t         j                  j                         j                  d|      }t	        j
                  ||      }t         j                  ||       }t	        j                  ||       }|j                  t               k(  r||j                         k(  rJ t        ||        y )N)r$  r%  r   r   r   rN  )r   rL   r   r   r    rO  rP  s          r"   test_count_nonzero_axisrS    s    ? 
 vII!!#,,Re,<MM!F+q$'q$'99#++-'''c3
 r$   c                 |   t         j                  j                         j                  dd      j	                  t
              } t        j                  | d      }t         j                  |       }t        j                  |      }|j                  t               k(  r||j                         k(  sJ y t        ||       y r+  )r   rI   rJ   r   r  r,  r   rK   r  rL   r\   r   r	   r   r    rO  rP  s       r"   test_count_nonzero_objrV    s    
		((((;BB6JA
a'A


1
C


1
C
yyEGckkm####sr$   c                   t         j                  j                         j                  dd      j	                  t
              }t        j                  |d      }t         j                  ||       }t        j                  ||       }|j                  t               k(  r||j                         k(  sJ y t        |j	                  t         j                        |       y r+  )r   rI   rJ   r   r  r,  r   rK   r  rL   r\   r   r	   intp)r   r   r    rO  rP  s        r"   test_count_nonzero_obj_axisrY    s    
		((((;BB6JA
a'A


1d
#C


1d
#C
yyEGckkm### 	#**RWW%s+r$   c                     t         j                  t        d            } t        j                  | d      }t         j                  |       }t        j
                  |      }||j                         k(  sJ y r0  )r   r   r  r   rK   r  r   rU  s       r"   test_count_nonzero_strr[    s[     	m$%A
a%A


1
C


1
C#++-r$   c                    dD ]  \  } }t         j                  j                         j                  d|       }t	        j
                  ||      }t         j                  |      }t	        j                  |      }t        ||        y r#  )r   rI   rJ   r   r   rK   flatnonzeror	   )rL   r   r   r    x_fnzd_fnzs         r"   test_flatnonzeror`    sm    H  vII!!#,,Re,<MM!F+q!q!% r$   c                    dD ]  \  } }t         j                  j                         j                  d|       }t	        j
                  ||      }t         j                  |      }t	        j                  |      }t        |t        |            sJ t        |      t        |      k(  sJ t        t        |            D ]  }t        ||   ||            y r#  r   rI   rJ   r   r   rK   nonzeror   r]   r^   r   r	   rL   r   r   r    r'  r(  r   s          r"   test_nonzerore    s    H (vII!!#,,Re,<MM!F+zz!}zz!}$T
+++4yCI%%%s4y! 	(Ad1gtAw'	((r$   c                    dD ]  \  } }t         j                  j                         j                  d|       }t	        j
                  ||      }|j                         }|j                         }t        |t        |            sJ t        |      t        |      k(  sJ t        t        |            D ]  }t        ||   ||            y r#  rb  rd  s          r"   test_nonzero_methodrg    s    H (vII!!#,,Re,<MM!F+yy{yy{$T
+++4yCI%%%s4y! 	(Ad1gtAw'	((r$   c                 F   t               } t        j                  dt              }t	        j
                  |d      }t        j                  ||       }t	        j                  ||       }t        |t        |            sJ t        |      t        |      cxk(  rdk(  sJ  J y )Nr   r   r&   r   )
r\   r   r   rO  r   rK   unravel_indexr   r]   r^   )rL   findices
d_findicesindices	d_indicess        r"   test_unravel_index_emptyrn    s    GExxx%Hx2Jx/G  U3Iig///y>S\.Q.....r$   c                    t         j                  j                         } dD ]'  \  }}}| j                  |      }t        j                  |d      }| j                  t         j                  |t              |      }t        j                  |d      }t         j                  |||      }t        j                  |||      }	t        |	t        |            sJ t        |	      t        |      k(  sJ t        t        |            D ]  }
t        |	|
   ||
           t        |j                  t        j                   |	    ||          * y )N))r   r   C)r&   r   rp  )r   r   rp  )r   r   F)r'   r  rp  )r'   r  rq  r&   r   r   r   )r   rI   rJ   r   rK   r   prodrO  ri  r   r]   r^   r   r	   vindexr  r   )r   nindicesrL   orderr  darrrj  rk  rl  rm  r   s              r"   test_unravel_indexrw    s   
))


!C# G% jj}}S+<<S 9<I]]8A6
""8UE:$$Z>	)T']3339~W---s7|$ 	0AilGAJ/	0 	$++dllI67WF/Gr$   r  c                    | S r5   r.   r}   s    r"   r  r  "  s    ! r$   c                R    | D cg c]  }t         j                  |       c}S c c}w r5   )r   r  r  s     r"   r  r  #      !,Q2::a=, ,   $c                R    | D cg c]  }t        j                  |       c}S c c}w r5   )r   r  r  s     r"   r  r  $  rz  r{  zarr, chunks, kwargsr   r@   r@   r=   r   r&   r   r@   rp  )dimsru  r   rq  clip)r  moder   )r  wrap)rC   r@   r'   )r   r&   )r   r@   r   r@   )r&   r'   r&   )rC   r   r  rC   rC   r   r   c                   t        d |D              r6| t        j                  t        j                  fv rt        j                          | t        j                  u r-t        j                  |      }t        j                  ||      }n
 | |      x}}t        t        j                  |fi |t        j                  |fi |       y )Nc              3  F   K   | ]  }t         j                  |        y wr5   )r   isscalar)rV   r   s     r"   rX   z)test_ravel_multi_index.<locals>.<genexpr>@  s     
'a2;;q>
's   !r   )	rM  r   r  r   rK   rp   skipr	   ravel_multi_index)r  r  r   r   inputs        r"   test_ravel_multi_indexr    s    B 
'3
''G

BMM7R,R"--jjoc&1cl"e
S+F+
U-f-r$   c                 Z   t        j                  g dg dg dg      } | | dkD  j                  d         } | j                         }t        j                  | j                        j                         sJ t        t        j                  |d      t        j                  | d             y )	Nr}  r~  )rv   rv   rv   r   r&   r.  r  r  )
r   rK   r  r   r   r  rL   rM  r	   r  )multi_indexmulti_index_nps     r"   $test_ravel_multi_index_unknown_shaper  O  s    --I| DEK{Q333;<K ((*N88K%%&**,,,
^&9
[v6r$   c            	        t        j                  g dd      } | | dkD     } t        j                  ddgddgddgd	d
gddgddggd      }||dkD  j                  d         }d| |g}t        j	                  | j
                        j                         sJ t        j	                  |j
                        j                         sJ t        j                  t        d      5  t        j                  |d       d d d        y # 1 sw Y   y xY w)N)r'   rv   r   rv   r'   r   r   r&   rv   r   r=   r   r@   r   rC   r   r.  zArrays' chunk sizesr  r  r  )r   rK   r  r   r  rL   rM  rp   rq   rr   r  )multi_index1multi_index2r  s      r"   *test_ravel_multi_index_unknown_shape_failsr  \  s    ==:Lq 01L==
Q"bAq6Aq6Aq6B8<VL  !1 6 6A 6 >?LlL1K88L&&'++---88L&&'++---	z)>	? ;
[z:; ; ;s   !DDr  )noutwrap_in_listc                    t        j                  t        d      5  t        j                  d|r
| d   | d   gn|        d d d        y # 1 sw Y   y xY w)NzDask types are not supportedr  r   r   r&   )rp   rq   r  r   r  )r  r  s     r"   #test_ravel_multi_index_delayed_dimsr  m  sN     
*2P	Q S
V<d1gtAw%7TRS S Ss   #AAc                     t        j                  t        d      5  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nzonly int indices permittedr  )rX  r'   rs  )rp   rq   r  r   r  r.   r$   r"   $test_ravel_multi_index_non_int_dtyper  t  s:    	y(D	E 

	

 
 
s	   <Ac            
        t         j                  j                         j                  dd      } t	        j
                  | d      }t        t        j                  j                  t         j                  | ddd      t	        j                  t         j                  |ddd             t        t        j                  j                  t         j                  | ddd      t	        j                  t        j                  |ddd             t        t        j                  j                  t         j                  | dddd	
      t	        j                  t        j                  |dddd	
             y )Nr   )r   r   r   )r=   rC   r   r'   r=   r   float32r   )r   rI   rJ   r   r   rK   r	   chunkcoarsenr  meanrs   s     r"   test_coarsenr  |  s    
		((((;A
a'A
aL12::bffaQST3V 
aL12::bffaQST3V 
!q\C


277A1|9=r$   c                 R   t        j                  dd      } t        t        j                  t        j
                  | ddid      t        j                  ddg             t        t        j                  t        j                  | ddid      t        j                  g d             y )	Nr   r   r   r   Ttrim_excessr   )r   r      )r   rm   r	   r  r   r  r   r  r}   s    r"   test_coarsen_with_excessr    so    
		"QAbjjQF=rxxA?OP


2661q!f$7
23r$   rE      c           	     @   t        j                  t        j                  |       d      }|j	                  t        |             }t        t        j                  t        j                  |ddid      t        j                  t        j                  |ddid             y )Nr   r   r   r   Tr  )r   rm   r   r  r  r\   r	   r  )r   r}  r~  s      r"   test_coarsen_bad_chunksr    sh    	266&>!	,B	E&M	"B


26622wD9


26622wD9r$   zchunks, divisor)
)r   r&   )r   r'   ))r&   r&   r&   r'   )r  r   )r   r   r   rT  r   r   )r  rC   ))r   r   r   (   r'   r   ))r   r   r   *   rT  r   rE  ))r   r   r   /   rT  r   r   ))r'   r   r   r  rT  r   r=   c                >   ddl m}  || |      }t        j                  |      |z  dk7  }t        j	                  t        j                  |       |z  dk(        d   }t        |      t        |       k(  sJ |D cg c]  }| |   	 c}|D cg c]  }||   	 c}k(  sJ t        j                  |      dkD  j                         sJ t        |      t        |       dz   k  sJ |j                         dv sJ |j                         dk(  r|d   dk(  sJ y y c c}w c c}w )Nr   )aligned_coarsen_chunksr&   r   rv   )dask.array.routinesr  r   r   r7  r  r  r^   )r   divisoraccaligned_chunksany_remaindersvalid_chunksidxs          r"   test_aligned_coarsen_chunksr    s+     B)Nhh~.8Q>N88RXXf-7A=>qAL ~#f+---#/0CF3K0'35 #s5    HH^$q(--///~#f+/1116)))q b!Q&&& ! 1 5s   9DDc            
        t         j                  j                         } | j                  dd      }t	        j
                  |d      }| j                  dd      }t	        j
                  |d      }t        t         j                  |dd	d
      t	        j                  |dd	d
             t        t         j                  |dd	d	
      t	        j                  |dd	d	
             t        t         j                  |dd	d
      t	        j                  |dd	d
             t        t         j                  |d	d	d
      t	        j                  |d	d	d
             t        t         j                  |g dd	d
      t	        j                  |g dd	d
             t        t         j                  |g dd	d
      t	        j                  |g dd	d
             t        t         j                  |t        dd      d	d
      t	        j                  |t        dd      d	d
             t        t         j                  |dgdz  dgdz  z   |d
      t	        j                  |dgdz  dgdz  z   |d
             t        t         j                  |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        t        j                  t              5  t	        j                  |dgd	d
       d d d        t        j                  t              5  t	        j                  |dgd	d
       d d d        y # 1 sw Y   xY w# 1 sw Y   RxY w# 1 sw Y   y xY w)Nr   ry  r   r   r   rs  r   r   rv   r.  r   r   r&   rw   r'   r   r   )r'   r   rC   rC   rw   rw   r=   r'   r|   )r   rI   rJ   r   r   rK   r	   insertr!  r
   rp   rq   r  r   )r   r   r   r!   r   s        r"   test_insertr    s   
))


!CRh'A
a'ARg&A
a'Abii1bqi)299Q2A+FGbii1bri*BIIaBR,HIbii1bqi)299Q2A+FGbii2ri+RYYq"br-JKbii9bqi1299Q	2TU3VW
		!)2A	6
		!)2A6 
		!U1a["1	-ryyE!QKRS/T 
		!aS1WsQw&	2
		!aS1WsQw&2 bii1adi+RYYq!QqT-JK
		!)2A6
		!)2A6  
 
*	+ )
		!aVRa() 
y	! &
		!aS"1%& 
y	! '
		!aS"2&' ') )& &' 's$   N+N7O+N47O Oc                 @   t         j                  j                         } | j                  dd      }t	        j
                  |d      }| j                  dd      }t	        j
                  |d      }| j                  dd      }t	        j
                  |d      }t        t         j                  ||d 	      t	        j                  ||d 	             t        t         j                  ||d 	      t	        j                  ||d 	             t        t         j                  ||d 	      t	        j                  ||d 	             t        t         j                  ||d
	      t	        j                  ||d
	             t        t         j                  ||d	      t	        j                  ||d	             t        t         j                  ||d	      t	        j                  ||d	             t        t         j                  ||d	      t	        j                  ||d	             t        t         j                  |dd 	      t	        j                  |dd 	             t        t         j                  |dd
	      t	        j                  |dd
	             t        t         j                  |dd	      t	        j                  |dd	             t        j                  t              5  t	        j                  |dd	       d d d        t        j                  t              5  t	        j                  |dd	       d d d        t        j                  t              5  t	        j                  |dd
	       d d d        y # 1 sw Y   ~xY w# 1 sw Y   PxY w# 1 sw Y   y xY w)Nr   ry  r   r   r   )r   r   r   rs  r.  r   rw   r&   rv   )

r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r'   r|   r  )r   rI   rJ   r   r   rK   r	   rN  rp   rq   r   rr   )r   r   r   r>  r  y0b0s          r"   test_appendr    s   
))


!CRh'A
a'A 
bw	'B	r&	)B 
bw	'B	r&	)B bii14i("))Aqt*DEbii2Di)299Q+FGbii2Di)299Q+FG bii2Ai&		!Ra(@Abii2Bi'1br)BC bii2Ai&		!Ra(@Abii2Bi'1br)BC 
		!&T	2
		!&T2 
		!&Q	/1>OVW1X 
		!&Q	/1>OVW1X
 
y	! 0
		!&Q/0	y	! 1
		!&R01 
z	" (
		!YQ'( (0 01 1( (s$   &M< NN<NNNc                 l   t         j                  j                         j                  dd      } t	        j
                  | d      }t        t         j                  t         j                  | ddgdd      dgdd      t	        j                  t	        j                  |ddgdd      dgdd             y )	Nr   rl   r   r   r   r&   rv   r.  )r   rI   rJ   r   r   rK   r	   r  )r  rW   s     r"   test_multi_insertr  	  s    
		((&(9A
a'A
		"))A1vr)2QC!	D
		"))A1vr2QC!Dr$   c                    t         j                  j                         j                  dd      } t	        j
                  | d      }t        t         j                  | dd      t	        j                  |dd             t        t         j                  | dd	      t	        j                  |dd	             t        t         j                  | d
d      t	        j                  |d
d             t        t         j                  | d	d      t	        j                  |d	d             t        t         j                  | g dd      t	        j                  |g dd             t        t         j                  | g dd      t	        j                  |g dd             t        t         j                  | t        dd      d      t	        j                  |t        dd      d             t        t         j                  | t        ddd	      d      t	        j                  |t        ddd	      d             t        t         j                  |ddgd      t	        j                  |ddgd             t        j                  t              5  t	        j                  |dgd       d d d        t        j                  t              5  t	        j                  |dgd       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)Nr   ry  r   r   r   r   r.  r   rv   r   r&   rw   r  )r'   r   rC   rC   r=   r'   r|   )r   rI   rJ   r   r   rK   r	   deleter!  rp   rq   r   r  s     r"   test_deleter  (	  s*   
		((((;A
a'Abii11i%ryyAA'>?bii12i&		!QR(@Abii11i%ryyAA'>?bii2Bi'1br)BCbii91i-ryyIA/NO
		!\	*
		!\* bii5A;Qi/1eAqkPQ1RS
		!U1b"%A	.		!U1b"=MTU0V biiAq6i*BIIa!Qa,HI	y	! "
		!aSq!" 
y	! #
		!aSr"# #" "# #s   K,	K8,K58Lc                    t        j                  t        j                  dt        j                        d      } t        j                  t        j                  dt        j
                        d      }t        j                  t        j                  dt        j                        d      }t        j                  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        j                  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        rt        j                  t        j                  d      |      t        j                  k(  sJ t        j                  t        j                  dt        j                        |      t        j                  k(  sJ t        j                  d|       t        j                  k(  sJ t        j                  t        j                  d      |      t        j
                  k(  sJ t        j                  t        j                  dt        j                        |      t        j
                  k(  sJ t        j                  d|       t        j                  k(  sJ t        j                  t        j                  dt        j                        d      }t        j                  | |      t        j                  k(  sJ y )Nr   r  r   r&   rX  r.   gZbti)r   rK   r   r   r  r=  r  result_typefloat64r   r   )r   r   rW   r   s       r"   test_result_typer  C	  sn   
bgga,T:A
bgga*48A
bgga*48A
2::A>>!Q288+++>>!Q"bjj000>>!RZZ(BJJ666>>!RXXbjj12bjj@@@>>!Q2::--->>!Q288+++>>#q!RZZ///~~bhhqk1-999~~bggb"((3Q7288CCC~~eQ'2::555~~bhhqk1-999~~bggb"((3Q7288CCC~~eQ'2::555 	bggb"**-b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}| D cg c]
  } ||       }}| D cg c]
  } ||       }}|D cg c]/  }t         j                  j                         j                  |      1 }}t        ||      D cg c]  \  }}t	        j
                  ||       }	}}||	fS c c}w c c}w c c}w c c}}w )Nr   r@   r   r   r&   r'   r   )	r   r   rW   r    rm  fgh*rA   )r'   r   r&   )r'   r   r'   )r=   r&   rw  r  r   c                ,    t        fd| D              S )Nc              3  (   K   | ]	  }|     y wr5   r.   )rV   rW   _dimensionss     r"   rX   zE_numpy_and_dask_inputs.<locals>._shape_from_string.<locals>.<genexpr>z	  s     /[^/   r\   )sr  s    r"   _shape_from_stringz2_numpy_and_dask_inputs.<locals>._shape_from_stringy	  s    /Q///r$   c                ,    t        fd| D              S )Nc              3  (   K   | ]	  }|     y wr5   r.   )rV   rW   r  s     r"   rX   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$   r   )r   rI   rJ   r_   r   rK   )
input_sigsr  r  r  shapesr   	np_inputsr   rW   	da_inputsr  r  s             @@r"   _numpy_and_dask_inputsr  ^	  s     
K 
G0, .88 #8F8.89!!$9F9<BCq&&(//2CIC8;Iv8NO1q+OIOi 99COs   C C4C
!C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                   | j                  d      d   j                  dd      j                  d      }t        |      \  }}t        j                         5  t        j
                  dt        j                         t        t        j                  | g| t        j                  | g|        d d d        y # 1 sw Y   y xY w)N->r   z...r  ,r4  r5  )splitreplacer  r:  r;  r<  r   r   r	   r   einsum)r  r  r  r  s       r"   test_einsumr  	  s    F "''-a088DJJ3OJ1*=Iy		 	 	" 
h1F1FGII&33II&33	

 
 
s   AB99Cc                 $   t         j                  j                  dd      } t         j                  j                  dd      }t        j                         5  t        j                  dt         j
                         t        j                  d| |      }d d d        j                  dk(  sJ t         j                  j                  dd	      } t         j                  j                  dd
      }t        j                         5  t        j                  dt         j
                         t        j                  d| |      }d d d        |j                  dk(  sJ t        j                  j                  d      }t        j                  j                  d      }t        j                  |d      } t        j                  |d      }t        j                         5  t        j                  dt         j
                         t        j                  d| |      }d d d        |j                  dk(  sJ t        t        j                  d||      |       t        j                  dt        j                  d      }t        j                  dt        j                  d      }t        j                  dt        j                  d      }t        j                  d|||      }|j                  dk(  sJ y # 1 sw Y   ZxY w# 1 sw Y   xY w# 1 sw Y   xY w)N)i   rC   rC   rC   rC   )   rC   rC   rC   rC   r   r4  r5  zaijkl,amnop->ijklmnop)r   r   r   r   r   r   r   r   )r   rC   rC   rC   rC   )r  rC   r&   rC   rC   )r  rC   rC   r&   rC   )r   r&   r&   r&   r&   r&   r&   r&   r&   r   r   r   r   r  r   )r'   r=   r=   )r&   r'   r'   zaij,amn->ijmn)r&   r&   r&   r&   r  r  r  )@  r'   r   r'   r   )r  r&   r   r'   r   )rL   r   	chunksize)r'   r   r   zabcde,bfc,dfe->acefr  )r   rI   r:  r;  r<  r   r  r   r   rK   r	   r   r  	numblocks)	arr1arr2r   np_arr1np_arr2r  r   r!   r  s	            r"   test_einsum_chunksizesr  	  sk   99.7HID99.7HID		 	 	" @h1F1FG2D$?@ ==O+++99,5EFD99,5EFD		 	 	" @h1F1FG2D$?@ == 	 	 	 	 iiy)Giiy)G==3D==3D		 	 	" 8h1F1FG?D$78 ==O+++bii':FC 	#2::AU	A 	k{KA
k{KA
)))1a
3C==L(((O@ @@ @&8 8s$   =K,=K9=L,K69LLoptimize_opts))TF)greedyF)optimalFc                \   d}|j                  d      d   j                  d      }t        |      \  }}| \  }}t        t        j                  |g|d|it        j                  |g|d|i       t        t        j                  |g|d|it        j                  |g|d|i       y )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	1D1
		#1	1D1
 
		#1	1D1
		#1	1D1r$   ru  )rp  rq  AKc                    d}|j                  d      d   j                  d      }t        |      \  }}t        t        j                  |g|d| it        j                  |g|d| i       y )Nr  r  r   r  ru  r  )ru  r  r  r  r  s        r"   test_einsum_orderr   	  sg    
"C4#))#.J1*=Iy
		#/	//31X1XRW1Xr$   casting)noequivsafe	same_kindunsafec                    d}|j                  d      d   j                  d      }t        |      \  }}t        t        j                  |g|d| it        j                  |g|d| i       y )Nr  r  r   r  r  r  )r  r  r  r  r  s        r"   test_einsum_castingr  
  sg    
"C4#))#.J1*=Iy
		#3	373
		#3	373r$   split_everyc                    t        d      \  }}t        t        j                  dg| t	        j                  dg|d| i       y )Nr   r	  )r  r	   r   r  r   )r	  r  r  s      r"   test_einsum_split_everyr  
  s?    1#6Iy
		#"	"BIIc$WI$W;$Wr$   c                     t        d      \  } }t        j                  t              5  t	        j
                  dg|ddd d d d        y # 1 sw Y   y xY w)Nr   r&   r'   )foobar)r  rp   rq   r  r   r  )_r  s     r"   test_einsum_invalid_argsr  
  sI    )#.LAy	y	! 1
		#0	0qa01 1 1s   AAc                    t         j                  j                         } | j                  d      }| j                  d      }| j                  d      }| j                  d      }t        j                  |d      }t        j                  |d      }t        j                  |d      }t        j                  |d	      }t         j                  d
|||      }	t        j
                  d
|||      }
t        |	|
       |
|z  }t         j                  d||||      }	t        j
                  d||||      }
t        |	|
       t        |	|       y )Nr&   r   r=   r?   r  r   r&   rA   r   r   r   r   rA   r   r   r   z	ijk,kl,jlzijk,kl,jl,i->ir   rI   rJ   r   rK   r  r	   r   r   r   rW   r    rc  r  rP  r  np_resda_resmul_ress               r"   $test_einsum_broadcasting_contractionr  
  s   
))


!C

9A

6A

6A

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

< A

6A

6A

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

9A

9A

6A

6A
--"5
6C
--"5
6C
--"2
3C
--6
+CYY*Aq!Q7FYY*Cc3?Fffr$   c            
         t         j                  j                  d      } t        j                  | d      }|d d }t        j                  d||      }t        |t         j	                  d| d d | d d              y )Nry  r   r   r   zca,ca->c)r   rI   r   rK   r  r	   )r  rv  r   s      r"   test_einsum_empty_dimensionr#  _
  sf    
))

8
$C==V,D8DYYz4.Ffbii
CGS!W=>r$   r   returnedc                    t        j                  | d      }t        j                  | |      }t        j                  ||      }t	        ||       y )Nr'   r   )r$  )r   rK   r   averager	   )r   r$  rc  np_avgda_avgs        r"   test_averager)  g
  s@     --!
$CZZHZ-FZZh/Fffr$   c                    t        j                  | d      }t        j                  |d      }t        j                  | d      }t	        ||       y )Nr'   r   T)r3  )r   rK   r&  r   r	   )r   rc  r(  r'  s       r"   test_average_keepdimsr+  r
  s>    
--!
$CZZd+FZZDZ)Fffr$   r3  c           	     N   t         j                  d      j                  d      }t        j                  |d      }t         j                  ddg      }t        j                  |d      }t        j                  ||d|       }t        |t         j                  ||d|              y )	Nr@   rU  r'   r   r  r  r&   )rp  r   r3  )r   rm   rn   r   rK   r   r&  r	   )r3  r   rc  rp  	d_weightsr(  s         r"   test_average_weightsr.  |
  s{    
		!V$A
--!
$Chhd|$Gga0IZZYQJFfbjjG!hjOPr$   c                    t        j                  dd      } t        j                  t              5  t        j
                  | g d       d d d        t        j                  t              5  t        j
                  | t        j                  |             j                          d d d        y # 1 sw Y   dxY w# 1 sw Y   y xY w)Nr   r'   r   r  )rp  )
r   rm   rp   rq   r  r&  r   r=  
zeros_liker   )rc  s    r"   test_average_raisesr1  
  s    
))Bq
!C	y	! +


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


3c 23;;=> >+ +> >s   B.,9B:.B7:Cc                    t        j                  t        j                  ddg      d      } t        j	                  |       du sJ t        j                  t        j                  ddg      d      } t        j	                  |       du sJ y )Nr&   r'   Fy       @        T)r   rK   r   r   iscomplexobj)r   s    r"   test_iscomplexobjr4  
  sj    
bhh1v&*A??1&&&
bhh6{+Q/A??1%%%r$   c            	        t         j                  j                         j                  d      } dD ]V  }t	        j
                  | ||f      }t         j                  t	        j                  |      j                         t         j                  |             sJ t         j                  t	        j                  |      j                         t         j                  |             sJ dD ]  }t         j                  t	        j                  ||      j                         t         j                  | |            sJ t         j                  t	        j                  ||      j                         t         j                  | |            rJ  Y y )Nr   r   )ir  iiiiiirv   r&   r=   r   r@   rC   r   r   r   rE  r   r   r  )
r   rI   rJ   r  r   rK   r  triur   tril)r  chkdAr   s       r"   test_tril_triur;  
  s   
		//9A H]]1sCj){{2772;..0"''!*==={{2772;..0"''!*===
 	HA0 ;;rwwr1~557AGGG;;rwwr1~557AGGG3	HHr$   c                     t         j                  j                         j                  ddd      } t	        j
                  | d      }t        t	        j                  |      t         j                  |              y )Nr   r   )r   r   r   )r   r   r   r   )r   rI   rJ   r   r   rK   r	   r7  r  r:  s     r"   test_tril_ndimsr>  
  sM    
		((B=A	q	+Bbggbk2771:&r$   c                 X   t         j                  j                         j                  ddd      } t	        j
                  | d      }t        t	        j                  |      t         j                  |              t        t	        j                  |      t         j                  |              y )Nr   r   )r   #   r   r   )	r   rI   rJ   r   r   rK   r	   r7  r8  r=  s     r"    test_tril_triu_non_square_arraysrA  
  sg    
		((B9A	q	(Bbggbk2771:&bggbk2771:&r$   zn, k, m, chunks))r   r   r   r   )r   r&   r   r   )r   rv   r   r   )r   r   r   r&   c                   t        j                  | |||      d   }t        j                  | ||      d   }t        j                  dk(  r&t        |j                  |j                        |       nt        ||       t        j                  | |||      d   }t        j                  | ||      d   }t        j                  dk(  r&t        |j                  |j                        |       y t        ||       y )N)r?  r   r  r   r   )r?  r   r  win32)	r   tril_indicesr   sysplatformr	   r  r   triu_indices)r?  r   r  r   rq  r   s         r"   test_tril_triu_indicesrH  
  s    
 __qA6:1=Fa1-a0H
||wMM(..)	

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

 	&(#r$   c                    t        j                  g d      } t        j                  |       }t        |dd       t	        j
                  t	        j                  |            }t        |dd       t        j                  |       }t        |dgdggd       t	        j
                  t	        j                  |            }t        |dgdggd       y)z@Test that graphs that internally use np.vectorize can be pickled)r  r   r'   F)check_dtyper   r&   N)r   rK   r  r	   pickleloadsdumpsr&  )r   r   r  rW   r  s        r"   test_pickle_vectorized_routinesrO  
  s    
()A
Aa&	fll1o	&Bb!'
AAa1#s/	fll1o	&BbA3*%0r$   )
__future__r   r  r   rL  rE  r:  numbersr   rp   r  dask.delayedr   importorskipr   
dask.arrayr   r   dask.array.numpy_compatr   r   dask.array.utilsr	   r
   _array_expr_enabledr  r#   r*   r/   markparametrizer;   r\   rQ   r  combinations_with_replacementrh   rt   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r+  r;  r>  rB  rK  rO  rQ  rW  exprm   rh  ro  r  r<  rs  ru  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  rE  rR  rW  ra  re  ri  rm  ro  rr  ru  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  xfailr!  r)  r.  r1  r:  rB  rE  rI  rL  rQ  rS  rV  rY  r[  r`  re  rg  rn  rw  r  rK   rK  rn   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  r;  r>  rA  rH  rO  r}   s   0r"   <module>r^     s   "    
      V!  ; 12FKK9dS#;
 %OP Q %OP	%'%	
	 Q
 %OP/	//WdFI}=q	
 Q0"H*:  j*%=>":;J < ?JP6 	2	2		&!	&!	&!	&"	&&!"	 57D&)]"ST U> 
				 	&$&2 *""" 	" 	"	"
 	&" 	" 	" 	!" 	%" 	)" 	" 	!" 	#" 	(" 	,"  	"!"" 	%#"$ 	'%"& 	+'"( 	0)"* 	&+", 	)-". 	+/"0 	01"2 	33"6 	7"8 	19": 	+;"< 	+="> 	-?"@ 	AA"B 	FC"%L3M%L3.U$ 
XLL #KLF MFF"="
 =:J*KL3 M3" )M;K+LM
. N
. /	!5)	!5)	.6	EuM	)40	 Aq)L!+<|R>PQ		* 	12	@A	

 	uw	q	t	w	y!	T	0T 	t	q	q	q	r	0	0 Aq)L!+<|R>PQ i(8 )	
8 i(4 )46 i(3 )36#
 5("34+tTlQFaVaQRVDT-UVP W 5P  "-"	ryy}-rvvbiim/DEvN	RVVBIIbM23V<	ryy}-/4  1v.
 /!"
(&  
""**5
1GG!* 	QA
a!a	q2r(A.	q"CQG	q#D"EqI	qAq6C9r2hR"I6R
 &'!230 4
0X
8V
@3 	Y	aS		RXX1vh 	XRXX1vh 
d	9+	%	9+	% 3! 3 T5M2dE]34)4%7 8 5 4 3@ T5M2dE]3!0 4 3!0HJ T5M2T5M2&!-* . 3 3*< T5M2T5M2* 3 3*<*H.*H;FI$I:Q7&,4* %7)E4=95$-8  9 : 8 < "c+T]UDMFF#3h5GH	 ,
 "c+2wi0%T]UDMFF#3h5GH T]UDMFF#3h5GH D%=1 2		 1 ,$ 4-8 9 FF#34";<!ABD C = 5D  "?@$ A$ C T5M2  3 &(44=$ !LM< N<$ T5M2!78( 9 3(2 4.1 2F44  iiABIIq 9BIIryyRS;TU'	'"
U(; 4F1$1*R
&G	0R L KLX MX
2$&Q  !89  : 
 !89, :,$
  ((	/G8 ,,



	  Y	6)EF
Y	6)EF
Y	Df6$BC
Y	6@P)QR
fd378
Y		*FDis4ST IIaL  Aq)002is+	
 aVdDf-.
aVq!fq!fq!fq!f5	6d
>ST#,-	@ 
;" -"--B"8'1b'PQ:R!ST%7S 8 US

  eBm#DQD1H#DE F ''0%'P.(b#6.6' T !D

E!D

*)Z K$ "67 8 $RS T q	2 3100"? ryy}biil.B.B6.JKLdE]3 4 M ryy}biil.B.B6.JKL M eT]3	Q 4	Q>&!HH'' L$	$01g $Es   @AJ
