
    bid                    l   d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlZd dlZd d	lmZ d dlZd dlmZ d d
lmZ d dlmZ d dlmZ d dlmZm Z m!Z! d dl"m#Z# d dl$m%Z%  G d d      Z&ejN                  jQ                  d      d        Z)d Z*d Z+e G d d             Z, ed       G d d             Z-ejN                  j]                  de,e-f      d        Z/d Z0d Z1d  Z2d! Z3d" Z4d# Z5d$ Z6d% Z7d& Z8d' Z9d( Z:d) Z;d* Z<d+ Z=d, Z>d- Z?d. Z@ejN                  j]                  d/eAeBeCg      d0        ZDd1 ZEd2 ZFd3 ZGd4 ZHejN                  j]                  d5d6d7gd8ed6d7fg d9g      d:        ZId; ZJd< ZKejN                  jQ                  d      d=        ZLd> ZMd? ZNd@ ZOdA ZPdB ZQdC ZRdD ZSdE ZTdF ZUdG ZVdH ZWdI ZXdJ ZYdK ZZdL Z[dM Z\dN Z]dO Z^dP Z_e dQ        Z` e dRS      dT        ZaejN                  j]                  dU e e_       ej                  e`ejN                  j                  dVW      X       ej                  eaejN                  j                  dVW      X      g      dY        ZdejN                  j]                  dU e e_      e`eag      dZ        Zed[ Zfd\ Zgd] Zhd^ Zid_ Zjy)`    )annotationsN)
namedtuple)	dataclassfield)partial)addsetitem)random)
NamedTuple)merge)compute)Task)collections_to_expr)Delayeddelayedto_task_dask)HighLevelGraph)incc                  f    e Zd Z eej
                  j                        ZdZd Z	d Z
d Zd Zd Zy)TupleNc                     || _         || _        y N)_dask_keys)selfdskkeyss      R/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/tests/test_delayed.py__init__zTuple.__init__   s    

    c                    | j                   S r   r   r   s    r   __dask_tokenize__zTuple.__dask_tokenize__"       zzr    c                    | j                   S r   )r   r#   s    r   __dask_graph__zTuple.__dask_graph__%   r%   r    c                    | j                   S r   r"   r#   s    r   __dask_keys__zTuple.__dask_keys__(   r%   r    c                    t         dfS )N tupler#   s    r   __dask_postcompute__zTuple.__dask_postcompute__+   s    byr    )__name__
__module____qualname__staticmethoddaskthreadedget__dask_scheduler____dask_optimize__r   r$   r'   r)   r.   r+   r    r   r   r      s6    %dmm&7&78r    r   z#ignore:The dask.delayed:UserWarningc                    t        dd      } t        dd      }t        | |dg      \  }}|g dk(  sJ t        | |df      \  }}|t        g dfk(  sJ t        |      t	        | j
                  |j
                        k(  sJ t        | d|di      \  }}|t        ddgddggfk(  s|t        ddgddggfk(  sJ t        |      t	        | j
                  |j
                        k(  sJ t        dg d	      } || |d      }t        |      \  }}||dddfk(  sJ t        |      t	        | j
                  |j
                        k(  sJ t        t        | |d            \  }}|t        dddfk(  sJ t        |      t	        | j
                  |j
                        k(  sJ  G d
 dt              }t         |             \  }}t        |      |u sJ t        |      i k(  sJ t        ddt        ddfd	g d	      }t        |      \  }}||v sJ  |j                  |      }|j                  t        k(  sJ |j                  h dk(  sJ ||j                  k(  sJ y )N   aname   b   )r:   r>   r?   fr:   r>   cc                      e Zd Zy)"test_to_task_dask.<locals>.MyClassN)r/   r0   r1   r+   r    r   MyClassrD   I   s    r    rE   >   r:   r>   rB   )r   r   r-   dictr   r3   r   slicetyper   r   popfuncdependenciesr   )r:   r>   taskr3   r@   xrE   s          r   test_to_task_daskrN   /   sX   AAq!Qi(JD$=   q!Qi(JD$E=)))):qvvqvv....q!Ql+JD$DC8c1X.//4DC8cSTXBV;W3WWW:qvvqvv....3(A	!Q
