
    bia~                    N   d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	Z	d dl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ d dlm Z  d d	l!m"Z" d
 Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+dndZ,d Z-d Z.d Z/d Z0d Z1d Z2d Z3 G d d      Z4d Z5d Z6d Z7d  Z8d! Z9d" Z:d# Z;d$ Z<d% Z=d& Z>d' Z?e	j                  j                  d( ed)e%d*d+       ed)       ed)d,      g      d-        ZB G d. d/ ed/d0            ZC G d1 d2 ed2d3            ZD G d4 d5 ed5d6            ZEe	j                  j                  d7eCd8gi feDg d9i feEg d9d:d;ifg      d<        ZFe	j                  j                  d7eCd8gi feDg d9i feEg d9d:d;ifg      d=        ZGd> ZHe	j                  j                  d?eId hg d,gi d@dAidBdCg      dD        ZJdE ZKdF ZLdG ZMdH ZN G dI dJ      ZO G dK dL      ZP G dM dN      ZQdO ZR eR       ZS G dP dQ      ZTdR ZUdS ZVdT ZWdU ZXdV ZYdW ZZdX Z[dY Z\dZ Z]d[ Z^d\ Z_d] Z`d^ Zad_ Zbd` Zcda Zddb Zedc Zfe	j                  j                  ddeegfeehfeeIfg      de        Zidf Zjdg Zkdh Zle	j                  j                  dieeeeg      dj        Zm G dk dle      Zndm Zoy)o    )annotationsN)
namedtuple)Mapping)AliasDataNodeDependenciesMappingDictListSetTaskTaskRefTuple_get_dependenciesconvert_legacy_graphexecute_graphfuse_linear_task_specparse_inputresolve_aliases)keys_in_tasksreverse_dict)sizeof)tokenize)funcnamec                    t        |       }|j                         D cg c]  \  }}||j                  f }}}t        d |D              sJ |       |S c c}}w )Nc              3  2   K   | ]  }|d    |d   k(    yw)r      N ).0vs     T/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/tests/test_task_spec.py	<genexpr>z*convert_and_verify_keys.<locals>.<genexpr>%   s     *qtqt|*s   )r   itemskeyall)dsknew_dskkr   valss        r    convert_and_verify_keysr)   "   sT    "3'G#*==?341aQJ3D3*T**0D0*N 4s   Ac                    | S Nr   xs    r    identityr.   )   s    H    c                     	 dj                  |       S # t        $ r" dj                  t        t        |             cY S w xY wN-)join	TypeErrormapstrargss    r    funcr9   -   s9    (xx~ (xxC''(s    (>>c                 $    dj                  |       S N=r3   r7   s    r    func2r>   4   s    88D>r/   c                 x    dj                  |       dz   dj                  d |j                         D              z   S )N+z//c              3  0   K   | ]  \  }}| d |   yw)r<   Nr   )r   r'   r   s      r    r!   zfunc3.<locals>.<genexpr>9   s     +R41aqc1#J+Rs   )r3   r"   )r8   kwargss     r    func3rC   8   s/    88D>D 388+R6<<>+R#RRRr/   c                 h    dt        dt        dd      i} t        |       }|d   | d   u sJ || k(  sJ y Nkey-1ab)r   r9   r)   )r%   	converteds     r     test_convert_legacy_dsk_skip_newrJ   <   sJ    gtS#.C (,IWW---r/   c                 L   t        dt        dd      } t        |       dk(  sJ t        dt        | | j	                               } t        |       dk(  sJ d }t        d|| | j	                               } t        |       d	k(  sJ dd
}t        d|dd      } t        |       dk(  sJ y )Nr#   rG   rH   z<Task 'key' func('a', 'b')>nestedz@<Task 'nested' func2(<Task 'key' func('a', 'b')>, Alias('key'))>c                    | |z   S r+   r   rG   rH   s     r    %long_function_name_longer_even_longerz8test_repr.<locals>.long_function_name_longer_even_longerL       1ur/   longz8<Task 'long' long_function_name_longer_even_longer(...)>c                    | |z   S r+   r   rG   kwargs     r    
use_kwargsztest_repr.<locals>.use_kwargsR   s    5yr/   rT   fookwarg_value)rT   z5<Task 'kwarg' use_kwargs('foo', kwarg='kwarg_value')>r+   )r   r9   reprr>   ref)trO   rU   s      r    	test_reprr[   E   s    UD#s#A73333Xua)A7XXXX 	V:AquuwGA7PPPP 	Wj%}=A7MMMMr/   c                    t        d      t        d      k(  sJ t        d      t        d      k7  sJ t        t        d            t        t        d            k(  sJ t        t        d            t        t        dd            j                  ddi      k(  sJ t        t        d      t        d            t        t        d      t        d            k7  sJ t        dt        t        t        d      t        d            t        t        d      t        d                  } | | k(  sJ | t        dt        t        t        d      t        d            t        t        d      t        d                  k(  sJ y )N)r-   r   r   )r-   r   r   rG   )r-   r      )zr   r   )yr   r   )r_   r   r   )r   r
   
substituter   r9   r   objs    r    test_task_eqrc   Y   sZ   {!3333{!3333k"#tE+,>'????k"#tE#sO'<'G'G	k(    k"E+$674kE+.<    W[!7;#78W[!7;#78	C #::$W[!7;#78W[!7;#78	   r/   c                    | |z   S r+   r   rN   s     r    rO   rO   t   s    q5Lr/   c                    | |z   S r+   r   rS   s     r    rU   rU   x   s    u9r/   c            
        d } d }| ddf|ddf| |ddfdfd| ddf| ddf| d	d
f| ddfgd}t        |      }|d   }t        |t              sJ |j                  | k(  sJ  |       }| | dd      k(  sJ |d   }t        |t              sJ  |d|i      }| | | dd      d      k(  sJ |d	   }t        |t              sJ t	        |j
                        dk(  sJ  |||d      }	|	 |  |d | dd             | | dd      d            k(  sJ |d   }
