U
    /e                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZmZmZmZ d dlmZmZ d dlmZmZ d dlZd dlmZmZmZmZ d dlZd dlmZ  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d d	l5m6Z6 d d
l7m8Z8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z?m@Z@ d dlAmBZBmCZCmDZD eCdZEeCdZFeCdZGeCdZHeCdZIdddZJdddZKdd ZLdd ZMdd ZNejOPd d!d" ZQejOPd d#d$ ZRejOPd d%d& ZSejOPd d'd( ZTejOPd d)d* ZUejOPd d+d, ZVejOPd d-d. ZWejOPd d/d0 ZXejOPd d1d2 ZYejOPd d3d4 ZZejOPd d5d6 Z[d7d8 Z\d9d: Z]d;d< Z^d=d> Z_d?d@ Z`ejOPdAdBdC ZaejOPdAdDdE ZbejOPdAdFdG ZcejOPdAdHdI ZdejOPdJdKdL ZeejOPdAdMdN ZfdOdP ZgdQdR ZhdSdT ZiejOPd dUdV ZjdWdX ZkdYdZ Zld[d\ Zmd]d^ ZnejOod_eeeegd`da Zpe jqG dbdc dcZre jqG ddde deZsdfdg Ztdhdi ZuejOPd djdk ZvejOodlddmdndodpdqdqg dri dewexgdsdt Zydudv ZzejOPd ejO{dwdxdy Z|ejOPdzejOod{d|d}d~ Z}ejOjPej~dkoejdd dkdddd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZG dd de"Zdd Zdd ZejOPddd ZejOPddd ZejOPddd ZejOPdJdd ZejOPdJdd ZejOPdJdd ZejOPdJdd ZejOPdJdd ZejOPdJdd ZejOPdJdd ZejOPddd ZejOPdJdd ZejOPdJdd ZejOPddd ZejOPddd Zdd ZejOPdejOjPeejj/ddejOjej~dkddddd ZejOPdejOjPeejj/ddddĄ ZejOPdejOjPeejj/ddddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ ZddԄ Zddք Zdd؄ Ze ZejOoddndefgdd܄ ZejOoddni dnfdnddidnfdndndidfdefddideffgdd Zdd Zdd ZejOPddd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZG dd deZd d Zdd ZejOjdddejOjejOoddd	gd
d Zdd Zdd ZÐdd ZĐdd ZejOodddd ZdS (      NOrderedDict)Executor)EnumFlagIntEnumIntFlag)addmul)
NamedTupleUnion)composecurrymergepartial)DaskMethodsMixin	clone_keycollections_to_dskcomputecompute_as_if_collectionfunction_cacheget_collection_namesget_name_from_keyget_scheduleris_dask_collectionnamed_schedulersnormalize_functionnormalize_tokenoptimizepersistreplace_name_in_keytokenizeunpack_collections	visualize)literal)Delayeddelayed)Profiler)HighLevelGraph)tmpdirtmpfile)decimport_or_noneinc
dask.arraydask.dataframenumpyzscipy.sparsepandas   c                 C   s   d S N abcr4   r4   8/tmp/pip-unpacked-wheel-dbjnr7gq/dask/tests/test_base.pyf17   s    r:      c                 C   s   d S r3   r4   r5   r4   r4   r9   f2;   s    r<   c                 C   s   d S r3   r4   r6   r4   r4   r9   f3?   s    r>   c                   C   sR  t tstt dd stt ttddt ttddks@tt ttddt ttddksdtt ttddt ttddkstt tttt tttkstt tttt tttkstt ttt ttkstt ttt ttkstt ttddt ttddks(tt ttddt ttddksNtd S )Nc                 S   s   | S r3   r4   r=   r4   r4   r9   <lambda>F       z)test_normalize_function.<locals>.<lambda>r;   )r7      r2   )r   r<   AssertionErrorr   r:   r   r>   r   r4   r4   r4   r9   test_normalize_functionC   s    $$$  &rC   c                  C   s   d} t t| ttfstd S )Nr2   r;   rA   )
isinstancer!   strbytesrB   r=   r4   r4   r9   test_tokenizeX   s    rH   znot npc                   C   s4   t tjddt tjddks0td S )N    )r!   nprandomRandomStateZrandom_samplerB   r4   r4   r4   r9   .test_tokenize_numpy_array_consistent_on_values]   s    rN   c                   C   s   t tjdjdd d S )N   i2dtype)r!   rK   rL   astyper4   r4   r4   r9   /test_tokenize_numpy_array_supports_uneven_sizesd   s    rT   c                   C   s   t tjdd d d  d S )N   r;   )r!   rK   rL   r4   r4   r4   r9   'test_tokenize_discontiguous_numpy_arrayi   s    rV   c                   C   s   t tjdgdd d S )Nz2000-01-01T12:00:00zM8[ns]rQ   )r!   rK   arrayr4   r4   r4   r9   test_tokenize_numpy_datetimen   s    rX   c                   C   sh   t tjdddt tjdddks(tt tjdgddgdd t tjdgddgdd ksdtd S )N      ?Zf8rQ   r2   r;   )r6   i4)r7   i8r   )r!   rK   rW   rB   r4   r4   r4   r9   test_tokenize_numpy_scalars   s    (r]   c                	   C   sD   z2t dd  tt dtt dks0tW 5 t d  X d S )Nc                 S   s   dS )Nfoor4   xr4   r4   r9   r?      r@   z7test_tokenize_numpy_scalar_string_rep.<locals>.<lambda>r2   r;   )rK   Zset_string_functionr!   rW   rB   r4   r4   r4   r9   %test_tokenize_numpy_scalar_string_rep{   s    $ra   c               
   C   s  t jdddgtd} t| t| ks(ttt jdd dgtdtt jdd dgtdks\ttt jdddgtdtt jdddgtdkstG dd	 d	}t jdd |gtd}t|t|ksttjd
di( tj	t
dd t| W 5 Q R X W 5 Q R X d S )Nr6   ZaaaaarQ   )r2   r6   )r2   N)r2   rb   c                   @   s   e Zd ZdS )z;test_tokenize_numpy_array_on_object_dtype.<locals>.NoPickleN__name__
__module____qualname__r4   r4   r4   r9   NoPickle   s   rg   tokenize.ensure-deterministicT"cannot be deterministically hashedmatch)rK   rW   objectr!   rB   daskconfigsetpytestraisesRuntimeError)r6   rg   r`   r4   r4   r9   )test_tokenize_numpy_array_on_object_dtype   s     
rs   c              	   C   s   t | d}t|d}|d W 5 Q R X t|dr}tj|tjdddd}tj|tjdddd}t|t|kszt|d	d
 }|d	d
 }t|t|kstW 5 Q R X d S )NZ	demo_datawbs
   ashekwichtrbrr      )rR   modeoffsetshaper2   )	rF   joinopenwriterK   ZmemmapZuint8r!   rB   )r)   fnfZmmap1Zmmap2Zsub1Zsub2r4   r4   r9   !test_tokenize_numpy_memmap_offset   s    r   c            
   	   C   s  t d.} td}t| | ttj| dd}W 5 Q R X t d.} td}t| | ttj| dd}W 5 Q R X ||kstt d} tjjdd}t| | tj| dd}tj| dd}t|dd d f }t|dd d f }t|dd	d d f }t|d d df }	t	||||	hd
