
    &`i'D                     L   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mZ d dlm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 	 d dlZd d
lmZ d dlmZ d dlmZm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z& d dl'm(Z( da)n# e*$ r dZda)Y nw xY w e j+        e,          Z-dZ.dZ/dZ0de/ dZ1dZ2de/ dZ3 G d de4e          Z5 G d de          Z6 G d d          Z7de8de4fd Z9d!e8d"ee8         de4fd#Z:e G d$ d%                      Z;d&e<d'e8d(ee8         de;fd)Z=d*ede>fd+Z?d, Z@dS )-    N)	dataclass)Enum)AnyListOptional)PhysicalOperator)InputDataBuffer)OpStateTopology)AbstractProgressBartruncate_operator_name)log_once)Console)Live)	BarColumnProgressSpinnerColumn
TextColumnTimeElapsedColumn)ColumnTable)TextFTu     ├─u   │u     │     -  z          ?z Active/total resources: c                   J    e Zd ZdZdZdZdefdZdefdZe	d	d            Z
dS )
_ManagerModeNONEGLOBAL_ONLYALLreturnc                     | | j         k    S N)r   selfs    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/data/_internal/execution/progress_manager.pyshow_opz_ManagerMode.show_op2   s    tx    c                     | | j         k    S r"   )r   r#   s    r%   
is_enabledz_ManagerMode.is_enabled5   s    ty  r'   c                 l   ddl m} |                                }|j        s0t	          d          rt
                              d           | j        S t          t          rt          d           da	| j        S |j        s0t	          d          rt
                              d           | j        S | j        S )	Nr   )DataContext"ray_data_progress_manager_disabledzhProgress bars disabled. To enable, set `ray.data.DataContext.get_current().enable_progress_bars = True`.zI[dataset]: Run `pip install rich` to enable execution progress reporting.F ray_data_progress_manager_globalzProgress bars for operators disabled. To enable, set `ray.data.DataContext.get_current().enable_operator_progress_bars = True`.)ray.data.contextr+   get_currentenable_progress_barsr   loggerwarningr   richneeds_rich_warningprintenable_operator_progress_barsr   r   )clsr+   ctxs      r%   get_modez_ManagerMode.get_mode8   s    000000%%''' 	<== 4  
 8O\! +4   &+"8O2 		:;; =  
 ?"7Nr'   N)r    r   )__name__
__module____qualname__r   r   r   boolr&   r)   classmethodr9    r'   r%   r   r   -   sy        DK
C         !D ! ! ! !    [  r'   r   c                       e Zd ZdZdZ	 	 	 	 ddedee         dedee	         d	ee	         f
d
Z
deddfdZdefdZddedee         ddfdZddedee         ddfdZddZd Zd ZdS )SubProgressBarzzThin wrapper to provide identical interface to the ProgressBar.

    Updates RichExecutionProgressManager internally.
    d   NTnametotalenabledprogresstidc                     |r||J nd}d}|| _         d| _        d| _        || _        || _        || _        t          || j                  | _        dS )a  
        Initialize sub-progress bar

        Args:
            name: name of sub-progress bar
            total: total number of output rows. None for unknown.
            enabled: whether progress bar is enabled.
            progress: rich.Progress instance for the corresponding
                sub-progress bar.
            tid: rich.TaskId for the corresponding sub-progress bar task.
        Nr   )	_total
_completed_start_time_enabled	_progress_tidr   MAX_NAME_LENGTH_desc)r$   rC   rD   rE   rF   rG   s         r%   __init__zSubProgressBar.__init__d   sj    (  	'COO;OHC!	+D$2FGG


r'   r    c                     t          || j                  | _        | j        r(| j                            | j        | j                   d S d S )N)description)r   rO   rP   rL   rM   updaterN   )r$   rC   s     r%   set_descriptionzSubProgressBar.set_description   sR    +D$2FGG
= 	EN!!$)!DDDDD	E 	Er'   c                     | j         S r"   )rP   r#   s    r%   get_descriptionzSubProgressBar.get_description   s
    zr'   	completedc                     | j         sJ | j        t          j                    | _        t          | j        ||          }| j                            | j        |j        |j        |j	        |j
                   d S )NrX   rD   rate_str	count_str)rL   rK   time_get_progress_metricsrM   rT   rN   rX   rD   r[   r\   )r$   rX   rD   metricss       r%   _updatezSubProgressBar._update   s    }}##y{{D'(8)UKKI'-%' 	 	
 	
 	
 	
 	
r'   r   	incrementc                     | j         rA|dk    r=||| _        | xj        |z  c_        |                     | j        | j                   d S d S d S )Nr   )rL   rI   rJ   r`   )r$   ra   rD   s      r%   rT   zSubProgressBar.update   s]    = 	7Y!^^ #OOy(OOLL$+66666		7 	7^^r'   c                 X    | j         r"|                     | j        | j                   d S d S r"   )rL   r`   rJ   r#   s    r%   completezSubProgressBar.complete   s4    = 	;LL$/:::::	; 	;r'   c                     i S r"   r?   r#   s    r%   __getstate__zSubProgressBar.__getstate__   s    	r'   c                     d| _         d S )NF)rE   )r$   states     r%   __setstate__zSubProgressBar.__setstate__   s    r'   )NTNNr"   )r   N)r    N)r:   r;   r<   __doc__rO   strr   intr=   r   rQ   rU   rW   r`   rT   rd   rf   ri   r?   r'   r%   rA   rA   Z   sl         O
  $"&!H HH }H 	H
 3-H c]H H H HBEC ED E E E E
    
 
 
