U
    /e&                     @  s  U d dl mZ d dlmZmZmZ d dlmZ d dlZd dl	Z	d dl
Z	d dlmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZ zd d	lmZ W n ek
r   eZY nX ed
ZedZedZedZ dddddZ!dddddddZ"dddddddZ#G dd deZ$G dd deZ%G dd deZ&d d dd!d"Z'ee'Z(d#e)d$< d%dd&d'd(d)Z*ej+,d*eegd+d, Z-d&d-d.d/Z.d%dd0d1d2Z/d%dd0d3d4Z0d&d-d5d6Z1d&d-d7d8Z2dS )9    )annotations)HashableMappingSequence)AnyN)DaskMethodsMixindont_optimizetokenize)globalmethod)Delayeddelayed)DaskCollectionHLGDaskCollectionPostComputeCallablePostPersistCallable)DisplayObjectz
dask.arrayzdask.bagzdask.datasetszdask.dataframezSequence[Any]r   )xreturnc                 C  s   | d S )Nr    r   r   r   :/tmp/pip-unpacked-wheel-dbjnr7gq/dask/tests/test_typing.pyfinalize    s    r   r   zSequence[Hashable] | Hashable)dskkeyskwargsr   c                 K  s   t jj| |f|S N)daskthreadedgetr   r   r   r   r   r   get1$   s    r    c                 K  s   t j| |f|S r   )r   r   r   r   r   r   get2(   s    r!   c                   @  s   e Zd ZdddddZdddd	Zd
dddZddddZddddZddddZe	e
jjZeededZddddZd dddZd'd d!d"dd#d$d%d&ZdS )(
Inheritingr   Nonebased_onr   c                 C  s
   || _ d S r   r%   selfr%   r   r   r   __init__-   s    zInheriting.__init__r   r   c                 C  s
   | j  S r   r%   __dask_graph__r(   r   r   r   r,   0   s    zInheriting.__dask_graph__list[Hashable]c                 C  s
   | j  S r   r%   __dask_keys__r-   r   r   r   r0   3   s    zInheriting.__dask_keys__!tuple[PostComputeCallable, tuple]c                 C  s   t dfS Nr   r   r-   r   r   r   __dask_postcompute__6   s    zInheriting.__dask_postcompute__!tuple[PostPersistCallable, tuple]c                 C  s
   | j  S r   r%   __dask_postpersist__r-   r   r   r   r7   9   s    zInheriting.__dask_postpersist__r   c                 C  s
   t | jS r   r	   r%   r-   r   r   r   __dask_tokenize__<   s    zInheriting.__dask_tokenize__hlgcollection_optimkeyZfalseyr   c                 K  s   t j| f|S r   )r   computer(   r   r   r   r   r=   G   s    zInheriting.computec                 K  s   t | jjf |S r   )r"   r%   persistr>   r   r   r   r?   J   s    zInheriting.persistmydaskNFstrz
str | NoneboolzDisplayObject | None)filenameformatoptimize_graphr   r   c                 K  s   t j| f|||d|S )N)rC   rD   rE   )r   	visualize)r(   rC   rD   rE   r   r   r   r   rF   M   s    zInheriting.visualize)r@   NF)__name__
__module____qualname__r)   r,   r0   r4   r7   r9   staticmethodr   r   r   __dask_scheduler__r
   r   __dask_optimize__r=   r?   rF   r   r   r   r   r"   ,   s$      r"   c                   @  s   e Zd ZdddddZdddd	Zd