t        |
t              sJ |
j
                  h dk(  sJ  |
|||	dd       | |d       | d|       | |	d
       | dd      gk(  sJ y )Nc                 $    dj                  |       S r1   r=   r7   s    r    r9   z%test_convert_legacy_dsk.<locals>.func}       xx~r/   c                 $    dj                  |       S r;   r=   r7   s    r    r>   z&test_convert_legacy_dsk.<locals>.func2   rh   r/   rG   rH   rF   ckey-2rV   key-3fconstbar)rF   rk   rl   rn   key-4r]   rF   rk   rp   >   rn   rF   rk   rl   )rF   rk   rl   rn   )r)   
isinstancer   r9   lendependencies)r9   r>   r%   r&   t1v1t2v2t3v3t4s              r    test_convert_legacy_dskr|   |   s    S!#&W-w77C 3 7C 7E"	
C &c*G		Bb$77d??	Bc3		Bb$	WbM	BtC~s++++		Bb$r1$$$	b2&	'BeCc30%S#2LMMMM		Bb$??BBBB		
 	RS"RUE	
  r/   c                 T    t        dt        dd      }  |        t        dd      k(  sJ y rE   r   r9   )ru   s    r    test_task_executabler      s(    	gtS#	&B44S>!!!r/   c                    t        dt        dd      } t        dt        dd      }t        dt        | |g      } |       | |gk(  sJ t        dt        | |h      } |       | |hk(  sJ t        d	t        | |d
      } |       | |d
k(  sJ y )NrF   rG   rH   rk   rj   dseqsetdictrN   )r   r9   r>   r.   )ru   rw   tseqs      r    test_task_nested_sequencer      s     
gtS#	&B	guc3	'Bx"b*D6b"Xx"b*D6b"X"45D62B''''r/   c                    t        dt        dd      } t        dt        t        d      d      }t	        j
                  t              5   |        d d d         |d |        i      t        t        dd      d      k(  sJ y # 1 sw Y   2xY wNrF   rG   rH   rk   rj   r   r9   r>   r   pytestraisesRuntimeErrorru   rw   s     r    test_reference_remoter      ss    	gtS#	&B	gugg.	4B	|	$ 
wo%S#"<<<< s   B  B	c                 >   t        dt        dd      } t        dt        t        d      t        d            }t	        j
                  t              5   |        d d d         |d |        i      t        t        dd      t        dd            k(  sJ y # 1 sw Y   <xY wNrF   rG   rH   rk   r   r   s     r     test_reference_remote_twice_samer      s~    	gtS#	&B	gugg.0@	AB	|	$ 
wo%S#S#"GGGG s   BBc                 n   t        dt        dd      } t        dt        dd      }t        dt        t        d      t        d            }t	        j
                  t              5   |        d d d         | |         |       d      t        t        dd      t        dd            k(  sJ y # 1 sw Y   BxY w)	NrF   rG   rH   rk   rj   r   rl   rq   r   )ru   rw   ry   s      r    %test_reference_remote_twice_differentr      s    	gtS#	&B	gtS#	&B	gugg.0@	AB	|	$ 
rt,-tC~tCQT~1VVVV s   "B++B4c                     t        dt        dd      } t        dt        | d      } |       t        t        dd      d      k(  sJ y r   )r   r9   r>   r   s     r    test_task_nestedr      s?    	gtS#	&B	gub#	&B45c3----r/   c                  &    e Zd ZdZdZd Zd Zd Zy)SerializeOnlyOnceFc                P    t         j                  r
t               dt         _        i S NT)r   
serializedr   selfs    r    __getstate__zSerializeOnlyOnce.__getstate__   s!    ''. '+$	r/   c                N    t         j                  r
t               dt         _        y r   )r   deserializedr   r   states     r    __setstate__zSerializeOnlyOnce.__setstate__   s    )). )-&r/   c                    ||z   S r+   r   )r   rG   rH   s      r    __call__zSerializeOnlyOnce.__call__   rP   r/   N)__name__
__module____qualname__r   r   r   r   r   r   r/   r    r   r      s    LJ.
r/   r   c                 $   d } t        dt        dd      }t        dt        dd      }t        j                  t        j                  |            }t        |      t        |      k(  sJ t        j                  t        j                  |            } | ||        | ||       ||k(  sJ |j                  |j                  k(  sJ |j                  |j                  u sJ |j                  |j                  u sJ t        ||      }t        j                  t        j                  |            }||k(  sJ  |        |       k(  sJ t        |      }t        j                  t        j                  |            }||k(  sJ  |        |       k(  sJ y )	Nc                     d } |        |       z  }| |       cxk(  r |       k(  sJ  J t         fd|D              sJ t         d      rJ t        d      rJ y )Nc                    t               }| j                  j                         D ]  }|j                  t	        |dd               |S )N	__slots__r   )r   	__class__mroupdategetattr)rb   slotsclss      r    get_all_slotsz>test_pickle.<locals>.assert_slots_equal.<locals>.get_all_slots   s?    EE}}((* <WS+r:;<Lr/   c              3  P   K   | ]  }t        |      t        |      k(    y wr+   )r   )r   slotrG   rH   s     r    r!   z:test_pickle.<locals>.assert_slots_equal.<locals>.<genexpr>  s$     ND71d#wq$'77Ns   #&__dict__)r$   hasattr)rG   rH   r   	all_slotss   ``  r    assert_slots_equalz'test_pickle.<locals>.assert_slots_equal   sx    	 "!$}Q'77	M!,@a0@@@@@@NINNNN1j)))1j))))r/   rF   rG   rH   rk   rj   r   r#   )r   r9   pickleloadsdumpsrX   r   r	   )	r   ru   rw   rtt1rtt2lrtlr   rtds	            r    test_pickler      sE   * 
gtS#	&B	gtS#	&B<<R()D:b!!!<<R()Dr4 r4 ::77dii77dii77diib"A
,,v||A
'C8O83#%<<A
,,v||A
'C8O83#%<<r/   c                 J   t        dd      } t        t        j                  |             dk  sJ t        dd      }t        t        j                  | |f            dk  sJ t        t        j                  | ||f            t        t        j                  | |f            dz   k  sJ t	        dt
        dd      }t        t        j                  |            dk  sJ t	        d	t
        t        d      d      }t        t        j                  |            d