Xc] 
d 
 
 
 
7 7 7 7 7 7 7 7; ; ; ;      r'   rA   c                       e Zd ZdZdZdedefdZdefdZde	fdZ
d	 Zd
 Zd ZdedefdZdefdZdedee         fdZdefdZde	defdZde	fdZdS )RichExecutionProgressManagerz&Execution progress display using rich.rB   
dataset_idtopologyc                    t                                           | _        || _        g | _        | j                                        sId | _        |                                D ]+}t          |j	                  r| 
                    |           ,d S d | _        t          t          j                  | _        |                     ddd          | _        d| _        t'          t(           dd          | _        i | _        t/          j        d	d
          | _        | j                            | j                   | j                            | j                   |                     |           | j                            t'                                 t9          | j        | j        dd          | _        | j                            d| j         dt<          dd          | _        d S )N)file u   •   r   Initializing...Tno_wrap)r      r   r   )paddingexpand   visible)consolerefresh_per_secondvertical_overflowzDataset z	 running:? rows/s0/?)rD   r[   r\   ) r   r9   _mode_dataset_id_sub_progress_barsr)   _livevalues_has_sub_progress_barsop_setup_operator_sub_progressrK   r   sysstderr_console_make_progress_barrI   _current_rowsr   _RESOURCE_REPORT_HEADER_total_resources_op_displayr   grid_layout_tableadd_row_setup_progress_gridr   add_task_TOTAL_PROGRESS_TOTAL_total_task_id)r$   ro   rp   rh   s       r%   rQ   z%RichExecutionProgressManager.__init__   s   !**,,
%8:z$$&& 	DJ!** = =)%(33 =55e<<<F,0  SZ000--c5"== $&777!
 !
 !
 "ZTJJJ""4;///""4#8999!!(+++ 	""466*** M '	
 
 

 #k222t'222'	 3 
 
r'   c                 R   | j                                         r1| j                            t	          dt
           d                     |                                D ]F}t          |j        t                    r| j                                         rt          j                    }|                     t          dd          }t	          t           dd          }|j                                        }t!          |j        j        | j                  }|                    |||ndddd	
          }| j                            |           | j                            |           ||_        |||f| j        |<   t-          |j                  r|                     |           Hd S )Nr   Trv   rs   
   ru   rx   r   r   rD   startr[   r\   )r   r&   r   r   r   _TREE_VERTICALr   
isinstancer   r	   uuiduuid4r   _TREE_BRANCH_TREE_VERTICAL_INDENTnum_output_rows_totalr   rC   rO   r   progress_manager_uuidr   r   r   )	r$   rp   rh   uidrF   statsrD   rC   rG   s	            r%   r   z1RichExecutionProgressManager._setup_progress_grid   s   : 	R&&t,A,A,A4'P'P'PQQQ__&& 	9 	9E%(O44 z!!## ?jll22<bII 5FFFPTUUU6688-ehmT=QRR''#(#4%%!'# (   "**8444"**5111.1+),h(> %%eh// 911%888-	9 	9r'   rh   c                    t          |j                  sJ d|j        j         d            | j                                        }|j                                        }||D ]}t          |t          j                  }d }d }d }|rm| 	                    t          dd          }|j                                        }|                    |||ndddd	          }| j                            |           t          |||||
          }|j                            ||           | j                            |           d S d S )Nz	Operator z# doesn't support sub-progress bars. r   rx   Tr   r   r   )rC   rD   rE   rF   rG   )r   r   rC   r   r&   get_sub_progress_bar_namesr   rA   rO   r   _TREE_VERTICAL_SUB_PROGRESSr   r   r   r   set_sub_progress_barr   append)	r$   rh   rE   sub_progress_bar_namesrC   rF   rG   rD   pgs	            r%   r   z9RichExecutionProgressManager._setup_operator_sub_progress   s   %H
 
 	J 	JIux}III	J 	J 
 *$$&&!&!D!D!F!F!-. 3 3-dN4RSS 9#663R   H "H::<<E"++','8eea"!+"' ,  C &..x888##%   --dB777'..r2222; .-3 3r'   c                     | j                                         sJ t          t          |t	          d                    t          |          t          dt	          d                    t          |          t          dt	          d                    t          d          t                      t          d	          t          d
