o
    Nrfށ                  
   @  s  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(m)Z) d d	l*m+Z+m,Z, d d
l-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7 e6dZ8e6dZ9e6dZ:e6dZ;dZ<dZ=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCd d! ZDG d"d# d#eZEd$d% ZFd&d' ZGejHId(d)d* ZJejHId(d+d, ZKejHId(d-d. ZLejHId/d0d1 ZMejHId/d2d3 ZNejHId/d4d5 ZOejHId/d6d7 ZPejHId/d8d9 ZQejHId/d:d; ZRejHId/d<d= ZSejHId>d?d@ ZTejHId/dAdB ZUejHId/dCdD ZVejHId(dEdF ZWejHId(dGdH ZXdIdJ ZYejHId(ejHjIeZej[j$dKdLejHj\ej]dMkdNdOdPdQdR Z^ejHId(ejHjIeZej[j$dKdLdSdT Z_ejHId(ejHjIeZej[j$dKdLdUdV Z`dWdX ZadYdZ Zbd[d\ Zcd]d^ Zdd_d` Zedadb Zfdcdd Zgdedf ZhejHidgdhdie<fgdjdk ZjejHidldhi dhfdhdmdnidhfdhdhdoidofdie<fdidpidpe<ffgdqdr Zkdsdt Zldudv ZmejHId(dwdx Zndydz Zod{d| Zpd}d~ Zqdd Zrdd Zsdd Ztdd Zudd ZvG dd deZwdd Zxdd ZyejHjzdddejHj{ejHidddgdd Z|dd Z}dd Z~dd Zdd ZejHidddd ZdS )    )annotationsNOrderedDict)Executor)addmul)
NamedTuple)mergepartial)DaskMethodsMixin	clone_keycollections_to_dsk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)Delayeddelayed)Profiler)HighLevelGraph)tmpdirtmpfile)decimport_or_noneinc
dask.arraydask.dataframenumpypandas)g333333?foo)   h2c                  C  sR   G dd d} t dd }t|sJ tdrJ t| i s!J t| r'J d S )Nc                   @  s   e Zd Zdd Zdd ZdS )z0test_is_dask_collection.<locals>.DummyCollectionc                 S  s
   || _ d S Ndask)selfdsk r0   ]/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/dask/tests/test_base.py__init__7   s   
z9test_is_dask_collection.<locals>.DummyCollection.__init__c                 S     | j S r+   r,   r.   r0   r0   r1   __dask_graph__:      z?test_is_dask_collection.<locals>.DummyCollection.__dask_graph__N)__name__
__module____qualname__r2   r5   r0   r0   r0   r1   DummyCollection6   s    r:         )r   r   )r:   xr0   r0   r1   test_is_dask_collection5   s   r>   c                  C  sH   t d} t d}| g d}||}t|rJ t|s"J d S )Nr'   	dask_exprr;   r<   r)   )pytestimportorskipSeriesfrom_pandasr   )pddxdfZdxfr0   r0   r1   !test_is_dask_collection_dask_exprD   s   


rH   c                  C  s   t d t d} G dd d| jj}| j| }t jtdd |  W d    n1 s1w   Y  t jtdd |	  W d    n1 sLw   Y  t
|sWJ d S )Nr'   r?   c                   @  s2   e Zd Zedd Zdd Zdd Zddd	Zd
S )zPtest_is_dask_collection_dask_expr_does_not_materialize.<locals>.DoNotMaterializec                 S     dS )Nr   r0   r4   r0   r0   r1   _metaS   s   zVtest_is_dask_collection_dask_expr_does_not_materialize.<locals>.DoNotMaterialize._metac                 S     J dNFmust not reachr0   r4   r0   r0   r1   __dask_keys__W      z^test_is_dask_collection_dask_expr_does_not_materialize.<locals>.DoNotMaterialize.__dask_keys__c                 S  rK   rL   r0   r4   r0   r0   r1   r5   Z   rO   z_test_is_dask_collection_dask_expr_does_not_materialize.<locals>.DoNotMaterialize.__dask_graph__Fc                 S  rK   rL   r0   )r.   Zfuser0   r0   r1   r   ]   rO   zYtest_is_dask_collection_dask_expr_does_not_materialize.<locals>.DoNotMaterialize.optimizeN)F)r7   r8   r9   propertyrJ   rN   r5   r   r0   r0   r0   r1   DoNotMaterializeR   s    
rQ   rM   match)rA   rB   Z_coreExprZ_collectionZnew_collectionraisesAssertionErrorrN   r5   r   )rF   rQ   collr0   r0   r1   6test_is_dask_collection_dask_expr_does_not_materializeN   s   