dddZddddZddddZddddZddddZ	e
eZeededZdS )HLGCollectionr   r#   r$   c                 C  s
   || _ d S r   r&   r'   r   r   r   r)   ^   s    zHLGCollection.__init__r   r*   c                 C  s
   | j  S r   r+   r-   r   r   r   r,   a   s    zHLGCollection.__dask_graph__zSequence[str]c                 C  s
   | j  S r   )r%   __dask_layers__r-   r   r   r   rN   d   s    zHLGCollection.__dask_layers__r.   c                 C  s
   | j  S r   r/   r-   r   r   r   r0   g   s    zHLGCollection.__dask_keys__r1   c                 C  s   t dfS r2   r3   r-   r   r   r   r4   j   s    z"HLGCollection.__dask_postcompute__r5   c                 C  s
   | j  S r   r6   r-   r   r   r   r7   m   s    z"HLGCollection.__dask_postpersist__r   c                 C  s
   t | jS r   r8   r-   r   r   r   r9   p   s    zHLGCollection.__dask_tokenize__r:   r;   N)rG   rH   rI   r)   r,   rN   r0   r4   r7   r9   rJ   r    rK   r
   r   rL   r   r   r   r   rM   ]   s   rM   c                   @  sx   e Zd ZdddddZdddd	Zd
dddZddddZddddZddddZe	e
ZeededZdS )NotHLGCollectionr   r#   r$   c                 C  s
   || _ d S r   r&   r'   r   r   r   r)   }   s    zNotHLGCollection.__init__r   r*   c                 C  s
   | j  S r   r+   r-   r   r   r   r,      s    zNotHLGCollection.__dask_graph__r.   c                 C  s
   | j  S r   r/   r-   r   r   r   r0      s    zNotHLGCollection.__dask_keys__r1   c                 C  s   t dfS r2   r3   r-   r   r   r   r4      s    z%NotHLGCollection.__dask_postcompute__r5   c                 C  s
   | j  S r   r6   r-   r   r   r   r7      s    z%NotHLGCollection.__dask_postpersist__r   c                 C  s
   t | jS r   r8   r-   r   r   r   r9      s    z"NotHLGCollection.__dask_tokenize__Zcollection_optimr;   N)rG   rH   rI   r)   r,   r0   r4   r7   r9   rJ   r!   rK   r
   r   rL   r   r   r   r   rO   |   s   rO   intc                 C  s   | d S )N   r   r   r   r   r   
increment_   s    rR   r   	incrementr   r#   )collprotocolr   c                 C  s   t | |std S r   )
isinstanceAssertionError)rT   rU   r   r   r   assert_isinstance   s    rX   rU   c                 C  s^   t d}tjdddddgdd}t }td}t||  t||  t||  t||  d S )N
   rQ               )Znpartitions)daonesdbZfrom_sequenceddsZ
timeseriesrS   rX   )rU   ZarrZbagZdfZdobjr   r   r   test_isinstance_core   s    



rb   r*   c                  C  sV   t d} t| }t| }t|ts(tt|ts6tt|tsDtt|trRtd S )NrY   )r^   r_   rM   rO   rV   r   rW   r   )ahlgcZnhlgcr   r   r   test_isinstance_custom   s    
re   )rT   r   c                 C  s   |   S r   r=   rT   r   r   r   r=      s    r=   c                 C  s   |   S r   rf   rg   r   r   r   compute2   s    rh   c                  C  s   ddl m}  td}t|}t|dks,tt|dks<ttd}t|dksTtt|dksdttd}t|j	dkstt|j	dkstd S )Nr   )ArrayrZ   r[   r\   rY   )rY   )
Z
dask.arrayri   rS   rM   r=   rW   rh   r^   r_   shape)ri   rc   rd   darrayr   r   r   test_parameter_passing   s    
rm   c                  C  s   t td} t| t std S )NrZ   )r"   rS   rV   rW   )Z
inheritingr   r   r   test_inheriting_class   s    rn   )3
__future__r   collections.abcr   r   r   typingr   Zpytestr   Zdask.threadedZ	dask.baser   r   r	   Zdask.contextr
   Zdask.delayedr   r   Zdask.typingr   r   r   r   ZIPython.displayr   ImportErrorZimportorskipr^   r`   ra   ddr   r    r!   r"   rM   rO   rR   rS   __annotations__rX   markZparametrizerb   re   r=   rh   rm   rn   r   r   r   r   <module>   sD    




1
