U
    /eY                  
   @   sn  d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlZd dlZd dlmZ d dlZd dlmZ d d	lmZ d d
lmZmZmZ d dlmZ d dlmZ G dd dZ ej!"ddd Z#dd Z$dd Z%eG dd dZ&eddG dd dZ'ej!(de&e'fdd Z)dd  Z*d!d" Z+d#d$ Z,d%d& Z-d'd( Z.d)d* Z/d+d, Z0d-d. Z1d/d0 Z2d1d2 Z3d3d4 Z4d5d6 Z5d7d8 Z6d9d: Z7d;d< Z8d=d> Z9d?d@ Z:dAdB Z;dCdD Z<dEdF Z=dGdH Z>dIdJ Z?dKdL Z@ej!(dMdNdOgdPe
dNdOfg dQgdRdS ZAdTdU ZBdVdW ZCej!"ddXdY ZDdZd[ ZEd\d] ZFd^d_ ZGd`da ZHdbdc ZIddde ZJdfdg ZKdhdi ZLdjdk ZMdldm ZNdndo ZOdpdq ZPdrds ZQdtdu ZRdvdw ZSdxdy ZTdzd{ ZUed|d} ZVed~ddd ZWej!(deeUejXeVej!jYdddejXeWej!jYdddgdd ZZej!(deeUeVeWgdd Z[dd Z\dd Z]dd Z^dS )    N)
namedtuple)	dataclassfield)partial)addsetitem)random)
NamedTuple)merge)compute)Delayeddelayedto_task_dask)HighLevelGraph)incc                   @   s@   e Zd ZeejjZdd Zdd Z	dd Z
dd Zd	d
 ZdS )Tuplec                 C   s   || _ || _d S N)_dask_keys)selfdskkeys r   ;/tmp/pip-unpacked-wheel-dbjnr7gq/dask/tests/test_delayed.py__init__   s    zTuple.__init__c                 C   s   | j S r   r   r   r   r   r   __dask_tokenize__   s    zTuple.__dask_tokenize__c                 C   s   | j S r   )r   r   r   r   r   __dask_graph__    s    zTuple.__dask_graph__c                 C   s   | j S r   r   r   r   r   r   __dask_keys__#   s    zTuple.__dask_keys__c                 C   s   t dfS )Nr   tupler   r   r   r   __dask_postcompute__&   s    zTuple.__dask_postcompute__N)__name__
__module____qualname__staticmethoddaskZthreadedgetZ__dask_scheduler__r   r   r   r   r"   r   r   r   r   r      s   r   z#ignore:The dask.delayed:UserWarningc                  C   s0  t ddd} t ddd}t| |dg\}}|dddgks<tt| |df\}}|tdddgfksdtt|t| j|jks~tt| d|di\}}|tddgddggfks|tddgddggfkstt|t| j|jksttddddg}|| |d}t|\}}||dddfkstt|t| j|jks:ttt| |d\}}|tdddfksdtt|t| j|jkstG d	d
 d
t}t| \}}t	||kstt|i kstt
ddtddfddddg}t|\}}||kst||}|tdddgfkst||jks,td S )N   aname   b   fcc                   @   s   e Zd ZdS )z"test_to_task_dask.<locals>.MyClassN)r#   r$   r%   r   r   r   r   MyClassD   s   r2   r*   r.   r1   )r   r   AssertionErrorr!   dictr
   r'   r   slicetyper   r   popr   )r*   r.   taskr'   r0   xr2   r   r   r   test_to_task_dask*   s8    4
r;   c                  C   s   t t} | dd dkst| ddd  dks8t| | ddd dksTtt d}| dksltd|j ks~t| | |dd}|j|jkstd S )Nr)   r-   r/      )r   r   r   r4   r'   valueskey)Zadd2r*   r.   r   r   r   test_delayedT   s    r?   c                  C   sV   G dd dt } td}td| |di}dd }t||}| dksRtd S )Nc                   @   s   e Zd ZU eed< dS )z1test_delayed_with_namedtuple.<locals>.ANamedTupler*   Nr#   r$   r%   int__annotations__r   r   r   r   ANamedTupleb   s   
rC   r/   r*   r*   c                 S   s
   | d j S )Nr*   rD   objr   r   r   return_nestedh   s    z3test_delayed_with_namedtuple.<locals>.return_nested)r	   r'   r   r   r4   )rC   literal
