o
    ^ZhY                     @   s  d dl mZmZmZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlZddlmZ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 d
dlmZmZmZ edZedZd dlm Z m!Z!m"Z" d dl#mZ d dl$m%Z%m&Z&m'Z' ej(ddddd Z)dd Z*diddZ+dd Z,dd Z-d d! Z.ej/0d"dd#gej/0d$eegd%d& Z1eej/0d"dd#gej/0d'd(d)gej/0d$eegd*d+ Z2eej/0d$eegd,d- Z3d.d/ Z4d0d1 Z5ej/0d2dd3gd4d5 Z6d6d7 Z7G d8d9 d9e8Z9djd:d;Z:d<d= Z;d>d? Z<ej/0d@e=e>ddAdB Z?dCdD Z@dEdF ZAdGdH ZBdIdJ ZCdKdL ZDdMdN ZEdOdP ZFdQdR ZGdSdT ZHdUdV ZIdWdX ZJej/0dYdZd[gej/jKejLd\ko\ejLd]kd^d_d`da ZMdbdc ZNej/0dddedfgdgdh ZOdS )k    )absolute_importdivisionprint_functionNrandom)sleep)uuid4   )Paralleldelayedparallel_backendparallel_config)DaskDistributedBackend)AutoBatchingMixinThreadingBackend   )np
with_numpy)_recursive_backend_info_test_deadlock_with_generator8_test_parallel_unordered_generator_returns_fastest_firstdistributeddask)ClientLocalCluster
get_client)time)cleanupclusterincfunctionT)scopeZautousec                 c   s\    ddl m} dd |jD }d V  | D ]\}}|d u r&tj|d  q|tj|< qd S )Nr   )ParallelBackendBasec                 S   s   i | ]	}|t j|qS  )osenvironget).0kr#   r#   D/var/www/auris/lib/python3.10/site-packages/joblib/test/test_dask.py
<dictcomp>(   s    z(avoid_dask_env_leaks.<locals>.<dictcomp>)Zjoblib._parallel_backendsr"   ZMAX_NUM_THREADS_VARSitemsr$   r%   pop)Ztmp_pathr"   	old_valuer(   vr#   r#   r)   avoid_dask_env_leaks!   s   r/   c                  O      d S Nr#   )argskwargsr#   r#   r)   noop3   s   r4   皙?c                 C   s   t | | r
tdd S )Nzcondition evaluated to True)r   
ValueError)	conditiondurationr#   r#   r)   slow_raise_value_error7   s   r9   c                    sF   | dd }i }| D ]\}}t fddt|D ||< q|S )Nc                 S   s   | j S r1   )log)Zdask_workerr#   r#   r)   <lambda>>   s    zcount_events.<locals>.<lambda>c                    s   g | ]
}|d   kr|qS r   r#   )r'   event
event_namer#   r)   
<listcomp>B   s    z count_events.<locals>.<listcomp>)runr+   lenlist)r?   clientZworker_eventsZevent_countsweventsr#   r>   r)   count_events=   s   
rG   c                 C   sD  t  \}\}}t|d | dp}tdd[ t dd tdD }|dd	 tdD ks0J tt t d
d tdD  W d    n1 sLw   Y  t dd tdD }|dd	 tdD ksjJ W d    n1 stw   Y  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Naddressloopr   backendc                 s       | ]	}t t|V  qd S r1   r   r   r'   ir#   r#   r)   	<genexpr>K       ztest_simple.<locals>.<genexpr>
   c                 S      g | ]}t |qS r#   r   rO   r#   r#   r)   r@   L       ztest_simple.<locals>.<listcomp>c                 s   s     | ]}t t|d kV  qdS )   N)r   r9   rO   r#   r#   r)   rQ   O       
c                 s   rM   r1   rN   rO   r#   r#   r)   rQ   S   rR   c                 S   rT   r#   rU   rO   r#   r#   r)   r@   T   rV   )r   r   r   r
   rangepytestraisesr6   rJ   sabrD   seqr#   r#   r)   test_simpleG   s$   