rX   c            
        s\  t jG dd d G dd dttdd } | d }| d } fdd	}|| ||d
d | ||fD }t| \}}t|dksDJ |g d}|dddg d}||ksYJ t|ddi\}}t|dksjJ |||ksrJ tddddi\}}|rJ ||ddddifksJ dd }	t| |	df|	ddfgdd\}}|| ||	dfg d S )Nc                   @     e Zd ZU ded< dS )z+test_unpack_collections.<locals>.ADataClassintaNr7   r8   r9   __annotations__r0   r0   r0   r1   
ADataClassk   s   
 r^   c                   @  rY   )z,test_unpack_collections.<locals>.ANamedTuplerZ   r[   Nr\   r0   r0   r0   r1   ANamedTupleo   s   
 r_   r;      r<   c                   sd   | |d| | |ddd|ggddd|dfd| dd	hd
t d| fgd | dd | fd| di
|f}|S )Nr[   br;   r<   c
   der)   fg)r[   hir   )r[   ra   rb   iteratortr^   r_   r0   r1   buildv   s    


z&test_unpack_collections.<locals>.buildc                 s  s    | ]}|V  qd S r+   r0   .0ri   r0   r0   r1   	<genexpr>   s    z*test_unpack_collections.<locals>.<genexpr>r)   )~a~b~crq   rr   rs   traverseFr[   c                  W  s   t d)NzShouldn't have been called)
ValueError)argsr0   r0   r1   fail   rO   z%test_unpack_collections.<locals>.failrt   )dataclasses	dataclassr   r   r   len)
r[   ra   rb   rm   rv   collectionsZrepackresultZsolrw   r0   rl   r1   test_unpack_collectionsj   s2   
r~   c               
   C  s^  G dd d} t t tt  W d    n1 sw   Y  t t t| ddidg W d    n1 s;w   Y  t t t| ddidg W d    n1 sZw   Y  t t t| ddidg W d    n1 syw   Y  t| i g t ksJ 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sJ d S )Nc                   @  s$   e Zd Zdd Zdd Zdd ZdS )z2test_get_collection_names.<locals>.DummyCollectionc                 S     || _ || _d S r+   )r-   keysr.   r/   r   r0   r0   r1   r2         
z;test_get_collection_names.<locals>.DummyCollection.__init__c                 S  r3   r+   r,   r4   r0   r0   r1   r5      r6   zAtest_get_collection_names.<locals>.DummyCollection.__dask_graph__c                 S  r3   r+   r   r4   r0   r0   r1   rN      r6   z@test_get_collection_names.<locals>.DummyCollection.__dask_keys__N)r7   r8   r9   r2   r5   rN   r0   r0   r0   r1   r:      s    r:   r;   r<   r0   r;   a-1b-2r)   rb      >   rb   r   r   )rA   rU   	TypeErrorr   objectseth1r*   )r:   r0   r0   r1   test_get_collection_names   s,   r   c                   C  s   t ddksJ t dsJ dt dttfdksJ tt t d W d    n1 s/w   Y  tt t d W d    n1 sHw   Y  tt t d W d    d S 1 sbw   Y  d S )Nr(   foo-123r;   r0   r   )r   r   r*   rA   rU   r   r0   r0   r0   r1   test_get_name_from_key   s   


