B
    T\	
                 @   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 )    )get_sync)get)Callback)addc           	      sN   dg G  fdddt } |   tddid W d 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   8lib/python3.7/site-packages/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 d 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   state)r	   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   T)r   r   r   )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}y |   t|d W d Q R X W n0 tk
rx } zt|tshtW d d }~X Y nX  d std d< y |   t|d W d Q R X W n0 tk
r } zt|tstW d d }~X Y nX  d stdd	 }d|fi}d d< y |   t|d W d Q R X W n4 tk
rZ } zt|tsJtW d 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 )NTr   )r   )r   r   r   Zerrored)r	   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>+   s    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 d 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 )N)r   )r   r   r   r   r
   r   O   s    z1test_nested_schedulers.<locals>.MyCallback._startc             S   s   || j kstd S )N)r   r   )r   keyr   r   r   r   r
   _pretaskR   s    z3test_nested_schedulers.<locals>.MyCallback._pretaskN)r   r   r   r   r%   r   r   r   r
   r   N   s   r   r      r      )r   yc          	      s(   t jr
t  td|  S Q R X d S )Nr(   )r   activer   r    )r   )inner_callback	inner_dskr   r
   nested_callY   s    
z+test_nested_schedulers.<locals>.nested_calla)r-   br.   )r   r   r    r)   r   r   )r   r,   Zouter_callbackZ	outer_dskr   )r*   r+   r
   test_nested_schedulersL   s    
r/   c            	   C   s4   t jr
tt   t jstW d Q R X t jr0td S )N)r   r)   r   r   r   r   r
   $test_add_remove_mutates_not_replacesk   s    
r0   N)Z
dask.localr   Zdask.threadedr   r    Zdask.callbacksr   Zdask.utils_testr   r   r   r#   r/   r0   r   r   r   r
   <module>   s   )