U
    /e&B                 &   @   s  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mZ d dl	Z	d dl
mZ edZd dlmZ d dlmZ d dlmZmZ dd	 Zd
d Zdd Zejddddgdd Zejddddgejde e fddddgdd Zejddddgejdeee ddddgd d!d" Z d#d$ Z!d%d& Z"d'd( Z#d)d* Z$ejdd+d,gejd-d.d/d0gd1d2 Z%d3d4 Z&d5d6 Z'ejd7d8i fd9i fd:i fd:d;d ifd:d;d<ifd:d;d ifd:d;d=ifd:d;d>ifgejd-e ddddgd?d@ Z(ejdAi dBdCidBdDidBdEidBdFigejd-e ddddgdGdH Z)ejdId.d.d.d.gd.dJd.d.gd.dKd.d.gd.dLd.d.gd.dMd.d.gdJd.d.d.gdJdJd.d.gdNdOd.d.gdPdQd.d.gdRdSd.d.gdKd.d.d.gdKdNd.d.gdKdOd.d.gdTdQd.d.gdUdSd.d.gdLd.d.d.gdLdPd.d.gdLdVd.d.gdLdQd.d.gdWdSd.d.gdMd.d.d.gdMdRd.d.gdMdXd.d.gdMdYd.d.gdMdSd.d.gd.dJd.d/gd.dMd.dZgdKdOdFdFgdKdOd[d\gdKdOdKdOgdWdSd]d^gd_d`dadbgg dcdd Z*dedf Z+ejdBd d<dgdCdhdidjgdkdl Z,ejdmdnddDdodpgdqdr Z-dsdt Z.dudv Z/dwdx Z0dydz Z1ejdd{d|gd}d~ Z2ejdd{d|gdd Z3ejdddd dgddd dgddd dgddd dgddd dggejddd gdd<gdd gdd=ggdd Z4ejdddd gddd gddd ggejdde gdd gddgddgddggdd Z5ejdddgdd gdd<gdd gdd=ggdd Z6ejddd gdd<gdd gdd=ggejdd d<d gdd Z7ejdd d<d gdd Z8ejdd d<d gdd Z9dd Z:ejd-ddgejdddgd d gd<d gddgggdd Z;ejddd.dgdddgdddgdd.d gdd.d<gdd.d gdd.d=gdd.d>gde<e=de<e=dfd>gdde<e=dfd>gde<e=dfd=ggejdd<d gdd Z>dd Z?ejdejd<d d<dd<gej@dejd<d d<d d<gejAdgdd ZBdd ZCddĄ ZDejdg d<g d<gd gd<d gd<gdd dddgdddgd gdd dddgddddd<ddddgdgdd dddgddddd<ddddggdgdd dddgddd gddgdd=gddggdggejdddgddӄ ZEddՄ ZFddׄ ZGddل ZHddۄ ZIdd݄ ZJdd߄ ZKdd ZLejddddddd d<d gfdd gfded d<ggfded d<ggfd d<d ggdfed d<d ggdfed d<d ggdfgdd ZMejdddgejdddgejddd d<gejdddgdd ZNejdddgejdddgdd ZOdd ZPejdddgejdddgejdddgdd ZQejdddgejdddgdd ZRdd ZSdd ZTdd ZUdd  ZVdd ZWdd ZXdd ZYdd ZZd	d
 Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbejdddgejdddgejdddgdd Zcejddd gejd!d dggejddd/gdd"gd#d$gd%d#ggd&d' Zdejddd gejd!d dggejd(dd/gdd"gd#d$gd%d#ggejd)dd/gdd"gd#d$gd%d#ggejd*ddgd+d, Zeejd-ddgd.d/ Zfd0d1 Zgejdmddpgejd2dd̐d3d4d5gejd;dd d<d=dgdCgd6d7 Zhd8d9 Zid:d; Zjejd-dd<d=gd>d? Zkejd-d@dAdBgejdCddgdDdE ZldFdG ZmdHdI ZndJdK Zoejd;dd d<d=dgd>dLd gdMdN ZpejdOddgejd;dd d=dPgdQdR Zqejd-ddFgdSdT ZrdUdV ZsdWdX ZtdYdZ Zuejd[ejvejvd fejwejwd<fejxejxd fgd\d] Zyd^d_ Zzd`da Z{dbdc Z|ddde Z}dfdg Z~dhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zejjdzd{d|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejd;dd ddggdd Zdd Zejd;dd ddggdd Zdd Zdd Zdd Zdd Zdd Zdd Zejddd dd dd ejejgejddddgddd<ggdDedddfdddgddd<ggdedddfdddgddd<ggd<edddfdddgddd<ggdDedddfdddggdFed̐ddfdddgddd<gddd ggdedddfe=ddd d< dedddfd<d dggdeddfd<d dgd<d gddgdːdgd̐dgggdeddfg	dd Zdd Zdd Zejdeddgeddgd dgejdddgdd ZdÐdĄ ZdŐdƄ ZdǐdȄ Zejdmdɐdʄ edːd̃D d͐d΄ ZejdϐdАdѐdҐdӐdԐdՐd֐dאdؐdg
dڐdۄ Zdܐd݄ Zdސd߄ Zdd Zdd Zdd Zdd Zejddddddddddddddddddddddddd dddgdd Zejdddd	gd
d Zejdddddgdd Zejddddddgdd Zejddd gdd Zdd Zdd Zd d! Zd"d# Zejde=dȡe=dd$gejd$ddgd%d& Zejde=dȡe=dd$gd'd( Zejd)ddgd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zejd6d7d8d9d:gd;d< ZdS (=      N)Number)	AxisError)delayednumpy)
_numpy_123)	assert_eq	same_keysc                  C   sl   t jddd} tjdddd}ttj|dddt j| ddd tjdd	d
} t| }t|tjshtd S )N   i4dtype   )chunksr   i8)Zndminr   )d   r   
   r   )nponesdar   array
isinstanceArrayAssertionError)xdy r   B/tmp/pip-unpacked-wheel-dbjnr7gq/dask/array/tests/test_routines.py
test_array   s    "
r   c                  C   s4   ddddg} t | }t|t js&tt| | d S )Nr         r   )r   r   r   r   r   r   r   dxr   r   r   test_array_return_type   s    
r$   c                   C   s(   dt jjjkstdt jjjks$td S )Nz*This docstring was copied from numpy.arrayzCreate an array.)r   Zroutinesr   __doc__r   r   r   r   r   test_derived_docstrings'   s    r&   funcnameZ
atleast_1d
atleast_2dZ
atleast_3dc                 C   s0   t t| }t t| }| }| }||ks,td S N)getattrr   r   r   )r'   np_funcda_funcnp_r_nda_r_nr   r   r   test_atleast_nd_no_args,   s
    

r/   zshape, chunks)   r!   )r1      r!   r   )r1   r4      r!   r   r1   )r1   r4   r7   r   r!   r   r1   r	   c           	      C   sL   t j|}tj||d}tt | }tt| }||}||}t|| d S Nr   )r   randomr   
from_arrayr*   r   )	r'   shaper   np_ada_ar+   r,   np_rda_rr   r   r   test_atleast_nd_one_arg7   s    

rC   zshape1, shape2r0   r3   r6   r9   r!   c                 C   s   t j|}tj|tdd |D d}t j|}tj|tdd |D d}||g}||g}tt | }	tt| }
|	| }|
| }t|t|kstt|t|kstt	||D ]\}}t
|| qd S )Nc                 s   s   | ]}|d  V  qdS r!   Nr   .0cr   r   r   	<genexpr>Z   s     z+test_atleast_nd_two_args.<locals>.<genexpr>r   c                 s   s   | ]}|d  V  qdS rD   r   rE   r   r   r   rH   ]   s     )r   r<   r   r=   tupler*   typer   lenzipr   )r'   shape1shape2Znp_a_1Zda_a_1Znp_a_2Zda_a_2Znp_a_nZda_a_nr+   r,   r-   r.   rA   rB   r   r   r   test_atleast_nd_two_argsO   s    


rO   c               	   C   s   t dd} t| d}t|d| d t|d|dsLtt|ddd| ddd t|ddd|dddstt	
t |dd W 5 Q R X t	
t |d W 5 Q R X d S )	N   )r1   r4   r   r8   r!   r   r    r!   r   r    r    r!   )r   arangereshaper   r=   r   	transposer   r   pytestraises
ValueErrorr   r   r   r   r   test_transposep   s    "rZ   c                  C   sB   t d} tjddd}t| ddddg|ddddg d S )Nr:   r   r   r   r    )r   r   r   r   rU   r   r   r   r   r   test_transpose_negative_axes   s    
r^   c                  C   s6   t jddd} | d| ks t| d| ks2td S )Nr8   r   r   r   r    r!   )r\   r[   )r   r   rU   r   r   r   r   r   !test_transpose_skip_when_possible   s    rb   c                  C   s$  t jjdddd} tj| dd}tt | ddt|dd tt | ddt|dd t| dd|dd t| dd|dd t| dd|dd t| dd	|dd	 t| d	d|d	d |ddj|ddjkst|ddj|ddjks td S )
Nr   r   r         sizer1   r	   r!   r   r    r!   r[   )	r   r<   normalr   r=   r   Zswapaxesnamer   rY   r   r   r   test_swapaxes   s     rk   moveaxisrollaxisr>   r   r	   )r   r	   re   r   c                 C   s   t j|}tj|t|d d}tt | }tt| }t|j |jD ]L}t||d|tj	sbt
t|j |jD ]}t|||||||| qrqFd S )Nr2   r   r   )r   r<   r   r=   rK   r*   rangendimr   r   r   r   )r'   r>   r   r   r+   r,   Zaxis1Zaxis2r   r   r   test_moveaxis_rollaxis   s    