with_classrG   finalr   r   r   test_delayed_with_namedtuplea   s    
rK   c                   @   s   e Zd ZU eed< dS )ANonFrozenDataClassr*   Nr@   r   r   r   r   rL   p   s   
rL   T)frozenc                   @   s   e Zd ZU eed< dS )AFrozenDataClassr*   Nr@   r   r   r   r   rN   u   s   
rN   clsc                 C   sB   t d}t d| |di}dd }t ||}| dks>td S )Nr/   datarD   c                 S   s
   | d j S NrP   rD   rE   r   r   r   rG      s    z2test_delayed_with_dataclass.<locals>.return_nestedr   r   r4   )rO   rH   rI   rG   rJ   r   r   r   test_delayed_with_dataclassz   s
    rS   c               	   C   s`   t  G dd d} td}tt}td| |di W 5 Q R X |d |d d S )Nc                   @   s$   e Zd ZU eed< edddZdS )z@test_delayed_with_dataclass_with_custom_init.<locals>.ADataClassr*   r.   c                 S   s
   || _ d S r   rD   r   r.   r   r   r   r      s    zItest_delayed_with_dataclass_with_custom_init.<locals>.ADataClass.__init__Nr#   r$   r%   rA   rB   r   r   r   r   r   
ADataClass   s   
rW   r/   rP   rT   z custom __init__ is not supported)r   r'   r   pytestraises	TypeErrormatch)rW   rH   er   r   r   ,test_delayed_with_dataclass_with_custom_init   s    

r]   c                  C   sN   t  G dd d} td| ddi}dd }t||}| dksJtd S )Nc                   @   s$   e Zd ZU eed< edddZdS )zFtest_delayed_with_dataclass_with_eager_custom_init.<locals>.ADataClassr*   rT   c                 S   s
   || _ d S r   rD   rU   r   r   r   r      s    zOtest_delayed_with_dataclass_with_eager_custom_init.<locals>.ADataClass.__init__NrV   r   r   r   r   rW      s   
rW   rP   r/   rT   c                 S   s
   | d j S rQ   rD   rE   r   r   r   rG      s    zItest_delayed_with_dataclass_with_eager_custom_init.<locals>.return_nestedr   r   r   r4   )rW   rI   rG   rJ   r   r   r   2test_delayed_with_dataclass_with_eager_custom_init   s    r_   c                     sV   t G dd d  fdd} td| di}dd }t||}| dksRtd S )	Nc                   @   s(   e Zd ZU eed< eddZeed< dS )zOtest_delayed_with_eager_dataclass_with_set_init_false_field.<locals>.ADataClassr*   Finitr.   Nr#   r$   r%   rA   rB   r   r.   r   r   r   r   rW      s   
rW   c                    s    | d}d|_ |S NrD      rT   r*   rP   rW   r   r   prep_dataclass   s    
zStest_delayed_with_eager_dataclass_with_set_init_false_field.<locals>.prep_dataclassrP   r/   c                 S   s
   | d j S rQ   rD   rE   r   r   r   rG      s    zRtest_delayed_with_eager_dataclass_with_set_init_false_field.<locals>.return_nestedr^   )rg   rI   rG   rJ   r   rf   r   ;test_delayed_with_eager_dataclass_with_set_init_false_field   s    rh   c               	      sd   t G dd d td}  fdd}tt}t||  W 5 Q R X |d |d d S )Nc                   @   s(   e Zd ZU eed< eddZeed< dS )zItest_delayed_with_dataclass_with_set_init_false_field.<locals>.ADataClassr*   Fr`   r.   Nrb   r   r   r   r   rW      s   
rW   r/   c                    s    | d}d|_ |S rc   rT   re   rf   r   r   rg      s    
zMtest_delayed_with_dataclass_with_set_init_false_field.<locals>.prep_dataclassz`init=False` are not supported)r   r'   r   rX   rY   
ValueErrorr[   )rH   rg   r\   r   rf   r   5test_delayed_with_dataclass_with_set_init_false_field   s    