AaJD$AsC####:qvvqvv....eAq!n-JD$E3Q'''':qvvqvv....$  gi(JD$:   : 	AAS#sO4oFAaJD$4<<A66U??>>_,,,177??r    c                 r   t        t              }  | dd      j                         dk(  sJ  | dd      dz   j                         dk(  sJ  |  | dd      d      j                         dk(  sJ t        d      }|j                         dk(  sJ  |  | |d      d      }|j                  |j                  v sJ y )Nr9   r=   r?      )r   r   r   keyr3   )add2r:   r>   s      r   test_delayedrS   Z   s    3<D1:1$$$AJN##%***Q
A&&(A---
A99;!T!QZA55AFF??r    c                     G d dt               } t        j                  d      }t        j                  d | |      i      }|j                         d | d      ik(  sJ d } t        |      |      }|j                         dk(  sJ y )Nc                      e Zd ZU ded<   y)1test_delayed_with_namedtuple.<locals>.ANamedTupleintr:   Nr/   r0   r1   __annotations__r+   r    r   ANamedTuplerV   g   s    r    rZ   r?   r:   r:   c                     | d   j                   S )Nr:   r[   objs    r   return_nestedz3test_delayed_with_namedtuple.<locals>.return_nestedn   s    3xzzr    )r   r3   r   r   )rZ   literal
with_classr_   finals        r   test_delayed_with_namedtuplerc   f   s    j  ll1oGsK'$:;<JCq)9#:::: #GM":.E==?ar    c                      e Zd ZU ded<   y)ANonFrozenDataClassrW   r:   NrX   r+   r    r   re   re   v       
Fr    re   T)frozenc                      e Zd ZU ded<   y)AFrozenDataClassrW   r:   NrX   r+   r    r   ri   ri   {   rf   r    ri   clsc                    t        d      }t        d | |      i      }d } t        |      |      }|j                         dk(  sJ y )Nr?   datar[   c                     | d   j                   S Nrl   r[   r]   s    r   r_   z2test_delayed_with_dataclass.<locals>.return_nested       6{}}r    r   r   )rj   r`   ra   r_   rb   s        r   test_delayed_with_dataclassrq      sJ    ajG&#.12J #GM":.E==?ar    c                 8   t                G d d             } t        j                  d      }t        j                  t
              5 }t        j                  d | |      i       d d d        j                  d       |j                  d       y # 1 sw Y   ,xY w)Nc                       e Zd ZU ded<   ddZy)@test_delayed_with_dataclass_with_custom_init.<locals>.ADataClassrW   r:   c                    || _         y r   r[   r   r>   s     r   r   zItest_delayed_with_dataclass_with_custom_init.<locals>.ADataClass.__init__   	    DFr    Nr>   rW   r/   r0   r1   rY   r   r+   r    r   
ADataClassrt          	r    rz   r?   rl   r>   z custom __init__ is not supported)r   r3   r   pytestraises	TypeErrormatch)rz   r`   es      r   ,test_delayed_with_dataclass_with_custom_initr      s~    [   ll1oG	y	! 6Qfj73456 GGMGG/0	6 6s   BBc                     t                G d d             } t        d | d      i      }d } t        |      |      }|j                         dk(  sJ y )Nc                       e Zd ZU ded<   ddZy)Ftest_delayed_with_dataclass_with_eager_custom_init.<locals>.ADataClassrW   r:   c                    || _         y r   r[   rv   s     r   r   zOtest_delayed_with_dataclass_with_eager_custom_init.<locals>.ADataClass.__init__   rw   r    Nrx   ry   r+   r    r   rz   r      r{   r    rz   rl   r?   r|   c                     | d   j                   S rn   r[   r]   s    r   r_   zItest_delayed_with_dataclass_with_eager_custom_init.<locals>.return_nested   ro   r    r   r   r   )rz   ra   r_   rb   s       r   2test_delayed_with_dataclass_with_eager_custom_initr      s\    [   &*q/23J #GM":.E==?ar    c                     t          G d d             fd} t        d | d      i      }d } t        |      |      }|j                         dk(  sJ y )Nc                  4    e Zd ZU ded<    ed      Zded<   y)Otest_delayed_with_eager_dataclass_with_set_init_false_field.<locals>.ADataClassrW   r:   Finitr>   Nr/   r0   r1   rY   r   r>   r+   r    r   rz   r          E"3"r    rz   c                (     |       }d|_         |S Nr[      r|   r:   rl   rz   s     r   prep_dataclasszStest_delayed_with_eager_dataclass_with_set_init_false_field.<locals>.prep_dataclass       Ar    rl   r?   c                     | d   j                   S rn   r[   r]   s    r   r_   zRtest_delayed_with_eager_dataclass_with_set_init_false_field.<locals>.return_nested   ro   r    r   )r   ra   r_   rb   rz   s       @r   ;test_delayed_with_eager_dataclass_with_set_init_false_fieldr      sa    # # #
 &."345J #GM":.E==?ar    c                 6   t          G d d             t        j                  d      } fd}t        j                  t
              5 }t        j                   ||              d d d        j                  d       |j                  d       y # 1 sw Y   ,xY w)Nc                  4    e Zd ZU ded<    ed      Zded<   y)Itest_delayed_with_dataclass_with_set_init_false_field.<locals>.ADataClassrW   r:   Fr   r>   Nr   r+   r    r   rz   r      r   r    rz   r?   c                (     |       }d|_         |S r   r|   r   s     r   r   zMtest_delayed_with_dataclass_with_set_init_false_field.<locals>.prep_dataclass   r   r    z`init=False` are not supported)r   r3   r   r}   r~   
ValueErrorr   )r`   r   r   rz   s      @r   5test_delayed_with_dataclass_with_set_init_false_fieldr      s    # # # ll1oG
 
z	" .a^G,-. GGMGG-.	. .s   BBc                     t          G d d             } t        j                  d      }t        d | |      i      }d } t        |      |      }|j                         dk(  sJ y )Nc                  4    e Zd ZU ded<    ed      Zded<   y)Ktest_delayed_with_dataclass_with_unset_init_false_field.<locals>.ADataClassrW   r:   Fr   r>   Nr   r+   r    r   rz   r      r   r    rz   r?   rl   r[   c                     | d   j                   S rn   r[   r]   s    r   r_   zNtest_delayed_with_dataclass_with_unset_init_false_field.<locals>.return_nested   ro   r    )r   r3   r   r   )rz   r`   ra   r_   rb   s        r   7test_delayed_with_dataclass_with_unset_init_false_fieldr      sh    # # # ll1oG&*w"789J #GM":.E==?ar    c                 P   t        g d      } | d   j                         dk(  sJ | | z   j                         g dk(  sJ t        d      }| d | j                         ddgk(  sJ t        d      } | dz   j                         dk(  sJ d| z   j                         dk(  sJ | dz	  j                         dk(  sJ | dkD  j                         sJ | dz  j                         d	k(  sJ  G d
 d      }t         |             }t         |             }||z  j                         dk(  sJ y )Nr9   r=   r?   r   r9   )r9   r=   r?   r9   r=   r?   r=   
         d   c                      e Zd Zd Zy)test_operators.<locals>.dummyc                     y)Nr   r+   )r   others     r   