ks2tt|t|ksHtt|dd d f t|dd d f ksvtW 5 Q R X d S )N.npyrw   rv   Z	mmap_mode
   r   )sizer   r2   rA      )
r*   rK   arangesaver!   loadrB   rL   normallen)
r   r`   yzmmZmm2r6   r7   r8   dr4   r4   r9   test_tokenize_numpy_memmap   s*    




r   c               
   C   sx   t df} t dR}td}t| | t|| tj| dd}|| }t|t|ks`tW 5 Q R X W 5 Q R X d S )Nr   rw   rv   r   )r*   rK   r   r   r   r!   rB   )Zfn1Zfn2r`   r6   r7   r4   r4   r9   &test_tokenize_numpy_memmap_no_filename   s    
r   c                  C   sN   t tjdkstt tjdks$ttdd dd} t | t | ksJtd S )NZ 02106e2c67daf452fb480d264e0dac21Z c99e52e912e4379882a9a4b387957a0bc                 S   s   | d S Nr2   r4   r_   r4   r4   r9   r?      r@   z6test_tokenize_numpy_ufunc_consistent.<locals>.<lambda>r2   )r!   rK   sinrB   cosZ
frompyfunc)r-   r4   r4   r9   $test_tokenize_numpy_ufunc_consistent   s    r   c                  C   s*   t tttd} t| }d}||ks&td S )N)r8   )s*          dask.tests.test_basef3.)s*          dask.tests.test_basef2.))r8   s*          dask.tests.test_basef1.)r   r>   r<   r:   r   rB   )r   ressolr4   r4   r9   1test_tokenize_partial_func_args_kwargs_consistent   s    r   c               	   C   sB   dddt dddtdddtd	fD ]} t| | ks(tq(d S )
Nr2   g?1r;   rA           z
/this/that)slicedatetimedatepathlibPurePathr   rB   )ir4   r4   r9   test_normalize_base   s    
r   c               
   C   s\   t  } t| t| ksttjddi( tjtdd t|  W 5 Q R X W 5 Q R X d S )Nrh   Tri   rj   )	rl   r   rB   rm   rn   ro   rp   rq   rr   )or4   r4   r9   test_tokenize_object  s
    r   c               
   C   s\   dd dd  } }t |  tjddi( tjtdd t | W 5 Q R X W 5 Q R X d S )Nc                 S   s   | S r3   r4   r_   r4   r4   r9   r?     r@   z4test_tokenize_function_cloudpickle.<locals>.<lambda>rh   Tz#may not be deterministically hashedrj   )r!   rm   rn   ro   rp   rq   rr   r6   r7   r4   r4   r9   "test_tokenize_function_cloudpickle  s
    r   c                  C   s"   ddd} t | t | kstd S )Nr2   c                 S   s   | | | S r3   r4   r5   r4   r4   r9   my_func  s    z'test_tokenize_callable.<locals>.my_func)r2   r!   rB   )r   r4   r4   r9   test_tokenize_callable  s    
r   znot pdc                  C   s   t jdddgddd gddddgd} t jdddgddd gddddgd}t| t|ks`td|j_t| t|ks|tt dddgd	d
d	gd} t dddgd	d
d	gd}| jd| d< t| t|kst| jd|d< t| t|kstd S )Nr2   r;   rA   4asdr`   r   indexr^   r6   r7   categoryr   )pd	DataFramer!   rB   r   namer   rS   r   r4   r4   r9   test_tokenize_pandas  s    &&r   c                  C   s2   t jdddgddd gddddgd} t|  d S )Nr2   r;   rA   r   u   asd)u   xu   yr   r   r   r!   dfr4   r4   r9   $test_tokenize_pandas_invalid_unicode.  s
     r   c                  C   s<   t jd dddgddd d gidddgd} t|  d S )N   ör2   r;   rA   r   )r   r   encoder!   r   r4   r4   r9   (test_tokenize_pandas_mixed_unicode_bytes7  s
    r   c                  C   s0   G dd d} t ddd |  gi}t| d S )Nc                   @   s   e Zd ZdS )z0test_tokenize_pandas_no_pickle.<locals>.NoPickleNrc   r4   r4   r4   r9   rg   B  s   rg   r`   r^   r   )rg   r   r4   r4   r9   test_tokenize_pandas_no_pickle@  s    r   znot ddc                  C   s   t jddd gddt jdgddt jdddgddt jt dgddt jt jdd	d
