
    biv              
      
   d dl mZ d dlZd dlZd dl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mZmZ d dlmZ d dlZd dlmZmZ d dlZd dlm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* d d
l+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9  e8d      Z: e8d      Z; e8d      Z< e8d      Z=dZ>dZ?d Z@d ZAd ZBd ZCd ZDd ZEd ZF G d de      ZGd ZHd ZIej                  j                  d       d!        ZLej                  j                  d       d"        ZMej                  j                  d       d#        ZNej                  j                  d$      d%        ZOej                  j                  d$      d&        ZPej                  j                  d$      d'        ZQej                  j                  d$      d(        ZRej                  j                  d)      d*        ZSej                  j                  d$      d+        ZTej                  j                  d$      d,        ZUej                  j                  d       d-        ZVej                  j                  d       d.        ZWd/ ZXej                  j                  d       ej                  j                   eYej                  jF                        d01      ej                  j                  ej                  d2k(  d3d45      d6                      Z]ej                  j                  d       ej                  j                   eYej                  jF                        d01      d7               Z^ej                  j                  d       ej                  j                   eYej                  jF                        d01      d8               Z_d9 Z`d: Zad; Zbd< Zcd= Zdd> Zed? Zfej                  j                  d@dAdBe>fg      dC        Zhej                  j                  dDdAi dAfdAdEdFidAfdAdAdGidGfdBe>fdBdHidHe>ffg      dI        ZidJ ZjdK Zkej                  j                  d       dL        ZldM ZmdN ZndO ZodP ZpdQ ZqdR ZrdS ZsdT Zt G dU dVe      ZudW ZvdX Zwej                  j                  dYdZ[      ej                  j                  ej                  j                  d\d]d^g      d_                      Zzd` Z{da Z|db Z}ej                  j                  dcdd      de        Z~y)f    )annotationsNOrderedDict)Executor)addmul)
NamedTuple)mergepartial)DaskMethodsMixin	clone_keycomputecompute_as_if_collectionget_collection_namesget_name_from_keyget_scheduleris_dask_collectionnamed_schedulersoptimizepersistreplace_name_in_keytokenizeunpack_collections	visualize)validate_key)Delayeddelayed)Profiler)HighLevelGraph)	key_splittmpdirtmpfile)decimport_or_noneinc
dask.arraydask.dataframenumpypandas)g333333?foo)   h2c                      G d d      } t        d      dz   }t        |      sJ t        d      rJ t         | i             sJ t        |       rJ y )Nc                      e Zd Zd Zd Zy)0test_is_dask_collection.<locals>.DummyCollectionc                    || _         y Ndask)selfdsks     O/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/tests/test_base.py__init__z9test_is_dask_collection.<locals>.DummyCollection.__init__7   s	    DI    c                    | j                   S r1   r2   r4   s    r6   __dask_graph__z?test_is_dask_collection.<locals>.DummyCollection.__dask_graph__:       99r8   N)__name__
__module____qualname__r7   r;    r8   r6   DummyCollectionr/   6   s    		r8   rA         )r   r   )rA   xs     r6   test_is_dask_collectionrE   5   s[      	
QAa   !!$$$ob1222!/2222r8   c                     t        j                  d      } t        j                  d      }| j                  g d      }|j                  |      }t	        |      rJ t	        |      sJ y )Nr)   r'   rB   rC   r+   )pytestimportorskipSeriesfrom_pandasr   )pddddfddfs       r6   !test_is_dask_collection_dask_exprrP   D   s[    			X	&B			-	.B	9	B
..
C!"%%%c"""r8   c                    t        j                  d       t        j                  d      }  G d dt        j                  j                        }| j
                  j                   |             }t        j                  t        d      5  |j                          d d d        t        j                  t        d      5  |j                          d d d        t        |      sJ y # 1 sw Y   KxY w# 1 sw Y   #xY w)Nr)   zdask.dataframe.dask_exprc                  0    e Zd Zed        Zd Zd ZddZy)Ptest_is_dask_collection_dask_expr_does_not_materialize.<locals>.DoNotMaterializec                     y)Nr   r@   r:   s    r6   _metazVtest_is_dask_collection_dask_expr_does_not_materialize.<locals>.DoNotMaterialize._metaS   s    r8   c                    J d       Nmust not reachr@   r:   s    r6   __dask_keys__z^test_is_dask_collection_dask_expr_does_not_materialize.<locals>.DoNotMaterialize.__dask_keys__W       ***5r8   c                    J d       rW   r@   r:   s    r6   r;   z_test_is_dask_collection_dask_expr_does_not_materialize.<locals>.DoNotMaterialize.__dask_graph__Z   rZ   r8   c                    J d       rW   r@   )r4   fuses     r6   r   zYtest_is_dask_collection_dask_expr_does_not_materialize.<locals>.DoNotMaterialize.optimize]   rZ   r8   N)F)r=   r>   r?   propertyrU   rY   r;   r   r@   r8   r6   DoNotMaterializerS   R   s#    		 
		+	+	+r8   r_   rX   match)rH   rI   r3   _exprExpr_collectionnew_collectionraisesAssertionErrorrY   r;   r   )dxr_   colls      r6   6test_is_dask_collection_dask_expr_does_not_materializerj   N   s    
!			7	8B+4::?? + >>(()9);<D	~-=	> 	~-=	>  d###  s   	C$=C0$C-0C9c            	     :  
 t         j                   G d d             
 G d dt              t        d      dz   } | dz   }| dz   }
