U
    /e	                     @   s\   d dl mZ d dlmZ d dlmZ d dlmZ dd Z	dd Z
d	d
 Zdd Zdd ZdS )    )Callback)get_sync)get)addc               	      sN   dg G  fdddt } |   tddid W 5 Q R X  d dksJtd S )NFc                       s   e Zd Z fddZdS )z'test_start_callback.<locals>.MyCallbackc                    s   d d< d S NTr    selfdskflagr   =/tmp/pip-unpacked-wheel-dbjnr7gq/dask/tests/test_callbacks.py_start   s    z.test_start_callback.<locals>.MyCallback._startN)__name__
__module____qualname__r   r   r   r   r   
MyCallback
   s   r   x   r   Tr   r   AssertionErrorr   r   r   r   test_start_callback   s
    r   c               	      sN   dg G  fdddt } |   tddid W 5 Q R X  d dksJtd S )NFc                       s   e Zd Z fddZdS )z-test_start_state_callback.<locals>.MyCallbackc                    s0   d d< |d dkst t|d dks,t d S )NTr   r   r   cache)r   len)r	   r
   stater   r   r   _start_state   s    z:test_start_state_callback.<locals>.MyCallback._start_stateN)r   r   r   r   r   r   r   r   r      s   r   r   r   r   Tr   r   r   r   r   test_start_state_callback   s
    r   c               
      sn  dg G  fdddt } ddd fi}z |   t|d W 5 Q R X W n0 tk
rx } zt|tshtW 5 d }~X Y nX  d std d< z |   t|d W 5 Q R X W n0 tk
r } zt|tstW 5 d }~X Y nX  d stdd	 }d|fi}d d< z |   t|d W 5 Q R X W n4 tk
rZ } zt|tsJtW 5 d }~X Y nX  d sjtd S )
NFc                       s   e Zd Z fddZdS )z-test_finish_always_called.<locals>.MyCallbackc                    s   d d< |st d S r   )r   )r	   r
   r   Zerroredr   r   r   _finish'   s    z5test_finish_always_called.<locals>.MyCallback._finishN)r   r   r   r   r   r   r   r   r   &   s   r   r   c                   S   s   dd S )Nr   r   r   r   r   r   r   <lambda>+       z+test_finish_always_called.<locals>.<lambda>r   c                   S   s
   t  d S N)KeyboardInterruptr   r   r   r   raise_keyboard?   s    z1test_finish_always_called.<locals>.raise_keyboard)	r   r   	Exception
isinstanceZeroDivisionErrorr   get_threadedBaseExceptionr"   )r   r
   er#   r   r   r   test_finish_always_called#   s2      
"r*   c               	      s   G dd dt } |   tddftddfd fdd	}|  }|dftd
dfd}| t|d W 5 Q R X t jrxt|j|kst jkstt jrtd S )Nc                   @   s   e Zd Zdd Zdd ZdS )z*test_nested_schedulers.<locals>.MyCallbackc                 S   s
   || _ d S r!   )r
   r   r   r   r   r   N   s    z1test_nested_schedulers.<locals>.MyCallback._startc                 S   s   || j kstd S r!   )r
   r   )r	   keyr
   r   r   r   r   _pretaskQ   s    z3test_nested_schedulers.<locals>.MyCallback._pretaskN)r   r   r   r   r,   r   r   r   r   r   M   s   r   r      r      )r   yc              
      s4   t jr
t  td|  W  5 Q R  S Q R X d S )Nr/   )r   activer   r'   )r   Zinner_callbackZ	inner_dskr   r   nested_callW   s    
z+test_nested_schedulers.<locals>.nested_calla)r3   br4   )r   r   r'   r0   r   r
   )r   r2   Zouter_callbackZ	outer_dskr   r1   r   test_nested_schedulersL   s    
r5   c                	   C   s4   t jr
tt   t jstW 5 Q R X t jr0td S r!   )r   r0   r   r   r   r   r   $test_add_remove_mutates_not_replacesh   s    
r6   N)Zdask.callbacksr   Z
dask.localr   Zdask.threadedr   r'   Zdask.utils_testr   r   r   r*   r5   r6   r   r   r   r   <module>   s   )