k  sJ t        t        j                  ||f            dk  sJ t        ||      }t        t        j                  |            dk  sJ g }g }t        ||      }t        d      D ]g  }t        ||      }t        t        j                  |            }	t        |      dkD  r|j                  |	|d   d   z
         |j                  ||	f       i t        |      }t        |      dk(  sJ |j                         dk  sJ y )NrG   rH   7   rj   F   
   rF   x   rk         i     r   r       )r   rs   r   r   r   r9   r   r
   rangeappendr   pop)
rG   rH   ru   rw   r   sizesgrowthinnerdepthsizes
             r    test_pickle_sizer      s    	c3Av||A"$$$c3Av||QF#$*** v||Q1I&'3v||QF/C+Dr+IIII	gtS#	&Bv||B 3&&&	gtWW-s	3Bv||B 3&&&v||RH%&,,,RAv||A3&&&EFRLEr $UB6<<&'u:>MM$r1-.eT]#$ [Fv;!::<2r/   c                 (   t        dt        dd      } t        |       t        |       k(  sJ t        dt        dd      }t        |       t        |      k(  sJ t        |        t        dd      }t        dd      }t        |      t        |      k(  sJ y r   )r   r9   r   r   )rZ   rw   r   l2s       r    test_tokenizer   M  s    WdC%AA;(1+%%%	gtS#	&BA;(2,&&&QK
 	#A	'3	BA;(2,&&&r/   c                   K   | |z   S wr+   r   rN   s     r    afuncr   ^  s     q5Ls   c                 b    t        j                  d       ddlm}   |        d        } |        y )Ndistributedr   )gen_testc                    K   t        dt        dd      } | j                  sJ  |         d {   dk(  sJ  t        j                  t        j
                  |                     d {   dk(  sJ y 7 D7 w)NrF   rG   rH   ab)r   r   is_coror   r   r   rZ   s    r    _ztest_async_func.<locals>._g  sf      %c*yyySyD   2V\\&,,q/244<<< 4s!   +A6A29A6'A4(A64A6)r   importorskipdistributed.utils_testr   )r   r   s     r    test_async_funcr   b  s.    