gddt jddgt jjjdddgdddg} | t jddd gddt jddd gddg | D ]}t|t|kstqd S )Nr2   r   ZInt64rQ   2000z	Period[D]zSparse[int]zdatetime64[ns]ZCET)tzzdatetime64[ns, CET]r6   r7   r8   F)ZorderedstringTboolean)	r   rW   Z	TimestampapitypesZCategoricalDtypeextendr!   rB   )Zarraysarrr4   r4   r9   $test_tokenize_pandas_extension_arrayJ  s"    r   c                  C   sR   t ddg} t| t| ks"tt jddgddgg} t| t| ksNtd S )Nr6   r7   r   r2   )r   ZIndexr!   rB   Z
MultiIndexZfrom_product)idxr4   r4   r9   test_tokenize_pandas_indexc  s    r   c                   C   s   t dddt dddkstt dt dddks4tt dddt dddksPtt dddt dddksltt dddt dddikstd S )	Nrw   r2   r_   r;   r   bar)r^   r^   r   r4   r4   r4   r9   test_tokenize_kwargsl  s
    r   c                  C   s.   G dd d} t | dt | dks*td S )Nc                   @   s   e Zd Zdd Zdd ZdS )z$test_tokenize_same_repr.<locals>.Fooc                 S   s
   || _ d S r3   r_   selfr`   r4   r4   r9   __init__v  s    z-test_tokenize_same_repr.<locals>.Foo.__init__c                 S   s   dS )Nza foor4   r   r4   r4   r9   __repr__y  s    z-test_tokenize_same_repr.<locals>.Foo.__repr__N)rd   re   rf   r   r   r4   r4   r4   r9   Foou  s   r   r2   r;   r   )r   r4   r4   r9   test_tokenize_same_reprt  s    r   c               
   C   s   G dd d} | d| d }}t |t |ks4tt |t |ksHtdD ]4}tjd|i t |t |ksvtW 5 Q R X qLt |}t| dd  t |}||kstd S )	Nc                   @   s   e Zd Zdd Zdd ZdS )z!test_tokenize_method.<locals>.Fooc                 S   s
   || _ d S r3   r_   r   r4   r4   r9   r     s    z*test_tokenize_method.<locals>.Foo.__init__c                 S   s   | j S r3   r_   r   r4   r4   r9   __dask_tokenize__  s    z3test_tokenize_method.<locals>.Foo.__dask_tokenize__N)rd   re   rf   r   r   r4   r4   r4   r9   r     s   r   r2   r;   )TFrh   c                 S   s
   | j d S r   r_   r   r4   r4   r9   r?     r@   z&test_tokenize_method.<locals>.<lambda>)r!   rB   rm   rn   ro   r   register)r   r6   r7   Zensurebeforeafterr4   r4   r9   test_tokenize_method  s     r   c                  C   s~   t dgt dgkstt dgt dks.tt dgt dgksFttd} td}d|d< t | gt |gksztd S )Nr2   r;   r2   i  r   rJ   )r!   rB   rK   r   r   r4   r4   r9   test_tokenize_sequences  s    

r   c                   C   s$   t dddt dddks td S )Nr2   r`   r`   r2   r   r4   r4   r4   r9   test_tokenize_dict  s    r   c                   C   s(   t ddddht ddddhks$td S )Nr2   r;   r`   )r2   r`   r   r4   r4   r4   r9   test_tokenize_set  s    r   c                  C   s\   ddl m}  | ddg}| ddg}| ddg}t|t|ksDtt|t|ksXtd S )Nr   r   )r6   r2   )r7   r;   )collectionsr   r!   rB   )r   r6   r7   r8   r4   r4   r9   test_tokenize_ordered_dict  s    r   c                   C   sL   t tjddt tjddks$tt tjddt tjddksHtd S )Nr2   )daysr;   )r!   r   	timedeltarB   r4   r4   r4   r9   test_tokenize_timedelta  s    $r   	enum_typec                 C   sD   G dd d| }t |jt |jks(tt |jt |jks@td S )Nc                   @   s   e Zd ZdZdZdS )z!test_tokenize_enum.<locals>.Colorr2   r;   N)rd   re   rf   REDBLUEr4   r4   r4   r9   Color  s   r   )r!   r   rB   r   )r   r   r4   r4   r9   test_tokenize_enum  s    r   c                   @   s   e Zd ZU eed< dS )
ADataClassr6   Nrd   re   rf   int__annotations__r4   r4   r4   r9   r     s   
r   c                   @   s   e Zd ZU eed< dS )
BDataClassr6   N)rd   re   rf   floatr   r4   r4   r4   r9   r     s   
r   c                  C   s   t d} t d}t| t| ks$tt| t|ks8ttd}t| t|ksTtG dd dt }t|svtdt|dt|dkstt|dt| ksttddttt	f fg}t| t|dkstd S )Nr2   r;   c                   @   s   e Zd ZdS )z%test_tokenize_dataclass.<locals>.SubANrc   r4   r4   r4   r9   SubA  s   r   z8Python regression: SubA should be considered a dataclassr   r6   )
r   r!   rB   r   dataclassesZis_dataclassmake_dataclassr   r   rF   )a1a2Zb1r   ZADataClassRedefinedDifferentlyr4   r4   r9   test_tokenize_dataclass  s&     r   c                   C   s   t tdddt tdddks$tt tdddt tdddksHtt tdddt tdddksltt tdddt tdddkstd S )Nrw   r   r;   r2      )r!   rangerB   r4   r4   r4   r9   test_tokenize_range  s    $$$r   c                  C   s.   t jddt jgdd} t| t| ks*td S )Nr^   u   JoséOrQ   )rK   rW   nanr!   rB   r=   r4   r4   r9   $test_tokenize_object_array_with_nans  s    r   r`   Tr6      arY   y              ?r4   c                 C   s   t | t | kst| d S r3   r   r_   r4   r4   r9   test_tokenize_base_types  s    r   c                   C   s(   t tddgt tddgks$td S )Nr`   r2   )r!   r$   rB   r4   r4   r4   r9   test_tokenize_literal  s    r   z+ignore:the matrix:PendingDeprecationWarningc                  C   s\   t jd} t | d}| }t|t|ks8td|d d< t|t|ksXtd S )NrI   d   r2   r   )rK   rL   rM   Zasmatrixrandcopyr!   rB   )rngr6   r7   r4   r4   r9   test_tokenize_numpy_matrix   s    r   znot spcls_name)ZdiaZbsrcooZcscZcsrdokZlilc                 C   s   t jd}tjdd|d| }| }t|t|ks>tt	|drXd|j
d d< n| dkrjd|d< ntt|t|kst| d	}t d|jd d< || }t|t|kstd S )
NrI   r   i'  )Zrandom_statedatar2   r  )rA   rA   r  )rK   rL   rM   spr   Zasformatr   r!   rB   hasattrr  
ValueErrorr   row)r  r   r6   r7   r4   r4   r9    test_tokenize_dense_sparse_array  s    


r	  win32)rA   	   z/https://github.com/ipython/ipython/issues/12197)reasonc               
   C   sh   t d d} | | d< tt| dks&ttjddi( tjt	dd t|  W 5 Q R X W 5 Q R X d S )Nr=   r6       rh   Tri   rj   )
dictr   r!   rB   rm   rn   ro   rp   rq   rr   )cycler4   r4   r9   )test_tokenize_object_with_recursion_error'  s    
r  c                   C   s   t tdddt tdddks(tt tdddt tdddksPtt tdddt tdddksxtt tdddt tdddkstd S )Nr   r   r   i  rO      )r!   r   r   rB   r4   r4   r4   r9   test_tokenize_datetime_date6  s    (((r  c                	   C   s  t tddddtjjt tddddtjjks8tt tddddt tddddksdtt tdddt tdddkstt tddt tddkstt tddddtjjt tddddtjjkstt tddddtjjt tddddtjjks"tt tddddtjjt tddddtjjks\tt tddddtjjt tddddtjjkstt tddddtjjt tddddkstd S )Nr2   r;   rA   r   rw   )r!   r   timetimezoneutcrB   r4   r4   r4   r9   test_tokenize_datetime_timeA  s*    
,($
r  c                  C   s  dddg} ddddt jjg}tt|d D ]4}| |d |  }tt j | tt j | ks,tq,tt  dddddddt jjtt  dddddddt jjksttt  dddddddt jjtt  dddddddt jjksttt  dddddddt jjtt  dddddddt jjks0ttt  dddddddt jjtt  dddddddt jjksvttt  dddddddt jjtt  dddddddt jjksttt  dddddddt jjtt  dddddddt jjksttt  dddddddt jjtt  dddddddt jjksHttt  dddddddt jjtt  dddddddd kstd S )Nr2   r;   rA   r   rw   r   rO   )r   r  r  r   r   r!   rB   )requiredoptionalr   argsr4   r4   r9   test_tokenize_datetime_datetime_  sZ    
"




r  c                  C   sR   G dd d} t dd }t|s&ttdr2tt| i sBtt| rNtd S )Nc                   @   s   e Zd Zdd Zdd ZdS )z0test_is_dask_collection.<locals>.DummyCollectionc                 S   s
   || _ d S r3   rm   )r   dskr4   r4   r9   r     s    z9test_is_dask_collection.<locals>.DummyCollection.__init__c                 S   s   | j S r3   r  r   r4   r4   r9   __dask_graph__  s    z?test_is_dask_collection.<locals>.DummyCollection.__dask_graph__N)rd   re   rf   r   r  r4   r4   r4   r9   DummyCollection  s   r  r2   r;   )r&   r   rB   )r  r`   r4   r4   r9   test_is_dask_collection  s    r  c            
         sL  G dd dt  tdd } | d }| d } fdd}|| ||dd	 | ||fD }t| \}}t|d
