U
    /e                     @   s  d dl Zd dlZejjZd dlmZ d dl	m
Z
 d dlmZ edZejdddddgejd	d
dddgdd Zejje
 ddejdddddgejd	d
dddgdd Zejje
 ddejddddgdd Zejje
 ddejdejddddddgdd Zejje
 ddejdddgdd Zejje
 ddejdddgdd Zejje
 ddejd d!d"d#d$d%d&d'd(gd)d* Zd+d, ZdS )-    N)
_numpy_120)	assert_eqcupy
idx_chunks         x_chunks)r      )r   r   )r   r   )r   r   c              	   C   s   t dddddgdddd	d
gdddddgg}t dddg}t dddgd	ddgdddgg}tj|| d}|d k	rtj||d}t|d d |f | t|j|d d f |j d S N
         (   2   <   F   P   Z   d   n   x            r   r   r   chunks)r   arrayda
from_arrayr   T)r	   r   xidxexpect r$   F/tmp/pip-unpacked-wheel-dbjnr7gq/dask/array/tests/test_cupy_slicing.pytest_index_with_int_dask_array   s    &"r&   zNEP-35 is not available)reasonc              	   C   s  t dddddgdddd	d
gdddddgg}tdddg}t dddgd	ddgdddgg}| d k	rvtj|| d}|d k	rtj||d}n|}t|d d |f | t|j|d d f |j t |}|d k	rtj||d}n|}t|d d |f | t|j|d d f |j d S r   )r   r   npr   r   r   r    )r	   r   r!   Zorig_idxr#   r"   r$   r$   r%   $test_index_with_int_dask_array_nep35"   s$    &"
r)   r   c                 C   s   t jtdddgdddgg| d}t jddd}t||d d f |dd d f  t|d d |f |d d df  t jtddd}t||d d f |dd d f  t|d d |f |d d df  d S )	Nr   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r!   Zidx0r$   r$   r%   !test_index_with_int_dask_array_0dE   s    $"""r*   z9dask.Array.nonzero() doesn't support non-NumPy arrays yet   r
   c                 C   sh   t jtdd| d}t||  tddddg t jtdd| d	}t||  tg  d S )
Nr   r   r   r   r$   r
   )shaper   )r   r   r   aranger   Znonzeror   Z
zeros_like)r   ar$   r$   r%   (test_index_with_int_dask_array_nanchunksT   s     r1   c                 C   st   t jd| tdd}t jddgdd}t|| tdd	g t jtddgdd}t|| tdd	g d S )
Nr+   r$   r   liker-   r   r   r   r   )r   r/   r   r   r   r   r   r0   r"   r$   r$   r%   'test_index_with_int_dask_array_negindex`   s
    r6   c              	   C   s   t jd| tdd}t jdgdd}tt ||   W 5 Q R X t jdgdd}tt ||   W 5 Q R X t jtdgdd}tt ||   W 5 Q R X t jtdgdd}tt ||   W 5 Q R X d S )Nr+   r$   r2   r   r   )	r   r/   r   r   r   pytestraises
IndexErrorcomputer5   r$   r$   r%   )test_index_with_int_dask_array_indexerrorl   s    r<   dtypeZint8Zint16Zint32int64Zuint8Zuint16Zuint32Zuint64c                 C   s   t jtddddgdd}t jtddg| dd}t|| tddg t jtddg| dd}t|| tddg d S )	Nr   r   r   r   r-   r   r   r   )r   r   r   r   r(   Zastyper   )r=   r0   r"   r$   r$   r%   %test_index_with_int_dask_array_dtypes   s
    r?   c               	   C   sb   dd } t jddtdd}t jd| fidd	tjd
}|| }tt	 |
  W 5 Q R X dS )zWTest that when the indices are a dask array
    they are not accidentally computed
    c                   S   s
   t  d S )N)NotImplementedErrorr$   r$   r$   r%   crash   s    z7test_index_with_int_dask_array_nocompute.<locals>.crashr
   r-   r$   r2   )r!   r   r!   ))r   )namer   r=   N)r   r/   r   r   Arrayr(   r>   r8   r9   r@   r;   )rA   r!   r"   resultr$   r$   r%   (test_index_with_int_dask_array_nocompute   s    rE   )Znumpyr(   r8   markZgpuZ
pytestmarkZ
dask.arrayr   r   Zdask.array.numpy_compatr   Zdask.array.utilsr   Zimportorskipr   Zparametrizer&   Zskipifr)   r*   skipr1   r6   r<   r?   rE   r$   r$   r$   r%   <module>   sB   
 
	
 