__matmul__z(test_operators.<locals>.dummy.__matmul__       r    N)r/   r0   r1   r   r+   r    r   dummyr      s    	r    r   r   rp   )r:   r>   r   rB   ds        r   test_operatorsr      s%   	AQ4<<>QE?? 2222
ARa5==?q!f$$$AE??"""E??"""F"""E??qD>>s"""  	AAE??!!!r    c                    t        d      } | j                  d      j                         g dk(  sJ | j                         j	                  dd      j                         j                  d      j                         dk(  sJ | j                  dd      j                  | j                  dd      j                  k(  sJ | j                  dd	
      }|j                  d	k(  sJ y )Nz	a b c d e )r:   r>   rB   r   r   BAr=   Tpuretestdask_key_name)r   splitr   upperreplacecountrQ   )r:   os     r   test_methodsr     s    A773<!%>>>>779S#&,,.44S9AACqHHH773T7"&&!''#D'*A*E*EEEE	6*A55F??r    c                 L   t        d      } | j                  j                  | j                  j                  k(  sJ | j                  j                         dk(  sJ | j                  j                         dk(  sJ | j                  | j                  z   j                         dk(  sJ y )N       @      ?r=   r9   r?   )r   real_keyr   imagr[   s    r   test_attributesr   
  s~    A66;;!&&++%%%66>>q   66>>q   FFQVVO$$&!+++r    c                     t        g d      } | j                  d      }|j                         j                         D ch c]  }t	        |t
              s|j                  ! }}|sJ t        |vsJ y c c}w )Nr   r9   )r   indexr'   values
isinstancer   rJ   getattr)r:   r   vtaskss       r   "test_method_getattr_call_same_taskr     sf    	A	
A--/668PJq$<OQVVPEPL5% Qs   A4A4c                 T   t        j                  d      } t        d      }t        j                  t              5  | j                  |       d d d        t        | j                  dgd            j
                  j                         | j                  d      k(  sJ y # 1 sw Y   SxY w)Nnumpyr9   f8dtype)r}   importorskipr   r~   r   r   arrayr   )nprM   s     r   test_np_dtype_of_delayedr     s     
		W	%B
A	y	! 
288QCt8,-33;;=$OOO s   BB'c                 d   d }  t        j                  |       d      }|j                          t        j                  t
        d      5  |j                  d       d d d        t        j                  t
        d      5  |j                          d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nc                    | dz   S Nr9   r+   rM   s    r   r   z(test_delayed_visualise_warn.<locals>.inc(      1ur    r9   z/dask.delayed objects have no `visualise` methodr   zdesk_graph.svg)	file_name)r3   r   r   r}   warnsUserWarning	visualise)r   zs     r   test_delayed_visualise_warnr   %  s     	S!AIIK	L
 0 	
./0 
L
  	
 0 0 s   
B B&B#&B/c                 |    t        g d       t        j                  t         fd       t        j                  t         fd       t        j                  t         fd       t        j                  t         fd       t        j                  t         fd       t        j                  t         fd       y )Nr   c                     t         dd      S )Nfoor9   )setattrr[   s   r   <lambda>z%test_delayed_errors.<locals>.<lambda>=  s    WQq%9 r    c                     t         dd      S )Nr9   r   )r	   r[   s   r   r   z%test_delayed_errors.<locals>.<lambda>>  s    WQ1%5 r    c                     d v S r   r+   r[   s   r   r   z%test_delayed_errors.<locals>.<lambda>@  s    Q!V r    c                     t               S r   listr[   s   r   r   z%test_delayed_errors.<locals>.<lambda>A      T!W r    c                 $     j                         S r   )_hiddenr[   s   r   r   z%test_delayed_errors.<locals>.<lambda>C  s    !))+ r    c                     t               S r   )boolr[   s   r   r   z%test_delayed_errors.<locals>.<lambda>E  r   r    )r   r}   r~   r   AttributeErrorr[   s   @r   test_delayed_errorsr   :  sd    	A
MM)9:
MM)56
MM)^,
MM)_-
MM."56
MM)_-r    c                     t        g d      } | d   | d   z   }| d   j                  |j                  v sJ | j                  |j                  v sJ t        |j                        dk(  sJ y )Nr   r   r?   )r   rQ   r3   len)r:   ress     r   test_common_subexpressionsr   H  sc    	A
A$1+CQ488sxx55CHHsxx=Ar    c                     t        d      } t        d      } t        t              | |g      }|j                         dk(  sJ y )Nr9   r=   r?   )r   sumr   rA   s      r   
test_listsr   P  s<    
A
AaVA99;!r    c                 &   t        d      } | dz   }| |df}t        |      j                         dk(  sJ | |dg}t        |      j                         g dk(  sJ | |dh}t        |      j                         h dk(  sJ | d|dddi}t        |      j                         ddddk(  sJ t        |      |    j                         dk(  sJ | |dd}t        |      j                         dd	ddk(  sJ t        |      d   j                         dk(  sJ y )
Nr9   r?   r   >   r9   r=   r?   r:   r>   rB   rA   r=   rp   r:   r>   lits      r   test_literatesr   W  s'   
A	AAa)C3<!Y...a)C3<!Y...a)C3<!Y...c1c1c
"C3<!%====3<?""$+++
"C3<!111%====3<$$&!+++r    c                     t        d      } | dz   }| |df}t        |      j                  t        |      j                  k7  sJ t        |d      j                  t        |d      j                  k(  sJ y )Nr9   r?   Tr   )r   rQ   r   s      r   test_literates_keysr  h  si    
A	AAa)C3<ws|/////3T"&&'#D*A*E*EEEEr    c                     t        d      } t        d      } t        t              | dg|dggd       d   }|j                         dk(  sJ y )Nr9   r=   r      c                    | d   S )Nr   r+   r   s    r   r   z)test_lists_are_concrete.<locals>.<lambda>s  s
    qt r    )rQ   )r   maxr   rA   s      r   test_lists_are_concreter  p  sL    