ksrt|dddg}|ddddddg}||kstt|ddi\}}t|dkst|||ksttdddd
i\}}|rt||dddd
ifks
tdd }	t| |	df|	dd
fgdd\}}|| ||	dfg d S )Nc                   @   s   e Zd ZU eed< dS )z,test_unpack_collections.<locals>.ANamedTupler6   Nr   r4   r4   r4   r9   ANamedTuple  s   
r   r2   rw   r;   c                    sd   | |d| | |ddd|ggddd|dfd| dd	hd
t d| fgdt| ddt| fd | di
|f}|S )Nr6   r7   r2   r;   r8   r   r   erA   r   gr=   hr   )r   r   )r6   r7   r8   iteratortr   r4   r9   build  s4       
       z&test_unpack_collections.<locals>.buildc                 s   s   | ]
}|V  qd S r3   r4   .0r   r4   r4   r9   	<genexpr>  s     z*test_unpack_collections.<locals>.<genexpr>rA   z~az~bz~ctraverseFr6   c                  W   s   t dd S )NzShouldn't have been called)r  )r  r4   r4   r9   fail  s    z%test_unpack_collections.<locals>.failr+  )r   r&   r"   r   rB   )
r6   r7   r8   r'  r  r   Zrepackresultr   r,  r4   r&  r9   test_unpack_collections  s4      
 
r/  c               
   C   s  G dd d} t t tt  W 5 Q R X t t t| ddidg W 5 Q R X t t t| ddidg W 5 Q R X t t t| ddidg W 5 Q R X t| i g t kstt }t }t| d|fdd|fddd	d
did|fd|fdd
gggddd
hkstd S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z2test_get_collection_names.<locals>.DummyCollectionc                 S   s   || _ || _d S r3   )rm   keysr   r  r0  r4   r4   r9   r     s    z;test_get_collection_names.<locals>.DummyCollection.__init__c                 S   s   | j S r3   r  r   r4   r4   r9   r    s    zAtest_get_collection_names.<locals>.DummyCollection.__dask_graph__c                 S   s   | j S r3   r0  r   r4   r4   r9   __dask_keys__  s    z@test_get_collection_names.<locals>.DummyCollection.__dask_keys__N)rd   re   rf   r   r  r3  r4   r4   r4   r9   r    s   r  r2   r;   r4   r   za-1zb-2rA   r8   r   )rp   rq   	TypeErrorr   rl   ro   rB   )r  h1h2r4   r4   r9   test_get_collection_names  s(    r7  c               	   C   s   t  } t  }tddksttds,tdtd| |fdksBttt td W 5 Q R X tt td W 5 Q R X tt td W 5 Q R X d S )Nr^   foo-123r2   r4   r   )rl   r   rB   rp   rq   r4  r5  r6  r4   r4   r9   test_get_name_from_key  s    r:  c               	   C   s   t di dkstt dddidks(tt dddddks@tt dddidksVtt } t }t d| |fddid| |fksttt t di  W 5 Q R X tt t d	i  W 5 Q R X tt t d
i  W 5 Q R X d S )Nr^   r   bazr   )r^   r;  r8  zbar-456r2   r4   r   )r    rB   rl   rp   rq   r4  r9  r4   r4   r9   test_replace_name_in_keys  s"    
r<  c                   @   sn   e Zd ZdZeejjZdd Z	dd Z
dd Zdd	 Zd
d Zdd Zdd Zdd ZeddddZdS )Tuple_dask_keysc                 C   s   || _ || _d S r3   r>  r1  r4   r4   r9   r      s    zTuple.__init__c                 C   s*   t |tstS tt| j|j| j|j S r3   )rE   r=  NotImplementedr   r?  r@  )r   otherr4   r4   r9   __add__$  s    
zTuple.__add__c                 C   s   | j S r3   )r?  r   r4   r4   r9   r  )  s    zTuple.__dask_graph__c                 C   s   | j S r3   r@  r   r4   r4   r9   r3  ,  s    zTuple.__dask_keys__c                 C   s   t t| S r3   )tupler   r   r4   r4   r9   __dask_layers__/  s    zTuple.__dask_layers__c                 C   s   | j S r3   rD  r   r4   r4   r9   r   2  s    zTuple.__dask_tokenize__c                 C   s   t dfS )Nr4   )rE  r   r4   r4   r9   __dask_postcompute__5  s    zTuple.__dask_postcompute__c                 C   s   t j| jffS r3   )r=  _rebuildr@  r   r4   r4   r9   __dask_postpersist__8  s    zTuple.__dask_postpersist__Nrenamec                   s     r fdd|D }t | |S )Nc                    s   g | ]}t | qS r4   )r    )r)  keyrJ  r4   r9   
<listcomp>>  s     z"Tuple._rebuild.<locals>.<listcomp>)r=  )r  r0  rK  r4   rJ  r9   rH  ;  s    zTuple._rebuild)rd   re   rf   	__slots__staticmethodrm   threadedget__dask_scheduler__r   rC  r  r3  rF  r   rG  rI  rH  r4   r4   r4   r9   r=    s   r=  c               	   C   s<  t  } t  }d| fdd|fdi}d| ftd| fd|ffd|ftd| fdfi}|| dtd| fd|ffi}|| ti g }t|d| fd|fg}t|d| fd|fg}t|dg}|| | | }	tt d|_W 5 Q R X t|st	t|st	t|s
t	t|st	t|	s&t	t
|t
|ks<t	t
|t
|ksRt	t
|t
|ksht	t
|t
|ks~t	t
|	t
|	kst	tdd |||||	fD dkst	t|t kst	t|dhkst	t|dhkst	t|dhks
t	t|	dddhks"t	| d	ks4t	| d
ksFt	| dksXt	| dksjt	t|d|i||gd	dd
iddgfkst	|	 dkst	|	 }
t|
tst	|
j|	jkst	t|
j dddddgkst	|
 dkst	t||||\}}}}|j|jks2t	|jd| fdd|fdiksRt	| dksdt	|| | }| dkst	| \}}|i f|dddii}| d	kst	| \}}|d| fdd|fdif|dddii}| dkst	| \}}|ddif|dddii}| dks8t	d S )Nr`   r2   r;   r   r   c                 S   s   h | ]}t |qS r4   )r!   )r)  Zcollr4   r4   r9   	<setcomp>f  s     z)test_custom_collection.<locals>.<setcomp>rw   r4   rZ   )rA   r   )rO   )r2   r;   rA   r   rO   rA   r   rO   rK  ww3x3r      )r   rW  z3F   )rY  )rl   r	   updater=  rp   rq   AttributeErrorr^   r   rB   r!   r   r   ro   r   rm   r   rE   r@  sortedr?  valuesrI  )r5  r6  r  dsk2Zdsk3rT  r`   r   r   r%  t2Zw2x2y2z2t3rebuildr  rU  rV  rX  r4   r4   r9   test_custom_collectionB  sp    ,