"r   c                   C  s  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t t di  W d    n1 sQw   Y  tt t d	i  W d    n1 skw   Y  tt t d
i  W d    d S 1 sw   Y  d S )Nr(   barbazZasd)r(   r   r   zbar-456r;   r0   r   )r   r   r*   rA   rU   r   r0   r0   r0   r1   test_replace_name_in_keys   s$   
"r   c                   @  sn   e Zd ZdZeejjZdd Z	dd Z
dd Zdd	 Zd
d Zdd Zdd Zdd ZeddddZdS )Tuple_dask_keysc                 C  r   r+   r   r   r0   r0   r1   r2      r   zTuple.__init__c                 C  s*   t |tstS tt| j|j| j|j S r+   )
isinstancer   NotImplementedr	   r   r   )r.   otherr0   r0   r1   __add__   s   
zTuple.__add__c                 C  r3   r+   )r   r4   r0   r0   r1   r5      r6   zTuple.__dask_graph__c                 C  r3   r+   r   r4   r0   r0   r1   rN      r6   zTuple.__dask_keys__c                 C  s   t t| S r+   )tupler   r4   r0   r0   r1   __dask_layers__   s   zTuple.__dask_layers__c                 C  r3   r+   r   r4   r0   r0   r1   __dask_tokenize__   r6   zTuple.__dask_tokenize__c                 C  s   t dfS )Nr0   )r   r4   r0   r0   r1   __dask_postcompute__  rO   zTuple.__dask_postcompute__c                 C  s   t j| jffS r+   )r   _rebuildr   r4   r0   r0   r1   __dask_postpersist__  s   zTuple.__dask_postpersist__Nrenamec                  s     r fdd|D }t | |S )Nc                   s   g | ]}t | qS r0   )r   )ro   keyr   r0   r1   
<listcomp>  s    z"Tuple._rebuild.<locals>.<listcomp>)r   )r/   r   r   r0   r   r1   r     s   
zTuple._rebuild)r7   r8   r9   	__slots__staticmethodr-   threadedget__dask_scheduler__r2   r   r5   rN   r   r   r   r   r   r0   r0   r0   r1   r      s    r   c                  C  s(  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}||  dtdt fdtffi}|| ti g }t| dt fdtfg}t|dt fdtfg}t|dg}|| | | }tt d|_W d    n1 sqw   Y  t	|s|J t	|sJ t	|sJ t	|sJ t	|sJ t
|t
|ksJ t
|t
|ksJ t
|t
|ksJ t
|t
|ksJ t
|t
|ksJ tdd |||||fD dksJ t|t ksJ t|dhksJ t|dhksJ t|dhksJ t|h d	ksJ | d
ksJ | dksJ | dks"J | dks+J t|d|i||gd
ddiddgfksBJ | dksKJ | }t|tsWJ |j|jks`J t|j g dksnJ | dkswJ t||||\}	}
}}|j|jksJ |jdt fddtfdiksJ | dksJ |
| | }| dksJ | \}}|i g|R dddii}| d
ksJ | \}}|dt fddtfdig|R dddii}| dksJ | \}}|ddig|R dddii}| dksJ d S )Nr=   r;   r<   yzc                 S  s   h | ]}t |qS r0   )r   )ro   rW   r0   r0   r1   	<setcomp>/      z)test_custom_collection.<locals>.<setcomp>r`   >   r   r   r=   r0   )r;   r<   )r)   r   )   )r;   r<   r)   r   r   r)   r   r   ww3x3rc      )rc   r   z3F   )r   )r   r*   r   updater   rA   rU   AttributeErrorr(   r   r   r{   r   r   r   r-   r   r   r   sortedr   valuesr   )r/   dsk2Zdsk3r   r=   r   r   rk   t2Zw2x2y2z2t3rebuildrv   r   r   r   r0   r0   r1   test_custom_collection  sn   ,


$. *r   c                    sN  ddl m}  tjtddd}ttd}ttd}|||}g  |  fdd	d
 |j	ddd W d    n1 s>w   Y  t
dd  D dksPJ t
dd  D dks]J g  |  fdd	d
 |j	dd W d    n1 syw   Y  t
dd  D dksJ t
dd  D dksJ t
dd  D dksJ d S )Nr   )Callbackd   r   npartitionsr;   r<   c                   
     | S r+   appendr   rv   r   r0   r1   <lambda>i     
 z%test_compute_no_opt.<locals>.<lambda>)Zpretasksingle-threadedF)	schedulerZoptimize_graphc                 S     g | ]
}d |d v r|qS r   r   r0   ro   kr0   r0   r1   r   k      z'test_compute_no_opt.<locals>.<listcomp>c                 S  r   r   r   r0   r   r0   r0   r1   r   l  r   c                   r   r+   r   r   r   r0   r1   r   o  r   r   c                 S  r   r   r0   r   r0   r0   r1   r   s  r      c                 S  r   r   r0   r   r0   r0   r1   r   t  r   c                 S  r   )zadd-mulr   r0   r   r0   r0   r1   r   u  r   )Zdask.callbacksr   dbfrom_sequenceranger
   r   r   mapr   r{   )r   ra   Zadd1Zmul2or0   r   r1   test_compute_no_opt]  s$   