"ra   c                 C   s,  t jtju sJ t \}\}}t|d | d\}tddG t 4}|j}t|t s-J |j	|u s4J |j
dks;J |dd ttdD  |j
d	ksOJ W d    n1 sYw   Y  W d    n1 shw   Y  W d    n1 sww   Y  W d    d S W d    d S 1 sw   Y  d S )
NrH   rI   r   rK   r   c                 s   s    | ]
}t d d  V  qdS )c                   S   r0   r1   r#   r#   r#   r#   r)   r;   j   s    z?test_dask_backend_uses_autobatching.<locals>.<genexpr>.<lambda>Nr   r'   _r#   r#   r)   rQ   j   s    z6test_dask_backend_uses_autobatching.<locals>.<genexpr>     @rS   )r   Zcompute_batch_sizer   r   r   r   r
   _backend
isinstanceparallelZ_effective_batch_sizerY   int)rJ   r]   r^   r_   rD   rh   rL   r#   r#   r)   #test_dask_backend_uses_autobatchingW   s*   "rj   n_jobscontextc              	   C   sv   t jddd* |d td |  W d    n1 sw   Y  W d    d S W d    d S 1 s4w   Y  d S Nr	   	n_workersthreads_per_workerr   )r   r   r   )rk   rm   r#   r#   r)   Atest_parallel_unordered_generator_returns_fastest_first_with_daskn   s   Prr   	return_as	generatorZgenerator_unorderedc              	   C   sx   t jddd+ | d td || W d    n1 sw   Y  W d    d S W d    d S 1 s5w   Y  d S rn   )r   r   r   )rm   rs   rk   r#   r#   r)   %test_deadlock_with_generator_and_dasku   s   Pru   c              
   C   s  t jdddp tjtdtjd}tdD ].}| d t|d}W d    n1 s,w   Y  t|dks9J t	dd	 |D sDJ q| d t }W d    n1 sWw   Y  t|dksdJ t	d
d	 |D soJ W d    d S 1 szw   Y  d S )Nr	   ro   g    cAZdtyper   data   c                 s       | ]	\}}|d kV  qdS r   Nr#   r'   namerd   r#   r#   r)   rQ          
z4test_nested_parallelism_with_dask.<locals>.<genexpr>c                 s   rz   r{   r#   r|   r#   r#   r)   rQ      r~   )
r   r   r   onesri   uint8rY   r   rB   all)rm   rx   rP   Zbackend_types_and_levelsr#   r#   r)   !test_nested_parallelism_with_dask~   s$   

"r   c                   C   s   t  S r1   r   r#   r#   r#   r)   random2   s   r   c              
   C   s   t  V\}\}}t|d | d1}tdd t dd tdD \}}||ks+J W d    n1 s5w   Y  W d    n1 sDw   Y  W d    d S W d    d S 1 s\w   Y  d S )NrH   rI   r   rK   c                 s       | ]}t t V  qd S r1   )r   r   rO   r#   r#   r)   rQ          z3test_dont_assume_function_purity.<locals>.<genexpr>r	   r   r   r   r
   rY   )rJ   r]   r^   r_   rD   xyr#   r#   r)    test_dont_assume_function_purity   s   "r   mixedFc              
   C   s4  ddl m} |sdd tdD }d}ndd tdD }d}t|||ks)J t d\}\}}t|d	 | d
?}tdd tddd|}	W d    n1 sRw   Y  dd }
|dd}|	|
}t
dd |D sqJ W d    n1 s{w   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   )Batchc                 S   s   g | ]}t t|qS r#   rN   rO   r#   r#   r)   r@          z&test_dask_funcname.<locals>.<listcomp>ry   Zbatch_of_inc_4_callsc                 S   s,   g | ]}|d  rt t|nt t|qS )r	   )r   absr   rO   r#   r#   r)   r@      s   , Zmixed_batch_of_inc_4_callsrH   rI   r   rK   r	   r   )
batch_sizeZpre_dispatchc                 S   s
   t | jS r1   )rC   Ztransition_log)Zdask_schedulerr#   r#   r)   f      
ztest_dask_funcname.<locals>.f42c                 s   s    | ]	}d |d v V  qdS )Zbatch_of_incr   Nr#   )r'   tupr#   r#   r)   rQ      rR   z%test_dask_funcname.<locals>.<genexpr>)Zjoblib._daskr   rY   reprr   r   r   r
   replaceZrun_on_schedulerr   )rJ   r   r   tasksZ