&/Z= = Cr/   c                     d } d| t         ddfi}t        |      }t        d| t         dd      } |d           |       k(  sJ  |       dk(  sJ y )Nc                     | |i |dz   S Nrj   r   r9   r8   rB   s      r    curryztest_parse_curry.<locals>.currys      T$V$s**r/   rF   rG   rH   a-bc)r9   r)   r   )r   r%   rI   rZ   s       r    test_parse_curryr   r  sd    + 	%sC(C (,IWeT3,A9W13&&&3&==r/   c                 H    d } t        d| t        dd      } |       dk(  sJ y )Nc                     | |i |dz   S r   r   r   s      r    r   ztest_curry.<locals>.curry  r   r/   rF   rG   rH   r   r~   )r   rZ   s     r    
test_curryr     s)    + 	WeT3,A3&==r/   c                 l    t        j                  d       ddlm}  d | d      i}t	        |      }|rJ y )Nr   r   )r   r#   )r   r   dask._task_specr   r)   )r   r%   r&   s      r    test_avoid_cyclesr     s;    
&' 	wu~C &c*G;wr/   c                 f    d
d} t        d| ddt        dt        ddg            } |       d	k(  sJ y )Nc                $    | |z   t        |      z   S r+   r6   rG   rH   rj   s      r    
func_kwargz*test_runnable_as_kwarg.<locals>.func_kwarg      1us1v~r/   rF   rG   rH   rk   r   r]   rj   ab3 )r   sum)r   rZ   s     r    test_runnable_as_kwargr     s?     	
waV
$	A 3%<<r/   c                     dd} t        dt        ddg      }t        d| dd|j                               }t        j                  t
        d	
      5   |        d d d        |j                  sJ  |d |       i      dk(  sJ y # 1 sw Y   ,xY w)Nc                $    | |z   t        |      z   S r+   r   r   s      r    r   z,test_dependency_as_kwarg.<locals>.func_kwarg  r   r/   rF   r   r]   rk   rG   rH   r   missingmatchr   r   )r   r   rY   r   r   r   rt   )r   ru   rw   s      r    test_dependency_as_kwargr    s     
gsQF	#B	
&&(
B 
|9	5 

 ???wo%''' s   BBc            	     d   t        j                  d      } t        dt        | j	                  ddg      d      } |       dk(  sJ t        dt        | j	                  d|j                         g      d      } |ddi      d	k7  sJ t        | j	                  d|j                         g            rJ y )
NnumpyrF   r   r]   rH   z[1 2]-brk   rV   z	[1 foo]-b)r   r   r   r9   arrayrY   r   )nprZ   rw   s      r    test_array_as_argumentr
    s    			W	%BWdBHHaV,c2A3) 
gtRXXq!%%'l3S	9Bw;... 1aeeg,!78888r/   instrF   rG   rH   r   c                     t        | d      rJ y )Nr   )r   )r  s    r    test_ensure_slotsr    s     tZ((((r/   c                      e Zd ZdZy)PlainNamedTuplez&Namedtuple with a default constructor.N)r   r   r   __doc__r   r/   r    r  r    s    0r/   r  valuec                  (     e Zd ZdZ fdZd Z xZS )NewArgsNamedTuplez%Namedtuple with a custom constructor.c                0    t         |   | | d| |      S r1   )super__new__)r   rG   rH   rj   r   s       r    r  zNewArgsNamedTuple.__new__  s     wsqc1#J22r/   c                V    g | j                   j                  d      | j                  S r1   )r   splitrj   r   s    r    __getnewargs__z NewArgsNamedTuple.__getnewargs__  s#    *c"*DFF**r/   )r   r   r   r  r  r  __classcell__r   s   @r    r  r    s    /3+r/   r  zab, cc                  (     e Zd ZdZ fdZd Z xZS )NewArgsExNamedTuplezGNamedtuple with a custom constructor including keywords-only arguments.c           
         t         |   | | d| |t        |j                               t        |j	                                     S r1   )r  r  tuplekeysvalues)r   rG   rH   rj   kwr   s        r    r  zNewArgsExNamedTuple.__new__  s:    wsqc1#J53CU299;EWXXr/   c                    g | j                   j                  d      | j                  t        t	        | j
                  | j                              fS r1   )r   r  rj   r   zipr'   r   r   s    r    __getnewargs_ex__z%NewArgsExNamedTuple.__getnewargs_ex__  s<    ,s#,TVV,d3tvvtvv3F.GGGr/   )r   r   r   r  r  r%  r  r  s   @r    r  r    s    QYHr/   r  zab, c, k, vztyp, args, kwargsz	some-data)somedatamoreanotherr'  c                b    d }d| | |i |fi}t        |      } |d           | |i |k(  sJ y )Nc                    | S r+   r   r,   s    r    r9   z0test_parse_graph_namedtuple_legacy.<locals>.func      r/   rV   )r)   )typr8   rB   r9   r%   r&   s         r    "test_parse_graph_namedtuple_legacyr.    sM     4d-f-.
/C%c*G75>sD3F3333r/   c           	     t   d } | |i |}t        d|t        |            } |       |k(  sJ | t        u rt        t	        d      gt        |      dd  z         } | |i |}t        d|t        |            }|j                  dhk(  sJ  |ddi       | t        dgt        |      dd  z         i |k(  sJ y y )Nc                    | S r+   r   r,   s    r    r9   z#test_parse_namedtuple.<locals>.func  r,  r/   rV   rH   r   )r   r   r  r  r   listrt   )r-  r8   rB   r9   rb   rZ   s         r    test_parse_namedtupler2    s     t
v
CUD+c*+A3#:: ogcl^d4jn454"6"k#./~~#&&&#u#ueWtDz!"~-E'F"Q&"QQQQ r/   c                     t        j                  d      } t        d| j                        }t	        j
                  t	        j                  |            }||k(  sJ y )Nr  rV   )r   r   r   	transposer   r   r   )r	  rb   roundtrippeds      r    test_pickle_literalsr6    sG    			W	%B
5",,
'C<<S 12L3r/   rb   r]      r   )   c                $    t        |       | k(  sJ y r+   )r   ra   s    r    test_parse_non_task_inputsr:    s    ss"""r/   c            	     Z   t        dd      t        dt        dd      t        dd      g} | D ci c]  }|j                  | }}t	        |      dk(  sJ t        |dht        t        |                  }t	        |      dk(  sJ |d   j                         }d|_        |d   |k(  sJ t        |ddht        t        |                  }t	        |      dk(  sJ |d   j                         }d|_        |d   |k(  sJ t        dd      x}t        dt        dd      t        d|j                               t        d	t        |j                         d
      g} | D ci c]  }|j                  | }}t        |dd	ht        t        |                  }t	        |      dk(  sJ d|v sJ |d   j                  dk(  sJ d|vsJ t        dt        dt        d            }|fD ci c]  }|j                  | }}t        |dht        t        |                  }||k(  sJ y c c}w c c}w c c}w )Nro   rV   rG   rH   bazr7  r   r]   foo2rj   )r   r   r9   r#   rs   r   r   r   copyrY   r   )tasksrZ   r%   	optimizedexpectedro   rV   s          r    test_resolve_aliasesrB    sK   eUUD#s#eUE
 #
#155!8
#C
#s8q==eWl;Ns;S.TUIy>Q5z HHLUx'''eU^\*=c*BCI y>Q5z HHLUx''' UE""UD#s#eSWWYVT3779c*	E #
#155!8
#C
#eV_l+>s+CDI y>Q IU5(((	!!! udC
.C!U
#155!8
#C
#eWl;Ns;S.TUI] $. $* $s   HH# H(c                    t        dt        d      t        dd      t        dt        t        d            t        dd      t        dt        t        d            g} | D ci c]  }|j                  | }}t        |      dk(  sJ t        |dht        t        |                  }t        |      dk(  sJ |d   j                         }d|_        |d   |k(  sJ |d   j                         }d|_        |d   |k(  sJ y c c}w )	Nfirstr   secondthirdfourthfifth   r7  )
r   r9   r   r   r#   rs   r   r   r   r>  )r?  rZ   r%   r@  rA  s        r    test_resolve_multiple_aliasesrJ  S  s    	WdBh WdGH-.h WdGH-.E #
#155!8
#C
#s8q==gY=PQT=U0VWIy>Q7|  "HHLX(***7|  "HHLX(*** $s   C>c            	     ^   t         dfdt         dfdt         dfd} t        |       } t        |       dk(  sJ t        | dht	        t        |                   }t        |      d	k(  sJ | d   j                         }d|_        |d   |k(  sJ | d   j                         }d|_        |d   |k(  sJ y )
Nr   rD  rE  rF  rG  )rD  rE  rF  rG  rH  rI  rH  r7  )r9   r)   rs   r   r   r   r>  r#   )r%   r@  rA  s      r    test_convert_resolverL  j  s    !!C "#
&Cs8q==gY=PQT=U0VWIy>Q7|  "HHLX(***7|  "HHLX(***r/   c                 X    t        dt        t        d            }  | ddi      dk(  sJ y )Nr#   r_   r,   z//x=y)r   rC   r   r   s    r    test_parse_nestedrN    s1    
#,	A c3Z=G###r/   c                  &    e Zd ZdZdZd Zd Zd Zy)CountSerializationr   c                6    t         xj                  dz  c_        y)Nr   rV   )rP  serializationr   s    r    r   zCountSerialization.__getstate__  s    ((A-(r/   c                6    t         xj                  dz  c_        y Nr   )rP  deserializationr   s     r    r   zCountSerialization.__setstate__  s    **a/*r/   c                     yrT  r   r   s    r    r   zCountSerialization.__call__      r/   N)r   r   r   rR  rU  r   r   r   r   r/   r    rP  rP    s    MOr/   rP  c                      e Zd Zd Zd Zy)RaiseOnSerializationc                    t        d      NNope
ValueErrorr   s    r    r   z!RaiseOnSerialization.__getstate__  s      r/   c                     yrT  r   r   s    r    r   zRaiseOnSerialization.__call__  rW  r/   N)r   r   r   r   r   r   r/   r    rY  rY    s    !r/   rY  c                      e Zd Zd Zd Zd Zy)RaiseOnDeSerializationc                     yr[  r   r   s    r    r   z#RaiseOnDeSerialization.__getstate__  s    r/   c                    t        |      r+   r]  r   s     r    r   z#RaiseOnDeSerialization.__setstate__  s    r/   c                     yrT  r   r   s    r    r   zRaiseOnDeSerialization.__call__  rW  r/   N)r   r   r   r   r   r   r   r/   r    ra  ra    s     r/   ra  c                 J     G d d      } t        j                   |              S )Nc                      e Zd Zd Zy)'_get_gc_overhead.<locals>._CustomObjectc                     y)Nr   r   r   s    r    
__sizeof__z2_get_gc_overhead.<locals>._CustomObject.__sizeof__  s    r/   N)r   r   r   ri  r   r/   r    _CustomObjectrg    s    	r/   rj  )sys	getsizeof)rj  s    r    _get_gc_overheadrm    s      ==))r/   c                       e Zd ZdZddZddZy)SizeOfzT
    An object that returns exactly nbytes when inspected by dask.sizeof.sizeof
    c                    t        |t              st        dt        |             |t        k  rt        dt         d| d      |t        z
  | _        y )Nz$Expected integer for nbytes but got zExpected a value larger than z integer but got .)rr   intr4   type	_size_objr^  _nbytes)r   nbytess     r    __init__zSizeOf.__init__  sZ    &#&B4<.QRRI/	{:KF8STU  	)r/   c                    | j                   S r+   )ru  r   s    r    ri  zSizeOf.__sizeof__  s    ||r/   N)rv  rr  returnNone)ry  rr  )r   r   r   r  rw  ri  r   r/   r    ro  ro    s    *r/   ro  c                 >   t        dt        dd      } t        |       t        t               t        t              z   dt        d      z  z   k\  sJ t        dt        t        d            } t        |       dkD  sJ t	        dt        d            } t        |       dkD  sJ y )Nr#   rG   rH   r]   i )r   r9   r   ro  r   r   s    r    test_sizeofr|    s    UD#s#A!9tvd|3a&+oEEEEUD&/*A!9ww(A!9wr/   c            
     @   t        dt        dd      x} t        dt        | j                         d      x}t        dt        dd      x}t        d	t        |j                         |j                               g}t	        |d	g
      }t        |      dk(  sJ |d	   dk(  sJ y )NrF   rG   rH   rk   rj   rl   rV   ro   rp   )r   r   zfoo-bar-a-b=c)r   r9   r>   rY   r   rs   )ru   rw   ry   r%   ress        r    test_execute_tasks_in_graphr    s    7D#s++7E2668S117D%//WdBFFHbffh/	C 7)
,Cs8q==w<?***r/   c            	         t        j                  t        d      5  t        t	        dt
        t                     d       d d d        y # 1 sw Y   y xY w)Ndeterministicr  r#   T)ensure_deterministic)r   r   r   r   r   r9   objectr   r/   r    )test_deterministic_tokenization_respectedr    s>    	|?	; IeT68,4HI I Is   %A

Ac                 f   t        dt        dd      } t        dt        dd      }t        dt        d| j                               }t        ddf}||fD ]<  }t        dh|g      rJ t        ddh|g      dhk(  sJ t        h d|g      dhk(  r<J  || g||gfD ]  }t        ddh|      dhk(  rJ  y )NrH   12rG   >   rG   rH   rj   )r   r9   rY   r   )rH   b_legacyrG   a_legacytaskr?  s         r    test_keys_in_tasksr    s    S$S!ACsC(HS$QUUW%Ac3HH ? #///c3Z$0SE999_tf5#>>>? a&8X./ 9c3Z/C58889r/   c                 2   t        dt        dd      } t        dt        d| j                               }|j                  dhk(  sJ | j                  | |j                  |i}t        |      }|| j                  = ||j                      |j                  dhk(  sJ y )Nr#   rG   rH   key2)r   r9   rY   rt   r#   r   )rZ   rw   r%   depss       r    ,test_dependencies_mapping_doesnt_mutate_taskr    s    UD#s#A	fdC	)B??ug%%%55!RVVR
 Cs#DQUUL??ug%%%r/   c                 Z   t        dt        dd      } t        dt        | j                         d      }t	        j
                  | |f      D ]_  \  }}t        j                  ||      }|j                  |j                  k(  sJ t        j                  ||d      }|j                  dk(  r_J  y )NrF   rG   rH   rk   r   znew-keyr   )r   r9   r>   rY   	itertoolspermutationsfuser#   )rG   rH   ru   rw   fuseds        r    test_fuse_tasks_keyr    s    WdC%AWeQUUWc*A((!Q0 &B		"b!yyAEE!!!		"bi0yyI%%%&r/   c            
        t        dt        dd      } t        dt        | j                         d      }t        dt        |j                         d      }t        j                  | ||f      D ]  \  }}}t        j                  |||      } |       t	        t        t        dd      d      d      k(  sJ t        dt        t        d      d      }t        dt        |j                         d      }t        dt        |j                         d      }t        j                  |||      }|j                  dhk(  sJ  |dd	i      t	        t        t        d	d      d      d      k(  rJ  y )
NrF   rG   rH   rk   r   rl   e
dependencydep)
r   r9   r>   rY   rC   r  r  r  r   rt   )rG   rH   rj   ru   rw   ry   r  s          r    test_fuse_tasksr    s3   WdC%AWeQUUWc*AWeQUUWc*A,,aAY7 X
B		"b"%w%d3nc :C@@@@'4!6<'5"&&(C0'5"&&(C0		"b"%!!l^333lE*+uU4s;KS5QSV/WWWWXr/   c                    t        dt        dd      } t        dt        dd      }t        j                  | |f      D ]?  \  }}t        j                  t        d      5  t        j                  ||       d d d        A y # 1 sw Y   LxY w)NrF   rG   rH   rk   r   zmultiple outputsr  )	r   r9   r>   r  r  r   r   r^  r  )rG   rH   ru   rw   s       r    !test_fuse_reject_multiple_outputsr  !  s{    WdC%AWeS#&A((!Q0 B]]:-?@ 	IIb"	 		 	s   A??B	c                 (   g fd} t        d| dd      }t        dt        |j                         d      }t        dt        |j                         d      }t        dt        |j                         |j                               }t	        j
                  ||||g      D ]r  }t        j                  | }j                           |       t        t        t        dd      d      t        t        dd      d            k(  sJ t              d	k(  rrJ  y )
Nc                >    j                  d        t        | |      S r+   )r   r9   )rG   rH   counters     r    counter_funcz:test_fused_ensure_only_executed_once.<locals>.counter_func,  s    tAqzr/   rF   rG   rk   rH   rl   rj   rp   r   )	r   r>   rY   r9   r  r  r  clearrs   )r  rG   rH   rj   r   permr  r  s          @r    $test_fused_ensure_only_executed_oncer  )  s    G 	WlC-AWeQUUWc*AWeQUUWc*AWdAEEGQUUW-A&&1a|4 !		4 w$uT#s^S95c3QT;UVVVV7|q   	!r/   c                    g } d } G fdd      fd}d }t        d      D ]7  }t        d| |||j                         n|      x}}| j                  |       9 t        j                  |  } |       sJ j
                  dk(  sJ y )Nc                  *    e Zd ZdZdZ fdZ fdZy):test_fused_dont_hold_in_memory_too_long.<locals>.OnlyTwicer   c                    xj                   dz  c_         xj                  dz  c_        j                   dkD  rt        d      y )Nr   r]   zDidn't release as expected)r  totalr^  r   	OnlyTwices    r    rw  zCtest_fused_dont_hold_in_memory_too_long.<locals>.OnlyTwice.__init__F  sA    "OOq O  1$ !=>> %r/   c                0    xj                   dz  c_         y rT  )r  r  s    r    __del__zBtest_fused_dont_hold_in_memory_too_long.<locals>.OnlyTwice.__del__L  s    "r/   N)r   r   r   r  r  rw  r  )r  s   r    r  r  B  s    	?	#r/   r  c                            S r+   r   )argr  s    r    generate_objectz@test_fused_dont_hold_in_memory_too_long.<locals>.generate_objectO  s    {r/   r   zkey-)r   r   rY   r   r  r  )r?  prevr  ixrZ   r  r  s         @r    'test_fused_dont_hold_in_memory_too_longr  ;  s    ED
# # DBi 2$K8H$((*b
 	
q 	Q	
 99eD6M6??b   r/   c            	        t        dt        d      x} t        dt        | j                               x}t        dt        |j                               g}|D ci c]  }|j                  | }}t	        |dh      }t        |      dk(  sJ t        |d   t              sJ t        |d   t               rt        |d   j                        dk(  sJ t        dd      x} t        dt        | j                               x}t        dt        |j                               x}t        dt        |j                               g}|D ci c]  }|j                  | }}t	        |dh      }t        |      dk(  sJ t        |d   t              sJ t        |d	   t               rt        |d	   j                        dk(  sJ d|vsJ |j                  t        d
t        |j                                      |D ci c]  }|j                  | }}t	        |dh      }t        |      dk(  sJ d|v sJ t        |d   t              sJ |j                  t        dt        |j                                      |D ci c]  }|j                  | }}t	        |dh      }t        |      dk(  sJ t        d |D              rJ y c c}w c c}w c c}w c c}w )NrV   r   rE  rF  r]   foo-second-third_execute_subgraphrG  zfoo-second-third-fourthbranchr8  branch2   c              3  $   K   | ]  }d |v  
 yw)r2   Nr   )r   r'   s     r    r!   z%test_linear_fusion.<locals>.<genexpr>  s     )3!8)s   )r   r9   rY   r#   r   rs   rr   r   r   r   r   any)iorE  r?  rZ   r%   resultrF  s          r    test_linear_fusionr  ]  s   5$""xrvvx00WdFJJL)E
 #
#155!8
#C
#"3	2Fv;!fWou---6,-t4V./4459LL	M ua  xrvvx00gtVZZ\22XtUYY[)	E #
#155!8
#C
#"3
3Fv;!fX&...634d;V56;;<@SS	T  
LLheiik23"
#155!8
#C
#"3
3Fv;!'''fWou--- 
LLivzz|45"
#155!8
#C
#"3
3Fv;!)S)))))Q $" $ $ $s   J8 J=0K0Kc                    t        dd      x} t        dt        | j                               x}t        dt        |j                               x}t        dt        d      x}t        dt        |j                         |j                               g}|D ci c]  }|j                  | }}t        |dh      }d|v sJ t        |d   t              sJ y c c}w )NrV   r   rE  rF  otherrG  r  )r   r   r9   rY   r#   r   rr   )r  rE  rF  r  r?  rZ   r%   r  s           r    &test_linear_fusion_intermediate_branchr    s    ua  xrvvx00gtVZZ\22gtQ''XtUYY[%))+6E #
#155!8
#C
#"3
3F'''fX&--- $s   Cc                    t        dd      x} t        dt        | j                               x}t        dd      x}t        dt        |j                               x}t        dt        |j                         |j                               x}t        dt        |j                               x}t        dt        |j                               g}|D ci c]  }|j                  | }}t        |dh      }	d	|	v sJ d
|	v sJ t        |	d   t              sJ t        |	d   t              sJ t        |	d   t              sJ t        |	d   t              sJ y c c}w )Nleft_onerG   left_two	right_one	right_twomiddlerF  rG  zleft_one-left_twozright_one-right_twothird-fourthr   r   r9   rY   r#   r   rr   r   )
r  r  r  r  r  rF  r?  rZ   r%   r  s
             r    test_linear_fusion_two_branchesr    s=   Z--T8<<>::k3//	+tY]]_==	xy}}GGgtVZZ\22XtUYY[)E #
#155!8
#C
#"3
3F&((( F***f[)5111fZ(%000fX&...f^,d333 $s   Ec            	        t        dd      x} t        dt        | j                               x}t        dt        |j                               x}t        dt        |j                               g}|D ci c]  }|j                  | }}t        |ddh      }d|v sJ d|v sJ t        |d   t              sJ t        |d   t              sJ t        |d   t              sJ t        |d   t              sJ y c c}w )NrD  rG   rE  rF  rG  zfirst-secondr  r  )rD  rE  rF  r?  rZ   r%   r  s          r    #test_linear_fusion_multiple_outputsr    s    '3''xuyy{33gtVZZ\22XtUYY[)	E #
#155!8
#C
#"38(<=FV###vfX&...fX&...f^,d333f^,d333 $s   2C7c            
     (   t        t        dt        dd      t        dt        dd            }  |        ddgk(  sJ t        t        dt        dt        d            t        dt        dd            } | j                  dhk(  sJ  | ddi      ddgk(  sJ y )	NrF   rG   rH   rk   rj   r   a-bc-d)r
   r   r9   r   rt   r   s    r    test_nested_containersr    s    T'4c*D$S,IJA35%.   T'4gcl3T'4c5RSA>>cU"""c3Z=UEN***r/   c                    t        t        dt        dd      t        dt        dd            } | j                  rJ  |        dd	dk(  sJ t        t        dt        dd      t        dt        dd      d      }| |k(  sJ  |         |       k(  sJ t        t        dt        dt	        d            t        dt        dd            } | j                  dhk(  sJ  | ddi      dd	dk(  sJ t        t        dt        dt	        d            t        dt        dd      d
      } | j                  dhk(  sJ  | ddi      dd	d
k(  sJ t        t        dt        dd      t        dt        dd            } t        t        dt        dd      t        dt        dd            }| |k(  sJ t        |       t        |      k(  sJ t        dt        dt        dt	        d            gdt        dt        t	        d      d      gg      }|j                  ddhk(  sJ  |ddd      dd	dk(  sJ t        dddgfg      } |       dddgik(  sJ t        dddggg      } |       dddgik(  sJ t        | t              sJ t        |       t        dt        dd      t        dt        dd      dk(  sJ t        |       t        t        |             cxk(  rdk(  sJ  J d } |di | sJ y )NrF   rG   rH   rk   rj   r   r'   r   r  r  )r'   )r   r   )r   r'   r'   r   )rH   rj   columnsr]   c                 R    | t        dt        dd      t        dt        dd      dk(  S )NrF   rG   rH   rk   rj   r   r  r~   )rB   s    r    	as_kwargsz"test_dict_class.<locals>.as_kwargs  s0    gtS#.gtS#.
 
 	
r/   r   )
r	   r   r9   rt   r   r   rr   r   r   rs   )rZ   rw   r   r  s       r    test_dict_classr    s   tGT3,WdC0MNA~~3E****	D$S1WdCQT8UV	WB7N73"$;;tGT35gtSRU9VWA>>cU"""c3Z=%e4444gtS'#,7 7D#s3		
	A >>cU"""c3Z=%59999
wc3
'
wc3
'	A 

wc3
'
wc3
'
B 7N7A;(2,&&&$wc73<89$wgclC89	
	A >>c3Z'''3S!"E&>>>>y3*%&'A39sCj))))y3*%&'A39sCj))))a!!!7'4c*'4c*    q6Sa\&Q&&&&&
 >q>>r/   c            	         G d dt               } t        dd      x}t        dt        |j                               x} | dt        |j                               x}t        dt        |j                               g}|D ci c]  }|j                  | }}t        |dh      }d|v sJ t        |d   t               sJ t        |d   |       sJ y c c}w )	Nc                      e Zd Zedd       Zy)%test_block_io_fusion.<locals>.SubTaskc                     yr   r   r   s    r    block_fusionz2test_block_io_fusion.<locals>.SubTask.block_fusion  s    r/   N)ry  bool)r   r   r   propertyr  r   r/   r    SubTaskr    s    		 
	r/   r  rV   r   rE  rF  rG  z