r   znot dac                  C  sh   t dd} tj| dd}|d }|d }t||\}}t || d s(J t || d s2J d S )Nr   rc   rc   r`   r`   chunksr;   r<   )nparangereshapeda
from_arrayr   allclose)arrdarrZdarr1Zdarr2out1out2r0   r0   r1   test_compute_arrayx  s   r   c                  C  s~   ddl m}  tdd}tj|dd}|d |jdd }| }| || t	|j
|j
s3J t|j
|jks=J d S )	Nr   	assert_eqr   r   r   r   r;   )Zaxis)dask.array.utilsr   r   r   r   r   r   meanr   r   r-   issubsetr{   r   )r   r   r=   r   r0   r0   r1   test_persist_array  s   
r   c                  C  s   t jdtdd} |  \}}tddgtddgd}||g|R d| jdii}t|t js3J |jdks:J |	 d	d
gksDJ t j
|g d d S )Nr   r<   )Zdtyper   r;   r)   ra   r   ra   r;   r   ra   r   r   r;   r<   r)   r   )r   ZzerosrZ   r   r   arraynamer   ArrayrN   utilsr   r[   r   rv   r/   ra   r0   r0   r1   test_persist_array_rename  s   r   znot ddc                  C  sx   t g dg dd} tj| dd}|jd }|j|j }t||\}}tj|| jd  tj|| j| j  d S )Nr   r`   r`   r)   r)   r[   ra   r<   r   r;   )	rE   	DataFrameddrD   r[   ra   r   r   r   )rG   ddfddf1ddf2r   r   r0   r0   r1   test_compute_dataframe  s   
r  c                  C  s   t g dg dd} tj| ddd }t| dksJ | }t|tjs+J t s9t| dks:J 	 tj	
|| d S )Nr   r`      r   r   r   r<   r   r   )rE   r   r   rD   r{   r5   r   r   _dask_expr_enabledr   r   )rG   r   r   r0   r0   r1   test_persist_dataframe  s   r  c                  C  s|   t g d} tj| ddd }t| dksJ | }t|tjs&J t s4t| dks5J 	 tj	
|| d S )Nr   r<   r   r   )rE   rC   r   rD   r{   r5   r   r   r  r   r   )dsdds1dds2r0   r0   r1   test_persist_series  s   r	  c                  C  s   dd l m}  tg d}| j|dd }|  s$t| dks%J 	 |	 }|  s6t
|| jjs6J |  sDt| dksEJ 	 | j|| d S )Nr   r   r<   r   r`   r  r;   )dask.dataframe	dataframerE   rC   rD   minr  r{   r5   r   r   coreZScalarr   r   )r   r  r  r  r0   r0   r1   test_persist_scalar  s   r  c                  C  s   dd l m}  |  rtd tg dg dd}tg dg dd}| j|dd	}| \}}|j	d d |j	dd  d
}||g|R d|j
dii}| ddgks[J | j|| d S )Nr   doesn't make senser   r  r   )r<   r)   r`   r  )r  r   	   rc   r<   r   r=   r   r=   r;   r   r=   r  r  )r
  r  r  rA   skiprE   r   rD   r   iloc_namerN   r   r   )r   Zdf1Zdf2r   r   rv   r/   r   r0   r0   r1   test_persist_dataframe_rename  s   
r  c                  C  s   dd l m}  |  rtd tg d}tg d}| j|dd}| \}}|j	d d |j	dd  d}||g|R d|j
d	ii}| d
dgksQJ | j|| d S )Nr   r  r   r  r<   r   r  r   r=   r  r  )r
  r  r  rA   r  rE   rC   rD   r   r  r  rN   r   r   )r   ds1Zds2r  r   rv   r/   r  r0   r0   r1   test_persist_series_rename  s   
r  c                  C  s   dd l m}  |  rtd tg d}| j|dd }|	 \}}|ddig|R d|j
d	ii}| dgks>J | j|d d S )
Nr   r  r   r<   r   r  r`   r   r=   )r
  r  r  rA   r  rE   rC   rD   r  r   r  rN   r   r   )r   r  r  r   rv   r  r0   r0   r1   test_persist_scalar_rename  s   
 r  znot dd or not dac                  C  s   t dd} tj| ddd }tg dg dd}tj|d	d
j	d	 }t
||\}}t || d s8J tj||j	d	  d S )Nr   r   r   r   r;   r   r   r   r<   r   )r   r   r   r   r   rE   r   r   rD   r[   r   r   r   r   )r   r   rG   r   Zarr_outZdf_outr0   r0   r1   test_compute_array_dataframe  s   r  c                  C  s.   t jtjdd gd} tj| dd d S )Nr)   r;      ödatacolumnsr   r   )rE   r   r   randomencoder   rD   rG   r0   r0   r1   -test_compute_dataframe_valid_unicode_in_bytes  s   r$  c                  C  s*   t jtjddgd} tj| dd d S )Nr  u   r  r   r   )rE   r   r   r!  r   rD   r#  r0   r0   r1   &test_compute_dataframe_invalid_unicode  s   r%  c                    sn   t jdddtg d tt fdd t dd\} }t	| tds-J |g dks5J d S )	Nr`   r<   r   r@   c                     s
   t  S r+   )r   r0   ra   r=   r0   r1   r     r   z(test_compute_array_bag.<locals>.<lambda>r   r   )