A
Aq"g2w'^<Q?A99;"r    typc                   t        d      }t        d      } t        t              t         | ||g                  }|j                         }|dk(  sJ d } t        |      t         | ||g                  }|j                         dk(  sJ y )Nr9   r=   r?   c                    t        |       S r   r   )seqs    r   r@   ztest_iterators.<locals>.f  s    3xr    )r   r   iterr   )r  r:   r>   rB   rM   r@   s         r   test_iteratorsr  x  s    
A
AT#q!f+&'A			A6M6 	
4QF$%A99;!r    c                 \   d }  t        |              }|dddg}t        |d      j                         }t        |      dk(  sJ |d   |u sJ |dd  |dd  k(  sJ | || |ff}t        |d      j                         }t        |t              sJ |d   | k(  sJ |d   |u sJ d| |f|g}t        |d      j                         }t        |t
              sJ |d   dk(  sJ |d   d   | k(  r
|d   d   |u sJ |d   |u sJ t        d      }t        |d      }|j                         dk(  sJ y )	Nc                     t        d      )Nzshouldn't have computed)r   )argss    r   failz!test_traverse_false.<locals>.fail  s    233r    r9   r=   r?   F)traverser   r   )r   r   r   r   r-   r   )r  r:   rM   r   r>   s        r   test_traverse_falser    sq   4 	A 
Aq!A
!e
$
,
,
.Cs8q==q6Q;;qr7ae 
q4)A
!e
$
,
,
.Cc5!!!q6T>>q6Q;; 
T1IqA
!e
$
,
,
.Cc4   q6Q;;q6!9Qa//q6Q;; 	
AE"A99;!r    c                     t        t        d      dd      }  t        t        d      dd      }| j                  |j                  k(  sJ t        t              } |       j                   |       j                  k7  sJ y )NTr   r9   r=   )r   r   rQ   r
   )v1v2myrands      r   	test_purer    se    	 4	 A	&B	 4	 A	&B66RVVV_F8<<68<<'''r    c                 X   t        t              } t        j                  j	                  d      5   | dd      j
                   | dd      j
                  k(  sJ 	 d d d        t        j                  j	                  d      5   | dd      j
                   | dd      j
                  k7  sJ 	 d d d        t        t        d      } t        j                  j	                  d      5   | dd      j
                   | dd      j
                  k(  sJ 	 d d d        t        d      j
                  t        d      j
                  k7  sJ t        j                  j	                  d      5  t        d      j
                  t        d      j
                  k(  sJ 	 d d d        t        j                  j	                  d      5  t        dd      j
                  t        dd      j
                  k(  sJ 	 d d d        t        g d      }|j                  d      j
                  |j                  d      j
                  k7  sJ t        j                  j	                  d      5  |j                  d      j
                  |j                  d      j
                  k(  sJ |j                  dd      j
                  |j                  dd      j
                  k7  sJ 	 d d d        t        j                  j	                  d      5  |j                  dd      j
                  |j                  dd      j
                  k(  sJ 	 d d d        t        j                  j	                  d      5  |j                  j
                  |j                  j
                  k(  sJ |d   }||z   j
                  ||z   j
                  k(  sJ 	 d d d        y # 1 sw Y   mxY w# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   xY w# 1 sw Y   2xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	NT)delayed_purer9   r=   Fr   r   r   )r   r   r3   configsetrQ   r   )rJ   rl   elements      r   test_pure_global_settingr    sN   3<D	d	+ 0Aqz~~a///0 
e	, 0Aqz~~a///0 3T"D	e	, 0Aqz~~a///0 1:>>WQZ^^+++	d	+ 0qz~~///0 
e	, Fqt$((GAD,A,E,EEEEF 9D::a=

1 1 1111	d	+ Nzz!}  DJJqM$5$5555zz!%z(,,

15
0I0M0MMMMN 
e	, Lzz!$z'++tzz!$z/G/K/KKKKL 
e	, Bzz~~///q''!&&7W+<*A*AAAAB B=0 00 00 0
0 0F FN NL LB Bsa   *O*O'*O '.O->2O:A7P?>P&AP OO O*-O7:PPP P)c                    t        d dd      }  | d      }t        |      dk(  sJ |\  }t        |      dk(  sJ j                  J |j                  J t	        j
                  t        fd       t	        j
                  t        fd       t	        j
                  t        d	        t	        j
                  t        d
        t        t        d       }  | d      j                  J t	        j
                  t        fd       t	        j
                  t        fd       t        d dd      }  | d      }t        |      dk(  sJ |\  j                         dk(  sJ j                  J t	        j
                  t        fd       t        d dd      }  | d      }t        |      dk(  sJ |j                         t               k(  sJ y )Nc                    | |  fS r   r+   r   s    r   r   ztest_nout.<locals>.<lambda>  s    a!W r    r=   Tnoutr   r9   )r9   c                     t               S r   r   r[   s   r   r   ztest_nout.<locals>.<lambda>      SV r    c                     t               S r   r   r[   s   r   r   ztest_nout.<locals>.<lambda>  r   r    c                 $    t        t        d      S )Nr$  r#  r   r   r+   r    r   r   ztest_nout.<locals>.<lambda>  s    gc&; r    c                 $    t        t        d      S )NTr*  r+  r+   r    r   r   ztest_nout.<locals>.<lambda>  s    gc&= r    r*  c                     t               S r   r   r[   s   r   r   ztest_nout.<locals>.<lambda>  r   r    c                     t               S r   r&  r[   s   r   r   ztest_nout.<locals>.<lambda>  r'  r    c                    | fS r   r+   r   s    r   r   ztest_nout.<locals>.<lambda>  s    aT r    c                     t               S r   r&  r[   s   r   r   ztest_nout.<locals>.<lambda>  r'  r    c                    t               S r   r,   r   s    r   r   ztest_nout.<locals>.<lambda>  s    UW r    r   )
r   r   r   _lengthr}   r~   r   r   r   r-   )rJ   rM   r>   r:   s      @r   	test_noutr3    s   $148DQAq6Q;;DAq1a=G###9999
MM)^,
MM)_-
MM*;<
MM*=>3T"DQA99
MM)_-
MM)^,>5DQAq6Q;;DQ99;!99
MM)^,$148DQAq6Q;;99;%'!!!r    rM   r9   r=   )r9   r=   r+   c                    t        |       }t        | |      }t        |      |k(  sJ t        t        |            |k(  sJ |j                         | k(  sJ y )Nr*  )r   r   r   r   )rM   lengthr   s      r   test_nout_with_tasksr6    sU    
 VFAq6VtAw<6!!!99;!r    c            	     d   dd} t        |       } |ddt        d      dg |dd            }|j                         dk(  sJ t        | d	      }t        d      dg} |dd| |dd            }|j                         dk(  sJ  |dd| |dd            j                  |j                  k(  sJ  |dd| |dd            j                  |j                  k7  sJ  |dd|d
      j                  |j                  k7  sJ  |dd|d
      j                   |dd|d
      j                  k7  sJ y )Nc                X    | |z   t        |      z   t        |j                               z   S r   )r   r   )r:   r>   rB   kwargss       r   mysumztest_kwargs.<locals>.mysum  s$    1us1v~FMMO 444r    r9   r=   r?   r   )rB   fourr   Tr   r   )r+   )r   r   rQ   )r:  dmysumtenrB   s       r   test_kwargsr>  
  s,   5 U^F
A'!*ava|
<C;;=BU&F	QA
A1
.C;;=B!Q!&A,/33sww>>>!Q!&A,/33sww>>>!Q!!$((CGG333!Q!!$((F1a11,E,I,IIIIr    c                 B   t        ddt        ddfdg d      }  t        t        d      | d      } t        t        d      |       } t        t        d      |       j                  |j                  k(  sJ |j                         d	k(  sJ t        |||       d
k(  sJ y )Nr9   r=   r:   r>   rA   Tr   )r   r   rP   r9   r=   r?   r   r   rP   )r?   r@  r   )r   r   r   r   rQ   r   )rM   x2ns      r   test_custom_delayedrC    s    AAS#sO4oFA	 4	 I	.B$"A"73T"1%))QUU222::<----1b! BBBBr    c                 Z   t        j                  d      } t        j                  d      }| j                  d      j                  d      }|j	                  |d      } t        t              ||dg      }t        |t              sJ | j                  |j                         ||z   dz         sJ |j                         j                         ||z   dz   j                         k(  sJ |d   j                         ||z   dz   d   k(  sJ t        |      \  }}|j                  j                         |j                         z
  rJ |j                         |j                  j                         z
  }t        |      dk(  sJ t        |      }|j                         |k(  j                         sJ y )	Nr   
dask.arrayr   r   r   r   r   chunksr9   )r   r   )r}   r   arangereshape
from_arrayr   r   r   r   allcloser   r   r3   r   r   all)	r   daarrdarrvalrL   r   diffdelayed_arrs	            r   test_array_delayedrU  $  sk   			W	%B			\	*B
))C.
 
 
*C==V=,D
'#,T1~
&Cc7###;;s{{}cCi!m44477939q="5"5"7777t939q=$"7777T"ID#yy~~#((*,,,88:		((Dt9>>$-K!S(--///r    c                   	 t        j                  d      	t        j                  d       ddlm}  ddlm} d	fd} | |dt        	      }|d
z   }|dz   } t        t              ||d
g      }t        |t              sJ 	j                  d      j                  d      } ||j                         |d
z   |dz   z   d
z          y )Nr   rE  r   	from_func	assert_eqFc                 b     rt        d      d j                  d      j                  d      S NzAlready executedTr   rF  RuntimeErrorrJ  rK  calledr   s   r   	only_oncez:test_array_delayed_complex_optimization.<locals>.only_onceD  0    122yy~%%h//r    rF  shaper   r9   r=   r   )r}   r   dask.array.corerX  dask.array.utilsrZ  rW   r   r   r   r   rJ  rK  r   )
rX  rZ  ra  rQ  r:   r>   rR  np_arrr`  r   s
           @@r   'test_array_delayed_complex_optimizationrh  :  s     
		W	%B
%)*F0 Yhc:DqAqA
'#,1ay
!Cc7###YYs^##H-FckkmfqjVaZ81<=r    c                   	
 t        j                  d      
t        j                  d       ddlm}  ddlm} d		
fd} | |dt        	      }|d
z   }|dz   }d } t        |      ||d
      }t        |t              sJ 
j                  d      j                  d      } ||j                         |d
z   |dz   z   d
z          y )Nr   rE  r   rW  rY  Fc                 b     rt        d      d j                  d      j                  d      S r\  r]  r_  s   r   ra  zAtest_array_delayed_complex_optimization_kwargs.<locals>.only_once_  rb  r    rF  rc  r9   r=   c                    t        | ||g      S r   r  rA   s      r   sum_kwargs_onlyzGtest_array_delayed_complex_optimization_kwargs.<locals>.sum_kwargs_onlyk  s    Aq!9~r    rA   r   )r}   r   re  rX  rf  rZ  rW   r   r   r   rJ  rK  r   )rX  rZ  ra  rQ  r:   r>   rl  rR  rg  r`  r   s            @@r   .test_array_delayed_complex_optimization_kwargsrm  U  s     
		W	%B
%)*F0 Yhc:DqAqA #'/
"Q!q
1Cc7###YYs^##H-FckkmfqjVaZ81<=r    c                 R   t        j                  d      } t        j                  d      }| j                  d      j                  d      }|j	                  |j
                        }|j                  |d      }|j                  |d      }t        j                  g d      }|||||g} t        t              |D cg c]  }|j                          c}      }	|	j                         d|j                         z  d|j                         z  z   t        g d      z   k(  sJ y c c}w )	Nr   rE  r   rF  rG  rH  r   r=   )r}   r   rJ  rK  dotTrL  dbfrom_sequencer   r   r   )
r   rO  arr1arr2darr1darr2r>   r  iouts
             r   test_array_bag_delayedry  t  s    			W	%B			\	*B99S>!!(+D88DFFDMM$vM.EMM$vM.E
#AueQ
'C
'#,-A-
.C;;=A
NQ^;c)nLLLL .s   =D$c                     t        t        dd      dd      } t        j                  t        j                  |             }| j
                  |j
                  k(  sJ | j                  |j                  k(  sJ | j                  |j                  k(  sJ t        d      } t        j                  t        j                  |             }| j
                  |j
                  k(  sJ | j                  |j                  k(  sJ | j                  |j                  k(  sJ | j                  |j                  k(  sJ | j                  } t        j                  t        j                  |             }| j                  j                  |j                  j                  k(  sJ | j                  j
                  |j                  j
                  k(  sJ | j                  |j                  k(  sJ | j                  |j                  k(  sJ y )Nr=   Tr"  r9   r   )r   divmodpickleloadsdumpsr3   r   r2  _nout_purer   _obj_attrrM   ys     r   test_delayed_picklabler    so   *QT*1a0AV\\!_%A66QVV66QVV99		!!!AV\\!_%A66QVV66QVV77agg77agg	AV\\!_%A66;;!&&++%%%66;;!&&++%%%77agg66QVVr    c                 D    t        d      dz   } | j                  d       y )Nr9   r=   r   )bogus_keywordrp   r   s    r   #test_delayed_compute_forward_kwargsr    s    
QAIIBIr    c                 B     t        t        j                        d       y )Nr    )r   bytesdecoder+   r    r   test_delayed_method_descriptorr    s    GELL#r    c                     t        t        d      }  | dd      }|j                         dk(  sJ | j                         t        k(  sJ y )NTr   r9   r=   r?   )r   r   r   )r@   r   s     r   test_delayed_callabler    sA    $A	!QA99;!99;#r    c                 Z    t        t        d      }  | ddd      j                  dk(  sJ y )NTr   r9   r=   r   r   )r   r   r   )r@   s    r   test_delayed_name_on_callr    s+    $AQ',,555r    c                      G d d      }  | d      }t        |      }|j                         |u sJ |j                  j                         dk(  sJ  |       j                         dk(  sJ y )Nc                      e Zd Zd Zd Zy)test_callable_obj.<locals>.Fooc                    || _         y r   r[   )r   r:   s     r   r   z'test_callable_obj.<locals>.Foo.__init__  rw   r    c                     yNr=   r+   r#   s    r   __call__z'test_callable_obj.<locals>.Foo.__call__  r   r    N)r/   r0   r1   r   r  r+   r    r   Foor    s    		r    r  r9   r=   )r   r   r:   )r  r   r@   s      r   test_callable_objr    sb      a&CA99;#33;;=A3;;=Ar    c                    | S r   r+   r   s    r   identityr    s    Hr    c                     t        t        d      } ddg dd}ddg dd} | |      j                   | |      j                  k(  sJ y )NTr   r9      r   )rM   r  r   )r   r  r   )rJ   data1data2s      r   test_deterministic_namer    sH    8$'D"9-E"9-E;tE{/////r    c                      t        t        t        d      d      d      j                   t        t        t        d      d      d      j                  k7  sJ y )Nr   Tr   r=   r  )r   r   r   r   r+   r    r   test_sensitive_to_partialsr    sM    ,R t,Q/44/773#$/277	8	8r    c                 6   t        d      j                  j                  d      sJ t        dd      j                  j                  d      sJ t        dd      j                  dk(  sJ d }  t        |       d      j                  j                  d      sJ y )	Nr9   zint-Tr   Xr;   c                    | dz   S r   r+   r   s    r   myfuncz!test_delayed_name.<locals>.myfunc  r   r    r  )r   r   
startswithrQ   )r  s    r   test_delayed_namer    s    1:??%%f---14 %%0088813$$+++ 76?1!!,,X666r    c                 >   t        j                  d       t        j                  d      } | j                  dd      }t        |g      }t	        |j
                        j                  |j
                        sJ d t        fd|j
                  D              sJ y )Nr   rE  r   r   rH  c                t    t        | t              r| d   } | j                  d      d   j                  dd      S )Nr   -_ )r   r-   r   r   )ss    r   rQ   ztest_finalize_name.<locals>.key  s4    a!Awws|A&&sB//r    c              3  J   K   | ]  } |      j                           y wr   )isalpha).0krQ   s     r   	<genexpr>z%test_finalize_name.<locals>.<genexpr>  s     0As1v~~0s    #)r}   r   onesr   r  r3   issubsetrN  )rO  rM   r   rQ   s      @r   test_finalize_namer    s}    
 			\	*B
1AAqvv;'''0 00000r    c                 :   t        j                  d       t        j                  d      } ddlm} | j	                  dd      j                         j                         }|D cg c]  } t        t              |       }} ||d   j                         y c c}w )Nr   rE  r   )
_check_dskrF  r   rH  )
r}   r   rf  r  r  
to_delayedflattenr   r   r3   )rO  r  r  rM   xss        r   test_keys_from_arrayr    sy    
 			\	*B+