&." (re  c               	      s*  ddl m}  tjtddd}ttd}ttd}|||}g  |  fdd	d
 |j	ddd W 5 Q R X t
dd  D dkstt
dd  D dkstg  |  fdd	d
 |j	dd W 5 Q R X t
dd  D dkstt
dd  D dks
tt
dd  D dks&td S )Nr   )Callbackr   r   npartitionsr2   r;   c                    s
     | S r3   appendrL  r  r2  r4   r9   r?     r@   z%test_compute_no_opt.<locals>.<lambda>)Zpretasksingle-threadedF)	schedulerZoptimize_graphc                 S   s   g | ]}d |d kr|qS r
   r   r4   r)  kr4   r4   r9   rM    s      z'test_compute_no_opt.<locals>.<listcomp>c                 S   s   g | ]}d |d kr|qS r	   r   r4   ro  r4   r4   r9   rM    s      c                    s
     | S r3   ri  rk  r2  r4   r9   r?     r@   rm  c                 S   s   g | ]}d |d kr|qS rn  r4   ro  r4   r4   r9   rM    s      rU   c                 S   s   g | ]}d |d kr|qS rq  r4   ro  r4   r4   r9   rM    s      c                 S   s   g | ]}d |d kr|qS )zadd-mulr   r4   ro  r4   r4   r9   rM    s      )Zdask.callbacksrf  dbfrom_sequencer   r   r	   r
   mapr   r   rB   )rf  r7   Zadd1Zmul2r   r4   r2  r9   test_compute_no_opt  s     

rv  znot dac                  C   sh   t dd} tj| dd}|d }|d }t||\}}t || d sPtt || d sdtd S )Nr   r   rw   rw   chunksr2   r;   )rK   r   reshapeda
from_arrayr   allcloserB   )r   darrZdarr1Zdarr2out1out2r4   r4   r9   test_compute_array  s    r  c                  C   s~   ddl m}  tdd}tj|dd}|d |jdd }| }| || t	|j
|j
sftt|j
|jksztd S )	Nr   	assert_eqr   r   rw  rx  r2   )Zaxis)dask.array.utilsr  rK   r   rz  r{  r|  Zmeanr   ro   rm   issubsetrB   r   rh  )r  r   r`   r   r4   r4   r9   test_persist_array  s    
r  c                  C   s   t jdtdd} |  \}}tddgtddgd}||f|d| jdii}t|t jsdt	|jdksrt	|
 d	d
gkst	t j|ddddg d S )Nr   r;   )rR   ry  r2   rA   r7   r   r7   r2   rK  r7   r  r  )r{  zerosr   rI  rK   rW   r   rE   ArrayrB   r3  utilsr  r6   rd  r  r  r7   r4   r4   r9   test_persist_array_rename  s    r  c                  C   s   t ddddgddddgd} tj| dd}|jd }|j|j }t||\}}tj|| jd  tj|| j| j  d S )Nr2   r;   rA   r   rw   r   rg  )	r   r   ddfrom_pandasr6   r7   r   r  r  )r   ddfddf1ddf2r  r  r4   r4   r9   test_compute_dataframe  s     
r  c                  C   s   t ddddgddddgd	} tj| dd
d }t| dksFt| }t|tjs^tt| dksrttj	
|| d S )Nr2   r;   rA   r   rw   r   rO   rU   r   rg  )r   r   r  r  r   r  rB   r   rE   r  r  )r   r  r  r4   r4   r9   test_persist_dataframe  s     r  c                  C   sv   t ddddg} tj| ddd }t| dks8t| }t|tjsPtt| dksdttj	
|| d S )Nr2   r;   rA   r   rg  )r   Seriesr  r  r   r  rB   r   rE   r  r  Zdsdds1dds2r4   r4   r9   test_persist_series  s    r  c                  C   sx   t ddddg} tj| dd }t| dks8t| }t	|tj
jsRtt| dksfttj|| d S )Nr2   r;   rA   r   rg  rw   )r   r  r  r  minr   r  rB   r   rE   coreZScalarr  r  r  r4   r4   r9   test_persist_scalar  s    r  c                  C   s   t ddddgddddgd	} t ddddgddd
dgd	}tj| dd}| \}}|jd d |jdd  d}||f|d|jdii}| ddgksttj	
|| d S )Nr2   r;   rA   r   rw   r   rO   rU   r   r  r   rg  r`   r   r   rK  r`   r  r   )r   r   r  r  rI  iloc_namer3  rB   r  r  )Zdf1Zdf2r  rd  r  r  r  r4   r4   r9   test_persist_dataframe_rename   s      r  c                  C   s   t ddddg} t ddddg}tj| dd	}| \}}|jd d |jdd  d
}||f|d|jdii}| ddgksttj	
|| d S )Nr2   r;   rA   r   rw   r   rO   rU   rg  r  rK  r`   r  r   )r   r  r  r  rI  r  r  r3  rB   r  r  )ds1Zds2r  rd  r  r  r  r4   r4   r9   test_persist_series_rename  s    r  c                  C   sr   t ddddg} tj| dd }| \}}|ddif|d|jd	ii}| dgks`ttj	
|d d S )
Nr2   r;   rA   r   rg  r  rw   rK  r`   )r   r  r  r  r  rI  r  r3  rB   r  r  )r  r  rd  r  r  r4   r4   r9   test_persist_scalar_rename  s    r  znot dd or not dac                  C   s   t dd} tj| ddd }tddddgd	d	ddgd
}tj|ddj	d }t
||\}}t || d sxttj||j	d  d S )Nr   r   rw  rx  r2   r;   rA   r   rw   r   rg  )rK   r   rz  r{  r|  r   r   r  r  r6   r   r}  rB   r  r  )r   r~  r   r  Zarr_outZdf_outr4   r4   r9   test_compute_array_dataframe"  s     r  c                  C   s.   t jtjdd gd} tj| dd d S )NrA   r2   r   r  columnsr   rg  )r   r   rK   rL   r   r  r  r   r4   r4   r9   -test_compute_dataframe_valid_unicode_in_bytes-  s    r  c                  C   s*   t jtjddgd} tj| dd d S )Nr  u   r  r   rg  )r   r   rK   rL   r  r  r   r4   r4   r9   &test_compute_dataframe_invalid_unicode3  s    r  c                     sr   t jdddtdddg tt fdd t dd	\} }t	| tds\t
|dddgksnt
d S )
Nrw   r;   rx  r2   rA   c                      s
   t  S r3   )r   r4   r7   r`   r4   r9   r?   ?  r@   z(test_compute_array_bag.<locals>.<lambda>rl  rr  )r{  r   rs  rt  rp   rq   r  r   rK   r}  rB   )xxbbr4   r  r9   test_compute_array_bag:  s    r  c                  C   sT   t jddd} d}t| |\}}||  k s4t||ks@ttddksPtd S )Nrw   r;   rx  r   rw   )r{  r   r   allrB   )r`   r   r  yyr4   r4   r9   test_compute_with_literalF  s    r  c                  C   s   t dd } | d }| d }t| dd|gd|dfddddgddfksNtt| |g|dd	}|d
 d
 | kstt|d
 d |kst|d dkstd S )Nr2   rw   r;   r   r   rO   rU   r;   Fr-  r   rU   r&   r   rB   )r6   r7   r8   r   r4   r4   r9   test_compute_nestedR  s    