foo-second)r   r   r9   rY   r#   r   rr   )r  r  rE  rF  r?  rZ   r%   r  s           r    test_block_io_fusionr  
  s    $  ua  xrvvx00$

55XtUYY[)	E #
#155!8
#C
#"3
3F6!!!fX&---fWow///	 $s   >Cc                 |   t        dd      x} t        dt        | j                         d      x}t        dt        | j                         d      x}t        dt        |j                               x}t        dt        |j                               x}t        d	t        |j                         |j                               g}|D ci c]  }|j                  | }}t        |dh      }d
|v sJ d|v sJ |d
   j                  sJ |d   j                  sJ |d	   j                  rJ |d   j                  sJ y c c}w )NrV   r   rE  T)_data_producerrF  rG  rH  sixthzsecond-fourthzthird-fifth)r   r   r9   rY   r#   r   data_producer)	r  rE  rF  rG  rH  r?  rZ   r%   r  s	            r    test_data_producerr    s,   ua  xrvvxEEgtRVVXdCCxvzz|44gtUYY[11WdFJJL%))+6E #
#155!8
#C
#"3
3Ff$$$F"""/"0000- ....g,,,,%=&&&& $s   D9ztask_type, python_typec           
          | t        dt        dt        d            t        dt        dd            }|j                  dhk(  sJ  |ddi       |d      k(  sJ y )NrF   rG   rH   rk   rj   r   )r  r  )r   r9   r   rt   )	task_typepython_typerZ   s      r    &test_nested_containers_different_typesr  3  sZ     	$wc73<8$wcSV:WXA>>cU"""c3Z=K7777r/   c                    t        dt        t        d      d      } | j                  ddi      | u sJ | j                  ddid      | usJ | j                  ddi      }|| usJ |j                  dhk(  sJ  | ddi       |ddi      k(  sJ y )NrF   rG   rH   rV   r   rj   )r   r9   r   r`   rt   r   s     r    test_substituter  A  s    	gtWS\3	/B==#s$***==#s=/r999	Sz	"BR<<??se###sCj>Rc
^+++r/   c                     t        t        d      d      } | j                  dk(  sJ t        | j                  t              sJ y )NrG   rH   )r   r   r#   rr   r6   r   s    r    test_alias_task_ref_keyr  L  s6    gclC A55C<<aeeS!!!r/   c                    d } t        d| t        t        d      t        dt        d      i                  }|j                  ddhk(  sJ |j                  ddd      }|j                  ddhk(  sJ  |ddd       |ddd	      k(  sJ y )
Nc                    | d   | d   d   z   S )Nr   r   rV   r   )alists    r    r9   z$test_substitute_nested.<locals>.funcS  s    Qx%(5/))r/   rF   rG   rV   rH   rj   r   rN   )rj   r   )r   r
   r   r	   rt   r`   )r9   ru   rw   s      r    test_substitute_nestedr  R  s    * 