r   r   r   r   rA   rU   ru   r   r   r   )xxbbr0   r&  r1   test_compute_array_bag  s   r)  c                  C  sT   t jddd} d}t| |\}}||  k sJ ||ks J tddks(J d S )Nr`   r<   r   rc   r`   )r   r   r   all)r=   r   r'  yyr0   r0   r1   test_compute_with_literal!  s   r-  c                  C  s   t dd } | d }| d }t| dd|gd|dfdg dddfks&J t| |g|dd	}|d
 d
 | u s9J |d
 d |u sCJ |d dksKJ d S )Nr;   r`   r<   r   r  r;   r<   r   r   r<   Frx   r   r   r   r   )r[   ra   rb   resr0   r0   r1   test_compute_nested-  s   
r2  z'graphviz exception with Python -OO flag)reasonwin32z:graphviz/pango on conda-forge currently broken for windowsF)r3  strictc               	   C  s  t d t d t +} tjddd}|jtj| dd tj	tj| ds.J |jtj| d	d tj	tj| d	sFJ t|d
dtj| dd tj	tj| ds`J d
t
ddftdd
fd}t||tj| dd tj	tj| dsJ t|g d}t|tj| dd tj	tj| dsJ t|g d}t|tj| ddd tj	tj| dsJ t|tj| ddd tj	tj| dsJ tjjdd  t|tj| dd tj	tj| dsJ W d    n	1 sw   Y  t jtdd t|dd W d    n	1 s&w   Y  |jd d W d    d S 1 s=w   Y  d S )NgraphvizZipycytoscaper`   r<   r   Zmydaskfilename
mydask.pngz
mydask.pdfr;   r[   )r[   ra   rb   ZcytZ	cytoscape)r8  enginezcyt.htmlz	cyt2.html)Zvisualization__enginez	cyt3.htmlznot-realrR   )r:  )rA   rB   r   r   r   r   ospathjoinexistsr   r   r   r-   configr   rU   ru   )rd   r=   r/   r0   r0   r1   test_visualize<  s<   



$r@  c                  C  sl   t d} t $}tjddd}|jjtj	|dd}t
|| js$J W d    d S 1 s/w   Y  d S )Nr6  r`   r<   r   r9  r7  )rA   rB   r   r   r   r-   r   r;  r<  r=  r   ZDigraph)r6  rd   r=   Zvizr0   r0   r1   test_visualize_highlevelgraphn  s   
"rA  c               	   C  s   t d t d tjddd} tdd/}| jd|d	d
 t|}| }W d    n1 s2w   Y  d|v s=J W d    d S 1 sHw   Y  d S )Nr6  zmatplotlib.pyplotr`   r<   r   dot)	extensionorderZRdBu)colorr8  Zcmapzcolor="#)rA   rB   r   r   r    r   openread)r=   fnrf   textr0   r0   r1   test_visualize_order{  s   



"rJ  c                 C  s@   t | } | D ]}| | d tkrtf| | dd   | |< q| S )Nr   r;   )dictr#   r!   )r/   r   r   r0   r0   r1   
inc_to_dec  s   rL  c                  C  sr   t td} |  dksJ t jjtgd |  dks J W d    n1 s*w   Y  |  dks7J d S )Nr;   r<   optimizationsr   )r-   r   r#   r   r?  r   rL  r=   r0   r0   r1   test_optimizations_keyword  s   rP  c                  C  sT  t td} t t| }| | }t| ||d\}}}}|dks#J t|j }t|j |ks1J t|j |ks:J t |||t | ||ksJJ t j| ||tgd}t| ||tgd\}	}
}t |	|
||kskJ t jjtgd t| ||\}}}W d    n1 sw   Y  t	|	|
|g|||gD ]\}}t|j t|j ksJ qd S )Nr;   rM  )
r-   r   r#   r   rK  r   rL  r?  r   zip)r=   r   r   r   r   r   Zconstantr/   Zsolsr   Zy3r   Zx4Zy4Zz4r[   ra   r0   r0   r1   test_optimize  s$   
 rR  c                  C  s.  t td} t t| }| | }t| dd|gd|df}|d d }|d d d }|d d }t|ts:J t|tsAJ t|tsHJ t|j t|j   kr\t|j ks_J  J t| dg dddfksnJ t| |g|d	d
}|d d | u sJ |d d |u sJ |d  dksJ d S )Nr;   r<   r   r   r[   ra   r@   )r`   r<   Frx   r`   )r-   r   r#   r   r   r   rK  r   )r[   ra   rb   r}   Za2b2c2r1  r0   r0   r1   test_optimize_nested  s    .rU  c                  C  sT   d} t tjd| g}tt| }d|v sJ g d}|D ]}||vs'J qdS )zI
    Startup time: `import dask` should not import too many modules.
    zYif 1:
        import dask
        import sys

        print(sorted(sys.modules))
        -cr-   )r$   r%   r&   r'   ZpartdZs3fsdistributedN)
subprocesscheck_outputsys
executabler   evaldecode)codeoutmodulesZ	blacklistmodr0   r0   r1   test_default_imports  s   	rb  c                   C  s   t ddddks
J d S )Nr;   r<   r)   r@   )r   r0   r0   r0   r1   test_persist_literals  s   rc  c                  C  s   t dd } | d }| d }t| dd|gd|df}t|d d ts&J t|d d d ts3J t|d d ts>J t| dg d	dd
fksMJ t| |g|dd}|d d | u s`J |d d |u sjJ |d  dkstJ d S )Nr;   r`   r<   r   r   r[   ra   r  r.  r/  Frx   r   r   r   r   r   r   )r[   ra   rb   r}   r1  r0   r0   r1   test_persist_nested  s   re  c                  C  sr   t d} t t| }t t|}t|\}t|tsJ |j|jks$J t|jdks-J | | ks7J d S Nr;   )	r   r#   r   r   r   r   r{   r-   r   )x1r   r   r'  r0   r0   r1   test_persist_delayed  s   
rh  r   r[   za-123c                 C  sb   t | | dddi}| dksJ | }| dksJ |j| ks$J t|j| diks/J d S )Nra   r;   )r   r   r   r   rK  r-   )r   rd   dpr0   r0   r1   test_persist_delayed_custom_key  s   rj  zkey,rename,new_keyrb   rd   ra   zb-123c                 C  s|   t | | di}| dksJ | \}}||dig|R d|i}| dks*J |j|ks1J t|j|diks<J d S )Nr;   r<   r   )r   r   r   r   rK  r-   )r   r   Znew_keyrd   r   rv   ri  r0   r0   r1   test_persist_delayed_rename  s   
rk  c                  C  s4   t d} t| \}t|tsJ | dksJ d S rf  rd  )r=   r'  r0   r0   r1   test_persist_delayedleaf(  s   
rl  c                  C  sD   G dd d} t | j}t|\}t|tsJ | dks J d S )Nc                   @  s   e Zd ZdZdS )z#test_persist_delayedattr.<locals>.Cr;   N)r7   r8   r9   r=   r0   r0   r0   r1   C0      rm  r;   )r   r=   r   r   r   r   )rm  r=   r'  r0   r0   r1   test_persist_delayedattr/  s
   

ro  c                  C  s(  t jdddd } tg dt}tt t	| | W d    n1 s(w   Y  t	| |dd\}}t
|t js>J t
|tjsFJ |j| jksNJ |j|jksVJ t|j|j  krht| jk skJ  J t|j|j  kr}t|jk sJ  J t| |sJ t|t|ksJ d S )Nr`   r<   r   r;   r@   r   r   )r   r   r   r   r   r#   rA   rU   ru   r   r   r   Bagr   r{   r-   r   r   r   list)r=   ra   r'  r(  r0   r0   r1   test_persist_array_bag9  s   **rr  c                  C  sr   t jg ddddd } t|  dksJ | jdd}t|t js&J t| dks0J t j	| | d S )	Nr@   r<   r   c                 S     | d S Nr<   r0   rO  r0   r0   r1   r   P      z"test_persist_bag.<locals>.<lambda>r   syncr   )
r   r   r   r{   r5   r   r   rp  r   r   r   r0   r0   r1   test_persist_bagO  s   rw  c                  C  sv   t jg ddddd  } t|  dksJ | jdd}t|t js(J t| d	ks2J t j	
| | d S )
Nr@   r<   r   c                 S  rs  rt  r0   rO  r0   r0   r1   r   Y  ru  z#test_persist_item.<locals>.<lambda>r   rv  r   r;   )r   r   r   r  r{   r5   r   r   Itemr   r   r   r0   r0   r1   test_persist_itemX  s    ry  c                  C  s   t jg ddd} |  \}}dgddgd}||g|R d| jd	ii}t|t js-J |jd	ks4J | d
dgks>J t j|g d d S )Nr@   r<   r   r   r`   r  r   r   ra   r   r   )r   r`   r  )	r   r   r   r   r   rp  rN   r   r   r   r0   r0   r1   test_persist_bag_renamea  s   rz  c                  C  sr   t g d } |  \}}|ddig|R d| jdii}t|t js'J | dgks0J t j	|d d S )Nr@   r=   r   r   )
r   r   r  r   r   r   rx  rN   r   r   )r[   r   rv   ra   r0   r0   r1   test_persist_item_change_namel  s    r{  c                  C  s4  t d t d} | jddd}dd }dd	lm} ||d
 tdd
  tjj|d ||d
 tdd d
 d dd W d    n1 sKw   Y  ||d
 tdd
  t	j