rq   c                  C   s   t jd} tj| dd}tt j| dddtj|ddd tt | dt|d tt|dtjsnt	tt j| dddtj|ddd d S )	Nrc   rh   r   r    r   )Zdestinationsourcer!   )startaxis)
r   r<   r   r=   r   rl   rm   r   r   r   rY   r   r   r   test_moveaxis_rollaxis_keyword   s     ru   c                  C   s   t jjddd} t| dd}t|t js.tt|t|  dd t	| dd}t|t jsdtt|t	|  dd d S )Nr1   r1   r1   r!   r   r   )
r   r<   r   rl   r   r   r   r   computerm   )aresultr   r   r    test_moveaxis_rollaxis_numpy_api   s    rz   zfuncname, kwargsflipudfliplrfliprt   r    r[   )r   r!   c                 C   s   | d}|d krD| dkr d}qT| dkr.d}qT| dkrTtt|}nt|tsT|f}tj|}tj|dd}t	t| }t	t| }z|D ]}t|j
|  qW n6 tk
r   tt ||f| W 5 Q R X Y n$X ||f|}	||f|}
t|	|
 d S )	Nrt   r{   r   r|   r    r}   r    r   )getro   rK   r   rI   r   r<   r   r=   r*   rp   
IndexErrorrV   rW   rX   r   )r'   kwargsr>   rt   r?   r@   r+   r,   ZaxrA   rB   r   r   r   	test_flip   s.    



r   r   axesr    r   r5   r_   r    r    c                 C   s  |  dd}tj|}tj|dd}tj}tj}z$|d d D ]}t|j|  q@W n6 tk
r   t	
t ||f|  W 5 Q R X Y nX t|dks|d |d krt	
t ||f|  W 5 Q R X nBtddD ]6}||fd	|i| }	||fd	|i| }
t|	|
 qd S )
Nr   r   r    r    r   r!   r   r`   	   k)r   r   r<   r   r=   Zrot90ro   rp   r   rV   rW   rX   rK   r   )r   r>   r   r?   r@   r+   r,   rt   r   rA   rB   r   r   r   
test_rot90   s$    r   z$x_shape, y_shape, x_chunks, y_chunks)re   )re      )re   r      )re   r   r      )r   )r   re   r   )re   r   r   )r   )re   r   r   r   )r   r   )r   r   )r   re   )r   r   r   )r   re   )r   r      )r    r   r	   r   )r   r	   r1   r!   )re   re   re   )r   r   r   r   )r   r         )r   r   r   r   )r    r   r!   r4   )r    r   r	   r   c              
   C   s  t jd t j| d }t j|d }tj||pHtdd |jD d}tj||pjtdd |jD d}d }zt ||}W n tk
r   Y nX t	
||g||gD ]R\}	}
|jdks|jdkrtt t|	|
 W 5 Q R X qt|t|	|
 qd S )Ni  r   c                 s   s   | ]}|d  V  qdS rD   r   rF   ir   r   r   rH   8  s     ztest_matmul.<locals>.<genexpr>r   c                 s   s   | ]}|d  V  qdS rD   r   r   r   r   r   rH   9  s     r   )r   r<   seedr   r=   rI   r>   matmulrX   	itertoolsproductrp   rV   rW   r   )Zx_shapeZy_shapeZx_chunksZy_chunksr   r   rx   bexpectedd1d2r   r   r   test_matmul  s    '""r   c               	   C   s  t dd} tj| dd}t dd}tj|dd}dD ]j}ttj|||d	t j| ||d	 ttj| ||d	t j| ||d	 ttj|||d	t j| ||d	 q@ttj||d
d	tj||d
d	stt	
tj. ttj||dd	tj||dd	rtW 5 Q R X d S )N  r   r   r	   r1   r      r   r   r1   r	   )r    r   r   r   r   r    )r   rS   rT   r   r=   r   	tensordotr   r   rV   warnsPerformanceWarning)r   rx   r   r   r   r   r   r   test_tensordotI  s    ""$&r   r   )r   r!   r    )rR   r!   r   )r   rR   c                 C   sD   t dd}tj|dd}ttj||| dt j||| d d S )N@   rv   r!   r   r   r   rS   rT   r   r=   r   r   )r   r   r   r   r   r   test_tensordot_2[  s    r   r   autor1   r   r!   r4   c                 C   sF   t ddd}tj|| d}ttj||ddt j||dd d S )N   r1   r4   r   r!   r   r   )r   r   r   r   r   r   &test_tensordot_double_contraction_neq2e  s    r   c                  C   s   t dddd} t dddd}t| }t|}ttj||ddt j| |dd t dddd} t dddd}tj| dd}t|}ttj||ddt j| |dd d S )Ng      N@r   r1   r	   r!   r   r   r   )r   r   uvr   r   r   &test_tensordot_double_contraction_ngt2m  s    

"
r   c                  C   sF   d} t ddg|  }tj|dd}tt||| t d|   d S )N   r    r!   r[   r   )r   Zbroadcast_tor   r=   r   r   r   )rp   r   r#   r   r   r    test_tensordot_more_than_26_dims~  s    r   c                  C   sV   t dd} tj| dd}t dd}tj|dd}t||| | d S )Nr   r   r	   r	   r   r   r   )r   rS   rT   r   r=   r   dotr   rx   r   r   r   r   r   test_dot_method  s
    r   c                  C   s|   t jjddd} d| | dk < |  }|  }t | |  }t || }t||}t||shtt||sxtd S )Nr1   r1   r!   r!   r   r   g?)r   r<   Zpersistrw   r   r   allcloser   )r   r   zZr1Zr2rrr   r   r   test_dot_persist_equivalence  s    r   ))r   r4   )r   r5   c                 C   s   t jd dt jd|   d }|d d|d   }dt jd|   d }|d d|d   }tj||d}tj||d}tt ||t|| tt ||t|| tt||t||  d S )N9  r!   r2   r    r   y              ?r   )r   r<   r   r   r=   r   ZvdotZconj)r>   r   r   r   rx   r   r   r   r   	test_vdot  s    r   c                 C   s   t jd dt j|  d }dt j| d }tj|dd}tj|dd}tt ||t|| tt ||t|| d S )Nr   r!   r    r   r   )r   r<   r   r   r=   r   outer)rM   rN   r   r   rx   r   r   r   r   
test_outer  s    r   z)func1d_name, func1d, specify_output_propsrp   c                 C   s   | j S r)   rp   ra   r   r   r   <lambda>      r   Fsumc                 C   s   |   S r)   r   ra   r   r   r   r     r   ro   c                 C   s   |   |  gS r)   minmaxra   r   r   r   r     r   Zrange2c                 C   s    |   |  g|  |   ggS r)   r   ra   r   r   r   r     r   cumsumc                 C   s
   t | S r)   )r   r   ra   r   r   r   r     r   Tzinput_shape, axis)r   r   r   c                 C   s   t jdd|}tj|t|d d}d }d }|rpdg|j }	td |	|< t|	}	t 	|||	 }
|
j
}|
j}ttj|||||dt ||| d S )Nr   r   rn   r   )r   r>   )r   r<   randintr   r=   rK   rp   slicerI   r   r>   r   r   Zapply_along_axis)Zfunc1d_nameZfunc1dZspecify_output_propsZinput_shapert   rx   r   Zoutput_shapeZoutput_dtypeZslicessampler   r   r   test_apply_along_axis  s    r   zfunc_name, funcZsum0c                 C   s   | j |dS )Nrt   r   r   rt   r   r   r   r     r   Zsum1c                 C   s   | j |ddS )NTrt   keepdimsr   r   r   r   r   r     r   c                 C   s&   t j| j|dd| j|ddg|dS )NTr   r   )r   Zconcatenater   r   r   r   r   r   r     s   zshape, axesr   )r[   r    rQ   c                 C   sH   t jdd|}tj|t|d d}tt|||t ||| d S Nr   r   rn   r   )r   r<   r   r   r=   rK   r   Zapply_over_axes)	func_namefuncr>   r   rx   r   r   r   r   test_apply_over_axes  s    r   zshape, axisc                 C   sD   t jdd| }tj|t| d d}tt||t || d S r   )r   r<   r   r   r=   rK   r   Zptp)r>   rt   rx   r   r   r   r   test_ptp  s    r   nc                 C   sH   t jdd| }tj|t| d d}tt|||t ||| d S r   )r   r<   r   r   r=   rK   r   diff)r>   r   rt   r   rx   r   r   r   	test_diff  s    r   c              
   C   s  t dd }tj|dd}ttj|| ddt j|| dd ttj|| dgdt j|| dgd ttj|| ddgdt j|| ddgd t dd	d	}tj|dd}ttj|| ddd
t j|| ddd
 ttj|| ddgdgdgdggd
t j|| ddgdgdgdggd
 ttj|| ddd
t j|| ddd
 ttj|| dddddggd
t j|| dddddggd
 | dkrtt	 tj|| t 
dd W 5 Q R X d S )Nr	   r    r!   r   r   )prependr[      r1   )rt   r   r   r   r   rS   r   r=   r   r   rT   rV   rW   rX   zerosr   r   rx   r   r   r   test_diff_prepend  s(    "&*&  &
r   c              
   C   s  t dd }tj|dd}ttj|| ddt j|| dd ttj|| dgdt j|| dgd ttj|| ddgdt j|| ddgd t dd	d	}tj|dd}ttj|| ddd
t j|| ddd
 ttj|| ddgdgdgdggd
t j|| ddgdgdgdggd
 ttj|| ddd
t j|| ddd
 ttj|| dddddggd
t j|| dddddggd
 | dkrtt	 tj|| t 
dd W 5 Q R X d S )Nr	   r    r!   r   r   )appendr[   r   r1   )rt   r   r   r   r   r   r   r   test_diff_append6  s(    "&*&  &
r   c                	   C   s,   t t ttdd W 5 Q R X d S )Nr   r[   )rV   rW   rX   r   r   rS   r   r   r   r   test_diff_negative_orderR  s    r   r   )r   r   zto_end, to_beginr   r1   c                 C   sH   t jdd| }tj|t| d d}tt|||t ||| d S r   )r   r<   r   r   r=   rK   r   Zediff1d)r>   Zto_endZto_beginr   rx   r   r   r   test_ediff1dW  s    r   zshape, varargs, axisr2   )      ?      ?       @r   r         ?
edge_orderc           
      C   s   t jdd| }tj|t| d d}t j|f|||d}tj|f|||d}t|trlt	|| n`t|t|kst
