B
    T\n                 @   s   d dl mZmZ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mZ d ddddd	d
dZdd Zdd Zdd Zdd Zdd Zdd ZG dd deZdd Zdd Zdd Zd d! Zd"d# ZdS )$    )absolute_importdivisionprint_functionN)start_state_from_daskget_syncfinish_tasksortkey)order)GetFunctionTestMixinincadd               )Zf0f1f2Zf3Zf4Zf5Zf6c              C   s   ddt dftddfd} t| }dddtddgtg tg tdgdtg tdgtd	gtd	gdtg tg tg dgd	tdgitdgtd	gtd	gd
d	}||kstd S )Nr   r   xzy)r   r   r   w)r   r   )r   r   r   r   r   )r   r   r   )	cachedependencies
dependentsfinishedreleasedrunningreadywaitingwaiting_data)r   r   r   setAssertionError)dskresultZexpected r%   4lib/python3.7/site-packages/dask/tests/test_local.pytest_start_state   s(    
r'   c              C   sN   dt dfi} ddi}t| |}|d d tdgks8t|d dgksJtd S )Nbar   r   r   )r   r   r!   r"   )r#   r   r$   r%   r%   r&   test_start_state_looks_at_cache%   s
    
r*   c              C   s0   ddt dfd} t| }|d ddiks,td S )Nr   r   r   )r   r   r   r   )r   r   r"   )r#   r$   r%   r%   r&   test_start_state_with_redirects-   s    r+   c               C   s"   t dtdfid dgkstd S )Nr   r   r   )r   r   r"   r%   r%   r%   r&   4test_start_state_with_independent_but_runnable_tasks3   s    r,   c              C   s   dt dfgddddgt dfd} t| }t|d  dgksBtd|d	 krZd
|d	 ks^ttdd dD }|d |kst|d |kstd S )Nr   r   r      )r)   r(   cr   r(   r)   r   r.   c             s   s   | ]}|t  fV  qd S )N)r!   ).0kr%   r%   r&   	<genexpr>>   s    z6test_start_state_with_tasks_no_deps.<locals>.<genexpr>abcr   r   )r   r   listkeysr"   dict)r#   stateZdepsr%   r%   r&   #test_start_state_with_tasks_no_deps7   s    

r7   c              C   s   ddt dftddfd} t| j}t| }|d d tddg|d	< d}d}||d
 d< t| ||t | |dddtddgtg tg tdgdtdgtdgtdgtg tdgtdgtdgddgi tdgtdgdd	kstd S )Nr   r   r   r   r   )r   r   r   r   r   z
other-taskr   r   )r   r   )r   r   r   r   r   )	r   r   r   r   r   r   r   r   r    )	r   r   r	   getr   remover!   r   r"   )r#   r   r6   Ztaskr$   r%   r%   r&   test_finish_taskC   s2    


r:   c               @   s   e Zd ZeeZdd ZdS )TestGetAsyncc             C   s   | j tdfddddd d S )Nr   r   )r   r   r   r   )Znum_workers)r8   r   )selfr%   r%   r&   test_get_sync_num_workersd   s    z&TestGetAsync.test_get_sync_num_workersN)__name__
__module____qualname__staticmethodr   r8   r=   r%   r%   r%   r&   r;   a   s   r;   c           	      sj   yddl m}  W n tk
r$   d S X |    fdd}tjj d t|dfddd	 W d Q R X d S )
Nr   )Chestc                s   d kst | d S )Nr   r   )r"   )r   )r   r%   r&   inc2o   s    z test_cache_options.<locals>.inc2)r   r   r   )r   r   r   )ZchestrB   ImportErrordaskZconfigr!   r   )rB   rC   r%   )r   r&   test_cache_optionsh   s    rF   c              C   s,   ddddg} t | tdddddgks(td S )Nr   )r   r   )r   r   )r   r   )key)sortedr   r"   )Lr%   r%   r&   test_sort_keyw   s    rJ   c                 sL   dd } d| dfi ddl m}  fdd} fd	d
}| d||d d S )Nc             S   s   | d S )Nr   r%   )r   r%   r%   r&   <lambda>}   s    ztest_callback.<locals>.<lambda>r)   r   r   )r8   c                s2   | dks| d kst | ks t t|ts.t d S )Nr)   )r"   
isinstancer5   )rG   dr6   )r#   r%   r&   start_callback   s    z%test_callback.<locals>.start_callbackc                sF   | dks| d kst |dks(|d ks(t | ks4t t|tsBt d S )Nr)   r   )r"   rL   r5   )rG   valuerM   r6   Z	worker_id)r#   r%   r&   end_callback   s    z#test_callback.<locals>.end_callback)rN   rP   )dask.threadedr8   )fr8   rN   rP   r%   )r#   r&   test_callback|   s    rS   c           
      s   G dd dt   fdd} ddlm} y|d| fid dsBtW n^  k
r } z@d	t|ksftd
t|ksvt|jdkst|jdkstW d d }~X Y nX d S )Nc               @   s   e Zd Zdd Zdd ZdS )z.test_exceptions_propagate.<locals>.MyExceptionc             S   s   || _ || _d S )N)r)   r(   )r<   r)   r(   r%   r%   r&   __init__   s    z7test_exceptions_propagate.<locals>.MyException.__init__c             S   s   dS )NzMy Exception!r%   )r<   r%   r%   r&   __str__   s    z6test_exceptions_propagate.<locals>.MyException.__str__N)r>   r?   r@   rT   rU   r%   r%   r%   r&   MyException   s   rV   c                  s    ddd S )Nr   r   r%   r%   )rV   r%   r&   rR      s    z$test_exceptions_propagate.<locals>.fr   )r8   r   FzMy Exception!r)   r   r   )	ExceptionrQ   r8   r"   strdirr)   r(   )rR   r8   er%   )rV   r&   test_exceptions_propagate   s    r[   c                 s`   g   fddfddt dD } t| }dd t|f| d< t| d  t ks\td S )	Nc                s     |  d S )N)append)i)rI   r%   r&   r\      s    ztest_ordering.<locals>.appendc                s   i | ]} |fd |fqS )r   r%   )r/   r]   )r\   r%   r&   
<dictcomp>   s    z!test_ordering.<locals>.<dictcomp>
   c              W   s   d S )Nr%   )argsr%   r%   r&   rK      s    ztest_ordering.<locals>.<lambda>r   )rangerH   r3   r   r"   )r#   Zx_keysr%   )rI   r\   r&   test_ordering   s    
rb   )Z
__future__r   r   r   rE   Z
dask.localr   r   r   r   Z
dask.orderr	   Zdask.utils_testr
   r   r   Zfib_daskr'   r*   r+   r,   r7   r:   r;   rF   rJ   rS   r[   rb   r%   r%   r%   r&   <module>   s"   