B
    T\                 @   s   d dl mZmZmZ d dlmZ d dlmZ d dlZ	yd dl
mZ W n  ek
rd   d dlmZ Y nX ddlmZ ddlmZ d	d
lmZmZ dd Zedd ZeeZee	jddZee	jddZee	jddZee	jZdS )    )absolute_importdivisionprint_function)partial)productN)curry   )tokenize)funcname   )Arraynormalize_chunksc                s2  d|kr  d  dd  } n
| d}t|tjr>| }t|ttfsR|f}| dd}| dd}|dkr|f |j}t|}t|||d}| d	d}|pt	d
 t
||| | }t|gfdd |D  }t| }tfd|i| fdd|D }	tt||	}
t|
|||dS )z=
    Transform np creation function into blocked version
    shaper   r   Nchunksautodtype)r   name-c             S   s   g | ]}t t|qS  )rangelen).0Zbdr   r   .lib/python3.7/site-packages/dask/array/wrap.py
<listcomp>-   s    z0wrap_func_shape_as_first_arg.<locals>.<listcomp>c             3   s   | ]}f|f   V  qd S )Nr   )r   s)argsfuncr   r   	<genexpr>0   s    z/wrap_func_shape_as_first_arg.<locals>.<genexpr>)pop
isinstancenpZndarraytolisttuplelistr   r   r
   r	   r   r   dictzipr   )r   r   kwargsr   r   r   r   keysZshapesZvalsZdskr   )r   r   r   wrap_func_shape_as_first_arg   s*    

"r(   c             K   sB   t | |f|}d}|jd k	r>|d|ji |j |_d|j |_|S )Nz
    Blocked variant of %(name)s

    Follows the signature of %(name)s exactly except that it also requires a
    keyword argument chunks=(...)

    Original signature follows below.
    r   Zblocked_)r   __doc____name__)Z	wrap_funcr   r&   ftemplater   r   r   wrap6   s    
r-   Zf8)r   )Z
__future__r   r   r   	functoolsr   	itertoolsr   Znumpyr    Zcytoolzr   ImportErrorZtoolzbaser	   Zutilsr
   Zcorer   r   r(   r-   wZonesZzerosemptyZfullr   r   r   r   <module>   s"   $