batch_reprr]   r^   r_   rD   rd   r   r:   r#   r#   r)   test_dask_funcname   s(   
"r   c               	      s  dd t dD } tdtd d fdd	tdd	d
}t|}ztdd t fdd| D }W d    n1 sDw   Y  | dd t dD ksVJ t	d|}t
| dkseJ tdd |D spJ tdd t  fdd| D }W d    n1 sw   Y  t	d|}t
| dksJ tdd |D sJ W |jdd |jdd d S |jdd |jdd w )Nc                 S      g | ]}g qS r#   r#   rc   r#   r#   r)   r@          z;test_no_undesired_distributed_cache_hit.<locals>.<listcomp>d   numpyg    .Ac                    s(   |d urj |  | t j | S r1   )testingZassert_array_equalappendr   hex)list_rx   )Xr   r#   r)   isolated_operation   s   zCtest_no_undesired_distributed_cache_hit.<locals>.isolated_operationr   r	   ro   r   rK   c                 3   s    | ]	}t  |V  qd S r1   rb   r'   r   )r   r#   r)   rQ      rR   z:test_no_undesired_distributed_cache_hit.<locals>.<genexpr>c                 S   r   r#   r#   rc   r#   r#   r)   r@      r   receive-from-scatterr   c                 S      g | ]}t |d kqS r<   rB   r'   rr#   r#   r)   r@      r   c                 3   s     | ]}t | d V  qdS )rw   Nrb   r   )r   r   r#   r)   rQ      rX   c                 S   r   r<   r   r   r#   r#   r)   r@      r      timeoutr1   )rY   rZ   importorskipZarangeri   r   r   r   r
   rG   sumvaluesr   close)listsr   rD   rescountsr#   )r   r   r   r)   'test_no_undesired_distributed_cache_hit   s4   



r   c                   @   s(   e Zd Zdd Zdd ZeZdd ZdS )CountSerializedc                 C   s   || _ d| _d S )Nr   )r   count)selfr   r#   r#   r)   __init__   s   
zCountSerialized.__init__c                 C   s   | j t|d| S )Nr   )r   getattr)r   otherr#   r#   r)   __add__   s   zCountSerialized.__add__c                 C   s   |  j d7  _ t| jffS )Nr   )r   r   r   )r   r#   r#   r)   
__reduce__   s   zCountSerialized.__reduce__N)__name__
__module____qualname__r   r   __radd__r   r#   r#   r#   r)   r      s
    r   c                 C   s   | | | | | S r1   r#   )r^   r_   cder#   r#   r)   add5  s   r   c                    s  dd t dD \}ttfddt dD }|ddddddg7 }d	d |D }t t\}}t|d
 | dZ td|gd tdd|}||kshJ W d    n1 srw   Y  tt	 td| dd W d    n1 sw   Y  W d    n1 sw   Y  W d    n1 sw   Y  W d    n1 sw   Y  |j
}j
|ksJ j
|ksJ j
}|fD ]}	d|	_
qt J\}}t|d
 | d/ t |fD ]}
 j|
ddt|
< q fdd|D }||ksJ W d    n	1 s"w   Y  W d    n	1 s2w   Y  |j
}j
|ksBJ j
|ksJJ ||ksQJ tdd tjdD }|dk roj
|d ksmJ d S j
|kswJ d S )Nc                 s       | ]}t |V  qd S r1   )r   rO   r#   r#   r)   rQ         z&test_manual_scatter.<locals>.<genexpr>ry   c              	      s   g | ]} d ddqS )ry      r   r   r#   rc   )r   r   r   zr#   r)   r@     s    z'test_manual_scatter.<locals>.<listcomp>rS   r   r   c                 S   s    g | ]\}}}||i |qS r#   r#   r'   funcr2   r3   r#   r#   r)   r@     s     rH   rI   r   )rL   scatterr   )r   )rL   rJ   r   r   T)	broadcastc              	      s`   g | ],\}}} j |gfd d|D R i tfdd| D dtt i qS )c                 3   s     | ]}  t||V  qd S r1   r&   id)r'   arg	scatteredr#   r)   rQ   :  s    z1test_manual_scatter.<locals>.<listcomp>.<genexpr>c                 3   s(    | ]\}}|  t||fV  qd S r1   r   )r'   keyvaluer   r#   r)   rQ   ;  
    