ddd}tjj|d& tj|d
 |tdd\}}||tdd d
 d  W d    d S 1 sw   Y  d S )Nr&   r$   rc   r*  r   c                 S  s   dd |   D S )Nc                 S  s   i | ]
\}}|t d |fqS )r<   )r   )ro   r   vr0   r0   r1   
<dictcomp>|  r   zBtest_optimize_globals.<locals>.optimize_double.<locals>.<dictcomp>)itemsr/   r   r0   r0   r1   optimize_double{  s   z.test_optimize_globals.<locals>.optimize_doubler   r   r;   )array_optimizer<   F)Zcheck_chunksr   r   r   )rA   rB   onesr   r   r   r-   r?  r   r   r   r   r   r#   )r   r=   r  r   ra   r'  r(  r0   r0   r1   test_optimize_globalsu  s   

&"r  c                    s   t d t d} | jddd}|d d dd d d d	 d   fd
d}tjjd |d    W d    d S 1 s@w   Y  d S )Nr&   r$   rc   r*  r   r  r;   r   r<   c                   s   | t  jks	J t| |S r+   )rK  r-   r   r  r   r0   r1   my_get  s   z"test_optimize_None.<locals>.my_get)r  r   )rA   rB   r  r-   r?  r   r   )r   r=   r  r0   r  r1   test_optimize_None  s   

