
    Cd                        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 Zd Zd Zd Zd Zd Z G d de          Zd Zd Zd Zd Zd Zd ZdS )    )annotationsN)finish_taskget_syncsortkeystart_state_from_dask)order)GetFunctionTestMixinaddinc               )f0f1f2f3f4f5f6c                 D   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    sJ 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expecteds      5lib/python3.11/site-packages/dask/tests/test_local.pytest_start_stater/      s    c
#sC
A
AC"3''F q!!s	
 
  EESEFFEEEE55#<"e3%se<< H  X    c                     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,   s      r.   test_start_state_looks_at_cacher5   $   sb    c

C!HE"3..F.!#&3%////'?se######r0   c                 ^    ddt           dfd} t          |           }|d         ddik    sJ d S )Nr   r   r   r    r!   r4   )r+   r,   s     r.   test_start_state_with_redirectsr7   ,   sA    3*
-
-C"3''F'?sAh&&&&&&r0   c                 P    t          dt          dfi          d         dgk    sJ d S )Nr   r   r'   )r   r    r0   r.   4test_start_state_with_independent_but_runnable_tasksr:   2   s0     #Qx11':seCCCCCCr0   c                 ,   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         |k    sJ |d         |k    sJ d S )Nr   r   )r   r   r      r   )r3   r2   cr!   r2   r3   r'   r=   c                ,    i | ]}|t                      S r9   )r*   ).0ks     r.   
<dictcomp>z7test_start_state_with_tasks_no_deps.<locals>.<dictcomp>;   s    $$$Asuu$$$r0   abcr"   r#   )r   r   listkeys)r+   statedepss      r.   #test_start_state_with_tasks_no_depsrG   6   s    S!HLLLQx
@
@C!#&&Eg##%%&&3%////%.  SE'N%:%:%:%:$$e$$$D D(((($&&&&&&r0   c                    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    sJ 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   rE   taskr,   s        r.   test_finish_taskrL   @   s+   c
#sC
A
ACCjjnG!#&&E	'N#\*E)DF E'N3T5#%%111q!!s	
 
 EE >EESEFF"e3%00       r0   c                  *    e Zd Z ee          Zd ZdS )TestGetAsyncc                J    |                      t          dfdddd           d S )Nr   r   r   r   r   )num_workers)rI   r   selfs    r.   test_get_sync_num_workersz&TestGetAsync.test_get_sync_num_workersa   s,    Sz**CQ?????r0   N)__name__
__module____qualname__staticmethodr   rI   rS   r9   r0   r.   rN   rN   ^   s7        
,x
 
 C@ @ @ @ @r0   rN   c                     i fd} t           j                                      5  t          | dfddd           d d d            d S # 1 swxY w Y   d S )Nc                    dv sJ | dz   S )Nr   r   r9   )r   r!   s    r.   inc2z test_cache_options.<locals>.inc2h   s    e||||1ur0   )r!   r   r   r   r   )daskconfigr*   r   )rZ   r!   s    @r.   test_cache_optionsr]   e   s    E     