r  z'graphviz exception with Python -OO flagz:graphviz/pango on conda-forge currently broken for windowsF)r  strictc               
   C   sR  t d t d t ,} tjddd}|jtj| dd tj	tj| ds\t
|jtj| d	d tj	tj| d	st
t|d
dtj| dd tj	tj| dst
d
tddftdd
fd}t||tj| dd tj	tj| dst
t|dddg}t|tj| dd tj	tj| dsNt
t|dddg}t|tj| ddd tj	tj| dst
t|tj| ddd tj	tj| dst
tjjdd8 t|tj| dd tj	tj| dst
W 5 Q R X t jtdd t|dd W 5 Q R X |jd d W 5 Q R X d S )NgraphvizZipycytoscaperw   r;   rx  Zmydaskfilename
mydask.pngz
mydask.pdfr2   r6   r5   r7   r8   ZcytZ	cytoscape)r  enginezcyt.htmlz	cyt2.html)Zvisualization__enginez	cyt3.htmlznot-realrj   )r  )rp   importorskipr)   r{  r   r#   ospathr|   existsrB   r	   r
   r=  rm   rn   ro   rq   r  )r   r`   r  r4   r4   r9   test_visualizea  s6    



&r  c               	   C   sV   t d} t <}tjddd}|jjtj	|dd}t
|| jsHtW 5 Q R X d S )Nr  rw   r;   rx  r  r  )rp   r  r)   r{  r   rm   r#   r  r  r|   rE   ZDigraphrB   )r  r   r`   Zvizr4   r4   r9   test_visualize_highlevelgraph  s
    
r  c               
   C   st   t d t d tjddd} tdd>}| jd|d	d
 t|}| }W 5 Q R X d|ksftW 5 Q R X d S )Nr  zmatplotlib.pyplotrw   r;   rx  dot)	extensionorderZRdBu)colorr  Zcmapzcolor="#)	rp   r  r{  r   r*   r#   r}   readrB   )r`   r   r   textr4   r4   r9   test_visualize_order  s    


r  c                  C   sP   ddl m}  | d}tjd }tt|dd|j |j}t|}d|ksLt	d S )Nr   )dedentz%
    def inc():
        return x
    __main__z<test>execs   cloudpickle)
textwrapr  sysmodulesr  compile__dict__r-   r   rB   )r  Zdefnr  r   r%  r4   r4   r9   5test_use_cloudpickle_to_tokenize_functions_in__main__  s    
r  c                 C   s@   t | } | D ].}| | d tkrtf| | dd   | |< q| S )Nr   r2   )r  r-   r+   )r  r0  rL  r4   r4   r9   
inc_to_dec  s
    r  c               	   C   s^   t td} |  dkstt jjtgd |  dks@tW 5 Q R X |  dksZtd S )Nr2   r;   optimizationsr   )rm   r&   r-   r   rB   rn   ro   r  r_   r4   r4   r9   test_optimizations_keyword  s
    r  c               	   C   sD  t td} t t| }| | }t| ||d\}}}}|dksFtt|j }t|j |ksbtt|j |ksttt |||t | ||kstt j| ||tgd}t| ||tgd\}	}
}t |	|
||kstt jj	tgd t| ||\}}}W 5 Q R X t
|	|
|g|||gD ]$\}}t|j t|j kstqd S )Nr2   r  )rm   r&   r-   r   rB   r  r   r  rn   ro   zip)r`   r   r   r`  ra  rb  Zconstantr  ZsolsrV  Zy3rX  Zx4Zy4Zz4r6   r7   r4   r4   r9   test_optimize  s     
 r  c                  C   s4  t td} t t| }| | }t| dd|gd|df}|d d }|d d d }|d d }t|tsttt|tstt|tstt|j t|j   krt|j ksn tt| ddddgddfkstt| |g|d	d
}|d d | kst|d d |kst|d  dks0td S )Nr2   r;   r   r   r6   r7   rA   )rw   r;   Fr-  rw   )	rm   r&   r-   r   rE   r%   rB   r  r   )r6   r7   r8   r.  r   Zb2c2r   r4   r4   r9   test_optimize_nested  s     , r  c                  C   s^   d} t tjd| g}tt| }d|ks2tdddddd	d
g}|D ]}||ksHtqHdS )zI
    Startup time: `import dask` should not import too many modules.
    zYif 1:
        import dask
        import sys

        print(sorted(sys.modules))
        -crm   r.   r/   r0   r1   ZpartdZs3fsZdistributedN)