t	          d                    t          d          | j        dd          S )NTrv   )table_column)finished_textz+{task.description} {task.percentage:>3.0f}%)	bar_widthz{task.fields[count_str]}[,z{task.fields[rate_str]}]F)r}   	transientrz   )	r   r)   r   r   r   r   r   r   r   )r$   
indent_strspinner_finishr   s       r%   r   z/RichExecutionProgressManager._make_progress_bar&  s    z$$&&&&&zt0D0D0DEEE777=#D111   	***1t@T@T@TUUUsOOsOO0vd?S?S?STTTsOOM!
 
 
 	
r'   c                     | j                                         r'| j        j        s| j                                         d S d S d S r"   )r   r)   r   
is_startedr   r#   s    r%   r   z"RichExecutionProgressManager.start=  sS    :  "" 	#:( #
  """""	# 	## #r'   c                     | j                                         r'| j        j        r| j                                         d S d S d S r"   )r   r)   r   r   refreshr#   s    r%   r   z$RichExecutionProgressManager.refreshB  sS    :  "" 	%z$ %
""$$$$$	% 	%% %r'   descsuccessc                 T   | j                                         r| j        j        r i }|rd|d<   d|d<   | j        D ]}|                                 | j                                        D ]A\  }}}|j        |         j	        pd}t          | j        ||          }	t          |||	           B | j        j        | j        fd|i| |                                  t#          j        d           | j                                         t(                              |           d S d S d S )Nr   rX   rD   r   rS   g{Gz?)r   r)   r   r   r   rd   r   r   tasksrX   r^   rK   _update_with_conditional_raterI   rT   r   r   r]   sleepstopr1   info)
r$   r   r   kwargsr   rG   rF   _rX   r_   s
             r%    close_with_finishing_descriptionz=RichExecutionProgressManager.close_with_finishing_descriptionG  sR   :  "" 	"z$ " N*-F;'&)F7O"5 & &,0,<,C,C,E,E N N(Xq$,N3$7$A$FQ	"7 ,i# # 6hWMMMM""4#6SSDSFSSS
4   
!!!D!!!!!'	" 	"" "r'   r    c                 l    | j                                         o| j        d uo| j        | j        j        v S r"   )r   r)   r   rI   task_idsr#   s    r%   _can_update_totalz.RichExecutionProgressManager._can_update_total^  s=    J!!## <#4/<#t{';;	
r'   new_rows
total_rowsc                    |                                  sd S | j        j        ri| j        t	          j                    | _        || xj        |z  c_        t          | j        | j        |          }t          | j        | j	        |           d S d S r"   )
r   r   r   rK   r]   r   r^   r   rI   r   )r$   r   r   r_   s       r%   update_total_progressz2RichExecutionProgressManager.update_total_progresse  s    %%'' 	F:  	U'#'9;; #""h.""+ $"4j G *$+t7JGTTTTT	U 	Ur'   resource_statusc                 v    |                                  sd S | j        j        rt          |z   | j        _        d S d S r"   )r   r   r   r   r   plain)r$   r   s     r%   update_resource_statusz3RichExecutionProgressManager.update_resource_statusr  sK    %%'' 	F:  	T*AO*SD!'''	T 	Tr'   op_statec                     | j                                         sdS |j        }|	|| j        vrdS | j        |         \  }}}||r|r	||j        vrdS dS )NFT)r   r&   r   r   r   )r$   r   r   rG   rF   r   s         r%   _can_update_operatorz1RichExecutionProgressManager._can_update_operatorx  st    z!!## 	5,;#T%5555#/4Xu;h;e;s(BS7S7S5tr'   c                    |                      |          sd S | j        t          j                    | _        |j        }| j        |         \  }}}|j        }|j                                        }t          | j        ||          }t          |||           |j
                                        }	t           |	 |_        d S r"   )r   rK   r]   r   r   output_row_countr   r   r^   r   op_display_metricsdisplay_strr   r   )
r$   r   r   rG   rF   r   current_rowsr   r_   	stats_strs
             r%   update_operator_progressz5RichExecutionProgressManager.update_operator_progress  s    ((22 	F##y{{D,#/4Xu  0[6688
'(8,
SS%hW===/;;==	.;	;;r'   N)r:   r;   r<   rj   rO   rk   r   rQ   r   r
   r   r   r   r   r=   r   r   rl   r   r   r   r   r   r?   r'   r%   rn   rn      sn       00 O0
3 0
( 0
 0
 0
 0
d9X 9 9 9 96$3' $3 $3 $3 $3L
 
 
.# # #
% % %
"S "4 " " " ".
4 
 
 
 
Uc Ux} U U U UTc T T T T	W 	 	 	 	 	< < < < < < <r'   rn   valr    c                     | dk    r2| dz  }|                                 rt          |           n|d}|dz   S t          |           S )N  g     @@.2fk)
is_integerrl   rk   )r   fvalfval_strs      r%   	_format_kr     sM    
d{{V|%)__%6%6Ic$ii>>tMM#~s88Or'   rX   rD   c                     t          |           }|t          j        |          r|                    d          rdnd}nt          |          }| d| S )z Formats row counts with k units.Nr   z?k?/)r   mathisinfendswith)rX   rD   cstrtstrs       r%   _format_row_countr     s_    YD}
5))}}}S))2ttsTr'   c                   8    e Zd ZU eed<   eed<   eed<   eed<   dS )_ProgressMetricsrX   rD   r[   r\   N)r:   r;   r<   rl   __annotations__rk   r?   r'   r%   r   r     s4         NNNJJJMMMNNNNNr'   r   
start_timecompleted_rowsr   c                     ||dk     rdn|}|dn|}|d}n:t          j                     | z
  }|dk    r||z  nd}d}|dk    r|dz  }d}|dd	| }t          ||          }	t          ||||	
          S )a  
    Args:
        start_time: time when progress tracking started
        completed_rows: cumulative rows outputted
        total_rows: total rows expected (can be unknown)
    Returns:
        _ProgressMetrics instance containing the calculated data.
    Nrx   r   z? row/szrow/sr   zk row/sr   rs   rZ   )r]   r   r   )
r   r   r   rD   rX   r[   elapsedrate_val	rate_unitr\   s
             r%   r^   r^     s     #zA~~AA:E'^I)++
*/6{{>G++	tH!I000Y00!.*==I58y   r'   r   c                 .    ddl m} t          | |          S )zDetermines if operator implements sub-progress bars

    Args:
        op: Operator
    Returns:
        whether operator implements sub-progress bars
    r   )SubProgressBarMixin)3ray.data._internal.execution.operators.sub_progressr   r   )r   r   s     r%   r   r     s(     XWWWWWb-...r'   c                     | j         |         }|j        |j        |j        d}|j        |j        k    r
|j        |d<    | j        |fi | d S )N)rX   rD   r\   r[   )r   rX   rD   r\   r[   rT   )rF   rG   r_   taskr   s        r%   r   r     sn    
 >#D&& F
 ~*** %-zHOC""6"""""r'   )Aloggingr   r   r]   r   dataclassesr   enumr   typingr   r   r   9ray.data._internal.execution.interfaces.physical_operatorr   8ray.data._internal.execution.operators.input_data_bufferr	   5ray.data._internal.execution.streaming_executor_stater
   r   ray.data._internal.progress_barr   r   ray.util.debugr   r3   rich.consoler   	rich.liver   rich.progressr   r   r   r   r   
rich.tabler   r   	rich.textr   r4   ImportError	getLoggerr:   r1   r   r   r   r   r   r   rk   r   rA   rn   rl   r   r   r   floatr^   r=   r   r   r?   r'   r%   <module>r     s     



   ! ! ! ! ! !       & & & & & & & & & & V V V V V V T T T T T T S S S S S S S S W W W W W W W W # # # # # #KKK$$$$$$              )(((((((   D 
	8	$	$+ 1^111  H~HHH * * * * *3 * * *ZO O O O O( O O Odf< f< f< f< f< f< f< f<T3 3     Xc] s            '*8@   B// /D / / / /# # # # #s   .A= =	B	B	