
    &`i^                         d dl Z d dlZd dlmZ d dlmZ d dlmZ ddlmZm	Z	 	 d dl
mZ d dlmZmZ n# e$ r dZY nw xY w	 d dlZdZn# e$ r Y nw xY we G d	 d
e          Zd Zd ZdS d ZdS )    N)core)_concat)HighLevelGraph   )MultipleReturnFuncmultiple_return_get)optimize)SimpleShuffleLayershuffle_groupc                   B    e Zd Zedefd            Zd Zd Zd Zd Z	dS ) MultipleReturnSimpleShuffleLayerlayerc                      | |j         |j        |j        |j        |j        |j        |j        |j        |j        	  	        S )N	namecolumnnpartitionsnpartitions_inputignore_index
name_input
meta_input	parts_outannotationsr   )clsr   s     o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/util/dask/optimizations.pyclonez&MultipleReturnSimpleShuffleLayer.clone   sP     3Z|!-"'"9"/ + +/!-
 
 
 
    c                 (    d| j          d| j         dS )Nz'MultipleReturnSimpleShuffleLayer<name='z', npartitions=>)r   r   )selfs    r   __repr__z)MultipleReturnSimpleShuffleLayer.__repr__,   s/    3$) 3 3#/3 3 3r   c                 P     g d}t           t           fd|D                       fS )Nr   c              3   8   K   | ]}t          |          V  d S )N)getattr).0attrr    s     r   	<genexpr>z>MultipleReturnSimpleShuffleLayer.__reduce__.<locals>.<genexpr>@   s-      <<dgdD))<<<<<<r   )r   tuple)r    attrss   ` r   
__reduce__z+MultipleReturnSimpleShuffleLayer.__reduce__2   sC    
 
 
E 1<<<<e<<<<< r   c           
      v    t          | j        | j        | j        | j        | j        | j        | j        |          S )N)r   )r   r   r   r   r   r   r   r   )r    r   s     r   _cullz&MultipleReturnSimpleShuffleLayer._cullC   sB    3	 &!#	 	 	 	r   c           
        	 d| j         z   }d| j         z   	i }t          | j                  }| j        D ]	fdt          | j                  D             }t
          || j        f|| j         f<   |D ]`\  }}}t          ||f|f|	||f<   ||f|vrBt          t          |          | j
        |f| j        d| j        | j        | j        | j        f|||f<   a|S )z/Construct graph for a simple shuffle operation.zgroup-zsplit-c                     g | ]}|fS  r/   )r%   part_inpart_outshuffle_split_names     r   
<listcomp>zEMultipleReturnSimpleShuffleLayer._construct_graph.<locals>.<listcomp>Y   s0           (7;     r   r   )r   lenr   ranger   r   r   r   r   r   r   r   r   )
r    shuffle_group_namedskn_parts_out_concat_list_	_part_out_part_inr1   r2   s
           @@r   _construct_graphz1MultipleReturnSimpleShuffleLayer._construct_graphO   sC    "*DI!5!)DI!5Cdn--K N           #()?#@#@      /6|TEV-WTY)*.:  *Ay(++X6!FC+YAB
 +H5S@@. - +  "_h7 K , , - ,?/:;* Jr   N)
__name__
__module____qualname__classmethodr
   r   r!   r*   r,   r=   r/   r   r   r   r      sv        		0 	 	 	 
		 	 		 	 	"
	 
	 
	$	 $	 $	 $	 $	r   r   c                 x   t          | t                    s%t          j        t          |           | d          } n|                                 } | j                                        }|                                D ]=\  }}t          |          t          u r"t          
                    |          | j        |<   >| S )Nr/   dependencies)
isinstancer   from_collectionsidcopylayersitemstyper
   r   r   )r7   keysrI   keyr   s        r   rewrite_simple_shuffle_layerrN   u   s    #~.. 	 1"S''3RPPPCC((**C"" ,,.. 	P 	PJCE{{000"B"H"H"O"O
3
r   c                 2   t          |t          t          f          s|g}t          t          j        |                    }t          | t
                    s$t          j        t          |           | d          } t          | |          } t          | |fi |S )Nr/   rC   )rL   )
rE   listsetr   flattenr   rF   rG   rN   r	   r7   rL   kwargss      r   dataframe_optimizerU      s    $s,, 	6DDL&&''#~.. 	Q 1"S''3RPPPC*3T:::T,,V,,,r   c                 J    t          j        dt          j         d           d S )NzbCustom dataframe shuffle optimization only works on dask>=2024.11.0,<2025.1.0, you are on version z=.Doing no additional optimization aside from the default one.)warningswarndask__version__rS   s      r   rU   rU      s;    KK K K	
 	
 	
 tr   )rW   rY   r   dask.dataframe.corer   dask.highlevelgraphr   	schedulerr   r   dask.dataframe.optimizer	   dask.dataframe.shuffler
   r   ImportError	dask_exprr   rN   rU   r/   r   r   <module>rb      sw           ' ' ' ' ' ' . . . . . . > > > > > > > >000000HHHHHHHHH    	 	 	 	D	 !X X X X X+= X X Xt
 
 
	- 	- 	- 	- 	-    s   3 ==A AA