rj   c                  C   sV   t G dd d} td}td| |di}dd }t||}| dksRtd S )Nc                   @   s(   e Zd ZU eed< eddZeed< dS )zKtest_delayed_with_dataclass_with_unset_init_false_field.<locals>.ADataClassr*   Fr`   r.   Nrb   r   r   r   r   rW      s   
rW   r/   rP   rD   c                 S   s
   | d j S rQ   rD   rE   r   r   r   rG      s    zNtest_delayed_with_dataclass_with_unset_init_false_field.<locals>.return_nested)r   r'   r   r   r4   )rW   rH   rI   rG   rJ   r   r   r   7test_delayed_with_dataclass_with_unset_init_false_field   s    
rk   c                  C   s
  t dddg} | d  dks"t| |   ddddddgksBtt d}| d |  ddgksftt d} | d  dkstd|   dkst| d?  dkst| dk st| d  dkstG d	d
 d
}t | }t | }||  dkstd S )Nr)   r-   r/   r   
         d   c                   @   s   e Zd Zdd ZdS )ztest_operators.<locals>.dummyc                 S   s   dS )Nrd   r   )r   otherr   r   r   
__matmul__   s    z(test_operators.<locals>.dummy.__matmul__N)r#   r$   r%   rq   r   r   r   r   dummy   s   rr   rd   rR   )r*   r.   rr   r1   dr   r   r   test_operators   s     

rt   c                  C   s   t d} | d dddddgks(t|  dd	 d	 d
ksNt| jdddj| jdddjksrt| jddd}|jdkstd S )Nz	a b c d e r*   r.   r1   rs   r\   BAr-   TpuretestZdask_key_name)r   splitr   r4   upperreplacecountr>   r*   or   r   r   test_methods   s     &$r   c                  C   s\   t d} | jj| jjkst| j dks.t| j dks@t| j| j  dksXtd S )N       @      ?r-   r)   r/   )r   real_keyr4   r   imagrD   r   r   r   test_attributes  s
    r   c                  C   s:   t dddg} | d}tdd |  D ks6td S )Nr)   r-   r/   c                 S   s   h | ]}|d  qS )r   r   ).0vr   r   r   	<setcomp>  s     z5test_method_getattr_call_same_task.<locals>.<setcomp>)r   indexgetattrr   r=   r4   r   r   r   r   "test_method_getattr_call_same_task  s    
r   c               	   C   s^   t d} td}t t | | W 5 Q R X t| jdgddj | dksZtd S )Nnumpyr)   Zf8dtype)	rX   importorskipr   rY   rZ   r   arrayr   r4   )npr:   r   r   r   test_np_dtype_of_delayed  s
    
r   c               	   C   sj   dd } t | d}|  tjtdd |jdd W 5 Q R X tjtdd |  W 5 Q R X d S )Nc                 S   s   | d S Nr)   r   r:   r   r   r   r      s    z(test_delayed_visualise_warn.<locals>.incr)   z/dask.delayed objects have no `visualise` methodr[   zdesk_graph.svg)	file_name)r'   r   r   rX   ZwarnsUserWarningZ	visualise)r   zr   r   r   test_delayed_visualise_warn  s      r   c                      s   t dddg tt fdd tt fdd tt fdd tt fdd tt fd	d tt fd
d d S )Nr)   r-   r/   c                      s   t  ddS )Nfoor)   )setattrr   rD   r   r   <lambda>5      z%test_delayed_errors.<locals>.<lambda>c                      s   t  ddS )Nr)   r   )r   r   rD   r   r   r   6  r   c                      s   d kS r   r   r   rD   r   r   r   8  r   c                      s   t  S r   listr   rD   r   r   r   9  r   c                      s      S r   )Z_hiddenr   rD   r   r   r   ;  r   c                      s   t  S r   )boolr   rD   r   r   r   =  r   )r   rX   rY   rZ   AttributeErrorr   r   rD   r   test_delayed_errors2  s    r   c                  C   sX   t dddg} | d | d  }| d j|jks2t| j|jksBtt|jdksTtd S )Nr)   r-   r/   r   )r   r>   r'   r4   len)r*   resr   r   r   test_common_subexpressions@  s
    r   c                  C   sT   t ddtdftdfd} t| \}t|j ddgks@t|j|jksPtd S )Nr.   r)   r*   r3   )	r   r   r'   optimizesortedr   r4   Z_layerr   )r:   x2r   r   r   test_delayed_optimizeH  s    r   c                  C   s4   t d} t d}t t| |g}| dks0td S )Nr)   r-   r/   )r   sumr   r4   r3   r   r   r   
test_listsR  s    r   c                  C   s   t d} | d }| |df}t | dks.t| |dg}t | dddgksRt| |dh}t | dddhksvt| d|dddi}t | ddddkstt ||   dkst| |dd}t | ddddkstt |d  dkstd S )	Nr)   r/   r)   r-   r/   r-   r*   r.   r1   r3   rR   r*   r.   Zlitr   r   r   test_literatesY  s    


r   c                  C   sV   t d} | d }| |df}t |jt |jks2tt |ddjt |ddjksRtd S )Nr)   r/   Trx   )r   r>   r4   r   r   r   r   test_literates_keysj  s
    
r   c                  C   sH   t d} t d}t t| dg|dggdd dd }| dksDtd S )Nr)   r-   rl      c                 S   s   | d S )Nr   r   r   r   r   r   r   u  r   z)test_lists_are_concrete.<locals>.<lambda>r>   )r   maxr   r4   r3   r   r   r   test_lists_are_concreter  s    $r   c                  C   sd   t d} t d}t tt| |g}| dks4tdd }t |t| |g}| dks`td S )Nr)   r-   r/   c                 S   s   t | S r   r   )seqr   r   r   r0     s    ztest_iterators.<locals>.f)r   r   iterr   r4   )r*   r.   r1   r0   r   r   r   test_iteratorsz  s    r   c                  C   sV  dd } t |  }|dddg}t |dd }t|dks>t|d	 |ksNt|dd  |dd  ksjt| || |ff}t |dd }t|tst|d	 | kst|d |kstd| |f|g}t |dd }t|tst|d	 dkst|d d	 | kr|d d |kst|d |ks,tt d}t |dd}| dksRtd S )
Nc                  W   s   t dd S )Nzshouldn't have computed)ri   )argsr   r   r   fail  s    z!test_traverse_false.<locals>.failr)   r-   r/   F)Ztraverserd   r   )r   r   r   r4   
isinstancer!   r   )r   r*   r:   r   r.   r   r   r   test_traverse_false  s*    
(r   c                  C   sT   t tdddd} t tdddd}| j|jks4tt t}| j| jksPtd S NTrx   r)   r-   )r   r   r>   r4   r   )Zv1Zv2Zmyrandr   r   r   	test_pure  s
    r   c               	   C   s\  t t} tjjdd" | ddj| ddjks4tW 5 Q R X tjjdd" | ddj| ddjksjtW 5 Q R X t tdd} tjjdd" | ddj| ddjkstW 5 Q R X t djt djksttjjdd t djt djkstW 5 Q R X tjjdd( t dddjt dddjks2tW 5 Q R X t dddg}|dj|djkshttjjddJ |dj|djkst|jdddj|jdddjkstW 5 Q R X tjjdd, |jdddj|jdddjkstW 5 Q R X tjjdd> |jj|jjks,t|d }|| j|| jksNtW 5 Q R X d S )	NT)Zdelayed_purer)   r-   Frx   r/   r   )r   r   r'   configsetr>   r4   r   )funcrP   elementr   r   r   test_pure_global_setting  s0    &&&",00r   c                     s  t dd ddd} | d}t|dks*t|\ }t |dksDt jd ksRt|jd ks`ttt fdd tt fd	d ttd
d  ttdd  t t	d d} | d  jd ksttt fdd tt fdd t dd ddd} | d}t|dkst|\   dks6t jd ksFttt fdd t dd ddd} | d}t|dkst| t
 kstd S )Nc                 S   s
   | |  fS r   r   r   r   r   r   r     r   ztest_nout.<locals>.<lambda>r-   Tnoutry   r)   )r)   c                      s   t  S r   r   r   rD   r   r   r     r   c                      s   t  S r   r   r   rD   r   r   r     r   c                   S   s   t tddS )Nr   r   r   r   r   r   r   r   r     r   c                   S   s   t tddS )NTr   r   r   r   r   r   r     r   r   c                      s   t  S r   r   r   rD   r   r   r     r   c                      s   t  S r   r   r   rD   r   r   r     r   c                 S   s   | fS r   r   r   r   r   r   r     r   c                      s   t  S r   r   r   rD   r   r   r     r   c                 S   s   t  S r   r    r   r   r   r   r     r   r   )r   r   r4   r   _lengthrX   rY   rZ   ri   r   r!   )r   r:   r.   r   rD   r   	test_nout  s6    r   r:   r)   r-   )r)   r-   r   c                 C   sN   t | }t| |d}t |t t|  kr4|ks:n t| | ksJtd S )Nr   )r   r   r   r4   r   )r:   lengthrs   r   r   r   test_nout_with_tasks  s    &r   c                  C   s  ddd} t | }|ddt ddg|ddd}| d	ks@tt | d
d}t ddg}|dd||ddd}| d	ks~t|dd||dddj|jkst|dd||dddj|jkst|dd|ddj|jkst|dd|ddj|dd|ddjkstd S )Nr   c                 [   s   | | t | t |  S r   )r   r=   )r*   r.   r1   kwargsr   r   r   mysum
  s    ztest_kwargs.<locals>.mysumr)   r-   r/   r   )r1   Zfourrl   Trx   rd   )r   )r   r   r4   r>   )r   ZdmysumZtenr1   r   r   r   test_kwargs	  s    
""r   c                  C   s   t ddtddfddddg} ttdd| d	}ttdd| }ttdd| j|jks\t| d
ksltt||| dkstd S )Nr)   r-   r*   r.   r3   r1   Trx   )rd   rn   r<   r)   r-   r/   rd   rn   r<   )r/   r   r   )r   r   r   r   r>   r4   r   )r:   r   nr   r   r   test_custom_delayed  s    r   c            	      C   s  t d} t d}| dd}|j|dd}tt||dg}t|tsRt	| 
| || d snt	|  || d  kst	|d  || d d kst	t|\}}|j |  rt	| |j  }t|dkst	t|}| |k st	d S )	Nr   
dask.arrayro   rl   rl   rn   rn   chunksr)   )r   r   )rX   r   arangereshape
from_arrayr   r   r   r   r4   Zallcloser   r   r'   r   r   all)	r   daZarrdarrvalr9   r   ZdiffZdelayed_arrr   r   r   test_array_delayed#  s    

  r   c            	      C   s   t d} t d}|dd}||j}| j|dd}| j|dd}tddd	g}|||||g}t	t
d
d |D }| d|
  d|
   t
ddd	g kstd S )Nr   r   ro   r   r   r   r)   r-   r/   c                 S   s   g | ]}|  qS r   r   )r   ir   r   r   
<listcomp>C  s     z*test_array_bag_delayed.<locals>.<listcomp>)rX   r   r   r   dotTr   dbZfrom_sequencer   r   r   r4   )	r   r   Zarr1Zarr2Zdarr1Zdarr2r.   r   outr   r   r   test_array_bag_delayed9  s    

r   c                  C   s  t tddddd} tt| }| j|jks4t| j|jksDt| j|jksTtt d} tt| }| j|jks|t| j|jkst| j	|j	kst| j
|j
kst| j} tt| }| jj|jjkst| jj|jjkst| j|jkst| j|jkstd S )Nr-   Tr   r)   r   )r   divmodpickleloadsdumpsr'   r4   r   r   Z_noutZ_purer   _objZ_attrr:   yr   r   r   test_delayed_picklableG  s"    r   c                  C   s   t dd } | jdd d S )Nr)   r-   rl   )Zbogus_keyword)r   r   r   r   r   r   #test_delayed_compute_forward_kwargs^  s    r   c                   C   s   t tjd d S )Nr   )r   bytesdecoder   r   r   r   test_delayed_method_descriptorc  s    r   c                  C   sX   t tdd} | dd}|j|jtddfiks0t| j| jtiksDt|  tksTtd S r   )r   r   r'   r>   r4   r   )r0   r   r   r   r   test_delayed_callableg  s
    
r   c                  C   s(   t tdd} | ddddjdks$td S )NTrx   r)   r-   r   r{   )r   r   r   r4   )r0   r   r   r   test_delayed_name_on_callp  s    r   c                  C   sV   G dd d} | d}t |}| |ks.t|j dks@t|  dksRtd S )Nc                   @   s   e Zd Zdd Zdd ZdS )ztest_callable_obj.<locals>.Fooc                 S   s
   || _ d S r   rD   )r   r*   r   r   r   r   w  s    z'test_callable_obj.<locals>.Foo.__init__c                 S   s   dS )Nr-   r   r   r   r   r   __call__z  s    z'test_callable_obj.<locals>.Foo.__call__N)r#   r$   r%   r   r   r   r   r   r   Foov  s   r   r)   r-   )r   r   r4   r*   )r   r   r0   r   r   r   test_callable_obju  s    r   c                 C   s   | S r   r   r   r   r   r   identity  s    r   c                  C   sh   t tdd} dddddgd}| |jdks0tdd	d
}| |j| |jksRt| djdksdtd S )NTrx   r)      r-   r/   )r:   r   r   z)identity-4f318f3c27b869239e97c3ac07f7201ar:   )r:   r)   z)identity-7258833899272585e16d0ec36b21a3de)r   r   r   r4   )r   rP   r   r   r   %test_name_consistent_across_instances  s    
r   c                   C   s8   t ttddddjt ttddddjks4td S )Nrl   Trx   r-   r   )r   r   r   r   r4   r   r   r   r   test_sensitive_to_partials  s    r   c                  C   sf   t djdstt dddjds,tt dddjdksBtdd } t | djd	sbtd S )
Nr)   zint-Trx   Xr+   c                 S   s   | d S r   r   r   r   r   r   myfunc  s    z!test_delayed_name.<locals>.myfuncr   )r   r   
startswithr4   r>   )r   r   r   r   test_delayed_name  s
    r  c                     s`   t d} | jddd}t|g}t|j|js8tdd  t fdd|jD s\td S )	Nr   rl   rn   r   c                 S   s(   t | tr| d } | dd ddS )Nr   -_ )r   r!   r|   r~   )sr   r   r   r>     s    