fd} || ||d	 | ||fD              }t	        | \  }}t        |      d
k(  sJ  |g d      } |dddg d      }||k(  sJ t	        |ddi\  }}t        |      dk(  sJ  ||      |k(  sJ t	        dddd
i      \  }}|rJ  ||      dddd
ifk(  sJ d }	t	        | |	df|	dd
fgd      \  }} ||        ||	dfg       y )Nc                      e Zd ZU ded<   y)+test_unpack_collections.<locals>.ADataClassintaNr=   r>   r?   __annotations__r@   r8   r6   
ADataClassrm   k   s    r8   rr   c                      e Zd ZU ded<   y),test_unpack_collections.<locals>.ANamedTuplern   ro   Nrp   r@   r8   r6   ANamedTuplert   o   s    r8   ru   rB      rC   c                    | |d| | |ddd|ggddd|dfd| dd	hd
t        d| fg      d |       d| fd |       i
|f}|S )Nro   brB   rC   c
   der+   fg)ro   hir   )ro   rx   ry   iteratortrr   ru   s        r6   buildz&test_unpack_collections.<locals>.buildv   s}    Q1aQC[RaVaAY[3(,Z!_j!_[1% 
$ r8   c              3      K   | ]  }|  y wr1   r@   ).0r   s     r6   	<genexpr>z*test_unpack_collections.<locals>.<genexpr>   s     010s   r+   )~a~b~cr   r   r   traverseFro   c                     t        d      )NzShouldn't have been called)
ValueError)argss    r6   failz%test_unpack_collections.<locals>.fail   s    566r8   r   )dataclasses	dataclassr	   r   r   len)ro   rx   ry   r   r   collectionsrepackresultsolr   rr   ru   s             @@r6   test_unpack_collectionsr   j   sz     j  	
QA	AA	AA* Aq0q!Qi01D,d3K{q    &'F
dD"4
5CS== -dCUCK{q   +$&&& -QC8<K?+1a#q"22227 -	D!9a|nuK ;
T1I;r8   c                     G d d      } t        j                  t              5  t        t	                      d d d        t        j                  t              5  t         | ddidg             d d d        t        j                  t              5  t         | ddidg             d d d        t        j                  t              5  t         | ddidg             d d d        t         | i g             t               k(  sJ t         | dt        fddt        fddd	d
didt        fdt        fdd
ggg            h dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nc                      e Zd Zd Zd Zd Zy)2test_get_collection_names.<locals>.DummyCollectionc                     || _         || _        y r1   )r3   keysr4   r5   r   s      r6   r7   z;test_get_collection_names.<locals>.DummyCollection.__init__   s    DIDIr8   c                    | j                   S r1   r2   r:   s    r6   r;   zAtest_get_collection_names.<locals>.DummyCollection.__dask_graph__   r<   r8   c                    | j                   S r1   )r   r:   s    r6   rY   z@test_get_collection_names.<locals>.DummyCollection.__dask_keys__   r<   r8   N)r=   r>   r?   r7   r;   rY   r@   r8   r6   rA   r      s    			r8   rA   rB   rC   r@   rB   a-1b-2r+   ry      >   ry   r   r   )rH   rf   	TypeErrorr   objectseth1r,   )rA   s    r6   test_get_collection_namesr      s[   	 	 
y	! 'VX&' 
y	! ;_aVaS9:;	y	! =_b!Wrd;<=	y	! A_dAY?@A  B 78CEAAA  R[!eR[!UAsA>r{UBK456	

 
  ' '; ;= =A As/   EEEE)EEE&)E2c                    t        d      dk(  sJ t        d      sJ d       t        dt        t        f      dk(  sJ t        j                  t
              5  t        d       d d d        t        j                  t
              5  t        d       d d d        t        j                  t
              5  t        d       d d d        y # 1 sw Y   dxY w# 1 sw Y   CxY w# 1 sw Y   y xY w)Nr*   foo-123rB   r@   r   )r   r   r,   rH   rf   r   r@   r8   r6   test_get_name_from_keyr      s    U#u,,,Y'22'iR01Y>>>	y	! !	y	! "	y	!  $   	     s$   CC1CCCC'c                 H   t        di       dk(  sJ t        dddi      dk(  sJ t        dddd      dk(  sJ t        dddi      dk(  sJ t        dt        t        fddi      dt        t        fk(  sJ t        j                  t
              5  t        di        d d d        t        j                  t
              5  t        d	i        d d d        t        j                  t
              5  t        d
i        d d d        y # 1 sw Y   fxY w# 1 sw Y   DxY w# 1 sw Y   y xY w)Nr*   barbazasd)r*   r   r   zbar-456rB   r@   r   )r   r   r,   rH   rf   r   r@   r8   r6   test_replace_name_in_keysr      s    ub)U222uuen5>>>ueE&BCuLLLy9i*@AYNNN	2r2Y4FG

L   
 
y	! #Ar"#	y	! $B#$	y	! &D"%& &	# #$ $& &s$   D <D*D D	DD!c                      e Zd ZdZ eej                  j                        ZdZ	d Z
d Zd Zd Zd Zd Zd	 Zd
 Zeddd       Zy)Tuple_dask_keysNc                     || _         || _        y r1   r   r   s      r6   r7   zTuple.__init__   s    

r8   c                    t        |t              st        S t        t        | j                  |j                        | j
                  |j
                  z         S r1   )
isinstancer   NotImplementedr
   r   r   )r4   others     r6   __add__zTuple.__add__   s;    %'!!U4::u{{3TZZ%++5MNNr8   c                    | j                   S r1   )r   r:   s    r6   r;   zTuple.__dask_graph__       zzr8   c                    | j                   S r1   r   r:   s    r6   rY   zTuple.__dask_keys__   r   r8   c                *    t        t        |             S r1   )tupler   r:   s    r6   __dask_layers__zTuple.__dask_layers__   s    )$/00r8   c                    | j                   S r1   r   r:   s    r6   __dask_tokenize__zTuple.__dask_tokenize__   r   r8   c                    t         dfS )Nr@   )r   r:   s    r6   __dask_postcompute__zTuple.__dask_postcompute__  s    byr8   c                <    t         j                  | j                  ffS r1   )r   _rebuildr   r:   s    r6   __dask_postpersist__zTuple.__dask_postpersist__  s    ~~

},,r8   )renamec               Z    |r|D cg c]  }t        ||       }}t        | |      S c c}w r1   )r   r   )r5   r   r   keys       r6   r   zTuple._rebuild	  s3    @DE'V4EDES$ Fs   ()r=   r>   r?   	__slots__staticmethodr3   threadedget__dask_scheduler____dask_optimize__r7   r   r;   rY   r   r   r   r   r   r@   r8   r6   r   r      sb    "I%dmm&7&78O
1- &*    r8   r   c                 H	   dt         fddt        fdi} dt         ft        dt         fdt        ffdt        ft        dt         fdfi}|j                  |        dt        dt         fdt        ffi}|j                  |       t	        i g       }t	        | dt         fdt        fg      }t	        |dt         fdt        fg      }t	        |dg      }||z   |z   |z   }t        j                  t              5  d|_        d d d        t        |      sJ t        |      sJ t        |      sJ t        |      sJ t        |      sJ t        |      t        |      k(  sJ t        |      t        |      k(  sJ t        |      t        |      k(  sJ t        |      t        |      k(  sJ t        |      t        |      k(  sJ t        |||||fD ch c]  }t        |       c}      dk(  sJ t        |      t               k(  sJ t        |      dhk(  sJ t        |      dhk(  sJ t        |      dhk(  sJ t        |      h dk(  sJ |j                         dk(  sJ |j                         d	k(  sJ |j                         d
k(  sJ |j                         dk(  sJ t        j                  |d|i||g      ddd	id
dgfk(  sJ |j                         dk(  sJ |j!                         }	t#        |	t              sJ |	j$                  |j$                  k(  sJ t'        |	j(                  j+                               g dk(  sJ |	j                         dk(  sJ t        j                   ||||      \  }
}}}|j$                  |j$                  k(  sJ |j(                  dt         fddt        fdik(  sJ |j                         d
k(  sJ ||z   |z   }|j                         dk(  sJ |j-                         \  }} |i g|dddii}|j                         dk(  sJ |j-                         \  }} |dt         fddt        fdig|dddii}|j                         dk(  sJ |j-                         \  }} |ddig|dddii}|j                         dk(  sJ y # 1 sw Y   xY wc c}w )NrD   rB   rC   yzrv   >   rD   r   r   r@   )rB   rC   )r+   r   )   )rB   rC   r+   r   r   r+   r   r   ww3x3rz      )rz   r   z3F   )r   )r   r,   r   updater   rH   rf   AttributeErrorr*   r   r   r   r   r   r   r3   r   r   r   sortedr   valuesr   )r5   dsk2dsk3r   rD   r   r   r   ri   t2w2x2y2z2t3rebuildr   r   r   r   s                       r6   test_custom_collectionr     s   9a#rA
&C"Ic2Yb	2S"Ic2YPQ?RSDKK#Ry3),-DKKb"AcS"IRy)*Adc2Yb	*+AdSEA	A	AA 
~	&  a   a   a   a   a    A;(1+%%%A;(1+%%%A;(1+%%%A;(1+%%%A;(1+%%%Aq!Q?;4;<AAA  "ce+++"se+++"se+++"se+++"o555 99;"99;&   99;&   99;$<<S!Ha+,sFmVT5R0SSSS99;/))) 
Bb%   88qww"((//#$777::<?***\\!Q1-NBB88qww88b	1sBi3333::<6!!!	b2B::<?*** **,MGT		/d	/C;	/B::<2**,MGT	4*b4*b1	MD	M#t	MB::<8###**,MGT	$	7d	7C;	7B::<5   y " <s   /RRRc                 V   ddl m}  t        j                  t	        d      d      }t        t        d      }t        t        d      }|j                  |      j                  |      }g  | fd	      5  |j                  d
d       d d d        t        D cg c]  }d|d   v s| c}      dk(  sJ t        D cg c]  }d|d   v s| c}      dk(  sJ g  | fd	      5  |j                  d
       d d d        t        D cg c]  }d|d   v s| c}      dk(  sJ t        D cg c]  }d|d   v s| c}      dk(  sJ t        D cg c]  }d|d   v s| c}      dk(  sJ y # 1 sw Y   xY wc c}w c c}w # 1 sw Y   xY wc c}w c c}w c c}w )Nr   )Callbackd   r   npartitionsrB   rC   c                &    j                  |       S r1   appendr   r   r   s     r6   <lambda>z%test_compute_no_opt.<locals>.<lambda>j      T[[-= r8   )pretasksingle-threadedF)	scheduleroptimize_graphr   r   c                &    j                  |       S r1   r   r   s     r6   r   z%test_compute_no_opt.<locals>.<lambda>p  r   r8   r      zadd-from_sequence-mul)dask.callbacksr   dbfrom_sequenceranger   r   r   mapr   r   )r   rx   add1mul2okr   s         @r6   test_compute_no_optr  ^  s    (
s3A3?D3?D	dAD	=	> E			-e	DE41a5AaD=12a77741a5AaD=12a777D	=	> /			-	./ 41a5AaD=12a77741a5AaD=12a7774Ca#:ad#BCDIIIE E11/ / 21CsT   6E:F(FFF,FFF6F!F!F&)F&:FFznot dac                    t         j                  d      j                  d      } t        j	                  | d      }|dz   }|dz   }t        ||      \  }}t         j                  || dz         sJ t         j                  || dz         sJ y )Nr   rz   rz   rv   rv   chunksrB   rC   )nparangereshapeda
from_arrayr   allclose)arrdarrdarr1darr2out1out2s         r6   test_compute_arrayr  y  s~    
))C.
 
 
*C==V=,D1HE1HE&JD$;;tS1W%%%;;tS1W%%%r8   c                    ddl m}  t        j                  d      j	                  d      }t
        j                  |d      }|dz   |j                  d      z
  }|j                         } | ||       t        |j                        j                  |j                        sJ t        |j                        |j                  k(  sJ y )	Nr   	assert_eqr   r  r	  r
  rB   )axis)dask.array.utilsr  r  r  r  r  r  meanr   r   r3   issubsetr   r   )r  r  rD   r   s       r6   test_persist_arrayr     s    *
))C.
 
 
*C
c&)A	
Q!&&a&. A			AaOqvv;'''qvv;!--'''r8   c                    t         j                  dt        d      } | j                         \  }}t        j                  ddg      t        j                  ddg      d} ||g|d| j                  dii}t        |t         j                        sJ |j                  dk(  sJ |j                         d	d
gk(  sJ t         j                  j                  |g d       y )Nr   rC   )dtyper  rB   r+   rx   r   rx   rB   r   rx   r$  r%  rB   rC   r+   r   )r  zerosrn   r   r  arraynamer   ArrayrY   utilsr  ro   r   r   r5   rx   s        r6   test_persist_array_renamer-    s    
#a(A**,MGTXXq!f%1a&1A
BC1d1AFFC=1Aa"""66S==??8 4444HHq,'r8   znot ddc                    t         j                  g dg dd      } t        j                  | d      }|j                  dz   }|j                  |j
                  z   }t        ||      \  }}t        j                  j                  || j                  dz          t        j                  j                  || j                  | j
                  z          y )Nr&  rv   rv   r+   r+   ro   rx   rC   r   rB   )	rL   	DataFramerM   rK   ro   rx   r   r+  r  )rN   rO   ddf1ddf2r  r  s         r6   test_compute_dataframer4    s    	L|<	=B
...
+C5519D55355=Dt$JD$HHtRTTAX&HHtRTTBDD[)r8   c                    t         j                  g dg dd      } t        j                  | d      dz  }t	        |j                               dk(  sJ |j                         }t        |t        j                        sJ t	        |j                               dk(  sJ t        j                  j                  ||       y )Nr&  )rv      r   r   r0  rC   r   r   )
rL   r1  rM   rK   r   r;   r   r   r+  r  )rN   r2  r3  s      r6   test_persist_dataframer7    s    	L|<	=B>>"!>,q0Dt""$%***<<>DdBLL)))t""$%***HHtT"r8   c                 v   t         j                  g d      } t        j                  | d      dz  }t	        |j                               dk(  sJ |j                         }t        |t        j                        sJ t	        |j                               dk(  sJ t        j                  j                  ||       y )Nr&  rC   r   r   )
rL   rJ   rM   rK   r   r;   r   r   r+  r  )dsdds1dds2s      r6   test_persist_seriesr<    s    	<	 B>>"!>,q0Dt""$%***<<>DdBII&&&t""$%***HHtT"r8   c                    dd l m}  t        j                  g d      }| j	                  |d      j                         }t        |j                               dk(  sJ |j                         }t        || j                        sJ t        |j                               dk(  sJ | j                  j                  ||       y )Nr   r&  rC   r   rv   )dask.dataframe	dataframerL   rJ   rK   minr   r;   r   r   Scalarr+  r  )rM   r9  r:  r;  s       r6   test_persist_scalarrB    s    	<	 B>>"!>,002Dt""$%***<<>DdBII&&&t""$%***HHtT"r8   znot dd or not dac                    t         j                  d      j                  d      } t        j	                  | d      dz   }t
        j                  g dg dd      }t        j                  |d	
      j                  d	z   }t        j                  t        d      5  t        ||      \  }}d d d        t         j                  | dz         sJ t        j                  j!                  |j                  d	z          y # 1 sw Y   RxY w)Nr   r  r	  r
  rB   r&  r/  r0  rC   r   zmixed.*materializer`   )r  r  r  r  r  rL   r1  rM   rK   ro   rH   warnsUserWarningr   r  r+  r  )r  r  rN   rO   arr_outdf_outs         r6   test_compute_array_dataframerH    s    
))C.
 
 
*C==V=,q0D	L|<	=B
...
+
-
-
1C	k)=	> -!$,-;;wa(((HHvrttax(- -s   C;;Dc                     t         j                  t        j                  j                  d      dj	                         g      } t
        j                  | d       y )Nr+   rB      ödatacolumnsr   r   )rL   r1  r  randomencoderM   rK   rN   s    r6   -test_compute_dataframe_valid_unicode_in_bytesrR    s;    	299++F3dkkm_	MBNN21N%r8   c                     t         j                  t        j                  j                  d      t         j	                  dgd            } t
        j                  | d       y )NrJ  u   r   )r"  rL  r   r   )rL   r1  r  rO  IndexrM   rK   rQ  s    r6   &test_compute_dataframe_invalid_unicoderU    sL     
YYf%rxx
(x/S 
 
B NN21N%r8   c                 *   t         j                  dd      t        j                  g d      t	        j
                  t        fd       t        d      \  } }t        j                  | t        j                  d            sJ |g dk(  sJ y )Nrv   rC   r
  rG   c                     t               S r1   )r   )rx   rD   s   r6   r   z(test_compute_array_bag.<locals>.<lambda>  s    gam r8   r   r   )
r  r  r   r   rH   rf   r   r   r  r  )xxbbrx   rD   s     @@r6   test_compute_array_bagrZ    so    
		!A	A
#A
MM*34Q%67FB;;r299Q<(((??r8   c                     t         j                  dd      } d}t        | |      \  }}|| j                         k(  j                         sJ ||k(  sJ t        d      dk(  sJ y )Nrv   rC   r
  rz   rv   )r  r  r   all)rD   r   rX  yys       r6   test_compute_with_literalr_    sb    
		!A	A
AQ]FB!))+""$$$7N71:r8   c                     t        d      dz   } | dz   }| dz   }t        | dd|gd|df      dg dddfk(  sJ t        | |g|d	      }|d
   d
   | u sJ |d
   d   |u sJ |d   dk(  sJ y )NrB   rv   rC   r0  r6  rB   rC   r   r   rC   Fr   r   r   r   r   )ro   rx   ry   ress       r6   test_compute_nestedre    s    
QA	AA	AA!Q+aV4i 9   
 1a&!e
,Cq6!9>>q6!9>>q6Q;;r8   z'graphviz exception with Python -OO flag)reasonwin32z:graphviz/pango on conda-forge currently broken for windowsF)rf  strictc            
        t        j                  d       t        j                  d       t               5 } t        j	                  dd      }|j                  t        j                  j                  | d             t        j                  j                  t        j                  j                  | d            sJ |j                  t        j                  j                  | d	             t        j                  j                  t        j                  j                  | d	            sJ t        |d
dt        j                  j                  | d             t        j                  j                  t        j                  j                  | d            sJ d
t        ddft        dd
fd}t        ||t        j                  j                  | d             t        j                  j                  t        j                  j                  | d            sJ t        |g d      }t        |t        j                  j                  | d             t        j                  j                  t        j                  j                  | d            sJ t        |g d      }t        |t        j                  j                  | d      d       t        j                  j                  t        j                  j                  | d            sJ t        |t        j                  j                  | d      d       t        j                  j                  t        j                  j                  | d            sJ t        j                  j                  d      5  t        |t        j                  j                  | d             t        j                  j                  t        j                  j                  | d            sJ 	 d d d        t        j                   t"        d      5  t        |d       d d d        |j                  d        d d d        y # 1 sw Y   UxY w# 1 sw Y   0xY w# 1 sw Y   y xY w)Ngraphvizipycytoscaperv   rC   r
  mydaskfilename
mydask.pngz
mydask.pdfrB   ro   )ro   rx   ry   cyt	cytoscape)rn  enginezcyt.htmlz	cyt2.html)visualization__enginez	cyt3.htmlznot-realr`   )rr  )rH   rI   r!   r  r  r   ospathjoinexistsr   r   r   r3   configr   rf   r   )r{   rD   r5   s      r6   test_visualizery    s    
#
'	 ##QIIaI"	RWW\\!X67ww~~bggll1l;<<<	RWW\\!\:;ww~~bggll1l;<<<!QBGGLLL$ABww~~bggll1l;<<<S#qMc1>!S277<<<#@Aww~~bggll1l;<<<#'!bggll1l;<ww~~bggll1l;<<<#'!bggll1e4[Iww~~bggll1j9:::!bggll1k:>Rww~~bggll1k:;;;[[__;_? 	@a"'',,q+">?77>>"'',,q+">???	@ ]]:Z8 	,a
+	,
 	
T"G## ##4	@ 	@	, 	,=## ##s=   MQ*A+Q>#Q*!Q/Q*Q	Q*Q'	#Q**Q3c                 @   t        j                  d      } t               5 }t        j	                  dd      }|j
                  j                  t        j                  j                  |d            }t        || j                        sJ 	 d d d        y # 1 sw Y   y xY w)Nrj  rv   rC   r
  ro  rm  )rH   rI   r!   r  r  r3   r   rt  ru  rv  r   Digraph)rj  r{   rD   vizs       r6   test_visualize_highlevelgraphr}  @  s~    
 "":.H	 1QIIaI"ffQ(EF#x//000	1 1 1s   A*BBc                 ^   t        j                  d       t        j                  d       t        j                  dd      } t	        d      5 }| j                  d|d	
       t        |      5 }|j                         }d d d        dv sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrj  zmatplotlib.pyplotrv   rC   r
  dot)	extensionorderRdBu)colorrn  cmapzcolor="#)rH   rI   r  r  r"   r   openread)rD   fnr}   texts       r6   test_visualize_orderr  M  s    
 
#
+,
		!A	A	5	! "R	'BV<"X 	668D	T!!!	" "	 	" "s$    B#.B?B#B 	B##B,c                p    t        |       } | D ]%  }| |   d   t        k(  st        f| |   dd  z   | |<   ' | S )Nr   rB   )dictr%   r#   )r5   r   r   s      r6   
inc_to_decr  \  sK    
s)C -s8A;#vC,CH- Jr8   c                     t        j                  t              d      }  t        j                  t              |       }| |z   }t        | ||d      \  }}}}|dk(  sJ t	        |j                         }t	        |j                         |k(  sJ t	        |j                         |k(  sJ t        j
                  |||      t        j
                  | ||      k(  sJ y NrB   )r3   r   r%   r   r  r   )rD   r   r   r   r   r   constantr5   s           r6   test_optimizer  d  s    S!AS!A	AA#Aq!Q/BBq== rww-C=C=C <<B#t||Aq!'<<<<r8   c                     t        j                  t              d      }  t        j                  t              |       }| |z   }t        | dd|gd|df      }|d   d   }|d   d   d   }|d   d   }t	        |t
              sJ t	        |t
              sJ t	        |t
              sJ t        |j                         t        |j                         cxk(  rt        |j                         k(  sJ  J t        | dg dddfk(  sJ t        | |g|d	
      }|d   d   | u sJ |d   d   |u sJ |d   j                         dk(  sJ y )NrB   rC   r0  r   ro   rx   rG   )rv   rC   Fr   rv   )r3   r   r%   r   r   r   r  r   )ro   rx   ry   r   a2b2c2rd  s           r6   test_optimize_nestedr  u  sM   S!AS!A	AAAQ1I.A7F	3B	3	B	1Bb'"""b'"""b'"""=DM:T"'']:::::Fai 8&AAAA
Aq61u
-Cq6!9>>q6!9>>q6>>q   r8   c                     d} t        j                  t        j                  d| g      }t	        t        |j                                     }d|v sJ g d}|D ]  }||vrJ  y)zI
    Startup time: `import dask` should not import too many modules.
    zYif 1:
        import dask
        import sys

        print(sorted(sys.modules))
        -cr3   )r&   r'   r(   r)   partds3fsdistributedN)
subprocesscheck_outputsys
executabler   evaldecode)codeoutmodules	blacklistmods        r6   test_default_importsr    so    D 
!
!3>>4">
?C$szz|$%GWI  "'!!!"r8   c                 (    t        ddd      dk(  sJ y )NrB   rC   r+   rG   )r   r@   r8   r6   test_persist_literalsr    s    1ay(((r8   c                    t        d      dz   } | dz   }| dz   }t        | dd|gd|df      }t        |d   d   t              sJ t        |d   d   d   t              sJ t        |d   d   t              sJ t	        | dg d	dd
fk(  sJ t        | |g|d      }|d   d   | u sJ |d   d   |u sJ |d   j	                         dk(  sJ y )NrB   rv   rC   r0  r   ro   rx   r6  ra  rb  Fr   r   r   r   r   r   r   )ro   rx   ry   r   rd  s        r6   test_persist_nestedr    s    
QA	AA	AA1Aq!9-1v6FfQing...fQinQ'111fQilG,,,Fai 8&AAAA
1a&!e
,Cq6!9>>q6!9>>q6>>q   r8   c                 \   t        d      }  t        t              |       } t        t              |      }t        |      \  }t        |t              sJ |j
                  |j
                  k(  sJ t        |j                        dk(  sJ |j                         |j                         k(  sJ y r  )	r   r%   r   r   r   r   r   r3   r   )x1r   r   rX  s       r6   test_persist_delayedr    s    	B	b	B	b	BBKERb'"""66RVVrww<1::<2::<'''r8   r   ro   za-123c                    t        | | dddi      }|j                         dk(  sJ |j                         }|j                         dk(  sJ |j                  | k(  sJ t	        |j
                        | dik(  sJ y )Nrx   rB   )r   r   r   r   r  r3   )r   r{   dps      r6   test_persist_delayed_custom_keyr    st    c3Q'(A99;!	
B::<166S===S!H$$$r8   zkey,rename,new_keyry   r{   rx   zb-123c                   t        | | di      }|j                         dk(  sJ |j                         \  }} ||dig|d|i}|j                         dk(  sJ |j                  |k(  sJ t	        |j
                        |dik(  sJ y )NrB   rC   r   )r   r   r   r   r  r3   )r   r   new_keyr{   r   r   r  s          r6   test_persist_delayed_renamer    s     	c1XA99;!**,MGT	'1	4	4V	4B::<166W=WaL(((r8   c                     t        d      } t        |       \  }t        |t              sJ |j	                         dk(  sJ y r  r  )rD   rX  s     r6   test_persist_delayedleafr    s:    
AAJERb'"""::<1r8   c                      G d d      } t        |       j                  }t        |      \  }t        |t              sJ |j                         dk(  sJ y )Nc                      e Zd ZdZy)#test_persist_delayedattr.<locals>.CrB   N)r=   r>   r?   rD   r@   r8   r6   Cr    s    r8   r  rB   )r   rD   r   r   r   r   )r  rD   rX  s      r6   test_persist_delayedattrr    sJ      	
AAJERb'"""::<1r8   c                 b   t         j                  dd      dz   } t        j                  g d      j	                  t
              }t        j                  t              5  t        | |       d d d        t        | |d      \  }}t        |t         j                        sJ t        |t        j                        sJ |j                  | j                  k(  sJ |j                  |j                  k(  sJ t        |j                        |j                   cxk(  rt        | j                        k  sJ  J t        |j                        |j                   cxk(  rt        |j                        k  sJ  J t"        j%                  | |      sJ t'        |      t'        |      k(  sJ y # 1 sw Y   ;xY w)Nrv   rC   r
  rB   rG   r   r   )r  r  r   r   r  r%   rH   rf   r   r   r   r*  Bagr)  r   r3   r   r  r  list)rD   rx   rX  rY  s       r6   test_persist_array_bagr    sK   
		!A	"A
#'',A	z	" 1 Q%67FBb"((###b"&&!!!77aff77affrww<2>>7CK77777rww<2>>7CK77777;;q"7d2h s   F$$F.c                 j   t        j                  g dd      j                  d       } t        | j	                               dk(  sJ | j                  d      }t        |t         j                        sJ t        |j	                               dk(  sJ t         j                  j                  | |       y )NrG   rC   r   c                    | dz  S NrC   r@   rD   s    r6   r   z"test_persist_bag.<locals>.<lambda>  
    Q r8   r   syncr   )
r   r   r  r   r;   r   r   r  r+  r  r0  s     r6   test_persist_bagr    s    
266GAq!"a'''			F	#Aa   q!"a'''HHq!r8   c                    t        j                  g dd      j                  d       j                         } t	        | j                               dk(  sJ | j                  d      }t        |t         j                        sJ t	        |j                               dk(  sJ t         j                  j                  | |       y )	NrG   rC   r   c                    | dz  S r  r@   r  s    r6   r   z#test_persist_item.<locals>.<lambda>  r  r8   r   r  r   rB   )r   r   r  r@  r   r;   r   r   Itemr+  r  r0  s     r6   test_persist_itemr    s    
266GKKMAq!"a'''			F	#Aa!!!q!"a'''HHq!r8   c                 h   t        j                  g dd      } | j                         \  }}dgddgd} ||g|d| j                  d	ii}t	        |t         j
                        sJ |j                  d	k(  sJ |j                         d
dgk(  sJ t         j                  j                  |g d       y )NrG   rC   r   r   rv   r6  r#  r   rx   r$  r%  )r   rv   r6  )	r   r   r   r)  r   r  rY   r+  r  r,  s        r6   test_persist_bag_renamer    s    
2A**,MGTSQF
+C1d1AFFC=1Aa   66S==??8 4444HHq)$r8   c                 L   t        j                  g d      j                         } | j                         \  }} |ddig|d| j                  dii}t        |t         j                        sJ |j                         dgk(  sJ t         j                  j                  |d       y )NrG   rD   r   r   )
r   r   r@  r   r)  r   r  rY   r+  r  )ro   r   r   rx   s       r6   test_persist_item_change_namer  (  s    
#'')A**,MGTa6466Aa!!!??%%%HHq!r8   c                    t        j                  d       t        j                  d      } | j                  dd      }d }ddlm}  ||d	z   t
        j                  d      d	z          t        j                  j                  |
      5   ||d	z   t
        j                  d      dz  d	z   dz  d       d d d         ||d	z   t
        j                  d      d	z          t        j                  dd      }t        j                  j                  |
      5  t        j                  |d	z   |j                  t              d      \  }} ||t
        j                  d      dz  d	z   dz         d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr(   r&   rz   r\  r
  c                    | j                         D ci c]+  \  }}|t        |      j                  d      s	t        d|fn|- c}}S c c}}w )NfinalizerC   )itemsr    
startswithr   )r5   r   r  vs       r6   optimize_doublez.test_optimize_globals.<locals>.optimize_double7  sL     		
1 )A,"9"9*"EQ{1L
 	
 
s   0Ar   r  rB   )array_optimizerC   F)check_chunksr   r   r   )rH   rI   onesr  r  r  r3   rx  r   r   r   r   r  r%   )r  rD   r  r  rx   rX  rY  s          r6   test_optimize_globalsr  1  sB   
 			\	*B
4 A
 +a!eRWWR[1_%		8 H!a%"''"+/A-2GH a!eRWWR[1_%
#A		8 1a!eQUU3Z;LMB"rwwr{Q*a/01 1H H1 1s   	+E5AF5E>F
c                 8   t        j                  d       t        j                  d      } | j                  dd      }|d d dd d d d	   dz   fd
}t        j                  j                  d |      5  j                          d d d        y # 1 sw Y   y xY w)Nr(   r&   rz   r\  r
  	   rB   r   rC   c                    t        | j                               t        j                        dz   k(  sJ t        j                  | |      S r  )r   r;   r3   r   )r5   r   r   s     r6   my_getz"test_optimize_None.<locals>.my_getT  s<    3%%'(CK!O;;;xxT""r8   )r  r   )rH   rI   r  r3   rx  r   r   )r  rD   r  r   s      @r6   test_optimize_Noner  M  s    
 			\	*B
4 A	"1a
3Q3!A#
 
	? 			  s   6BBc                     d } | t         d<    t        t              d      }	 |j                         dk(  sJ |j                  d      dk(  sJ t        j
                  j                  d      5  |j                         dk(  sJ 	 d d d        |j                         dk(  sJ t        j
                  j                  d      5  |j                  d      dk(  sJ 	 d d d        t         d= y # 1 sw Y   gxY w# 1 sw Y   xY w# t         d= w xY w)Nc                    dgS )N{   r@   )r5   r   kwargss      r6   schedulez(test_scheduler_keyword.<locals>.schedule^  s	    ur8   r*   rB   rC   r   r  threads)r   r   r%   r   r3   rx  r   )r  rD   s     r6   test_scheduler_keywordr  ]  s     'UQA$yy{ayy5y)S000[[__u_- 	&99;#%%%	&yy{a[[__u_- 	799y91Q666	7 U#	& 	&	7 	7 U#s<   AD /C,=D C8D ,C51D 8D=D 	Dc                      t        t              d      } t        j                  t              5 }| j                  t        j                         d d d        dt        j                        v sJ y # 1 sw Y   #xY w)NrB   r   z
scheduler=)
r   r%   rH   rf   r   r   r3   r   strvalue)rD   infos     r6   test_raise_get_keywordr  s  s^    QA	y	!  T			dhh	  3tzz?***   s   !A22A;c                      e Zd ZdZy)
MyExecutorN)r=   r>   r?   _max_workersr@   r8   r6   r  r  |  s    Lr8   r  c                    t               J t        t        j                  j                        t        j                  j                  u sJ t        d      t        j                  j
                  u sJ t        d      t        j                  j                  u sJ t        t        t        j                  j                              sJ t        t        t                           sJ t        j                  j                  d      5  t               t        j                  j
                  u sJ 	 d d d        t               J y # 1 sw Y   xY w)Nr   r  r  )r   r3   localget_syncr   r   callablesynchronous_executorr  rx  r   r@   r8   r6   test_get_schedulerr    s    ?"""4::#6#674::;N;NNNN9-1B1BBBB6*djj.A.AAAAMDJJ,K,KLMMMMJL9:::	9	- 4$--"3"33334?"""4 4s   'EEc                 p    dgfd}  t        d              j                  |       dk(  sJ d   sJ y )NFc                :    dd<   t        j                  | |      S )NTr   )r3   r   )r5   r   r   r  calleds       r6   r   z$test_callable_scheduler.<locals>.get  s    q	xxT""r8   c                      yr  r@   r@   r8   r6   r   z)test_callable_scheduler.<locals>.<lambda>  s    r8   r   rB   r   rc  )r   r  s    @r6   test_callable_schedulerr    sC    WF# 79''#'6!;;;!99r8   rz   rv   )rerunsreruns_delayr   r  	processesc                    t        d      t        j                        }d}t        |      D cg c]
  } |d       }}t        j
                  j                  |d      5  t               5 }t        |d| i d d d        d d d        j                  D ch c]  }|j                   }}t        |      |k(  sJ y c c}w # 1 sw Y   JxY w# 1 sw Y   NxY wc c}w )NF)purer+   g      ?rB   )num_workers	chunksizer   )r   timesleepr   r3   rx  r   r   r   results	worker_idr   )r   r}   r  r   ro   profworkerss          r6   test_num_workers_configr    s     	UDJJ'A K{+,A3,A,	[A	> )
 )d(i() ) %)LL1qq{{1G1w<;&&& 	-) ) ) ) 2s/   B="C-C9CCC	CCc                    dddt         dfdffD ]  \  } }t        t        | |             t        | |      | k7  sJ t        | |      t        | |      k(  sJ t        | |      t        | |dz         k7  sJ t        t        | |            t        |       k(  rJ  t	        j
                  t              5  t        dd       d d d        y # 1 sw Y   y xY w)N)rD   r  ))rD   rB   i  z	sum-1-2-3rB   r  rC   )r   r   r   r    rH   rf   r   )r   seeds     r6   test_clone_keyr
    s     /["a4H#3NO A	TYsD)*d#s***d#yd';;;;d#ydQh'????3-.)C.@@@A 
y	! !Q  s   2CCc                 F   t        j                  d       t        j                  d      } | j                  d      }d G fdd| j                        }t	        ||j                         |j                               d   }sJ | j                  j                  ||       y )Nr(   r&   rz   Fc                  0     e Zd ZdZe fd       Z xZS )Gtest_compute_as_if_collection_low_level_task_graph.<locals>.MyDaskArrayz>Dask Array subclass with validation logic in __dask_optimize__c                P    t        |      t        u sJ dt        |   ||fi |S )NT)typer   superr   )clsr5   r   r  	__class__	optimizeds       r6   r   zYtest_compute_as_if_collection_low_level_task_graph.<locals>.MyDaskArray.__dask_optimize__  s3     9...I7,S$A&AAr8   )r=   r>   r?   __doc__classmethodr   __classcell__)r  r  s   @r6   MyDaskArrayr    s    L		B 
	Br8   r  r   )	rH   rI   r  r*  r   r;   rY   r+  r  )r  rD   r  r   r  s       @r6   2test_compute_as_if_collection_low_level_task_graphr    s    
 			\	*B
		"A I	Bbhh 	B &Q%%'):	F 9HHq&!r8   c                :   ddl m} ddlm} ddlm} |r|j                  dd|i      }n |       }|5  dd l}|dk(  rddlm}	 n|dk(  rddlm	}	 n|d	k(  rddl
m	}	 |j                  |       }
t        |
|      j                  	k(  sJ 	 d d d        y # 1 sw Y   y xY w)
Nr   )nullcontext)mock)r  zdask.base.named_schedulersr  r  r  r  )
contextlibr  unittestr  
dask.localr  patch	importlibdask.threadedr   dask.multiprocessingimport_modulegetattrr   )module
collectionexpected
emscriptenr  r  r  ctxr   r   r  s              r6   check_default_schedulerr*    s    &#jj57IJm	 Bv2")$0%%f-sJ'::cAAAB B Bs   ABBparams)z#'dask.array', 'Array', 'sync', Truez''dask.array', 'Array', 'threads', Falsez'dask.bag', 'Bag', 'sync', Truez%'dask.bag', 'Bag', 'processes', Falsec                *   t        j                  d       t        j                  d       t        j                  d       t        j                  t        j
                  dt        j                  t              d|  dz   g      }|j                          y )Nr(   r&   r)   r  zcheck_default_scheduler(z)
)
rH   rI   r  runr  r  inspect	getsourcer*  check_returncode)r+  procs     r6   !test_emscripten_default_schedulerr2    sy      
%
!>>NN!!"9:,VHC89		
	D 	r8   )
__future__r   r   r.  rt  r  r  r  r   r   concurrent.futuresr   operatorr   r   typingr	   rH   tlzr
   r   r3   dask.bagbagr   	dask.baser   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	dask.corer   dask.delayedr   r   dask.diagnosticsr   dask.highlevelgraphr   
dask.utilsr    r!   r"   dask.utils_testr#   r$   r%   r  rM   r  rL   r   r,   rE   rP   rj   r   r   r   r   r   r   r  markskipifr  r   r-  r4  r7  r<  rB  rH  rR  rU  rZ  r_  re  boolflagsxfailplatformry  r}  r  r  r  r  r  r  r  r  parametrizer  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  flakyslowr  r
  r  r*  r2  r@   r8   r6   <module>rJ     sh   "   	  
  # '          " # ) % . 1 1 4 4L!$%GH 	3#$8=@B	 &$$  $ NK!\J6 H& & H
( 
( H( ( H* * H# # H# # H	# 	# &') () H& &
 H& & H  H  H		%N   LLGG  
&# &#R H		%N  1 1 H		%N  " "="!."6)! 	( wm 45% 6% 	b#	sCj#	sCj#
2'*WbM:	)) H *%18 $,+ 	# "1-y+&>?' @  .' 	">B2 r8   