t||D ]\}}	t	||	 qt	ttttj|t ttt j| d S )Nr   r   rn   r   )rt   r   )r   r<   r   r   r=   rK   Zgradientr   r   r   r   rL   sqrtr   mapZsquare)
r>   varargsrt   r   rx   d_ar_aZr_d_aZe_r_d_ae_r_ar   r   r   test_gradient`  s    
 r   c                  C   s   t dddddg} tj| dd}tj|dd}t|t j| dd ttj|dd|s\t|jdksjt|j	dksxttj|ddj
tj|d	dj
ksttj|ddj
tj|ddj
kstt jd
ddd
d
dg|jd}t|d
d  | d S )Nr!   r    r	   r   r4   )	minlengthr   )r   re   r   r   )r   r   r   r=   bincountr   r   r   r>   r   rj   r   )r   r   eZexpected_outputr   r   r   test_bincount  s    $$r   weightsr   c                 C   sx   t dddddg}tj|dd}tj| dd}tj||dd}t|t j|| dd ttj||dd|sttd S )Nr!   r    r	   r   r4   )r   r   )	r   r   r   r=   r   r   rw   r   r   )r   r   r   Zdweightsr   r   r   r   test_bincount_with_weights  s    r   c                  C   sh   t dddddg} tj| dd}t|}t|t |  tt||sPtt|	 dksdtd S )Nr    r   re   r   r!   r   r7   )
r   r   r   r=   r   r   r   r   rK   rw   )r   r   r   r   r   r   #test_bincount_unspecified_minlength  s    
r   c               	   C   s   t dddddg} t dddddg}dD ]>}dD ]4}tj| |d	}ttj|||d
t j| ||d
 q4q,t jjdd} t jjdd}|  dD ]>}dD ]4}tj| |d	}ttj|||d
t j| ||d
 qqd S )Nr!   r1   r	   r4   r    r   r!   r1   )FTr   )right)r   r   rf   r   )r   r   )r   r   )r      )W   6   )r   r   r   r=   r   Zdigitizer<   sort)r   binsr   r   r   r   r   r   test_digitize  s&      r  za, a_chunks, v, v_chunksir   r   %   r	   re   r   r   sideleftr   c                 C   sv   t | } t |}tj| |d}tj||d}t|||}|j|jksNt|j|jks^tt|t | || d S r;   )	r   r   r   asarraysearchsortedr>   r   r   r   )rx   Za_chunksr   Zv_chunksr
  advdoutr   r   r   test_searchsorted  s    

r  c                	   C   sF   t t2 tjtddgtdgtddgd W 5 Q R X d S )Nr    r   )Zsorter)rV   rW   NotImplementedErrorr   r  r  r   r   r   r   (test_searchsorted_sorter_not_implemented  s    r  c                  C   s   d} t jj| dd}tddd}t j||d\}}tj||d\}}|jdd| ksZt|jdd| ksntt|| tt j||dd |std S )	Nr   r   r   r   )\(?{Gz?r  r   )	r   r<   r   rS   	histogramr   r   r   r   )r   r   r  a1b1a2b2r   r   r   test_histogram  s    
r  c                  C   sP   t jjddd} t j| ddd\}}tj| ddd\}}t|| t|| d S )Nr   r   r   r   r  ro   )r   r<   r  r   r   r   r  r  r  r  r   r   r   %test_histogram_alternative_bins_range  s
    
r  c                  C   s\   t jtdtjdgdd} t j| ddd\}}tj| ddd\}}t|| t|| d S )Nr\   r!   r    r   r   r`   r   r  )r   r=   r   r   nanr  r   r  r   r   r   (test_histogram_bins_range_with_nan_array  s
    
r"  c                  C   sb   t jjddd} tddd}tjdddd	d
}tt j| d |dd tj| d |dd  d S )Nr   r   r   r   r  r  r   r    r
   r   r  )r   r<   r   rS   r   r  )r   r  r   r   r   test_histogram_return_type  s    r#  c               	   C   s   t ddd} tjjddd}|| tjd|jdd ftjjddd| tjdddd fg}|D ]\}} }ttj|| d	d
d t j|| d	d
d  ttj|| |dd t j|| |dd  ttj|| |d	dd tj|| |d	dd  q`d S )Nr   r  r  r   r   r   r	   )2   r$  Tr  density)r  r   )r  r   r&  )r   rS   r   r<   r   r   r   r  )r  r   datawr   r   r   $test_histogram_extra_args_and_shapes  s$    "r)  c               	   C   sb   t d} tt}t j| dddgdd W 5 Q R X dt|jksHtdt|j	 ks^td S )	Nr   r    r!   r   Tr  normedr&  
deprecated)
r   rS   rV   rW   rX   r  strvaluer   lower)r   infor   r   r   !test_histogram_normed_deprecation'  s
    
 r1  zbins, hist_range)NN)r   Nr   r    )N)r    r   c              	   C   s\   t jjddd}tttf}t j|| |d W 5 Q R X t|j}d|ksXd|ksXt	d S )Nr   r!   r   r  r  ro   )
r   r<   rV   rW   rX   	TypeErrorr  r-  r.  r   )r  Z
hist_ranger'  r0  err_msgr   r   r   test_histogram_bin_range_raises0  s
    
r5  r&  weightednon_delayed_idelay_n_binsc                 C   s   d}t j|}tj|dd}|r>t j|}tj||jd}| | g}	|d k	rf|	|  |	|< tj||r~| s~t	|n||	| |r|nd d\}
}t j||| | g| |r|nd d\}}t
|
| t
|| d S )Nr   r   r   r  ro   r&  r   )r   r<   r   r=   r   r   r   rw   r  r   r   )r&  r6  r7  r8  r   r   r  r   	weights_dZd_rangehist_dbins_dhistr  r   r   r   test_histogram_delayed_rangeH  s2    




r>  c                 C   s   d}t j|}t dddddg}tj|dd}tj|d	d}|r`t j|}tj||jd}tj|||d |d
 g| |r|nd d\}	}
t j|||d |d
 g| |r|nd d\}}||
kstt|	| t|
| d S )Nr   r   皙?r   皙?r    r   r   r!   r[   r9  )	r   r<   r   r   r=   r   r  r   r   )r&  r6  r   r   r  r  r<  r   r:  r;  Zbins_d2r=  r   r   r   test_histogram_delayed_binsl  s2    