subprocesscheck_outputr  
executablero   evaldecoderB   )codeoutr  Z	blacklistmodr4   r4   r9   test_default_imports  s    	r  c                   C   s   t ddddkstd S )Nr2   r;   rA   rD   )r   rB   r4   r4   r4   r9   test_persist_literals"  s    r  c                  C   s   t dd } | d }| d }t| dd|gd|df}t|d d tsLtt|d d d tsftt|d d ts|tt| dddd	gdd
fkstt| |g|dd}|d d | kst|d d |kst|d  dkstd S )Nr2   rw   r;   r   r   r6   r7   r   rO   r  Fr-  rU   r&   r   rE   r%   rB   r   )r6   r7   r8   r.  r   r4   r4   r9   test_persist_nested&  s     r  c                  C   sr   t d} t t| }t t|}t|\}t|ts8t|j|jksHtt|jdksZt|	 |	 ksntd S r   )
r&   r-   r   rE   r%   rB   rL  r   rm   r   )x1r`  rV  r  r4   r4   r9   test_persist_delayed6  s    
r  rL  za-123c                 C   sb   t | | dddi}| dks"t| }| dks:t|j| ksHtt|j| diks^td S )Nr7   r2   )r%   r   rB   r   rL  r  rm   )rL  r   dpr4   r4   r9   test_persist_delayed_custom_keyE  s    r  zkey,rename,new_keyr8   r   r7   zb-123c                 C   sz   t | | di}| dkst| \}}||dif|d|i}| dksRt|j|ks`tt|j|diksvtd S )Nr2   r;   rK  )r%   r   rB   rI  rL  r  rm   )rL  rK  Znew_keyr   rd  r  r  r4   r4   r9   test_persist_delayed_renameO  s    
r  c                  C   s4   t d} t| \}t|ts t| dks0td S r   r  )r`   r  r4   r4   r9   test_persist_delayedleafb  s    
r  c                  C   sD   G dd d} t | j}t|\}t|ts0t| dks@td S )Nc                   @   s   e Zd ZdZdS )z#test_persist_delayedattr.<locals>.Cr2   N)rd   re   rf   r`   r4   r4   r4   r9   Cj  s   r  r2   )r&   r`   r   rE   r%   rB   r   )r  r`   r  r4   r4   r9   test_persist_delayedattri  s
    

r  c               	   C   s  t jdddd } tdddgt}tt t	| | W 5 Q R X t	| |dd\}}t
|t jsjtt
|tjszt|j| jkst|j|jkstt|j|j  krt| jk sn tt|j|j  krt|jk sn tt| |stt|t|kstd S )Nrw   r;   rx  r2   rA   rl  rr  )r{  r   rs  rt  ru  r-   rp   rq   r  r   rE   r  rB   Bagr   r   rm   rh  rK   r}  list)r`   r7   r  r  r4   r4   r9   test_persist_array_bags  s    ((r  c                  C   st   t jdddgdddd } t|  dks2t| jdd	}t|t jsNtt| dksbtt j	
| | d S )
Nr2   r;   rA   rg  c                 S   s   | d S Nr;   r4   r_   r4   r4   r9   r?     r@   z"test_persist_bag.<locals>.<lambda>r   syncrr  )rs  rt  ru  r   r  rB   r   rE   r  r  r  r   r4   r4   r9   test_persist_bag  s    r  c                  C   sx   t jdddgdddd  } t|  dks6t| jdd	}t|t j	sRtt| dksftt j
| | d S )
Nr2   r;   rA   rg  c                 S   s   | d S r  r4   r_   r4   r4   r9   r?     r@   z#test_persist_item.<locals>.<lambda>rO   r  rr  )rs  rt  ru  r  r   r  rB   r   rE   Itemr  r  r   r4   r4   r9   test_persist_item  s    "r  c                  C   s   t jdddgdd} |  \}}dgddgd}||f|d	| jd
ii}t|t jsZt|jd
ksht| ddgks|tt j	|dddg d S )Nr2   r;   rA   rg  r   rw   r   r  rK  r7   r  r  )
rs  rt  rI  r   rE   r  rB   r3  r  r  r  r4   r4   r9   test_persist_bag_rename  s    r  c                  C   sr   t dddg } |  \}}|ddif|d| jdii}t|t jsNt| dgks`tt j	
|d d S )Nr2   r;   rA   r`   r   rK  )rs  rt  r  rI  r   rE   r  rB   r3  r  r  )r6   rd  r  r7   r4   r4   r9   test_persist_item_change_name  s    r  c                  C   s<   t dD ]} tdd  qdtt  k r2dk s8n td S )NrJ   c                 S   s   | S r3   r4   r_   r4   r4   r9   r?     r@   z6test_normalize_function_limited_size.<locals>.<lambda>2   iX  )r   r   r   r   rB   )_r4   r4   r9   $test_normalize_function_limited_size  s    r  c                  C   sf   t jddtt jddfgddd id} | d	| d
 }}t|t|ksNtt|t|ksbtd S )NAparamF)reprr   c                 S   s   | j S r3   )r  r   r4   r4   r9   r?     r@   zAtest_normalize_function_dataclass_field_no_repr.<locals>.<lambda>)	namespacer2   r;   )r   r   r   fieldr   rB   )r  r   r   r4   r4   r9   /test_normalize_function_dataclass_field_no_repr  s    
r  c               	   C   s   t d} | jddd}dd }ddlm} ||d	 tdd	  tjj|d
* ||d	 tdd d	 d dd W 5 Q R X ||d	 tdd	  t	j
ddd}tjj|d
@ tj|d	 |tdd\}}||tdd d	 d  W 5 Q R X d S )Nr.   r   r  rx  c                 S   s   dd |   D S )Nc                 S   s   i | ]\}}|t d |fqS )r;   )r
   )r)  rp  vr4   r4   r9   
<dictcomp>  s      zBtest_optimize_globals.<locals>.optimize_double.<locals>.<dictcomp>)itemsr  r0  r4   r4   r9   optimize_double  s    z.test_optimize_globals.<locals>.optimize_doubler   r  r2   )array_optimizer;   F)Zcheck_chunksrg  rl  rr  )rp   r  onesr  r  rK   rm   rn   ro   rs  r   r   ru  r-   )r{  r`   r  r  r7   r  r  r4   r4   r9   test_optimize_globals  s    
.r
  c               	      sn   t d} | jddd}|d d dd d d d d   fd	d
}tjjd |d    W 5 Q R X d S )Nr.   r   r  rx  r  r2   rU   r;   c                    s   | t  jkstt| |S r3   )r  rm   rB   rQ  r  r   r4   r9   my_get  s    z"test_optimize_None.<locals>.my_get)r  rm  )rp   r  r	  rm   rn   ro   r   )r{  r`   r  r4   r   r9   test_optimize_None  s    
"r  c               	   C   s   dd } | t d< ttd}z| dks.t|jdddksBttjjdd | dksbtW 5 Q R X | dks|ttjjdd |jdddkstW 5 Q R X W 5 t d= X d S )	Nc                 [   s   dggS )N{   r4   )r  r0  kwargsr4   r4   r9   schedule  s    z(test_scheduler_keyword.<locals>.scheduler^   r2   r;   rr  r  threads)r   r&   r-   r   rB   rm   rn   ro   )r  r`   r4   r4   r9   test_scheduler_keyword  s    "r  c               	   C   sF   t td} tt}| jtjd W 5 Q R X dt|j	ksBt
d S )Nr2   rQ  z
scheduler=)r&   r-   rp   rq   r4  r   rm   rQ  rF   valuerB   )r`   infor4   r4   r9   test_raise_get_keyword  s    r  c                   @   s   e Zd ZdZdS )
MyExecutorN)rd   re   rf   Z_max_workersr4   r4   r4   r9   r    s   r  c                	   C   s   t  d kstt tjjdtjjks(tt ddtjjks>tt ddtjjksTttt tjjdsjttt t	 ds~ttj
jdd t  tjjkstW 5 Q R X t  d kstd S )Nrr  r  r  )r   rB   rm   localget_syncrP  rQ  callableZsynchronous_executorr  rn   ro   r4   r4   r4   r9   test_get_scheduler  s    r  c                     s@   dg  fdd} t dd  j| ddks0t d s<td S )	NFc                    s   d d< t | |S )NTr   )rm   rQ  )r  r0  r  r  calledr4   r9   rQ    s    z$test_callable_scheduler.<locals>.getc                   S   s   dS r   r4   r4   r4   r4   r9   r?     r@   z)test_callable_scheduler.<locals>.<lambda>rr  r2   r   r  r  r4   r  r9   test_callable_scheduler  s    r  r   rw   )ZrerunsZreruns_delayrm  r  	processesc              
      s   t ddtj d} fddt|D }tjj|dd& t }t|d| i W 5 Q R X W 5 Q R X d	d
 |j	D }t
||kstd S )NF)ZpurerA   c                    s   g | ]} d qS )rY   r4   r(  r   r4   r9   rM  -  s     z+test_num_workers_config.<locals>.<listcomp>r2   )num_workers	chunksizerm  c                 S   s   h | ]
}|j qS r4   )Z	worker_idr(  r4   r4   r9   rS  1  s     z*test_num_workers_config.<locals>.<setcomp>)r&   r  sleepr   rm   rn   ro   r'   r   resultsr   rB   )rm  r   r6   Zprofworkersr4   r  r9   test_num_workers_config#  s    "r%  c               	   C   sf   t d} | jdddd d }t|g}tjddd gi t|g}W 5 Q R X ||ksbtd S )Nr.   r;   r2   rx  r  c                 S   s   | S r3   r4   r  r4   r4   r9   r?   :  r@   z(test_optimizations_ctd.<locals>.<lambda>)rp   r  r   r   rm   rn   ro   rB   )r{  r`   Zdsk1r^  r4   r4   r9   test_optimizations_ctd6  s    

