
    bi                        d dl mZ d dlZd dlZd dlmZm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 Z d Z!y)    )annotationsN)TaskTaskRef)finish_taskget_syncsortkeystart_state_from_dask)order)GetFunctionTestMixinaddinc               )f0f1f2f3f4f5f6c                    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t               dhd	hd	hdd
	}||k(  sJ y )Nr   r   xzyr   r   r   wr   r   r   r   r   r   r   )	cachedependencies
dependentsfinishedreleasedrunningreadywaitingwaiting_data)r   r   r	   set)dskresultexpecteds      P/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/tests/test_local.pytest_start_stater0      s    c
#sC
AC"3'F q!s	
  ESEFEE5#<!e3%se3%HH  X    c                 j    dt         dfi} ddi}t        | |      }|d   d   dhk(  sJ |d   dgk(  sJ y )Nbar   r#   r(   r   r	   )r,   r"   r-   s      r/   test_start_state_looks_at_cacher6   %   sS    c

C!HE"3.F.!#&3%///'?se###r1   c                 J    ddt         dfd} t        |       }|d   ddik(  sJ y )Nr   r   r   )r   r   r   r"   r5   )r,   r-   s     r/   test_start_state_with_redirectsr8   -   s2    3*
-C"3'F'?sAh&&&r1   c                 <    t        dt        dfi      d   dgk(  sJ y )Nr   r   r(   )r	   r    r1   r/   4test_start_state_with_independent_but_runnable_tasksr;   3   s$     #Qx1':seCCCr1   c                    dt         dfgg dt         dfd} t        |       }t        |d   j                               dgk(  sJ d|d	   v rd
|d	   v sJ dD ci c]  }|t	                }}|d   |k(  sJ |d   |k(  sJ y c c}w )Nr   r   )r   r   r      r   )r4   r3   cr"   r3   r4   r(   r>   abcr#   r$   )r   r	   listkeysr+   )r,   statekdepss       r/   #test_start_state_with_tasks_no_depsrE   7   s    S!HLQx
@C!#&Eg##%&3%///%. SE'N%:::#$AsuH$D$ D((($&&& %s   Bc                    ddt         dft        ddfd} t        |       j                  }t	        |       }|d   j                  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 t               dhdhdd	k(  sJ y )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*   )r   r   r
   getr	   remover   r+   )r,   r   rB   taskr-   s        r/   test_finish_taskrJ   A   s    c
#sC
ACCjnnG!#&E	'N#\*E)DF E'N3T5#%1q!s	
 EE >ESEF!e3%se<   r1   c                  "    e Zd Z ee      Zd Zy)TestGetAsyncc                >    | j                  t        dfdddd       y )Nr   r   r    r   r   )num_workers)rG   r   selfs    r/   test_get_sync_num_workersz&TestGetAsync.test_get_sync_num_workersb   s    Sz*CQ?r1   N)__name__
__module____qualname__staticmethodr   rG   rQ   r:   r1   r/   rL   rL   _   s    
x
 C@r1   rL   c                     i fd} t         j                  j                        5  t        | dfddd       d d d        y # 1 sw Y   y xY w)Nc                    dv sJ | dz   S )Nr   r   r:   )r   r"   s    r/   inc2z test_cache_options.<locals>.inc2i   s    e||1ur1   r"   r   r   r    r   )daskconfigr+   r   )rX   r"   s    @r/   test_cache_optionsr\   f   sI    E 