rA  c               	   C   sJ   t jjddd} tjtdd" t j| t dddgdd	 W 5 Q R X d S )
Nr   r!   r   z%`bins` cannot be a scalar Dask objectmatchr   r    T)r  ro   r&  )r   r<   rV   rW   r  r  r   r'  r   r   r   1test_histogram_delayed_n_bins_raises_with_density  s     rE  r  )r	   r4   c              	   C   s:  d}|}d}t jjdd|fdd}t jjdd|fdd}| rRt jjdd|fddnd }t j||||||d	\}	}
}tj||||||d	\}}}tj| | |||| r| nd d	\}}}t|	| t|	| | s|s|	 |kst| |kstt	t j||||||d	d |	s t|	 j
|j
ks6td S )
N   r   r   r   r    r   rg   r   r?  皙?r9  r   r<   uniformZhistogram2dr   rw   r   r   r   r   r>   )r   r&  r  r   r   rr   r   r(  r  b1xb1yr  b2xb2ya3b3xb3yr   r   r   test_histogram2d  s4    


rU  c                 C   sV  d}dddddg}dddd	dg}||g}t jjd
d|fdd}t jjd
d|fdd}| rnt jjdd|fddnd }t j|||||d\}	}
}tj|||||d\}}}tj| | ||| r| nd d\}}}t|	| t|	| | s|s|	 |kst| |kstt	t j|||||dd
 |	s<t|	 j
|j
ksRtd S )NrF          r?  g333333??r   皙?g?r   r   r    rH  rI  rJ  )r  r&  r   rK  )r   r&  r   ZxbinsZybinsr   r   r   r(  r  rN  rO  r  rP  rQ  rR  rS  rT  r   r   r   test_histogram2d_array_bins  s4    


rY  c            
      C   s   d\} }t jjdd| |fdd}dddgddddgddd	dgg}t j||d
\}}tj||d
\}}tj| |d
\}}	t|| t|| | | kst| | kstt	t j||d
d |st| j
|j
kstd S )NrF  r   r   r    r   r   rI  r         ?333333?r@  r  )r   r<   rL  histogramddr   rw   r   r   r   r   r>   )
n1n2r   r  r  r  r  r  rR  b3r   r   r   test_histogramdd  s     

rb  c                  C   s   d} t jj| fdd}t jj| fdd}ddddg}ddd	d
dg}t j||g||gd\}}tj||g||gd\}}tj| | f||gd\}	}
t|| t||	 d S )NrF  r   rI  rV  r\        ?r   333333?ffffff?r@  r  )r   r<   rL  r^  r   rw   r   )r_  r   r   ZbxZbyr  r  r  r  rR  ra  r   r   r   test_histogramdd_seq_of_arrays  s    "
rf  c                  C   s   d\} }t jjdd| |fdd}d}dt| }t j|||d\}}tj|||d\}}tj| ||d\}	}
t|| t||	 d	}t j|||d\}}tj|||d\}}t|| | | kst	| | kst	t
t j|||dd |st	d S )
NiX  r   r   r    )r   r   r   r   rI  r   r	   r1   r   r  r1   )r   r<   rL  rK   r^  r   rw   r   r   r   r   )r_  r`  r   r  rangesr  r  r  r  rR  ra  r   r   r   'test_histogramdd_alternative_bins_range  s     


rm  c                  C   s
  d\} }t jjdd| |fdd}t jjdd| fdd}d	}d
t| }t j||||d\}}tj||||d\}}	tj| ||| d\}
}t|| t||
 d}t j||||d\}}tj||||d\}}	tj| ||| d\}
}t|| t||
 d S )Nrg  r   r    rh  rI  r   r@  r   rj  rk  r  ro   r   r1   )r   r<   rL  rK   r^  r   rw   r   r_  r`  r   r(  r  rl  r  r  r  r  rR  ra  r   r   r   test_histogramdd_weighted  s     


rp  c                  C   s   d\} }t jjdd| |fdd}dddgddddgddd	dgg}t j||d
d\}}tj||d
d\}}t j||d
d\}}	tj| |d
d\}
}t|| t|| t||
 tt j||d
dd |std S )NrZ  r   r    r[  rI  r   r\  r]  r@  Tr%  r*  )	r   r<   rL  r^  r   rw   r   r   r   )r_  r`  r   r  r  r  r  r  rR  ra  Za4Zb4r   r   r   test_histogramdd_density  s     


rq  c                  C   s   d\} }t jj| |fdd}t jjdd| fdd}d}dt| }t j||||d	d
\}}tj||||d	d
\}}	t j||||d	d\}
}t|| t||
 d S )N)i  r1   )r   r1   rI  r   g333333?r   )r	   r4   re   r7   ))r1   T)r  ro   r   r&  )r  ro   r   r+  )r   r<   Zstandard_normalrL  rK   r^  r   r   ro  r   r   r   !test_histogramdd_weighted_density)  s    
rs  c               	   C   s>   t jjddd} tjtdd t j| ddd W 5 Q R X d S )	Nr   r   )r	   r    rI  z2Input array can only be chunked along the 0th axisrB  r   r   r   r   r  r   r<   rV   rW   rX   r^  rD  r   r   r   .test_histogramdd_raises_incompat_sample_chunks6  s     rw  c               	   C   sd   t jjddd} t jjddd}t jjddd}tjtdd t j| ||fddd	 W 5 Q R X d S )
Nr   r!   rI  r	   z2All coordinate arrays must be chunked identically.rB  )r   r   r   ru  r  rv  r   r   r   r   r   r   0test_histogramdd_raises_incompat_multiarg_chunks>  s     ry  c               	   C   s   t jjddd} t jjddd}t | |fjd}t jjddd}tjtdd t j| |fdd	|d
 W 5 Q R X tjtdd t j|dd	|d
 W 5 Q R X d S )Nr   r!   rI  r   r	   zFInput arrays and weights must have the same shape and chunk structure.rB  r   rG  rn  z_Input array and weights must have the same shape and chunk structure along the first dimension.)	r   r<   r(   TrechunkrV   rW   rX   r^  )r   r   r   r(  r   r   r   .test_histogramdd_raises_incompat_weight_chunksH  s     r|  c               	   C   s   t jjddd} d}dt| }d}tjtdd t j| ||d	 W 5 Q R X d}d
}tjtdd t j| ||d	 W 5 Q R X tjtdd t j| |dd	 W 5 Q R X d S )N)r   r1   r   rI  r:   rk  r8   zCThe dimension of bins must be equal to the dimension of the sample.rB  r  ru  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   r<   rK   rV   rW   rX   r^  r'  r  rl  r   r   r   .test_histogramdd_raises_incompat_bins_or_rangeY  s*     r~  c               	   C   sJ   t jjddd} d}d}tjtdd t j| ||ddd	 W 5 Q R X d S )
Nrt  r	   r   rI  )r1   r	   r4   ru  z*Cannot specify both 'normed' and 'density'rB  T)r  ro   r+  r&  )r   r<   rV   rW   r3  r^  r}  r   r   r   )test_histogramdd_raise_normed_and_densityv  s
    r  c               	   C   sx   t jjddd} tjtdd t j| ddd W 5 Q R X t jjd	d
d} tjtdd t j| ddd W 5 Q R X d S )Nr   r2   rI  z4Single array input to histogramdd should be columnarrB  r1   )r   r  rv   )r!   r!   r!   rv  rD  r   r   r   %test_histogramdd_raise_incompat_shape~  s      r  c                  C   s   t jjddd} tddddgtdddd	gtdd
dgg}t j| |d\}}tj|  |d\}}t||D ]\}}t|| qtt j| ddd\}}tj|  ddd\}}t||D ]\}}t|| qd S )Nrt  r  rI  rX  rd  r@  r   r?  rW  r   re  r  r	   ru  r  )r   r<   r   r   r^  rw   rL   r   )r'  edgesr  r  r  r  Zib1Zib2r   r   r   test_histogramdd_edges  s    r  c               	   C   s>  t dd} tj| dd}tt|t |  ttj|ddt j| dd t 2 tj	dt
d ttj|d	d
t j| d	d
 W 5 Q R X ttj|ddt j| dd tt||t | |  t d}tj|dd}tt||t | | tt||t ||  tt tj|dd
 W 5 Q R X d S )N8   re   r7   r   r   r   Zrowvarignorecategoryr   )Zddofr    )Zbiasr7   r0   r   )r   rS   rT   r   r=   r   Zcovwarningscatch_warningssimplefilterRuntimeWarningrV   rW   rX   r   r   r   r   r   r   r   test_cov  s    
(
r  c                  C   s   t dd} tj| dd}tt|t |  ttj|ddt j| dd tt||t | |  t d}tj|dd}tt||t | | tt||t ||  d S )	Nr  r  r   r   r   r  r7   r0   )r   rS   rT   r   r=   r   Zcorrcoefr  r   r   r   test_corrcoef  s    
r  c                  C   sV   t jd} tj| dd}dD ]}t| ||| qt|dt|d d S )Nr   r1   r   )r   r    r1   r	   r!   )r   r<   r   r=   r   round)r   r   r   r   r   r   
test_round  s
    r  return_indexreturn_inversereturn_countsc                 C   s   t | ||d}tddddddg}tj|dd}tj|f|}tj|f|}t| ||gst|tjslt	t|tj
s|t	|f}|f}t|t|kst	|rdt|  }|jf|| jkst	t||D ]\}	}
t|
|	 qd S )Nr  r  r  r    r!   r1   r	   ri  r   )dictr   r   r   r=   uniqueanyr   ndarrayr   r   rK   intrg   r>   rL   r   )r  r  r  r   rx   r   r   r_dr   r   e_r_dr   r   r   test_unique_kwargs  s(    r  r      i  z	low, highri  r   r   r!   r   c                 C   s   t j|  t jj|||d}tj||d}tdddd}t j|f|}tj|f|}	t|t|	ksjt	|j
f|	d jkst	t||	D ]\}
}t||
 qd S )Nrf   r   Tr  r!   )r   r<   r   r   r   r=   r  r  rK   r   rg   r>   rL   r   )r   lowhighr>   r   rx   r   r   r   r  r   r  r   r   r   test_unique_rand  s    r  zelements_shape, elements_chunksztest_shape, test_chunksinvertc              	   C   s   t j| }|j|||d}	tj|	|d}
|j|||dd }tj||d}t 6 tjdtj	d t j
|	||d}tj
|
||d}W 5 Q R X t|| d S )Nrf   r   r	   r  r  )r  )r   r<   ZRandomStater   r   r=   r  r  r  r   isinr   )r   r  r  Zelements_shapeZelements_chunksZ
test_shapeZtest_chunksr  rngr  r   r  r   r   r  r   r   r   test_isin_rand	  s    
r  assume_uniquec                 C   sT   t d}tj|dd}t ddd}t j||| d}tj||| d}t|| d S )Nr   rn   r   r   r!   )r  )r   rS   r   r=   r  r   )r  r  r   Ztest_elementsr   r  r   r   r   test_isin_assume_unique&  s    
r  c                 C   s&   z
t | W S  tk
r    Y dS X d S Nr   )rK   r3  )lr   r   r   
_maybe_len1  s    
r  shiftr   )r   r   )re   r!   c              	   C   s   t jjddd}tj|| d}t|t|kr`t|d kr>tnt	 t
||| W 5 Q R X ntt 
|||t
||| d S )Nr   r3   rf   r   )r   r<   r   r   r=   r  rV   rW   r3  rX   rollr   )r   r  rt   r   rx   r   r   r   	test_roll8  s    r  c                  C   s(   t dd} t | d}|| k	s$td S )Nr!   r   r    )r   rS   r  r   r]   r   r   r   'test_roll_always_results_in_a_new_arrayF  s    r  c                  C   s2   t t dd} ttdd}t| | d S r  )r   r  r   r   r   )r   actualr   r   r   "test_roll_works_even_if_shape_is_0L  s    r  r	   r   )r	   r   r   c                 C   sD   t j| }t|| kstt j| }t|t| ks@td S r)   )r   r<   r   r>   r   rp   rK   )r>   r   r   r   r   test_shape_and_ndimR  s    r  )rd   r  )r   )r   r1   )r  )r    r4   r!   reversec           
      C   s   | \}}t d|}t dd|}|r<|d d d }t|}t|}t ||}t ||}	t|tjsxtt	||	 d S )Nrd   r4      r[   )