#..088:A#$	%a,'#,q/	%B	%r!uzz 
&s   $Bc                     G d d      }  | d      }|j                  dd      j                         dk(  sJ | j                  |dd      j                         dk(  sJ |j                  dd      j                         dk(  sJ | j                  dd      j                         dk(  sJ |j                  dd      j                         dk(  sJ | j                  dd      j                         dk(  sJ t	        |j                   t
        j                        sJ t	        | j                  t
        j                        sJ t	        | j                  t              sJ y )	Nc                  Z    e Zd ZdZd Zed        Zeed               Ze	ed               Z
y)+test_delayed_decorator_on_method.<locals>.Ar   c                    || _         y r   BASE)r   bases     r   r   z4test_delayed_decorator_on_method.<locals>.A.__init__  s	    DIr    c                &    | j                   |z   |z   S r   r  )r   rM   r  s      r   	addmethodz5test_delayed_decorator_on_method.<locals>.A.addmethod  s    99q=1$$r    c                &    | j                   |z   |z   S r   r  )rj   rM   r  s      r   addclassz4test_delayed_decorator_on_method.<locals>.A.addclass  s     88a<!##r    c                    | |z   S r   r+   r  s     r   	addstaticz5test_delayed_decorator_on_method.<locals>.A.addstatic  s     q5Lr    N)r/   r0   r1   r  r   r   r  classmethodr  r2   r  r+   r    r   r   r    sX    	 
	% 
	% 
		$ 
 
	$ 
		 
 
	r    r   r   r?   r   k         )r  r   r  r  r   types