ztest_finalize_name.<locals>.keyc                 3   s   | ]} |  V  qd S r   )isalpha)r   kr   r   r   	<genexpr>  s     z%test_finalize_name.<locals>.<genexpr>)	rX   r   onesr   r   r'   issubsetr4   r   )r   r:   r   r   r   r   test_finalize_name  s    

r  c                  C   sL   t d} ddlm} | jddd  }dd |D }||d j d S )	Nr   r   )
_check_dskr   rn   r   c                 S   s   g | ]}t t|qS r   )r   r   )r   r:   r   r   r   r     s     z(test_keys_from_array.<locals>.<listcomp>)rX   r   Zdask.array.utilsr  r	  Z
to_delayedflattenr'   )r   r  r   xsr   r   r   test_keys_from_array  s
    
r  c                  C   s   G dd d} | d}| dd dks.t|  |dd dksHt|dd dks`t| dd dksxt|dd dkst| dd dkstt|j tjstt| jtjstt| jtstd S )	Nc                   @   sD   e Zd ZdZdd Zedd Zeedd Ze	edd	 Z
d
S )z+test_delayed_decorator_on_method.<locals>.Arl   c                 S   s
   || _ d S r   BASE)r   baser   r   r   r     s    z4test_delayed_decorator_on_method.<locals>.A.__init__c                 S   s   | j | | S r   r  )r   r:   r   r   r   r   	addmethod  s    z5test_delayed_decorator_on_method.<locals>.A.addmethodc                 S   s   | j | | S r   r  )rO   r:   r   r   r   r   addclass  s    z4test_delayed_decorator_on_method.<locals>.A.addclassc                 S   s   | | S r   r   r   r   r   r   	addstatic  s    z5test_delayed_decorator_on_method.<locals>.A.addstaticN)r#   r$   r%   r  r   r   r  classmethodr  r&   r  r   r   r   r   rw     s   
rw   ro   r/   rd   k         )	r  r   r4   r  r  r   types
MethodTyper   )rw   r*   r   r   r    test_delayed_decorator_on_method  s    r  c                  C   sB   t d} t| jtstt| jjts*tt| jjjts>td S )N{   )r   r   r*   r   r4   r.   r1   r   r   r   r   test_attribute_of_attribute  s    r  c                  C   s~   t d} ddlm} |dddgdd}|dddgdd}td	d
 |}tdd
 |}| j||gdd}| j|| d S )Nzdask.dataframer   )Seriesr*   r.   categoryr   r1   c                 S   s   | S r   r   r   r   r   r   r     r   z&test_check_meta_flag.<locals>.<lambda>c                 S   s   | S r   r   r   r   r   r   r     r   F)Zverify_meta)rX   r   Zpandasr  r   Zfrom_delayedutilsZ	assert_eq)ddr  r*   r.   r   r   r1   r   r   r   test_check_meta_flag  s    
r#  c                 C   s   | d S r   r   r   r   r   r   modlevel_eager  s    r$  c                 C   s   | d S r   r   r   r   r   r   modlevel_delayed1  s    r%  Frx   c                 C   s   | d S r   r   r   r   r   r   modlevel_delayed2  s    r&  r0   z#3369)reason)Zmarksc                 C   s2   | d}t t j|t jd}| dks.td S Nr-   )protocolr/   )r   r   r   HIGHEST_PROTOCOLr   r4   r0   rs   r   r   r   test_pickle  s    	r,  c                 C   s2   | d}t t j|tjd}| dks.td S r(  )cloudpickler   r   r   r*  r   r4   r+  r   r   r   test_cloudpickle  s    r.  c               	   C   s  t d} | jj | jhks t| jj| jt iks8t|  | jfksLtt	| }|jj | j|jhkspt|jj| jt |j| jhikst| |jfkstt
jdd|ji|gd}tjtdd td| W 5 Q R X td|dd}| dkst|j  d S )	Nr)   r   alias)dependenciesznot inr   )Zlayerr   )r   r'   layersr   r>   r4   r0  r   Z__dask_layers__r%  r   from_collectionsrX   rY   ri   r   validate)d1Zd2Zhlgexplicitr   r   r   test_dask_layers$  s    "r7  c               	   C   s   t jdd. tddtdftdfdg } td| }W 5 Q R X t|j tksRtt|j j	dksftt|j j	d dks~t|j j	d j
ddikstt |\}t|j tkstt|j j	dkstt|j j	d d	kst|j j	d j
ddikstd S )
Nbarr1  r.   r)   r*   r3   r/   r   r-   )r'   Zannotater   r3  r   r   r7   r4   r   r2  annotationsr   )graphrs   Zd_optr   r   r   %test_annotations_survive_optimization7  s     r;  c                  C   s,   t dd } | jdkst| jdks(td S )Nc                 S   s   | | S )This is a docstringr   r   r   r   r   r   O  s    z7test_delayed_function_attributes_forwarded.<locals>.addr   r<  )r   r#   r4   __doc__)r   r   r   r   *test_delayed_function_attributes_forwardedN  s    
r>  )_r   r  collectionsr   Zdataclassesr   r   	functoolsr   operatorr   r   r   typingr	   r-  rX   Ztlzr
   r'   Zdask.bagZbagr   r   Zdask.delayedr   r   r   Zdask.highlevelgraphr   Zdask.utils_testr   r   markfilterwarningsr;   r?   rK   rL   rN   ZparametrizerS   r]   r_   rh   rj   rk   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r#  r$  r%  r&  paramZxfailr,  r.  r7  r;  r>  r   r   r   r   <module>   s   

)
	

#	("
	

	+


 