"
"r  c                  C  s   dd } | t d< ttd}zf| dksJ |jdddks!J tjjdd | dks1J W d    n1 s;w   Y  | dksHJ tjjdd |jdddksZJ W d    n1 sdw   Y  W t d= d S W t d= d S t d= w )	Nc                 [  s   dggS )N{   r0   )r/   r   kwargsr0   r0   r1   schedule  rO   z(test_scheduler_keyword.<locals>.scheduler(   r;   r<   r   r  threads)r   r   r#   r   r-   r?  r   )r  r=   r0   r0   r1   test_scheduler_keyword  s    
r  c                  C  sZ   t td} tt}| jtjd W d    n1 sw   Y  dt|j	v s+J d S )Nr;   r   z
scheduler=)
r   r#   rA   rU   r   r   r-   r   strvalue)r=   infor0   r0   r1   test_raise_get_keyword  s
   r  c                   @  s   e Zd ZdZdS )
MyExecutorN)r7   r8   r9   Z_max_workersr0   r0   r0   r1   r    rn  r  c                   C  s   t  d u sJ t tjjdtjju sJ t ddtjju sJ t ddtjju s*J tt tjjds5J tt t ds?J tj	j
dd t  tjju sPJ W d    n1 sZw   Y  t  d u sfJ d S )Nr   r  rv  )r   r-   localget_syncr   r   callableZsynchronous_executorr  r?  r   r0   r0   r0   r1   test_get_scheduler  s   r  c                    s@   dg  fdd} t dd  j| ddksJ  d sJ d S )	NFc                   s   d d< t | |S )NTr   )r-   r   )r/   r   rv   r  calledr0   r1   r     s   z$test_callable_scheduler.<locals>.getc                   S  rI   rf  r0   r0   r0   r0   r1   r         z)test_callable_scheduler.<locals>.<lambda>r   r;   r   r0  r  r0   r  r1   test_callable_scheduler  s   r  rc   r`   )ZrerunsZreruns_delayr   r  	processesc              	     s   t ddtj d} fddt|D }tjj|dd" t }t|d| i W d    n1 s3w   Y  W d    n1 sBw   Y  d	d
 |j	D }t
||ksWJ d S )NF)Zpurer)   c                   s   g | ]} d qS )g      ?r0   rn   rf   r0   r1   r     r   z+test_num_workers_config.<locals>.<listcomp>r;   )num_workers	chunksizer   c                 S  s   h | ]}|j qS r0   )Z	worker_idrn   r0   r0   r1   r     s    z*test_num_workers_config.<locals>.<setcomp>)r   timesleepr   r-   r?  r   r   r   resultsr{   )r   r  r[   Zprofworkersr0   r  r1   test_num_workers_config  s    r  c                  C  s   t d t d} | jdddd d }t|g}tjddd gi t|g}W d    n1 s5w   Y  ||ks@J d S )	Nr&   r$   r<   r;   r   rN  c                 S  s   | S r+   r0   r  r0   r0   r1   r     r  z(test_optimizations_ctd.<locals>.<lambda>)rA   rB   r   r   r-   r?  r   )r   r=   Zdsk1r   r0   r0   r1   test_optimizations_ctd  s   


r  c                   C  s   t dddks	J t dddksJ t dddksJ t ddd	ks$J t d
tdfddtdfks3J tt t dd W d    d S 1 sIw   Y  d S )Nz	inc-1-2-3r  z$inc-73db79fdf4518507ddc84796726d4844r=   z"x-c4fb64ccca807af85082413d7ef01721i  "x-d4b538b4d4cf68fca214077609feebaer  )r  r;   z	sum-1-2-3r;   z$sum-822e7622aa1262cef988b3033c32aa37r<   )r   r   rA   rU   r   r0   r0   r0   r1   test_clone_key  s   
"r  c                    sj   t d t d} | d}d G  fddd| j}t|| | d } s,J | j|| d S )Nr&   r$   rc   Fc                      s&   e Zd ZdZe fddZ  ZS )zGtest_compute_as_if_collection_low_level_task_graph.<locals>.MyDaskArrayz>Dask Array subclass with validation logic in __dask_optimize__c                   s*   t |tu sJ dt j||fi |S )NT)typer   super__dask_optimize__)clsr/   r   r  )	__class__	optimizedr0   r1   r    s   zYtest_compute_as_if_collection_low_level_task_graph.<locals>.MyDaskArray.__dask_optimize__)r7   r8   r9   __doc__classmethodr  __classcell__r0   r  )r  r1   MyDaskArray  s    r  r   )	rA   rB   r   r   r   r5   rN   r   r   )r   r=   r  r}   r0   r  r1   2test_compute_as_if_collection_low_level_task_graph  s   


r  c                 C  s   ddl m} ddlm} ddlm} |r|dd|i}n| }|< dd l}|dkr2ddlm}	 n|dkr=ddlm	}	 n
|d	krGddl
m	}	 || }
t|
|j|	ksVJ W d    d S 1 saw   Y  d S )
Nr   )nullcontext)mock)r  zdask.base.named_schedulersrv  r  r  r  )
contextlibr  Zunittestr  Z
dask.localr  patch	importlibZdask.threadedr   Zdask.multiprocessingimport_modulegetattrr   )moduleZ
collectionexpectedZ
emscriptenr  r  r  ctxr  r   ra  r0   r0   r1   check_default_scheduler"  s"   
"r  params)z('dask.dataframe', '_Frame', 'sync', Truez,'dask.dataframe', '_Frame', 'threads', Falsez#'dask.array', 'Array', 'sync', Truez''dask.array', 'Array', 'threads', Falsez'dask.bag', 'Bag', 'sync', Truez%'dask.bag', 'Bag', 'processes', Falsec                 C  sr   t d t d t d t d}| r!d| v r!t d ttjdt	t
d|  d g}|  d S )	Nr&   r$   r'   r%   zobjects not availablerV  zcheck_default_scheduler(z)
)rA   rB   r  r  rX  runrZ  r[  inspect	getsourcer  check_returncode)r  r   procr0   r0   r1   !test_emscripten_default_scheduler;  s   






r  )
__future__r   ry   r  r;  rX  rZ  r  r|   r   concurrent.futuresr   operatorr   r   typingr   rA   Ztlzr	   r
   r-   Zdask.bagZbagr   Z	dask.baser   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zdask.delayedr   r   Zdask.diagnosticsr   Zdask.highlevelgraphr   Z
dask.utilsr   r    Zdask.utils_testr!   r"   r#   r   r   r   rE   r   r*   r>   rH   rX   r~   r   r   r   r   r   r   markZskipifr   r   r   r  r  r	  r  r  r  r  r  r$  r%  r)  r-  r2  boolflagsZxfailplatformr@  rA  rJ  rL  rP  rR  rU  rb  rc  re  rh  Zparametrizerj  rk  rl  ro  rr  rw  ry  rz  r{  r  r  r  r  r  r  r  ZflakyZslowr  r  r  r  r  r  r0   r0   r0   r1   <module>   s   H
@!&N




































)
	

	
	



				