r   rS   rT   r   r=   Zunion1dr   r   r   r   )
r>   r  s1s2x1x2Zdx1Zdx2ry   r   r   r   r   test_union1d[  s    

r  c                  C   s   t jjddd} dD ]N}tj| |d}t|  |  t| jt|jt|j	d  kst
qt| d  |d   | }t| | t jjddd} d	D ]$}tj| |d}t|  |  qt|  |  tt | t| d S )
Nr   r3   rf   )r3   r   r   r   r   r   r8   )r1   )r    r   r1   )r   r<   r   r   r=   r   ravelrK   daskr   r   flatten)r   r   rx   Za_flatr   r   r   
test_ravelr  s    ,r  c                  C   sV   t jjddd} tj| dd}t| |   t||dk  | | dk   d S )Nr   r   rf   r   r!   )r   r<   r   r   r=   r   r  r"   r   r   r   test_ravel_1D_no_op  s    r  c                   C   s   t tdtd ttdtjjs.tt tddgtddg ttddgtjjshtt tdtd ttdtjjstt tddgtddg ttddgtjjstd S )Nr   r  r~   )r   r   r  r   r   corer   r   r   r   r   r   test_ravel_with_array_like  s    r  rR   c              	   C   s   t d}tj|dd}| d krFtt tj|| d W 5 Q R X nl| dkrttt tj|| d W 5 Q R X n>t j|| d}tj|| d}t	|| t
|tj|| dstd S )Nr   ri  r   r   r!   )r   rS   r   r=   rV   rW   r3  Zexpand_dimsr   r   r   r   )rt   rx   r   Za_eZd_er   r   r   test_expand_dims  s    

r  is_func)r   r[   c                    s  t dd d d d d f  tj dd}| rJt j d}tj|d}n jd}|jd}t|| t|tj|dstd krtt	 j
n*ttrnft fddD tfddt|jD tfddt|jD }|j|kstd S )	Nr   )r    r   r    r    r   r   c                 3   s   | ]}| j  V  qd S r)   r   r   rx   r   r   rH     s     ztest_squeeze.<locals>.<genexpr>c                 3   s*   | ]"\}}| krt |d kr|V  qdS )r    N)rK   rF   r   rG   r   r   r   rH     s       c                 3   s   | ]\}}| kr|V  qd S r)   r   r  r   r   r   rH     s      )r   rS   r   r=   squeezer   r   r   rI   ro   rp   r   	enumerater   )r  rt   r   a_sd_sZexp_d_s_chunksr   )rx   rt   r   test_squeeze  s     
r  c                 C   sb   t j| dd}t |}tj|dd}t|}t|tjs@tt| t j	sTtt
|| d S )Nr!   )r>   Z
fill_valuer    r   )r   fullr  r   r=   r   r   r   rw   r  r   )r>   rx   r  r   r  r   r   r   test_squeeze_1d_array  s    

r  c               	   C   s   t d} t d}tjddd}tjddd}tt | |ft||f tt | |d d d f ft||d d d f f d S Nr	   r!   r   )r   rS   r   r   r   vstackr   r   rx   r   r   r   r   test_vstack  s    

r  c               	   C   s   t d} t d}tjddd}tjddd}tt | d d d f |d d d f ft|d d d f |d d d f f tt | |ft||f d S r  )r   rS   r   r   r   hstackr  r   r   r   test_hstack  s    

Nr  c               
   C   s   t d} t d}tjddd}tjddd}tt | d d d d f |d d d d f ft|d d d d f |d d d d f f tt | d d d f |d d d f ft|d d d f |d d d f f tt | |ft||f d S r  )r   rS   r   r   r   dstackr  r   r   r   test_dstack  s    

((Nr  znp_func,dsk_func,nan_chunkc           	   	   C   s   d}t j|dd}t|}t|j}tjfd ||< t||_tt	 |||f W 5 Q R X | ||f}|||fdd}t
|| d S )N)r   r   r   )r$  r$  r$  r   r!   T)Zallow_unknown_chunksizes)r   r   r   list_chunksr!  rI   rV   rW   rX   r   )	r+   Zdsk_funcZ	nan_chunkr>   r   r   tmpZ
np_stackedZdsk_stackedr   r   r   test_stack_unknown_chunk_sizes  s    


r  c               	   C   s   t dd} tj| dd}tt j| dddtj|ddd tt j| ddd	gd
dtj|ddd	gd
d tt	 tj|ddd W 5 Q R X t
tj|ddd	gd
dtj|ddd	gd
dstd S )Nr   r   r   r   r   r   r   r1   r	   r[   r!   )r   rS   rT   r   r=   r   takerV   rW   rX   r   r   r   rx   r   r   r   	test_take  s    ".r  c               
   C   sp   t dd} tjt ddddddgdd}t| d |}|j|jksPtt	|t ddd	d	ddg d S )
Nr	   Zf8r    r!   r   r   r   g      @g      @)
r   rS   astyper   r=   r   r  r   r   r   rx  r   r   r   test_take_dask_from_numpy$  s
     r  c               	   C   s  t dd} tj| dd}t dddddg}t ddg}ddg}tj|dd}tj|dd}||f||f||f||f||f||ffD ]\}}d	D ]}	tj|||	d
}
tt j|| |	d
|
 t|tj	r|	pd}	t 
|
j|	  stt 
|
j|	  sHtq|	pd}	t ||
j|	 ks0tt 
|
j|	  rtqqtt tjddg|dd
 W 5 Q R X tt tjdgdgg|dd
 W 5 Q R X d S )N   r   r   r   TFr   r!   )Nr   r    r   r   r   )r   rS   rT   r   r=   r   compressr   r   r   isnanr>   allr   r   count_nonzeror  rV   rW   rX   )r   rx   c1c2c3dc1dc2rG   dcrt   resr   r   r   test_compress.  s,    0
r  c                  C   s   t dd} tj| dd}t dddddg}t ddgddgg}t ddg}tj|dd}tj|dd}tj|d	d}||f||f||f||f||f||ffD ]J\}}	t|	|}
tt || |
 t|	tj	rt 
|
jd
  stqd S )Nr  r   r   r   TFr   r   r!   r   )r   rS   rT   r   r=   r   extractr   r   r   r  r   r  r   )r   rx   r  r  r  r  r  Zdc3rG   r  r  r   r   r   test_extractQ  s    0r  c               	   C   sf   t dt jg} tj| dd}tt4 tt	|t 