u	%	% 2 2c{++S1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   AAAc                 J    g d} t          | t                    g dk    sJ d S )N)r   r   r   r   r   r   r   key)r   ra   r_   r`   )sortedr   )Ls    r.   test_sort_keyrf   p   s8    +++A!!!!%H%H%HHHHHHHr0   c                 X    d } d| dfiddl m} fd}fd} |d||           d S )	Nc                    | dz   S )Nr   r9   r   s    r.   <lambda>ztest_callback.<locals>.<lambda>v   s
    !a% r0   r3   r   r   rI   c                Z    | dk    s| J |k    sJ t          |t                    sJ d S )Nr3   
isinstancedict)rc   drE   r+   s      r.   start_callbackz%test_callback.<locals>.start_callbackz   s=    czzS[[[Cxxxx%&&&&&&&r0   c                n    | dk    s| J |dk    s|J |k    sJ t          |t                    sJ d S )Nr3   r   rm   )rc   valuerp   rE   	worker_idr+   s        r.   end_callbackz#test_callback.<locals>.end_callback   sN    czzS[[[zzU]]]Cxxxx%&&&&&&&r0   )rq   ru   )dask.threadedrI   )frI   rq   ru   r+   s       @r.   test_callbackrx   u   s|    AA-C!!!!!!' ' ' ' '
' ' ' ' ' CSlKKKKKKr0   c                 
    G d dt                     fd} ddlm} 	  |d| fid           J # $ rK}dt          |          v sJ d	t	          |          v sJ |j        d
k    sJ |j        dk    sJ Y d }~d S d }~ww xY w)Nc                      e Zd Zd Zd ZdS ).test_exceptions_propagate.<locals>.MyExceptionc                "    || _         || _        d S N)r3   r2   )rR   r3   r2   s      r.   __init__z7test_exceptions_propagate.<locals>.MyException.__init__   s    DFDFFFr0   c                    dS )NMy Exception!r9   rQ   s    r.   __str__z6test_exceptions_propagate.<locals>.MyException.__str__   s    "?r0   N)rT   rU   rV   r~   r   r9   r0   r.   MyExceptionr{      s2        	 	 		# 	# 	# 	# 	#r0   r   c                       dd          )Nr   r   r9   )r   s   r.   rw   z$test_exceptions_propagate.<locals>.f   s    k!Qr0   r   rk   r   Fr   r3   r   r   )	Exceptionrv   rI   strdirr3   r2   )rw   rI   er   s      @r.   test_exceptions_propagater      s    # # # # #i # # #          "!!!!!S1$K   #a&&((((c!ff}}}}saxxxxsaxxxxxxxxxx	s   2 BA A==Bc                     g fdfdt          d          D             } t          |           }d t          |          f| d<   t          | d           t                    k    sJ d S )Nc                2                         |            d S r}   append)ire   s    r.   r   ztest_ordering.<locals>.append   s    	r0   c                    i | ]	}d |f|f
S ri   r9   )r?   r   r   s     r.   rA   z!test_ordering.<locals>.<dictcomp>   s#    
4
4
4QC8fa[
4
4
4r0   
   c                     d S r}   r9   )argss    r.   rj   ztest_ordering.<locals>.<lambda>   s    d r0   r   )rangerd   rC   r   )r+   x_keysre   r   s     @@r.   test_orderingr      s    
A     5
4
4
4%))
4
4
4CC[[F""DLL1CHS#q		>>>>>>r0   c                 <   t          j        d          } ddlm} g fd}| j                            dd          }|                    |j                  |                    d          z
  	                                }t          |                                          }t          |          }t          |                                |j        	          } ||
          5  t!          ||d                    d d d            n# 1 swxY w Y   |k    sJ d S )Nz
dask.arrayr   )Callbackc                2                         |            d S r}   r   )rc   r[   rE   actual_orders      r.   track_orderz*test_complex_ordering.<locals>.track_order   s    C     r0   )   r   )r   )sizechunks)axisrb   )pretaskr   )pytestimportorskipdask.diagnosticsr   randomnormaldotTmeanstdro   __dask_graph__r   rd   rD   rI   r   )	dar   r   r   resr+   exp_order_dict	exp_orderr   s	           @r.   test_complex_orderingr      se   		\	*	*B))))))L! ! ! ! ! 		hx88A55::A&
+
+
-
-C
s!!##
$
$C3ZZN~**,,.2DEEEI	+	&	&	& % %im$$$% % % % % % % % % % % % % % %9$$$$$$s   &D		DD)
__future__r   r   r[   
dask.localr   r   r   r   
dask.orderr   dask.utils_testr	   r
   r   fib_daskr/   r5   r7   r:   rG   rL   rN   r]   rf   rx   r   r   r   r9   r0   r.   <module>r      s   " " " " " "   L L L L L L L L L L L L       : : : : : : : : : :1AQaqJJ  .$ $ $' ' 'D D D' ' '  <@ @ @ @ @' @ @ @2 2 2I I I
L L L&  0  % % % % %r0   