r   )submitdictr+   strr   resultr   )rD   r   r#   r)   r@   7  s    
c                 s   r   r1   )ri   )r'   r.   r#   r#   r)   rQ   M  r   .)i  ry   )rY   r   r   r   r   r   r
   rZ   r[   	TypeErrorr   r   r   r   tupler   __version__split)rJ   rE   r   expectedr]   rd   Zresults_parallelZ%n_serialization_scatter_with_parallelZn_serialization_with_parallelvarobjZresults_nativeZn_serialization_scatter_nativeZdistributed_versionr#   )rD   r   r   r   r   r   r)   test_manual_scatter  sf   


r   c           	   
      s  t d}|jtd|jd |jtd|jd} gd |gd  }t Z\}\}}t|d | d>}tdd t d	d
 t	|D  W d    n1 sPw   Y  t
d|}||d  ||d   dksjJ W d    n1 stw   Y  W d    n1 sw   Y  t i\}\}}t|d | dD}tdd t  fdd
tdD  W d    n1 sw   Y  t
d|}||d  dksJ ||d  dksJ W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   re   rv   rW   rH   rI   r   rK   c                 s   s(    | ]\}}t t||||d V  qdS ))optNr   r4   )r'   rP   rx   r#   r#   r)   rQ   f  r   z$test_auto_scatter.<locals>.<genexpr>r   r	   c                 3   s&    | ]}t t d d |V  qd S )NrW   r   rO   Zdata1r#   r)   rQ   s  s   $ r   r   )rZ   r   r   ri   r   r   r   r   r
   	enumeraterG   rY   )	loop_in_threadr   Zdata2Zdata_to_processr]   r^   r_   rD   r   r#   r   r)   test_auto_scatter[  s8   




"
"r   retry_noc              
      s   t dd d}fdd fddt V\}\}}t|d | d1}td	d
 dt fddt|D }W d    n1 sKw   Y  W d    n1 sZw   Y  W d    d S W d    d S 1 srw   Y  d S )Nr   rS   c                    s
     | S r1   )r   )r   rP   j)r   r#   r)   my_sum  r   z#test_nested_scatter.<locals>.my_sumc                    s^   t  }tdd t  fddtD }W d    t|S 1 s&w   Y  t|S )Nr   rK   c                 3   s(    | ]}t  |d  |V  qd S r1   rb   )r'   r   )arrayrP   r   r#   r)   rQ     s    
zEtest_nested_scatter.<locals>.outer_function_joblib.<locals>.<genexpr>)r   r   r
   rY   r   )r   rP   rD   results)NUM_INNER_TASKSr   )r   rP   r)   outer_function_joblib  s   

z2test_nested_scatter.<locals>.outer_function_joblibrH   rI   r   rK   i'  c                 3   s&    | ]}t  |d  |V  qd S r1   rb   rO   )my_arrayr   r#   r)   rQ     s
    
z&test_nested_scatter.<locals>.<genexpr>)rZ   r   r   r   r   r   r
   rY   )rJ   r   ZNUM_OUTER_TASKSr]   r^   r_   rd   r#   )r   r   r   r   r   r)   test_nested_scatter{  s$   


"r   c              
      s|  dd  t  \}\}}t|d | d<}tdd' tdd fd	d
tdD }|D ]}tt|dks9J q-W d    n1 sDw   Y  W d    n1 sSw   Y  t|d | d<}tdd' tdd fdd
tdD }|D ]}tt|dksJ qyW d    n1 sw   Y  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nc                  S   sH   t tdddd tdD } | t tdddd tdD O } | S )Nr	   rk   c                 s       | ]	}t tj V  qd S r1   r   r$   getpidrc   r#   r#   r)   rQ     rR   zOtest_nested_backend_context_manager.<locals>.get_nested_pids.<locals>.<genexpr>c                 s   r   r1   r   rc   r#   r#   r)   rQ     rR   )setr
   rY   )Zpidsr#   r#   r)   get_nested_pids  s    $z<test_nested_backend_context_manager.<locals>.get_nested_pidsrH   rI   r   rK   r	   r   c                 3       | ]}t   V  qd S r1   rb   rc   r   r#   r)   rQ         

z6test_nested_backend_context_manager.<locals>.<genexpr>rS   c                 3   r   r1   rb   rc   r   r#   r)   rQ     r   )r   r   r   r
   rY   rB   r   )r   r]   r^   r_   rD   Z