|  tt|t 
|   W 5 Q R X d S )Nr    r2   r   )r   r   r!  r   r=   
contextlibsuppressImportErrorr   isnullr  Znotnullr  r   r   r   test_isnullc  s
    r  c               	   C   sX   t jtjdtjddd} tt* t | d 	 }t
|tjksJtW 5 Q R X d S )Nr   r   r[   r   r   )r   r=   r   rS   int64r  r  r  r  rw   rJ   r  r   )arrry   r   r   r   test_isnull_result_is_an_arrayk  s    r  c                  C   sj   t dt jddg} t dt jddg}tj| dd}tj|dd}ttj||dd	t j| |dd	 d S )
Nr   r    r   &.>r!   r2   r   TZ	equal_nan)r   r   r!  r   r=   r   iscloser  r   r   r   test_iscloses  s
    r  c                  C   s|   t dt jddg} t dt jddg}tj| dd}tj|dd}t j| |dd	}tj||dd	}tt |d
 | d S )Nr   r    r   r  r!   r2   r   Tr  r   )r   r   r!  r   r=   r   r   )Zn_aZn_br   d_bZn_rZd_rr   r   r   test_allclose{  s    r  c                  C   s   t jjddd} tj| dd}tt|dkd|gt | dkd| g tt|dk| |gt | dk|  | g |dk}| dk}t|d|g|d| g t|| |g||  | g d S )Nr   r   r   rf   r   r   r	   r   )r   r<   r   r   r=   r   choose)r   r   Z
index_daskZindex_numpyr   r   r   test_choose  s    *.r   c               	   C   s   t jd t jjddd} tj| dd}tt j| | dk | dkgdd	 dgd
ddtj||dk |dkgdd	 dgd
dd d S )Nr   r   r  rf   r   r   r	   c                 S   s   | d S Nr    r   r   r   r   r   r   r   r     r   z test_piecewise.<locals>.<lambda>r    r!   r   c                 S   s   | d S r  r   r  r   r   r   r     r   r   r<   r   r   r   r=   r   Z	piecewiserY   r   r   r   test_piecewise  s    &&r  c               	   C   s   t jd t jjddd} tj| dd}tt j| | dk| dkgd	d
 dd
 dd
 gdddtj||dk|dkgdd
 dd
 dd
 gddd d S )Nr   r   r  rf   r   r   r	   r!   c                 S   s   | d S r  r   r  r   r   r   r     r   z*test_piecewise_otherwise.<locals>.<lambda>c                 S   s   ||  S r)   r   r  r   r   r   r     r   c                 S   s   dS r  r   r  r   r   r   r     r   r    r  c                 S   s   | d S r  r   r  r   r   r   r     r   c                 S   s   ||  S r)   r   r  r   r   r   r     r   c                 S   s   dS r  r   r  r   r   r   r     r   r  rY   r   r   r   test_piecewise_otherwise  s&    r  c                  C   s   t ddddgt ddddgt ddddgg} t ddddgt ddd	d
gt ddddgg}tj| dd}t|}tt | |t|| d S )NFTr    r!   r   r1   r	   r4   re   r7   r   r   r   rd   r  r   )r   r   r   r=   r   selectZ
conditionschoicesZd_conditionsZ	d_choicesr   r   r   test_select  s    
r
  c                  C   s   t jd} tj| dd}t j| dk | dk| dkg| | d | d gdd}tj|dk |dk|dkg||d |d gdd}t|tjstt|| d S )	N)r   r$  r!   )r$  r$  r    r   r   r!   r    r   default)	r   r<   r   r=   r  r   r   r   r   )r   r   Zres_xZres_yr   r   r   test_select_multidimension  s    00r  c                  C   s`   t dddt jddg} t | }t| }t|}tt |g| gt|g|gdd d S )Nr    r!   r   r	   re   Tr  )r   r   r!  r  r   r=   r   r  )r   md_dZd_mr   r   r   test_select_return_dtype  s
    


r  z/broadcasting in da.select() not implemented yet)reasonc                  C   s   t dt dddgg} dt dddg}t| }t|}tt | |t|| tt jdgdgdgdtjdgdgdgd d S )	NTFr    rd   r1   r   r   r  )r   r   rS   rT   r   r=   r   r  r  r   r   r   test_select_broadcasting  s    

r  c                  C   sN   dD ]D\} }t jjd| d}tj||d}t |}t|}t|| qd S N))r   r   r  r  r  r   r   rf   r   )r   r<   r   r   r=   argwherer   )r>   r   r   r   x_nzd_nzr   r   r   test_argwhere  s    

r  c                  C   sF   t jjdddt} tj| dd}t | }t|}t|| d S Nr   r  rf   r   r   )	r   r<   r   r  objectr   r=   r  r   r   r   r  r  r   r   r   test_argwhere_obj  s
    

r  c                  C   s>   t td} tj| dd}t | }t|}t|| d S )NzHello worldr0   r   )r   r   r  r   r=   r  r   r  r   r   r   test_argwhere_str  s
    

r  c            
   
   C   s  t jjddd} d | d< | d< tj| dd}t jjdd	dt j}tj|d
d}|dk| dkf|| fddddt jt jfdt jt jff	D ]v\}}d|d d d f  |d d d f  f|d d |d d ffD ].\}}t	|||}t 	|| |}	t
||	 qqd S )Nr   )r      rf   r   r   r   r   r   r   r0   r	   r   r  )TT)FFr  )r   r<   r   r   r=   r  Zuint8True_False_wherer   )
r   r   r   r   r  r  r  r  w1w2r   r   r   
test_where	  s&    

Fr%  c            	      C   s   t d} t jdddgt jd}t dddg}tj|dd	}tj|dd	}t || |}t|| |}t|| t d
| |}td
| |}t|| d S )Nr   r1   r	   r4   r   r    r   r!   r   T)r   int32r   int16r   r=   r"  r   )	r   y1r  y2r  r#  r$  Zw3Zw4r   r   r   test_where_scalar_dtype!  s    

r*  c                  C   s   t jjddd} tj| dd}t jjddd}tj|dd}ddt jt jdd	fD ]B}t|||}t || |}t|| |r|n|}||ksPt	qPd S )
Nr   r  rf   r   r   TFr    r   )
r   r<   r   r   r=   r   r!  r"  r   r   )r   r   r   r   rG   r#  r$  Zex_w1r   r   r   test_where_bool_optimization0  s    
r+  c                  C   s   dD ]\} }t jjd| d}tj||d}t |}t|}t|t|sPtt	|t	|ksdtt
t	|D ]}t|| ||  qpqd S r  )r   r<   r   r   r=   r"  r   rJ   r   rK   ro   r   )r>   r   r   r   Zx_wZd_wr   r   r   r   test_where_nonzeroA  s    

r,  c                  C   sn   t jddd} dD ]V}|| i}zt j| dkf| W q tk
rf } zdt|ksVtW 5 d }~X Y qX qd S )Nr	   r   r   r]   r   z1either both or neither of x and y should be given)r   r   r"  rX   r-  r   )rx   Zkwdr   r   r   r   r   test_where_incorrect_argsP  s    r-  c                  C   sl   dD ]b\} }t jjd| d}tj||d}t |}t|}|jt kr\|| ksft	qt
|| qd S r  r   r<   r   r   r=   r  r>   rI   rw   r   r   )r>   r   r   r   x_cd_cr   r   r   test_count_nonzero[  s    

r1  c                 C   sp   dD ]f\}}t jjd|d}tj||d}t || }t|| }|jt kr`|| ksjt	qt
|| qd S )N)r  r  r   rf   r   r.  )rt   r>   r   r   r   r/  r0  r   r   r   test_count_nonzero_axisi  s    r2  c                  C   sd   t jjdddt} tj| dd}t | }t|}|jt	 krV||
 ks`tn
t|| d S r  )r   r<   r   r  r  r   r=   r  r>   rI   rw   r   r   r   r   r/  r0  r   r   r   test_count_nonzero_objx  s    

r4  c                 C   sp   t jjdddt}tj|dd}t || }t|| }|jt	 krZ||
 ksltnt|t j| d S r  )r   r<   r   r  r  r   r=   r  r>   rI   rw   r   r   Zintp)rt   r   r   r/  r0  r   r   r   test_count_nonzero_obj_axis  s    r5  c                  C   sD   t td} tj| dd}t | }t|}|| ks@td S )NzHellow orldr0   r   )r   r   r  r   r=   r  rw   r   r3  r   r   r   test_count_nonzero_str  s
    

r6  c                  C   sN   dD ]D\} }t jjd| d}tj||d}t |}t|}t|| qd S r  )r   r<   r   r   r=   Zflatnonzeror   )r>   r   r   r   Zx_fnzZd_fnzr   r   r   test_flatnonzero  s    

r7  c                  C   s   dD ]\} }t jjd| d}tj||d}t |}t|}t|t|sPtt	|t	|ksdtt
t	|D ]}t|| ||  qpqd S r  r   r<   r   r   r=   Znonzeror   rJ   r   rK   ro   r   r>   r   r   r   r  r  r   r   r   r   test_nonzero  s    

r:  c                  C   s   dD ]\} }t jjd| d}tj||d}| }| }t|t|sLtt	|t	|ks`tt
t	|D ]}t|| ||  qlqd S r  r8  r9  r   r   r   test_nonzero_method  s    r;  c                  C   sr   t  } tjdtd}tj|dd}t|| }t|| }t|t|sLt	t
|t
|  krhdksnn t	d S )Nr   r   r    r   )rI   r   r   r  r   r=   unravel_indexr   rJ   r   rK   )r>   findices
d_findicesindices	d_indicesr   r   r   test_unravel_index_empty  s    rA  c            
      C   s   dD ]\} }}t j|}tj|dd}t jjt j|td| d}tj|dd}t |||}t|||}t|t	|s~t
