
    biG                       d dl mZ d dlZd dlZ ej                  d       d dlZd dlmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZmZmZ  G d d	e
      Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej:                  j=                  d      ej:                  j?                  dedfedfedfedfedfedfedfg      ej:                  j?                  dddg      d                      Z d Z!d Z"y)    )annotationsNdistributed)getitem)ClientSchedulerPlugin)clusterloop)ArrayChunkShapeDepArraySliceDepfractional_slicec                       e Zd ZdZdZd Zd Zy)SchedulerImportCheckzAPlugin to help record which modules are imported on the schedulerzimport-checkc                    || _         y N)pattern)selfr   s     Q/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/tests/test_layers.py__init__zSchedulerImportCheck.__init__   s	        c                  K   t               | _        t        t        j                        D ]X  }|j	                  | j
                        s| j                  j                  |       :t        j                  j                  |       Z y wr   )setstart_modulessysmodules
startswithr   addpop)r   	schedulermods      r   startzSchedulerImportCheck.start   s^      Us{{# 	%C>>$,,/""&&s+ $	%s   BBN)__name__
__module____qualname____doc__namer   r     r   r   r   r      s    KD%r   r   c                 &   t        j                  d       t        j                  d      } ddt        fdD              }| j                  |      }t	        |      fd}t              D ]  }t              D ]  } |||         y )Nnumpydask.array.core   r*      c              3  (   K   | ]	  }|z    y wr   r&   .0nds     r   	<genexpr>z-test_array_chunk_shape_dep.<locals>.<genexpr>*        'A!a%'   c                "    | |f   }|k(  sJ y r   r&   )ijchunk_shape
array_depschunks      r   checkz)test_array_chunk_shape_dep.<locals>.check.   s     !Q(e###r   )pytestimportorskiptuplenormalize_chunksr
   range	dacshapechunksr;   r6   r7   r9   r:   r1   s	         @@@r   test_array_chunk_shape_deprE   %   s    
 


/
0C	AE'''E!!%/F#F+J$ 1X q 	A!QK	r   c                 &   t        j                  d       t        j                  d      } ddt        fdD              }| j                  |      }t	        |      fd}t              D ]  }t              D ]  } |||         y )Nr(   r)   r*   r+   c              3  (   K   | ]	  }|z    y wr   r&   r.   s     r   r2   z(test_array_slice_deps.<locals>.<genexpr><   r3   r4   c                    | |f   }|t        d   | z  d   | dz   z  d       t        d   |z  d   |dz   z  d       fk(  sJ y )Nr      )slice)r6   r7   slicesr9   r:   s      r   r;   z$test_array_slice_deps.<locals>.check@   sj    QF#%(Q,aAE 2D9%(Q,aAE 2D9
 
 	
 
r   )r<   r=   r>   r?   r   r@   rA   s	         @@@r   test_array_slice_depsrL   7   s    
 


/
0C	AE'''E!!%/Fv&J
 1X q 	A!QK	r   c                    t        j                  d      }t        j                  d      }|j                  t        d      t        dd      d      }|j	                  |d      j                  dd	
      S )Npandasdask.dataframe
      abr*   npartitionsrS   tasksshuffle_method)r<   r=   	DataFramer@   from_pandasshuffletmpdirpddddfs       r   _dataframe_shufflerb   L   se    			X	&B			-	.B 