u	% 2c{+S12 2 2s   AAc                 <    g d} t        | t              g dk(  sJ y )N)r   r   r   r   r   r   r   key)r   r`   r^   r_   )sortedr   )Ls    r/   test_sort_keyre   q   s    +A!!%HHHHr1   c                 P    d } d| dfiddl m} fd}fd} |d||       y )	Nc                    | dz   S )Nr   r:   r   s    r/   <lambda>ztest_callback.<locals>.<lambda>w   s
    !a% r1   r4   r   r   rG   c                J    | dk(  s| J |k(  sJ t        |t              sJ y )Nr4   
isinstancedict)rb   drB   r,   s      r/   start_callbackz%test_callback.<locals>.start_callback{   s/    czS[((Cxx%&&&r1   c                \    | dk(  s| J |dk(  s|J |k(  sJ t        |t              sJ y )Nr4   r   rl   )rb   valuero   rB   	worker_idr,   s        r/   end_callbackz#test_callback.<locals>.end_callback   s@    czS[((zU]**Cxx%&&&r1   )rp   rt   )dask.threadedrG   )frG   rp   rt   r,   s       @r/   test_callbackrw   v   s2    AA-C!'
' SlKr1   c                      G d dt               fd} ddlm} 	  |d| fid       J # $ rJ}dt        |      v sJ dt	        |      v sJ |j
                  d	k(  sJ |j                  d
k(  sJ Y d }~y d }~ww xY w)Nc                      e Zd Zd Zd Zy).test_exceptions_propagate.<locals>.MyExceptionc                     || _         || _        y N)r4   r3   )rP   r4   r3   s      r/   __init__z7test_exceptions_propagate.<locals>.MyException.__init__   s    DFDFr1   c                     y)NMy Exception!r:   rO   s    r/   __str__z6test_exceptions_propagate.<locals>.MyException.__str__   s    "r1   N)rR   rS   rT   r}   r   r:   r1   r/   MyExceptionrz      s    		#r1   r   c                       dd      )Nr   r   r:   )r   s   r/   rv   z$test_exceptions_propagate.<locals>.f   s    !Qr1   r   rj   r   r   r4   r   r   )	Exceptionru   rG   strdirr4   r3   )rv   rG   er   s      @r/   test_exceptions_propagater      s    #i #  "S1$Ku #a&(((c!f}}ssaxxssaxx	s   + A:A A55A:c                     g fd} t        d      D ci c]	  }d|f| |f }}t        |      }d t        |      f|d<   t        |d       t        d      k(  sJ y c c}w )Nc                (    j                  |        y r|   append)ird   s    r/   r   ztest_ordering.<locals>.append   s    	r1   
   r   c                      y r|   r:   )argss    r/   ri   ztest_ordering.<locals>.<lambda>   s    r1   r   T)reverse)rangerc   r@   r   )r   r   r,   x_keysrd   s       @r/   test_orderingr      sr    
A +0)
4QC8fa[ 
4C
4C[F"DL1CHS#q$'''' 5s   A!c                     t        j                  d       t        j                  d      } ddlm} g fd}| j                  j                  dd      }|j                  |j                        |j                  d	      z
  j                         }t        |j                               }t        |      }t        |j                         |j                  
      } ||      5  t!        ||d          d d d        |k(  sJ y # 1 sw Y   xY w)Nnumpyz
dask.arrayr   )Callbackc                (    j                  |        y r|   r   )rb   rZ   rB   actual_orders      r/   track_orderz*test_complex_ordering.<locals>.track_order   s    C r1   )   r   )r   )sizechunks)axisra   )pretaskr   )pytestimportorskipdask.diagnosticsr   randomnormaldotTmeanstdrn   __dask_graph__r
   rc   rA   rG   r   )	dar   r   r   resr,   exp_order_dict	exp_orderr   s	           @r/   test_complex_orderingr      s    
 			\	*B)L! 			hx8A55:A&
+
+
-C
s!!#
$C3ZN~**,.2D2DEI	+	& %im$%9$$$% %s   $DDc            	         dfd} d }t        d|       t        d|       x}t        d|d|j                               g}|D ci c]  }|j                  | }}t        |d      dk(  sJ y c c}w )	Nr   c                 0     dkD  rt        d       dz   y)Nr   zShould only be called oncer   )RuntimeError)counters   r/   	only_oncez:test_ensure_calculate_only_whats_needed.<locals>.only_once   s"    Q;;<<1r1   c                    | |z   S r|   r:   r    s     r/   r   z4test_ensure_calculate_only_whats_needed.<locals>.add   s    1ur1   x1x2r   r   r   )r   refrb   r   )r   r   t1taskstr,   r   s         @r/   'test_ensure_calculate_only_whats_neededr      s    G 	T9D)$	$S#q"&&(#E
 #
#155!8
#C
#C""" $s   A-c                     dt        dd t        d            i} t        j                  t        d      5  t        | d       d d d        t        | dddi      dk(  sJ y # 1 sw Y   xY w)Nr   c                    | S r|   r:   rh   s    r/   ri   z-test_detect_malformed_graph.<locals>.<lambda>   s    A r1   r   zMissing dependency)matchr   rY   )r   r   r   raises
ValueErrorr   )r,   s    r/   test_detect_malformed_graphr      sb    S+ws|4
5C	z)=	> cCS!H-222 s   A  A))"
__future__r   r   rZ   dask._task_specr   r   
dask.localr   r   r   r	   
dask.orderr
   dask.utils_testr   r   r   fib_daskr0   r6   r8   r;   rE   rJ   rL   r\   re   rw   r   r   r   r   r   r:   r1   r/   <module>r      s    "   ) L L  : :1AQaqJ.$'D'<@' @2I
L&0(%(#,3r1   