t|t|kst
tt|D ]}	t||	 ||	  qt|jtj|  ||  qd S )N))r   r   C)r    r   rB  )r   r   rB  )r   r   F)r!   r  rB  )r!   r  rC  r    r   r   rf   )r   r<   r   r=   r   prodr  r<  r   rJ   r   rK   ro   r   Zvindexr  rw   )
Znindicesr>   orderr  darrr=  r>  r?  r@  r   r   r   r   test_unravel_index  s    rG  r  c                 C   s   | S r)   r   ra   r   r   r   r     r   c                 C   s   dd | D S )Nc                 S   s   g | ]}t |qS r   )r   r  rF   rx   r   r   r   
<listcomp>  s     <lambda>.<locals>.<listcomp>r   ra   r   r   r   r     r   c                 C   s   dd | D S )Nc                 S   s   g | ]}t |qS r   )r   r  rH  r   r   r   rI    s     rJ  r   ra   r   r   r   r     r   zarr, chunks, kwargsr4   re   r4   rB  )dimsrE  r   rC  clip)rL  moder   )rM  wrapr7   )r   r    )re   r4   r   )r    r!   r    )r7   r   rL  r7   r   r   c                 C   s|   t dd |D r*| tjtjfkr*t  | tjkrNt|}tj||d}n| | }}ttj|f|tj|f| d S )Nc                 s   s   | ]}t |V  qd S r)   )r   ZisscalarrF   r   r   r   r   rH     s     z)test_ravel_multi_index.<locals>.<genexpr>r   )	r  r   r  r   r=   rV   skipr   ravel_multi_index)r  r  r   r   inputr   r   r   test_ravel_multi_index  s    !"

rV  c                  C   st   t dddgdddgdddgg} | | dkjdd } |  }t| j sRtt	tj
|d	d
t j
| d	d
 d S )Nr   r4   r1   r	   r    r[   r   r   rK  rP  )r   r=   r  rw   r   r  r>   r  r   r   rT  )multi_indexZmulti_index_npr   r   r   $test_ravel_multi_index_unknown_shape%  s    "rX  c               	   C   s   t jddddgdd} | | dk } t jddgddgddgdd	gd
dgddggdd}||dkjdd }d| |g}t| j stt|j sttj	t
dd t j|dd W 5 Q R X d S )Nr!   r[   r   r   r   r    r1   r	   r4   re   r7   r   r   zArrays' chunk sizesrB  rQ  rP  )r   r=   r  r   r  r>   r  r   rV   rW   rX   rT  )Zmulti_index1Zmulti_index2rW  r   r   r   *test_ravel_multi_index_unknown_shape_fails2  s    & 
rY  rL  )Znoutwrap_in_listc              	   C   s>   t jtdd& td|r*| d | d gn|  W 5 Q R X d S )NzDask types are not supportedrB  r   r   r    )rV   rW   r  r   rT  )rL  rZ  r   r   r   #test_ravel_multi_index_delayed_dimsC  s    r[  c                	   C   s*   t jtdd tdd W 5 Q R X d S )Nzonly int indices permittedrB  )r   r!   r  )rV   rW   r3  r   rT  r   r   r   r   $test_ravel_multi_index_non_int_dtypeJ  s
    r\  c               	   C   s   t jjddd} tj| dd}ttjt j| dddtt j|ddd ttjt j| dddttj|ddd ttjjt j	| dddd	d
tjtj	|dddd	d
 d S )Nr   )r   r   rf   )r1   r7   r   r!   r1   r   float32r   )
r   r<   r   r   r=   r   chunkcoarsenr   ZmeanrY   r   r   r   test_coarsenR  s      r`  c                  C   sd   t jddd} tt jtj| ddiddtddg tt jtj| ddiddtddd	g d S )
Nr   r	   r   r   TZtrim_excessr   rd      )r   rS   r   r_  r   r   r   r   ra   r   r   r   test_coarsen_with_excessb  s    (rc  c                 C   s   g | ]}|fd  qS ri  r   rR  r   r   r   rI  k  s     rI  r       c                 C   sX   t jt| dd}|t| }tt jtj|ddiddt jtj|ddidd d S )Nr	   r   r   r   Tra  )r   rS   r   r   r{  rI   r   r_  )r   r  r  r   r   r   test_coarsen_bad_chunksk  s    re  zchunks, divisor)r   r    )r   r!   ))r    r    r    r!   )r2  r   )r   r   r   r  r   r   )rf  r7   ))r   r   r   (   r!   r   ))r   r   r   *   r  r   r   ))r   r   r   /   r  r   r   ))r!   r   r   ri  r  r   r1   c                    s   ddl m} || t | dk}tt| dkd }t tksXtfdd|D  fdd|D kstt dk stt td kst| dkst| dkr|d dkstd S )	Nr   )aligned_coarsen_chunksc                    s   g | ]} | qS r   r   rF   idxr   r   r   rI    s     z/test_aligned_coarsen_chunks.<locals>.<listcomp>c                    s   g | ]} | qS r   r   rk  )aligned_chunksr   r   rI    s    r    r   r[   )	Zdask.array.routinesrj  r   r   r"  r   r   r  rK   )r   ZdivisoraccZany_remaindersZvalid_chunksr   )rm  r   r   test_aligned_coarsen_chunksu  s    
ro  c               
   C   s  t jjddd} tj| dd}t jjddd}tj|dd}tt j| dd	dd
tj|dd	dd
 tt j| dd	d	d
tj|dd	d	d
 tt j| dd	dd
tj|dd	dd
 tt j| d	d	dd
tj|d	d	dd
 tt j| dddgd	dd
tj|dddgd	dd
 tt j| ddddddgd	dd
tj|ddddddgd	dd
 tt j| tddd	dd
tj|tddd	dd
 tt j| dgd dgd  |dd
tj|dgd dgd  |dd
 tt j| d|d dd
tj|d|d dd
 ttj|ddddddgd	dd
tj|ddddddgd	dd
s.t	t
t tj|ddgd	dd
 W 5 Q R X t
t j tj|dgd	dd
 W 5 Q R X t
t j tj|dgd	dd
 W 5 Q R X d S )Nr   r  rf   r   r   r  r   r   r[   r   r   r	   r    r\   r!   r7   r1   r`   )r   r<   r   r   r=   r   insertr   r   r   rV   rW   r  r   r   r   r   r   test_insert  s@    &&&&2   .
 rq  c               	   C   s(  t jjddd} tj| dd}t jjddd}tj|dd}t jjd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| |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| 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	 tj|ddd	 W 5 Q R X tt j	 tj|ddd	 W 5 Q R X tt
 tj|dd
d	 W 5 Q R X d S )Nr   r  rf   r   r   )r   r	   r   r  r   r   r\   r    r[   )