pid_groupsZ	pid_groupr#   r   r)   #test_nested_backend_context_manager  s6   	
"r   c           	         s6  dd   fddt  \}\}}t|d | d_}tddJ t $} |d	ks-J |jd
ks4J |fddtdD }W d    n1 sKw   Y  |D ]\}}|d	ks\J |d
ksbJ qRW d    n1 smw   Y  W d    n1 s|w   Y  W d    d S W d    d S 1 sw   Y  d S )Nc                 S   s
   | j jjS r1   )rf   	__class__r   pr#   r#   r)   _backend_type  r   zJtest_nested_backend_context_manager_implicit_n_jobs.<locals>._backend_typec                     s8   t  }  | | jfW  d    S 1 sw   Y  d S r1   )r
   rk   r   )r   r#   r)   get_nested_implicit_n_jobs  s   $zWtest_nested_backend_context_manager_implicit_n_jobs.<locals>.get_nested_implicit_n_jobsrH   rI   r   rK   r   rl   c                 3   r   r1   rb   rc   )r   r#   r)   rQ     r   zFtest_nested_backend_context_manager_implicit_n_jobs.<locals>.<genexpr>r	   )r   r   r   r
   rk   rY   )	rJ   r]   r^   r_   rD   r   Zall_nested_n_jobsZbackend_typeZnested_n_jobsr#   )r   r   r)   3test_nested_backend_context_manager_implicit_n_jobs  s,   
"r   c              	   C   sn   t t}tdd W d    n1 sw   Y  W d    n1 s%w   Y  dt|j v s5J d S )Nr   rK   zcreate a dask client)rZ   r[   r6   r   r   r   lower)rJ   infor#   r#   r)   test_errors  s   r  c              
   C   s4  t  \}\}}t|d | dh}tdd# tdddd td	D }t|d
 d
 d
 ts2J W d    n1 s<w   Y  tdd# tdddd td	D }t|d
 d
 d
 tsbJ W d    n1 slw   Y  W d    n1 s{w   Y  W d    d S W d    d S 1 sw   Y  d S )NrH   rI   r   rK   r	   r   c                 s   s    | ]
}t td dV  qd S )NZnested_requirer   outerrc   r#   r#   r)   rQ         
z.test_correct_nested_backend.<locals>.<genexpr>r   r   c                 s   s    | ]
}t td dV  qdS )Z	sharedmemr  Nr  rc   r#   r#   r)   rQ     r  )r   r   r   r
   rY   rg   r   r   )rJ   r]   r^   r_   rD   r   r#   r#   r)   test_correct_nested_backend  s&   "r  c                    s"   t ddd fddtdD S )Nr	   threads)rk   Zpreferc                 3   s    | ]	}t t V  qd S r1   )r   middlerc   r  r#   r)   rQ     r~   zouter.<locals>.<genexpr>r   r
   rY   r  r#   r  r)   r    s   r  c                 C   s   t d| ddd tdD S )Nr	   )rk   requirec                 s   r   r1   )r   innerrc   r#   r#   r)   rQ     r   zmiddle.<locals>.<genexpr>r   r
  )r  r#   r#   r)   r	    s   r	  c                   C   s   t  jS r1   )r
   rf   r#   r#   r#   r)   r    s   r  c              	   C   s   t | ddd4 tdd tdddd	 td
D  W d    n1 s&w   Y  W d    d S W d    d S 1 s>w   Y  d S )NFT)rJ   	processesZset_as_defaultr   rK   ry   r   c                 s   rM   r1   )r   r   rO   r#   r#   r)   rQ     rR   z0test_secede_with_no_processes.<locals>.<genexpr>r	   )r   r   r
   rY   rI   r#   r#   r)   test_secede_with_no_processes  s   "r  c                 C   s   ddl m} | jS )Nr   )