r&  c               	   C   s   t  } tdddksttdddks*ttdddks<ttddd	ksNttd
| dfdd| dfkslttt tdd W 5 Q R X d S )Nz	inc-1-2-3r  z$inc-4dfeea2f9300e67a75f30bf7d6182ea4r`   z"x-dc2b8d1c184c72c19faa81c797f8c6b0i  "x-b76f061b547b00d18b9c7a18ccc47e2dr   )r'  r2   z	sum-1-2-3r2   z$sum-1efd41f02035dc802f4ebb9995d07e9dr;   )rl   r   rB   rp   rq   r4  )r#  r4   r4   r9   test_clone_key@  s    
r(  c                     s`   t d} | d}d G  fddd| j}t|| | d } sNt| j	|| d S )Nr.   r   Fc                       s&   e Zd ZdZe fddZ  ZS )zGtest_compute_as_if_collection_low_level_task_graph.<locals>.MyDaskArrayz>Dask Array subclass with validation logic in __dask_optimize__c                    s&   t |tkstdt j||f|S )NT)typer(   rB   super__dask_optimize__)clsr  r0  r  )	__class__	optimizedr4   r9   r+  Z  s    zYtest_compute_as_if_collection_low_level_task_graph.<locals>.MyDaskArray.__dask_optimize__)rd   re   rf   __doc__classmethodr+  __classcell__r4   r.  )r-  r9   MyDaskArrayW  s   r3  r   )
rp   r  r   r  r   r  r3  rB   r  r  )r{  r`   r3  r.  r4   r2  r9   2test_compute_as_if_collection_low_level_task_graphO  s    

  r4  c              	   C   s   ddl m} ddlm} ddlm} |r:|dd|i}n| }|l dd l}|dkrdddlm}	 n*|dkrzddlm	}	 n|d	krddl
m	}	 || }
t|
|j|	kstW 5 Q R X d S )
Nr   )nullcontext)mock)r  zdask.base.named_schedulersr  r  r  r  )
contextlibr5  Zunittestr6  Z
dask.localr  patch	importlibZdask.threadedrQ  Zdask.multiprocessingimport_modulegetattrrR  rB   )moduleZ
collectionexpectedZ
emscriptenr5  r6  r  ctxr9  rQ  r  r4   r4   r9   check_default_schedulerm  s     
r?  params)z('dask.dataframe', '_Frame', 'sync', Truez,'dask.dataframe', '_Frame', 'threads', Falsez#'dask.array', 'Array', 'sync', Truez''dask.array', 'Array', 'threads', Falsez'dask.bag', 'Bag', 'sync', Truez%'dask.bag', 'Bag', 'processes', Falsec                 C   sD   t d t d ttjdttd|  d g}|	  d S )Nr.   r/   r  zcheck_default_scheduler(z)
)
rp   r  r  runr  r  inspect	getsourcer?  check_returncode)r@  procr4   r4   r9   !test_emscripten_default_scheduler  s    



rF  )r2   )r2   r;   )r   r   rB  r  r   r  r  r  r   r   concurrent.futuresr   enumr   r   r   r   operatorr	   r
   typingr   r   rp   Ztlzr   r   r   r   rm   Zdask.bagZbagrs  Z	dask.baser   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   Z	dask.corer$   Zdask.delayedr%   r&   Zdask.diagnosticsr'   Zdask.highlevelgraphr(   Z
dask.utilsr)   r*   Zdask.utils_testr+   r,   r-   r{  r  rK   r  r   r:   r<   r>   rC   rH   markZskipifrN   rT   rV   rX   r]   ra   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zparametrizer   Z	dataclassr   r   r   r   r   rF   r   r   r   filterwarningsr   r	  platformversion_infor  r  r  r  r  r/  r7  r:  r<  r=  re  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  boolflagsZxfailr  r  r  r  r  r  r  r  r  r  r  r  rl   Zsome_hashabler  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  ZflakyZslowr%  r&  r(  r4  r?  rF  r4   r4   r4   r9   <module>   s  T

































	






	

 





*<$&R
























	












 )

 	

 

		




				
