U
    /e                     @   sT   d dl mZ d dlmZ d dlmZmZ dddZdddd	Z	G d
d deZ
dS )    N)config)ArrayBackendEntrypointregister_cupyTc                 C   s4   zdd l }W n" tk
r.   | r(tdY d S X |S )Nr   z4Please install `cupy` to use `CupyBackendEntrypoint`)cupyImportError)strictr    r   ?/tmp/pip-unpacked-wheel-dbjnr7gq/dask/array/cupy_entry_point.py_cupy   s    r
   )metac             
   O   sV   |d krt  dn|}tddi& tt| |d|i|W  5 Q R  S Q R X d S )Nr   array.backendnumpyr   )r
   emptyr   setgetattrda)attrr   argskwargsr   r   r	   _da_with_cupy_meta   s    r   c                   @   sb   e Zd Zdd Zedd Zedd Zedd Zed	d
 Z	edd Z
eddddZdS )CupyBackendEntrypointc                 C   s   t ddrt  dS )z)Register data-directed dispatch functionsF)r   N)r
   r   selfr   r   r	   __init__   s    
zCupyBackendEntrypoint.__init__c                 C   s
   t  jjS )N)r
   randomRandomStater   r   r   r	   r      s    z!CupyBackendEntrypoint.RandomStatec                  O   s   t d| |S )Nones)r   r   r   r   r   r   r	   r   !   s    zCupyBackendEntrypoint.onesc                  O   s   t d| |S )Nzeros)r   r   r   r   r   r	   r   %   s    zCupyBackendEntrypoint.zerosc                  O   s   t d| |S )Nr   )r   r   r   r   r   r	   r   )   s    zCupyBackendEntrypoint.emptyc                  O   s   t d| |S )Nfull)r    r   r   r   r   r	   r    -   s    zCupyBackendEntrypoint.fullN)likec              
   O   sR   | d krt  dn| } tddi" tj|d| i|W  5 Q R  S Q R X d S )Nr   r   r   r!   )r
   r   r   r   r   arange)r!   r   r   r   r   r	   r"   1   s    zCupyBackendEntrypoint.arange)__name__
__module____qualname__r   propertyr   staticmethodr   r   r   r    r"   r   r   r   r	   r      s   




r   )T)Z
dask.arrayarrayr   Zdaskr   Zdask.array.backendsr   r   r
   r   r   r   r   r   r	   <module>   s
   