MethodTyper   )r   r:   s     r    test_delayed_decorator_on_methodr    s1    ( 	
#A;;q!$$&#---;;q!Q'')S000::a##%+++::a##%+++;;q!$$&!+++;;q!$$&!+++ akk5#3#3444ajj%"2"2333 akk7+++r    c                     t        d      } t        | j                  t              sJ t        | j                  j                  t              sJ t        | j                  j                  j
                  t              sJ y )N{   )r   r   r:   r   r>   rB   r   s    r   test_attribute_of_attributer  "  sS    Aacc7###acceeW%%%acceeggw'''r    c                 >   t        j                  d       t        j                  d      } ddlm}  |g dd      } |g dd      } t	        d	       |      } t	        d
       |      }| j                  ||gd      }| j                  j                  ||       y )Npandasdask.dataframer   )Series)r:   r>   r:   categoryr   )r:   rB   r:   c                    | S r   r+   r   s    r   r   z&test_check_meta_flag.<locals>.<lambda>0      1 r    c                    | S r   r+   r   s    r   r   z&test_check_meta_flag.<locals>.<lambda>1  r  r    F)verify_meta)r}   r   r  r  r   from_delayedutilsrZ  )ddr  r:   r>   rO  rq  rB   s          r   test_check_meta_flagr  )  s    
