o
    Nrf                     @  s   d dl mZ 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 )&    )annotationsN)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sFJ 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)dskresultexpected r'   ^/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/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sJ |d dgks#J d S )Nbar   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J 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J d S )Nr   r   r    )r   r
   r'   r'   r'   r(   4test_start_state_with_independent_but_runnable_tasks2   s   "r/   c                  C  s   dt dfgg dt dfd} t| }t|d  dgksJ d|d	 v r+d
|d	 v s-J dd dD }|d |ks<J |d |ksDJ d S )Nr   r   )r   r   r      r   )r+   r*   cr   r*   r+   r    r1   c                 S  s   i | ]}|t  qS r'   )r#   ).0kr'   r'   r(   
<dictcomp>;   s    z7test_start_state_with_tasks_no_deps.<locals>.<dictcomp>abcr   r   )r
   r   listkeys)r$   statedepsr'   r'   r(   #test_start_state_with_tasks_no_deps6   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sdJ 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   r8   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_workersa   s   z&TestGetAsync.test_get_sync_num_workersN)__name__
__module____qualname__staticmethodr   r;   rB   r'   r'   r'   r(   r?   ^   s    r?   c                    sX   i   fdd} t jj d t| dfddd W d    d S 1 s%w   Y  d S )Nc                   s   d v sJ | d S )Nr   r   r'   r   r   r'   r(   inc2h   s   z test_cache_options.<locals>.inc2rH   r   r   r   r   )daskconfigr#   r   )rI   r'   rH   r(   test_cache_optionse   s
   "rL   c                  C  s$   g d} t | tdg dksJ d S )N)r   r   r   r   r   r   r   key)r   rO   rM   rN   )sortedr   Lr'   r'   r(   test_sort_keyp   s   rU   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'   rG   r'   r'   r(   <lambda>v   s    ztest_callback.<locals>.<lambda>r+   r   r   r;   c                   s2   | dks
| d u s
J | ksJ t |tsJ d S )Nr+   
isinstancedict)rQ   dr8   r$   r'   r(   start_callbackz   s   z%test_callback.<locals>.start_callbackc                   sF   | dks
| d u s
J |dks|d u sJ | ksJ t |ts!J d S )Nr+   r   rX   )rQ   valuer[   r8   Z	worker_idr\   r'   r(   end_callback   s   z#test_callback.<locals>.end_callback)r]   r_   )dask.threadedr;   )fr;   r]   r_   r'   r\   r(   test_callbacku   s   rb   c               
     s   G dd dt   fdd} ddlm} z
|d| fid J   yO } z%d	t|v s.J d
t|v s6J |jdks=J |jdksDJ W Y d }~d S d }~ww )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*   )rA   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)rC   rD   rE   rd   rf   r'   r'   r'   r(   MyException   s    rg   c                     s
    dd)Nr   r   r'   r'   rg   r'   r(   ra      s   
z$test_exceptions_propagate.<locals>.fr   rW   r   Fre   r+   r   r   )	Exceptionr`   r;   strdirr+   r*   )ra   r;   er'   rh   r(   test_exceptions_propagate   s   rm   c                    sd   g   fddfddt dD } t| }dd t|f| d< t| d  t d	d
ks0J d S )Nc                        |  d S rc   append)irS   r'   r(   rp         ztest_ordering.<locals>.appendc                   s   i | ]	}d |f |fqS rG   r'   )r2   rq   ro   r'   r(   r4      s    z!test_ordering.<locals>.<dictcomp>
   c                  W  s   d S rc   r'   )argsr'   r'   r(   rV      s    ztest_ordering.<locals>.<lambda>r   T)reverse)rangerR   r6   r   )r$   Zx_keysr'   )rT   rp   r(   test_ordering   s   
rw   c                    s   t d 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 d    n1 sXw   Y   |kscJ d S )Nnumpyz
dask.arrayr   )Callbackc                   rn   rc   ro   )rQ   rJ   r8   Zactual_orderr'   r(   track_order   rr   z*test_complex_ordering.<locals>.track_order)   r|   )r}   )sizechunks)ZaxisrP   )Zpretaskr}   )pytestZimportorskipZdask.diagnosticsry   randomnormaldotTmeanZstdrZ   Z__dask_graph__r   rR   r7   r;   r   )dary   r{   r   resr$   Zexp_order_dictZ	exp_orderr'   rz   r(   test_complex_ordering   s   

r   )
__future__r   r   rJ   Z
dask.localr   r   r   r   Z
dask.orderr   Zdask.utils_testr   r	   r
   Zfib_daskr)   r-   r.   r/   r:   r>   r?   rL   rU   rb   rm   rw   r   r'   r'   r'   r(   <module>   s(    