get_worker)r   r  rH   )rd   r  r#   r#   r)   _worker_address  s   r  c              
   C   s0  t  \}\}}t|d | df}td|d d t dd tdD }||d gd ks1J W d    n1 s;w   Y  td|d d t dd tdD }||d gd ks`J W d    n1 sjw   Y  W d    n1 syw   Y  W d    d S W d    d S 1 sw   Y  d S )	NrH   rI   r   )rL   workersc                 s   rM   r1   r   r  rO   r#   r#   r)   rQ     rR   z-test_dask_backend_keywords.<locals>.<genexpr>rS   c                 s   rM   r1   r  rO   r#   r#   r)   rQ     rR   r   r\   r#   r#   r)   test_dask_backend_keywords  s   "r  c              	   C   s   t d| dI}tdd t dd tdD  W d    n1 s#w   Y  t }|jjjrBtd t |d	 k s=J |jjjs0|j	rGJ W d    d S 1 sRw   Y  d S )
NF)r  rJ   r   rK   c                 s   rM   r1   rN   rO   r#   r#   r)   rQ     rR   z/test_scheduler_tasks_cleanup.<locals>.<genexpr>rS   g{Gz?r   )
r   r   r
   rY   r   r   Z	schedulerr   r   futures)rJ   rD   startr#   r#   r)   test_scheduler_tasks_cleanup
  s   

"r  cluster_strategyadaptivelate_scalingz2.1.1z1.28.0z?distributed bug - https://github.com/dask/distributed/pull/2841)reasonc                 C   s   t dddd}t|}| dkr|jddd n	| dkr |d z7tdd	 t d
d tdD  W d    n1 s=w   Y  W |  |  d S W |  |  d S |  |  w )Nr   Fr	   rp   r  rq   r  )minimummaximumr  r   rK   c                 s   rM   r1   rN   rO   r#   r#   r)   rQ   +  rR   z(test_wait_for_workers.<locals>.<genexpr>rS   )r   r   Zadaptscaler   r
   rY   r   )r  r   rD   r#   r#   r)   test_wait_for_workers  s"   

r  c               	   C   sB  t dddd} t| }ztddd- d}tjt|d	 t d
d tdD  W d    n1 s3w   Y  W d    n1 sBw   Y  tddd- d}tjt|d	 t dd tdD  W d    n1 snw   Y  W d    n1 s}w   Y  W |	  | 	  d S W |	  | 	  d S |	  | 	  w )Nr   Fr	   r  r   g?)rL   Zwait_for_workers_timeoutz7DaskDistributedBackend has no worker after 0.1 seconds.)matchc                 s   rM   r1   rN   rO   r#   r#   r)   rQ   :  rR   z0test_wait_for_workers_timeout.<locals>.<genexpr>rS   z+DaskDistributedBackend has no active workerc                 s   rM   r1   rN   rO   r#   r#   r)   rQ   @  rR   )
r   r   r   rZ   r[   TimeoutErrorr
   rY   RuntimeErrorr   )r   rD   msgr#   r#   r)   test_wait_for_workers_timeout1  s0   
r$  rL   Zlokymultiprocessingc              	      s   t dd}t|}z: fdd}||}| }t|dks!J |d j}t|ts-J dt|v s5J W |j	dd	 |j	dd	 d S |j	dd	 |j	dd	 w )
Nr	   )rp   c                     sP   t jdd} td ddd tdD  W d    | S 1 s!w   Y  | S )NTrecordr	   )rk   rL   c                 s   rM   r1   rN   rO   r#   r#   r)   rQ   R  rR   zftest_joblib_warning_inside_dask_daemonic_worker.<locals>.func_using_joblib_parallel.<locals>.<genexpr>rS   )warningscatch_warningsr
   rY   r&  rK   r#   r)   func_using_joblib_parallelL  s    
zStest_joblib_warning_inside_dask_daemonic_worker.<locals>.func_using_joblib_parallelr   r   zdistributed.worker.daemonr   r   )
r   r   r   r   rB   messagerg   UserWarningr   r   )rL   r   rD   r*  futr'  warningr#   rK   r)   /test_joblib_warning_inside_dask_daemonic_workerF  s   



r/  )r5   )r   r   )P
__future__r   r   r   r$   r(  r   r   r   uuidr   rZ    r
   r   r   r   Z_daskr   rh   r   r   commonr   r   Ztest_parallelr   r   r   r   r   r   r   r   r   Zdistributed.metricsZdistributed.utils_testr   r   r   Zfixturer/   r4   r9   rG   ra   rj   markZparametrizerr   ru   r   r   r   r   r   objectr   r   r   r   rC   rY   r   r   r   r  r  r  r	  r  r  r  r  r  Zskipifr   r  r$  r/  r#   r#   r#   r)   <module>   s    





7
V 