CL73<	

B ??sCj(((	Ss+	,B??sCj(((Cc"#r#*>'????r/   	Containerc                `      | | j                                      | j                         k(  sJ y r+   )klass)r  s    r    test_nested_containers_emptyr  h  s(    '9Y__&')Y__->>>>r/   c                  "     e Zd ZdZ fdZ xZS )
MySubclasscustom_kwarg_onlyc              <    || _         t        |   ||g|i | y r+   )r  r  rw  )r   r#   r9   r  r8   rB   r   s         r    rw  zMySubclass.__init__p  s$    !2d4T4V4r/   )r   r   r   r   rw  r  r  s   @r    r  r  m  s    &I5 5r/   r  c                     t        dt        dt        d      d      } | j                  ddi      }|j                  dk(  sJ  |ddd       | ddd      k(  sJ y )	Nr#   rG   rH   rV   r  rj   )rG   rj   rN   )r  r9   r   r`   r  )rZ   rw   s     r    test_substitute_subclassesr  u  s`    5$WS\UKA	
sCj	!B5(((Cc"#qs)='>>>>r/   r+   )p
__future__r   r  r   rk  collectionsr   collections.abcr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   	dask.corer   r   dask.sizeofr   dask.tokenizer   
dask.utilsr   r)   r.   r9   r>   rC   rJ   r[   rc   rO   rU   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  markparametrizer  r  r  r  r.  r2  r6  r   r:  rB  rJ  rL  rN  rP  rY  ra  rm  rt  ro  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1  r  r  r  r  r  r  r  r   r/   r    <module>r     s   "   
 " #     " 2  " (SN(63l"
( =HW. &$N*Z'" 
(*9 
WdC%g!))1j!2G< 1+
#6@ +H*%:MJ H 	;-,	4b9	6F8KL44 	;-,	4b9	6F8KLRR$ qc2sBAD IJ# K#4n+.+,$    * 	 $	+I
9$&&X!$!D.*b.4(4"+=@0*'( 		t	c
88,"@, tT3&>?? @?5 5?r/   