a
    jDf                     @  s   d dl mZ d dlmZmZ d dlmZmZmZ d dl	Z
d dlmZ d dlmZ d dlmZmZ d dlmZmZ erd d	lmZmZmZmZ zd d
lmZ W n  ey   e
jeef ZY n0 edZG dd ded Z dS )    )annotations)IterableSequence)TYPE_CHECKINGAnyCallableN)Version)!ImplicitToExplicitIndexingAdapter)ChunkManagerEntrypointT_ChunkedArray)is_duck_dask_arraymodule_available)T_Chunks	_DType_co_NormalizedChunks	duckarrayArraydaskc                   @  s  e Zd ZU ded< eZded< ddddZd	dd
ddZddd
ddZdPdddddddddZ	dddddddZ
ddddd d!Zeddd"d#ZdQd%d&d'd'd(dddd)d*d+ZdRd&d&d,d%ddddd-d.d/Zddd$dddd$dd0d&d1dd2ddd3d4d5dd6ddd7d8d9Zddddd:d&dddd(d(ddd;d<d=Zdddddd>ddd?d&d@ddAdBddCdDdd5d6dddEdFdGZdddHdIdJdKZdLddddMdNdOZdS )SDaskManagerztype[DaskArray]	array_clsbool	availableNone)returnc                 C  s   ddl m} || _d S )Nr   r   )
dask.arrayr   r   )selfr    r   j/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/xarray/namedarray/daskmanager.py__init__"   s    zDaskManager.__init__zduckarray[Any, Any])datar   c                 C  s   t |S N)r   r   r    r   r   r   is_chunked_array)   s    zDaskManager.is_chunked_arrayr   r   c                 C  s   |j S r!   )chunksr"   r   r   r   r$   ,   s    zDaskManager.chunksNzT_Chunks | _NormalizedChunksztuple[int, ...] | Nonez
int | Nonez_DType_co | Nonez_NormalizedChunks | None)r$   shapelimitdtypeprevious_chunksr   c                 C  s   ddl m} ||||||dS )zCalled by open_datasetr   )normalize_chunks)r%   r&   r'   r(   )dask.array.corer)   )r   r$   r%   r&   r'   r(   r)   r   r   r   r)   /   s    	zDaskManager.normalize_chunkszDaskArray | Any)r    r$   kwargsr   c                 K  s4   dd l m} t|tr tj|d< |j||fi |S )Nr   meta)r   array
isinstancer	   npndarray
from_array)r   r    r$   r+   dar   r   r   r1   B   s    

zDaskManager.from_arrayz&tuple[np.ndarray[Any, _DType_co], ...])r    r+   r   c                 O  s   ddl m} ||i |S )Nr   )compute)r   r3   )r   r    r+   r3   r   r   r   r3   Q   s    zDaskManager.computec                 C  s   ddl m} |S )Nr   )r-   )r   r-   )r   r2   r   r   r   	array_apiX   s    zDaskManager.array_apiFr   zCallable[..., Any]zCallable[..., Any] | Nonezint | Sequence[int] | None)arrfunccombine_funcaggregate_funcaxisr'   keepdimsr   c           	   	   C  s"   ddl m} ||||||||dS )Nr   )	reduction)chunkcombineZ	aggregater9   r'   r:   )r   r;   )	r   r5   r6   r7   r8   r9   r'   r:   r;   r   r   r   r;   ^   s    
zDaskManager.reductionfloat)r6   binopidentr5   r9   r'   r+   r   c           	      K  s(   ddl m} |||||f||d|S )Nr   )cumreduction)r9   r'   )Zdask.array.reductionsrA   )	r   r6   r?   r@   r5   r9   r'   r+   rA   r   r   r   scant   s    
zDaskManager.scanaxesr9   r:   output_dtypesoutput_sizes	vectorizeallow_rechunkr,   strz Sequence[tuple[int, ...]] | NonezSequence[_DType_co] | Nonezdict[str, int] | Nonezbool | Nonez-tuple[np.ndarray[Any, _DType_co], ...] | None)r6   	signatureargsrD   r9   r:   rE   rF   rG   rH   r,   r+   r   c                O  s6   ddl m} |||g|R |||||||	|
d|S )Nr   )apply_gufuncrC   )Zdask.array.gufuncrL   )r   r6   rJ   rD   r9   r:   rE   rF   rG   rH   r,   rK   r+   rL   r   r   r   rL      s$    zDaskManager.apply_gufuncr'   r$   	drop_axisnew_axis)r6   rK   r'   r$   rN   rO   r+   r   c          
      O  sR   dd l }ddlm}	 |d u r2t|jtdk r2g }|	|g|R ||||d|S )Nr   )
map_blocksz2022.9.1rM   )r   r   rP   r   __version__)
r   r6   r'   r$   rN   rO   rK   r+   r   rP   r   r   r   rP      s     
zDaskManager.map_blocksTnametokenr'   adjust_chunksnew_axesalign_arraysconcatenater,   zIterable[Any]z
str | Nonez
Any | Nonez$dict[Any, Callable[..., Any]] | Nonezdict[Any, int] | None)r6   out_indrK   rS   rT   r'   rU   rV   rW   rX   r,   r+   r   c                O  s6   ddl m} |||g|R |||||||	|
d|S )Nr   )	blockwiserR   )r   rZ   )r   r6   rY   rS   rT   r'   rU   rV   rW   rX   r,   rK   r+   rZ   r   r   r   rZ      s$    zDaskManager.blockwisez4tuple[dict[str, _NormalizedChunks], list[DaskArray]])rK   r+   r   c                 O  s   ddl m} ||i |S )Nr   )unify_chunks)r*   r[   )r   rK   r+   r[   r   r   r   r[      s    zDaskManager.unify_chunkszAny | Sequence[Any])sourcestargetsr+   r   c                 K  s    ddl m} |f ||d|S )Nr   )store)r\   r]   )r   r^   )r   r\   r]   r+   r^   r   r   r   r^      s    zDaskManager.store)NNNN)NNNNF)NN)__name__
__module____qualname____annotations__dask_availabler   r   r#   r$   r)   r1   r3   propertyr4   r;   rB   rL   rP   rZ   r[   r^   r   r   r   r   r      s`   
    	       *$ #*!	r   	DaskArray)!
__future__r   collections.abcr   r   typingr   r   r   numpyr/   Zpackaging.versionr   Zxarray.core.indexingr	   Z xarray.namedarray.parallelcompatr
   r   Zxarray.namedarray.utilsr   r   Zxarray.namedarray._typingr   r   r   r   r   r   re   ImportErrorr0   rc   r   r   r   r   r   <module>   s   