!			-	.Bj1Aj1A		a	 B		a	 B
Re4AHHq!r    c                    | dz   S r   r+   r   s    r   modlevel_eagerr  7  s    q5Lr    c                    | dz   S r   r+   r   s    r   modlevel_delayed1r  ;      q5Lr    Fr   c                    | dz   S r   r+   r   s    r   modlevel_delayed2r  @  r  r    r@   z#3369)reason)marksc                     | d      }t        j                  t        j                  |t         j                              }|j	                         dk(  sJ y Nr=   )protocolr?   )r|  r}  r~  HIGHEST_PROTOCOLr   r@   r   s     r   test_pickler  E  s@     	
!AV\\!f.E.EFGA99;!r    c                     | d      }t        j                  t        j                  |t        j                              }|j                         dk(  sJ y r  )cloudpickler}  r~  r|  r  r   r  s     r   test_cloudpickler  S  sD     	
!A+++A8O8OPQA99;!r    c                    t        d      } | j                  j                  j                         | j                  hk(  sJ | j                  j
                  | j                  t               ik(  sJ | j                         | j                  fk(  sJ t        |       }|j                  j                  j                         | j                  |j                  hk(  sJ |j                  j
                  | j                  t               |j                  | j                  hik(  sJ |j                         |j                  fk(  sJ t        j                  dd|j                  i|g      }t        j                  t        d      5  t        d|       d d d        t        d|d      }|j                         dk(  sJ |j                  j                          y # 1 sw Y   GxY w)	Nr9   r   alias)rK   znot inr   )layerr   )r   r3   layersr   rQ   rK   r  __dask_layers__r  r   from_collectionsr}   r~   r   r   validate)d1d2hlgexplicits       r   test_dask_layersr  \  sx   	B77>> RVVH,,,77BFFCE?222BFF9,,,	2	B77>> RVVRVV$444477BFFCE266BFF8#DDDDBFF9,,,

)
)%'2661BRTQU
VC	z	2  w51H##%111MM s   ?GGc                    t        j                  d      5  t        j                  ddt        dft        dfdg       } t        d|       }d d d        t        j                         t        u sJ t        |j                   j                        dk(  sJ t        |j                   j                  d         dk(  sJ |j                   j                  d   j                  ddik(  sJ t        |g      j                         }|j                         dt        j                  |j                         d      ik(  sJ y # 1 sw Y   xY w)	Nbarr  r>   r9   r:   rA   r?   r   )r3   annotater   r  r   r   rH   r   r  r   r   optimize__dask_annotations__rF   fromkeysr'   )graphr   	optimizeds      r   %test_annotations_survive_optimizationr  o  s   	5	!  //3*C:6

 C  <>)))qvv}}"""qvv}}S!"a'''66==))eU^;;;#QC(113I))+t}}Y557?0      s   4D99Ec                     t         d        } | j                  dk(  sJ | j                  dk(  sJ  | j                  dd      dk(  sJ y )Nc                    | |z   S )This is a docstringr+   r  s     r   r   z7test_delayed_function_attributes_forwarded.<locals>.add  s     1ur    r   r  r9   r=   r?   )r   r/   __doc____wrapped__)r   s    r   *test_delayed_function_attributes_forwardedr    sV      <<5   ;;////3??1a A%%%r    c                 *   t         d        } t         d        }t         d        } | | | d                  }t        |g      j                         }t        |      dk(  sJ  | | | d                  }t        j
                  j                  ddi      5  t        |g      j                         j                         }t	        j                  |      }d d d        t              dk(  sJ t	        j                  |      k(  sJ y # 1 sw Y   4xY w)	Nc                    | dz   S r   r+   rw  s    r   r   z!test_delayed_fusion.<locals>.test      1ur    c                    | dz   S r  r+   r  s    r   test2z"test_delayed_fusion.<locals>.test2  r  r    c                    | dz   S )Nr?   r+   r  s    r   test3z"test_delayed_fusion.<locals>.test3  r  r    r   r?   zoptimization.fuse.delayedTr=   )	r   r   r'   r   r3   r  r  r  r   )r   r  r  r^   r   obj2dsk2results           r   test_delayed_fusionr    s         d2h
 C
se
$
3
3
5Cs8q==tBx!D	5t<	= $"C5)224CCEd#$ t9>><<&&&	$ $s   >D		Dc                     t        j                  d       t        j                  d       t        j                  d       ddlm}  dd lm  | d      fd       } |        y )	Ndistributedr   r  r   )gen_clusterT)clientc                j  K   j                  g dg ddd      }|j                  ddd	      }t        d
        } ||      }j                  j	                  | j                  | j                  |             d {   | j                  | j                  |             d {          y 7 07 w)N)r   r9   r=   r?   r   r9   r=   r?   )r9   r=   r?   r   r   rP   r     )	partitionvaluer=   )npartitionsr!  Tp2p)forceshuffle_methodc                    | S r   r+   r   s    r   delayed_funcz8test_p2p_as_delayed.<locals>._test.<locals>.delayed_func  s    Hr    )	from_dictshuffler   r  rZ  gatherr   )rB   r  workerstest_dfpart_dfr(  delay_dfr  s          r   _testz"test_p2p_as_delayed.<locals>._test  s     ,,51   
 //+T%/P		 
	  (
((199X.//((199W-..	
/.s$   A;B3>B/?&B3%B1
&
B31B3)r}   r   distributed.utils_testr  dask.dataframe	dataframe)r  r0  r  s     @r   test_p2p_as_delayedr4    sR    
&
 
()2
 
( 
Gr    )k
__future__r   r|  r  collectionsr   dataclassesr   r   	functoolsr   operatorr   r	   r
   typingr   r  r}   tlzr   r3   dask.bagbagrq  r   dask._task_specr   	dask.baser   dask.delayedr   r   r   dask.highlevelgraphr   dask.utils_testr   r   markfilterwarningsrN   rS   rc   re   ri   parametrizerq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r-   r  r  r  r  r  r3  r6  r>  rC  rU  rh  rm  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  paramxfailr  r  r  r  r  r  r4  r+   r    r   <module>rH     sB   "   " (  !           ) 7 7 .  * AB' C'T	      $   !46F GH	  I	 1" $ */( ""., P*.,"F uc 23 4 F(%BP"D VVc1a["b)	J"C AB0 C0*>6>>M. 
6
071"(,V( 	 	 	e  &fkk.?.?w.?.OP&fkk.?.?w.?.OP '.
!#46G	H&&&'2r    