E"IE"bM:	;B>>"!>,44S4QQr   c                    t        j                  d      }t        j                  d      }|j                  t        d      t        dd      d      }|j	                  |d      j                         S )NrN   rO   rP   rQ   rR   r*   rU   )r<   r=   rZ   r@   r[   meanr]   s       r   _dataframe_tree_reductionre   U   s^    			X	&B			-	.B 
E"IE"bM:	;B>>"!>,1133r   c                   t        j                  d      }t        j                  d      }|j                  t        d      t        dd      d      }|j	                  |d      }|j	                  |d      }|j                  |d	d
d      S )NrN   rO   rP   rQ   rR      rU   rI   leftTrW   )how	broadcastrY   )r<   r=   rZ   r@   r[   merge)r^   r_   r`   ra   ddf1ddf2s         r   _dataframe_broadcast_joinrn   ^   s}    			X	&B			-	.B 
E"IE"bM:	;B>>"!>,D>>"!>,D::d$w:OOr   c                r    t        j                  d      }|j                  d      |j                  d      z   S )N
dask.arrayd   )r<   r=   oneszeros)r^   das     r   _array_creationrv   i   s0    			\	*B 776?RXXf---r   c                x    t        j                  d      }|j                  d      }|j                  d dd      S )Nrp   rq   c                    | S r   r&   )xs    r   <lambda>z$_array_map_overlap.<locals>.<lambda>s   s    q r   rI   none)depthboundary)r<   r=   rs   map_overlap)r^   ru   arrays      r   _array_map_overlapr   p   s7    			\	*BGGFOE[FCCr   c                 `   t        dddi      t        dt        dd      ffk(  sJ t        dddd      t        dt        d d d       t        d	d       ffk(  sJ t        d
ddd      t        dt        dd      t        d	d       ffk(  sJ t        dddi      } t        | d   d   t              sJ y )N)ry   g@r   r*   )ry      )ry   r,   ffffff@r,   )r   rI   )ry   r,   r   )ry   g333333@r   rI   )r   r   rJ   
isinstanceint)fss    r   test_fractional_slicer   v   s    JA/GXaQR~3VVVVMqQ<8	tT4	 %D/2=    Oq\:	q!eBo&?    
*q!f	-BbeAh$$$r   c                L   t        j                  d       t        j                  d      }t        j                  d      }|j                  |j                  dt	        d      i      d      j                  t        |              dg}|j                  t        |       |	      }|S )
NpyarrowrN   rO   rS   rP   r*   rU   )rS   z<=r*   )filters)r<   r=   r[   rZ   r@   
to_parquetstrread_parquet)r^   r_   r`   r   rl   s        r   _pq_pyarrowr      s    
	"			X	&B			-	.BNN2<<eBi 01qNALLF G??3v;?8DKr   c                P   t        j                  d      }t        j                  d      }|j                  |j                  dt	        d      i      d      j                  t        |              |j                  t        j                  j                  t        |       d            S )NrN   rO   rS   rP   r*   rU   *)r<   r=   r[   rZ   r@   to_csvr   read_csvospathjoin)r^   r_   r`   s      r   	_read_csvr      s~    			X	&B			-	.BNN
c59%&   fS[;;rww||CK566r   z#8480)reasonzop,libzpandas.znumpy.optimize_graphTFc                   t        dt              gi      5 \  }}t        |d   |      5 }|j                   | |      |       |j	                  d       }|j	                  d       }	||	z
  }
t        fd|	D              rJ t        fd	|
D              rJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nplugins)scheduler_kwargsaddress)r	   )r   c                 4    t        t        j                        S r   )r   r   r   r&   r   r   rz   z>test_scheduler_highlevel_graph_unpack_import.<locals>.<lambda>   s    S5E r   c                P    | j                   t        j                     j                  S r   )r   r   r%   r   )dask_schedulers    r   rz   z>test_scheduler_highlevel_graph_unpack_import.<locals>.<lambda>   s"    ~'='=(--(- r   c              3  @   K   | ]  }|j                          y wr   r   r/   modulelibs     r   r2   z?test_scheduler_highlevel_graph_unpack_import.<locals>.<genexpr>   s     Nf6,,S1N   c              3  @   K   | ]  }|j                          y wr   r   r   s     r   r2   z?test_scheduler_highlevel_graph_unpack_import.<locals>.<genexpr>   s     Lf6,,S1Lr   )r   r   r   computerun_on_schedulerany)opr   r   r	   r^   r   workerscend_modulesr   new_moduless    `         r   ,test_scheduler_highlevel_graph_unpack_importr      s    $ 
9/CC/H.I"J	K M PIi(t4 	MIIbjI@ ,,-EFK.. M
 &5K NNNNN LLLLLL%	M	M M	M 	M	M Ms#   B;A/B/B;/B8	4B;;Cc                (    | j                  dd      S )Nry   rW   rX   )r\   ddfs    r   _shuffle_opr      s    ;;s7;33r   c                F    | j                  d      j                  ddi      S )Nr%   ry   rd   )groupbyaggr   s    r   _groupby_opr      s     ;;v""C=11r   )#
__future__r   r   r<   r=   r   operatorr   r   r   r   distributed.utils_testr   r	   dask.layersr
   r   r   r   rE   rL   rb   re   rn   rv   r   r   r   r   markxfailparametrizer   r   r   r&   r   r   <module>r      s   " 	    M " 
  / 0 K K%? %&$*R4P.D%&7 '"	Y'	"I.	"I.	i 	I	(#	X& )D%=9M : #M:42r   