r   r   r   r   r   r   r   r   r   r   rr  rr  rr  rr  rr  rr  rr  rr  rr  r!   r`   rr  )r   r<   r   r   r=   r   r   rV   rW   r   rX   )r   rx   r(  r  Zy0Zb0r   r   r   test_append  s>    """""""  rs  c               	   C   sp   t jjddd} tj| dd}tt jt j| ddgddddgdddtjtj|ddgddddgddd d S )	Nr   rR   rf   r   r   r    r[   r   )r   r<   r   r   r=   r   rp  )r   rG   r   r   r   test_multi_insert  s    $$rt  c               	   C   s  t jjddd} tj| 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| d	ddtj|d	dd tt j| dddgddtj|dddgdd tt j| ddddgddtj|ddddgdd tt j| tddddtj|tdddd tt j| tddd	ddtj|tddd	dd tt j|ddgddtj|ddgdd t	t j
 tj|dgdd W 5 Q R X t	t j
 tj|dgdd W 5 Q R X d S )Nr   r  rf   r   r   r   r   r   r[   r	   r    r\   r!   r7   r1   r`   )r   r<   r   r   r=   r   deleter   rV   rW   r   r  r   r   r   test_delete  s*    """".. *rv  c                  C   s  t jtdtjdd} t jtdtjdd}t jtdtjdd}tdtj}t ||tjksltt | ||tj	kstt |tjtjkstt |t
tjtjkstt ||tjkstt d|tjkstt d| tjkstt td|tjkstt tdtj|tjks<tt d| tj	ksTtt jtdtj	dd}t | |tj	kstd S )Nr	   ri  r   r    r   r   gZbti)r   r=   r   r   r]  r'  r  Zresult_typer   Zfloat64r   )rx   r   rG   r   r   r   r   test_result_type	  s     "rw  c              
      s   dddddddddd	d	d
dddddddd	 fdd fddfdd| D }fdd| D }dd |D }dd t ||D }||fS )Nr	   r4   re   r   r    r!   r   )	rx   r   rG   r   r   fgh*r5   )r!   r   r    )r!   r   r!   )r1   r    r   )r    r!   r   r1   r   c                    s   t  fdd| D S )Nc                 3   s   | ]} | V  qd S r)   r   rE   _dimensionsr   r   rH   I	  s     zE_numpy_and_dask_inputs.<locals>._shape_from_string.<locals>.<genexpr>rI   sr|  r   r   _shape_from_stringH	  s    z2_numpy_and_dask_inputs.<locals>._shape_from_stringc                    s   t  fdd| D S )Nc                 3   s   | ]} | V  qd S r)   r   rE   r  r   r   rH   L	  s     zF_numpy_and_dask_inputs.<locals>._chunks_from_string.<locals>.<genexpr>r~  r  r  r   r   _chunks_from_stringK	  s    z3_numpy_and_dask_inputs.<locals>._chunks_from_stringc                    s   g | ]} |qS r   r   rF   r  )r  r   r   rI  N	  s     z*_numpy_and_dask_inputs.<locals>.<listcomp>c                    s   g | ]} |qS r   r   r  )r  r   r   rI  O	  s     c                 S   s   g | ]}t j|qS r   )r   r<   r  r   r   r   rI  Q	  s     c                 S   s   g | ]\}}t j||d qS )r   )r   r=   r  r   r   r   rI  R	  s     )rL   )
input_sigsZshapesr   	np_inputs	da_inputsr   )r  r  r}  r  r   _numpy_and_dask_inputs-	  s6    r  einsum_signaturezabc,bad->abcdzabcdef,bcdfg->abcdegea,fb,abcd,gc,hd->efghzab,bZaaza,a->za,a->aza,aza,bza,b,crx   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              	   C   sr   |  dd dd d}t|\}}t 8 tjdtjd tt	j
| f| tj
| f|  W 5 Q R X d S )N->r   z...r{  ,r  r  )splitreplacer  r  r  r  r   r   r   r   einsum)r  r  r  r  r   r   r   test_einsumW	  s    #
r  optimize_opts)TF)ZgreedyF)ZoptimalFc                 C   s   d}| dd  d}t|\}}| \}}ttj|f|d|itj|f|d|i ttj|f|d|itj|f|d|i d S )Nr  r  r   r  optimizer  r  r   r   r  r   )r  sigr  r  r  opt1opt2r   r   r   test_einsum_optimize	  s    r  rE  AKc                 C   sV   d}| dd  d}t|\}}ttj|f|d| itj|f|d| i d S )Nr  r  r   r  rE  r  )rE  r  r  r  r  r   r   r   test_einsum_order	  s     r  castingnoequivsafeZ	same_kindZunsafec                 C   sV   d}| dd  d}t|\}}ttj|f|d| itj|f|d| i d S )Nr  r  r   r  r  r  )r  r  r  r  r  r   r   r   test_einsum_casting	  s    r  split_everyc                 C   s4   t d\}}ttjd| tjd|d| i d S )Nrx   r  )rx   )rx   )r  r   r   r  r   )r  r  r  r   r   r   test_einsum_split_every	  s
     r  c               	   C   s<   t d\} }tt tjd|ddd W 5 Q R X d S )Nrx   r    r!   )Zfoobar)rx   )r  rV   rW   r3  r   r  )_r  r   r   r   test_einsum_invalid_args	  s    r  c                  C   s   t jddd} t jdd}t jdd}t jd}tj| dd}tj|dd}tj|d	d}tj|d
d}t d| ||}td|||}	t||	 |	| }
t d| |||}td||||}	t||	 t||
 d S )Nr    r	   r1   r4   r   r    r5   r   r   r   r   r5   r   re   r   z	ijk,kl,jlzijk,kl,jl,i->ir   r<   Zrandr   r=   r  r   rx   r   rG   r   r   r  r0  r  np_resda_resZmul_resr   r   r   $test_einsum_broadcasting_contraction	  s     

r  c                  C   s   t jdddd} t jdd}t jdd}t jdd}tj| dd}tj|dd}tj|d	d}tj|d
d}t d| ||}td|||}	t||	 |	| }
t d| |||}td||||}	t||	 t||
 d S )Nr    r	   r1   r4   re   )r    r    r5   r   r   r  r  r  z
abjk,kl,jlzabjk,kl,jl,ab->abr  r  r   r   r   %test_einsum_broadcasting_contraction2	  s     

r  c            
      C   s   t jddd} t jddd}t jdd}t jdd}tj| dd}tj|dd}tj|d	d}tj|d
d}t d| |||}td||||}	t||	 d S )Nr    r	   r1   r4   re   r  r   )r   r    r   r  r  zajk,kbl,jl,ab->abr  )
rx   r   rG   r   r   r  r0  r  r  r  r   r   r   %test_einsum_broadcasting_contraction3	  s    r  returnedc                 C   s8   t j| dd}tj| |d}t j||d}t|| d S )Nr!   r   )r  )r   r=   r   averager   )rx   r  r   np_avgda_avgr   r   r   test_average	  s    r  c                 C   s<   t j| dd}t j|dd}tr8tj| dd}t|| d S )Nr!   r   T)r   )r   r=   r  r   r   r   )rx   r   r  r  r   r   r   test_average_keepdims	
  s
    r  r   c                 C   s   t dd}tj|dd}t ddg}tj|dd}tj||d| d}trjt|t j||d| d n| st|t j||dd	 d S )
Nr4   r  r!   r   r\  rc  r    )r   rt   r   )r   rt   )	r   rS   rT   r   r=   r   r  r   r   )r   rx   r   r   Z	d_weightsr  r   r   r   test_average_weights
  s    r  c               	   C   sj   t jddd} tt t j| dddgd W 5 Q R X tt t j| t | d	  W 5 Q R X d S )Nr   r!   r   r    r   )r   )
r   rS   rV   rW   r3  r  r   r  Z
zeros_likerw   )r   r   r   r   test_average_raises$
  s
    r  c                  C   sT   t tddgd} t| dks(tt tddgd} t| dksPtd S )Nr    r!   Fy       @        T)r   r=   r   r   Ziscomplexobjr   r  r   r   r   test_iscomplexobj.
  s    r  c               	   C   s   t jdd} dD ]}t| ||f}t t| t | sFtt t	| t 	| sftdD ]L}t t|| t | |stt t	|| t 	| |sjtqjqd S )Nr   r   )ir  iiiiiir[   r    r1   r	   r4   r7   r   r   r   r   r   r   rb  )
r   r<   Zrandnr   r=   r   triurw   r   tril)r  ZchkdAr   r   r   r   test_tril_triu6
  s      $r  c                  C   s8   t jddd} tj| dd}tt|t |  d S )Nr   r   )r   r   r   )r	   r	   r	   r   )r   r<   r   r   r=   r   r  r  r  r   r   r   test_tril_ndimsZ
  s    r  c                  C   sN   t jddd} tj| dd}tt|t |  tt|t |  d S )Nr   r   )r   #   r   r   )r   r<   r   r   r=   r   r  r  r  r   r   r    test_tril_triu_non_square_arrays`
  s    r  zn, k, m, chunks)r   r   r   r   )r   r    r   r   )r   r[   r   r   )r	   r   r	   r    c                 C   s   t j| |||dd }tj| ||dd }tjdkrHt||j| n
t|| t j| |||dd }tj| ||dd }tjdkrt||j| n
t|| d S )N)r   r   r  r   r   )r   r   r  win32)	r   Ztril_indicesr   sysplatformr   r  r   Ztriu_indices)r   r   r  r   r  r   r   r   r   test_tril_triu_indicesg
  s     




r  )r  r   r  r  Znumbersr   rV   r   r   r  Zdask.delayedr   Zimportorskipr   Z
dask.arrayr   r   Zdask.array.numpy_compatr   Zdask.array.utilsr   r   r   r$   r&   markZparametrizer/   rI   rC   r  combinations_with_replacementrO   rZ   r^   rb   rk   rq   ru   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   exprS   r   r   r]  r&  r   r   r  r  r  r  r  r"  r#  r)  r1  r5  r>  rA  rE  rU  rY  rb  rf  rm  rp  rq  rs  rw  ry  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r  r  Zxfailr  r  r  r  r%  r*  r+  r,  r-  r1  r2  r4  r5  r6  r7  r:  r;  rA  rG  r  r=   r  rT   tolistrV  rX  rY  r[  r\  r`  rc  ro   re  ro  rq  rs  rt  rv  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s  




 




































&
 

	









&$

	
$&,		
 !


$$$
 	


&
#	


*,(* 88*	$	'0	*" 
"(	(

$