U
    /el                     @   s   d dl 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#d$ ZdS )%    N)finish_taskget_syncsortkeystart_state_from_dask)order)GetFunctionTestMixinaddinc               )Zf0f1f2Zf3Zf4Zf5Zf6c                  C   s   ddt dftddfd} t| }dddddht t dhdt dhd	hd	hdt t t dgd	dhidhd	hd	h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resultexpected r'   9/tmp/pip-unpacked-wheel-dbjnr7gq/dask/tests/test_local.pytest_start_state   s"    r)   c                  C   sJ   dt dfi} ddi}t| |}|d d dhks4t|d dgksFtd S )Nbar
   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(   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_tasks0   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dd dD }|d |ks|t|d |kstd S )Nr
   r   r      )r+   r*   cr   r*   r+   r   r1   c                 S   s   i | ]}|t  qS r'   )r"   ).0kr'   r'   r(   
<dictcomp>9   s      z7test_start_state_with_tasks_no_deps.<locals>.<dictcomp>abcr   r   )r	   r   listkeysr#   )r$   statedepsr'   r'   r(   #test_start_state_with_tasks_no_deps4   s     r:   c                  C   s   ddt dftddfd} t| j}t| }|d d ddh|d	< d}d}||d
 d< t| ||t | |dddddht t dhddhdhdht dhdhdhddgi dhdhdd	kstd S )Nr
   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   getr   remover   r"   r#   )r$   r   r8   Ztaskr%   r'   r'   r(   test_finish_task>   s0    
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   )Znum_workers)r;   r	   selfr'   r'   r(   test_get_sync_num_workers_   s    z&TestGetAsync.test_get_sync_num_workersN)__name__
__module____qualname__staticmethodr   r;   rA   r'   r'   r'   r(   r>   \   s   r>   c               	      sB   i   fdd} t jj d t| dfddd W 5 Q R X d S )Nc                    s   d kst | d S )Nr   r
   )r#   r   r   r'   r(   inc2f   s    z test_cache_options.<locals>.inc2rG   r   r
   r   r   )daskconfigr"   r   )rH   r'   rG   r(   test_cache_optionsc   s    rK   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_keyn   s    rQ   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'   rF   r'   r'   r(   <lambda>t       ztest_callback.<locals>.<lambda>r+   r
   r   r;   c                    s2   | dks| d kst | ks t t|ts.t d S )Nr+   r#   
isinstancedict)rM   dr8   r$   r'   r(   start_callbackx   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   rU   )rM   valuerX   r8   Z	worker_idrY   r'   r(   end_callback}   s    z#test_callback.<locals>.end_callback)rZ   r\   )dask.threadedr;   )fr;   rZ   r\   r'   rY   r(   test_callbacks   s    r_   c               
      s   G dd dt   fdd} ddlm} z|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 5 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 )NMy Exception!r'   r?   r'   r'   r(   __str__   s    z6test_exceptions_propagate.<locals>.MyException.__str__N)rB   rC   rD   ra   rc   r'   r'   r'   r(   MyException   s   rd   c                      s    ddd S )Nr
   r   r'   r'   rd   r'   r(   r^      s    z$test_exceptions_propagate.<locals>.fr   rT   r   Frb   r+   r
   r   )	Exceptionr]   r;   r#   strdirr+   r*   )r^   r;   er'   re   r(   test_exceptions_propagate   s    rj   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 r`   append)irO   r'   r(   rl      s    ztest_ordering.<locals>.appendc                    s   i | ]}d |f |fqS rF   r'   )r2   rm   rk   r'   r(   r4      s      z!test_ordering.<locals>.<dictcomp>
   c                  W   s   d S r`   r'   )argsr'   r'   r(   rR      rS   ztest_ordering.<locals>.<lambda>r   )rangerN   r6   r   r#   )r$   Zx_keysr'   )rP   rl   r(   test_ordering   s    
rq   c               	      s   t d} ddlm} g   fdd}| jjddd}||j|jdd	 	 }t
| }t|}t| |jd
}||d t||d  W 5 Q R X  |kstd S )Nz
dask.arrayr   )Callbackc                    s     |  d S r`   rk   )rM   rI   r8   Zactual_orderr'   r(   track_order   s    z*test_complex_ordering.<locals>.track_order)   ru   )rv   )sizechunks)ZaxisrL   )Zpretaskrv   )pytestZimportorskipZdask.diagnosticsrr   randomnormaldotTZmeanZstdrW   Z__dask_graph__r   rN   r7   r;   r   r#   )darr   rt   r   resr$   Zexp_order_dictZ	exp_orderr'   rs   r(   test_complex_ordering   s    
r   )ry   rI   Z
dask.localr   r   r   r   Z
dask.orderr   Zdask.utils_testr   r   r	   Zfib_daskr)   r-   r.   r/   r:   r=   r>   rK   rQ   r_   rj   rq   r   r'   r'   r'   r(   <module>   s$   
