
    &`i)5                     z   U 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Zd dlZd dlZd dl	m
Z
mZmZmZ d dlZd dlZd dlmZ d dlmZ 	 d dlmZ n# e$ r dZY nw xY w ej        e          Zeee
f         ZdZdaed         ed<    ej                     Z!e j"        Z#d Z$ G d	 d
          Z% G d d          Z& G d d          Z' G d d          Z(de(fdZ)edk    r^ej*        d             Z+ ej,        e+*                    d          e+*                    d          e+*                    d          g           dS dS )    N)AnyDictIterableOptional)env_bool)log_once__ray_tqdm_magic_token___BarManager_managerc                  ^   |                     d          t          j        t          j        dfvrt	          | i |S 	 t                                                       t	          | i | t                                                       dS # t                                                       w xY w)zUse this as an alternative to `print` that will not corrupt tqdm output.

    By default, the builtin print will be patched to this function when tqdm_ray is
    used. To disable this, set RAY_TQDM_PATCH_PRINT=0.
    fileN)getsysstdoutstderr_printinstance	hide_barsunhide_bars)argskwargss     m/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/experimental/tqdm_ray.py
safe_printr   %   s     zz&#*cj$!???t&v&&&!



     

    s   ,B
 
"B,c                      e Zd ZdZdZ	 	 	 	 	 	 ddee         dee         dee         dee         dee         d	ee	         fd
Z
d ZddZd Zd Zedee         fd            Zej        defd            ZdddZdefdZd ZdS )tqdma\  Experimental: Ray distributed tqdm implementation.

    This class lets you use tqdm from any Ray remote task or actor, and have the
    progress centrally reported from the driver. This avoids issues with overlapping
    / conflicting progress bars, as the driver centrally manages tqdm positions.

    Supports a limited subset of tqdm args.
    g      ?Niterabledesctotalunitpositionflush_interval_sc                    dd l mc m} |,|*	 t          |          }n# t          t
          f$ r d }Y nw xY w|| _        |pd| _        || _        |pd| _	        |
                                | _        t          j                    | _        |pd| _        t!          j                    j        | _        d| _        d| _        ||n| j        | _        d| _        d S )Nr    itFg        )ray._private.services_privateserviceslen	TypeErrorAttributeError	_iterable_desc_total_unitget_node_ip_address_iposgetpid_pid_posuuiduuid4hex_uuid_x_closedDEFAULT_FLUSH_INTERVAL_SECONDS_flush_interval_s_last_flush_time)selfr   r   r   r   r    r!   r'   s           r   __init__ztqdm.__init__C   s    	100000000=X1H~.    "ZR
\T
//11IKK	M	Z\\%
  + 4 	
 !$s    55c                 <    || _         |                                  dS )z%Implements tqdm.tqdm.set_description.N)r,   _dump_state)r>   r   s     r   set_descriptionztqdm.set_descriptione   s!    
       c                 N    | xj         |z  c_         |                                  dS )zImplements tqdm.tqdm.update.N)r9   rA   )r>   ns     r   updateztqdm.updatej   s)    1rC   c                 R    d| _         t          |                     d           dS dS )zImplements tqdm.tqdm.close.TN)force_flush)r:   rayrA   r>   s    r   closez
tqdm.closeo   s2    ?..... ?rC   c                 .    |                                   dS )zImplements tqdm.tqdm.refresh.N)rA   rK   s    r   refreshztqdm.refreshv   s    rC   returnc                     | j         S Nr-   rK   s    r   r   z
tqdm.totalz   s
    {rC   c                     || _         d S rQ   rR   )r>   r   s     r   r   z
tqdm.total~   s    rC   Fc                    t          j                     }|s|| j        z
  | j        k     rd S || _        t          j        j        j        j        t          j        k    r:t          t          j        |                                           dz   d           d S t                                          t          j        |                                                      d S )N
r#   )end)timer=   r<   rJ   r&   workerglobal_workermodeWORKER_MODEprintjsondumps
_get_stater   process_state_updatecopydeepcopy)r>   rI   nows      r   rA   ztqdm._dump_state   s    ikk 	sT%::T=SSSF #<,1S_DD $*T__..//$6B??????JJ++DM$//:K:K,L,LMMMMMrC   c                     t           | j        | j        | j        | j        | j        | j        | j        | j        | j	        d
S )N)
__magic_token__xposr   r   r   ippidr5   closed)
RAY_TQDM_MAGICr9   r4   r,   r-   r.   r0   r3   r8   r:   rK   s    r   r_   ztqdm._get_state   sA    -9J[J(9Jl
 
 	
rC   c              #      K   | j         t          d          t          | j                   D ]}|                     d           |V  d S )NzNo iterable providedrD   )r+   
ValueErroriterrG   )r>   rf   s     r   __iter__ztqdm.__iter__   sZ      >!3444dn%% 	 	AKKNNNGGGG	 	rC   )NNNNNN)rD   )FrO   N)__name__
__module____qualname____doc__r;   r   r   strintfloatr?   rB   rG   rL   rN   propertyr   setterrA   ProgressBarStater_   ro    rC   r   r   r   7   s         &)" (,"#""&,0 $  $8$ $ sm $ }	 $
 sm $ 3- $ #5/ $  $  $  $D  
   
/ / /   x}    X \3    \
N 
N 
N 
N 
N
, 
 
 
 
    rC   r   c                   H    e Zd ZdZdedefdZdeddfdZd Zdeddfd	Z	dS )
_BarzManages a single virtual progress bar on the driver.

    The actual position of individual bars is calculated as (pos_offset + position),
    where `pos_offset` is the position offset determined by the BarManager.
    state
pos_offsetc                    || _         || _        t          j        |d         dz   t	          |d                   z   |d         |d         ||d         z   dd          | _        |d         r"| j                            |d                    d	S d	S )
zInitialize a bar.

        Args:
            state: The initial progress bar state.
            pos_offset: The position offset determined by the BarManager.
        r    rg   r   r   T)r   r   r   r    dynamic_ncols
unit_scalerf   N)r~   r   	real_tqdmr   ru   barrG   )r>   r~   r   s      r   r?   z_Bar.__init__   s     
$>v$s5<'8'88.v%,.
 
 
 : 	(HOOE#J'''''	( 	(rC   rO   Nc                    |d         | j         d         k    r | j                            |d                    |d         | j         d         k    r+|d         | j        _        | j                                         |d         | j         d         z
  }|r| j                            |           | j                                         || _         dS )z,Apply the updated worker progress bar state.r   r   rf   N)r~   r   rB   r   rN   rG   )r>   r~   deltas      r   rG   z_Bar.update   s    =DJv...H$$U6]333>TZ000"7^DHNHc
TZ_, 	#HOOE"""


rC   c                 8    | j                                          dS )z!The progress bar has been closed.N)r   rL   rK   s    r   rL   z
_Bar.close   s    rC   c                     || j         k    rV|| _         | j                                         || j        d         z    | j        _        | j                                         dS dS )6Update the position offset assigned by the BarManager.rg   N)r   r   clearr~   rg   rN   )r>   r   s     r   update_offsetz_Bar.update_offset   sb    (((DOHNN'$*U*;;<DHLH	 )(rC   )
rq   rr   rs   rt   rz   rv   r?   rG   rL   r   r{   rC   r   r}   r}      s         (. (C ( ( ( ((,              rC   r}   c                   z    e Zd ZdZd ZdefdZdeddfdZdeddfdZ	deddfd	Z
d
 ZdeddfdZddZddZdS )	_BarGroupzManages a group of virtual progress bar produced by a single worker.

    All the progress bars in the group have the same `pos_offset` determined by the
    BarManager for the process.
    c                 >    || _         || _        || _        i | _        d S rQ   )rh   ri   r   bars_by_uuid)r>   rh   ri   r   s       r   r?   z_BarGroup.__init__   s%    $-/rC   rO   c                     || j         v S )zReturn whether this bar exists.)r   )r>   bar_uuids     r   has_barz_BarGroup.has_bar   s    4,,,rC   r~   Nc                 L    t          || j                  | j        |d         <   dS )zAdd a new bar to this group.r5   N)r}   r   r   r>   r~   s     r   allocate_barz_BarGroup.allocate_bar   s%    +/t+G+G%-(((rC   c                 V    | j         |d                  }|                    |           dS )z0Update the state of a managed bar in this group.r5   N)r   rG   r>   r~   r   s      r   
update_barz_BarGroup.update_bar   s+    f.

5rC   c                     | j         |d                  }t                                                       |                                 | j         |d         = t                                                       dS )zRemove a bar from this group.r5   N)r   r   r   rL   r   r   s      r   	close_barz_BarGroup.close_bar   sc    f. 	

		eFm,

     rC   c                 z    | j         sdS dt          d | j                                         D                       z   S )zIReturn the number of pos slots we need to accommodate bars in this group.r   rD   c              3   0   K   | ]}|j         d          V  dS )rg   N)r~   ).0r   s     r   	<genexpr>z+_BarGroup.slots_required.<locals>.<genexpr>  s)      NNCsy'NNNNNNrC   )r   maxvaluesrK   s    r   slots_requiredz_BarGroup.slots_required   sC      	13NN43D3K3K3M3MNNNNNNNrC   offsetc                     || j         k    r8|| _         | j                                        D ]}|                    |           dS dS )r   N)r   r   r   r   )r>   r   r   s      r   r   z_BarGroup.update_offset  s]    T_$$$DO(//11 * *!!&)))) %$* *rC   c                 p    | j                                         D ]}|j                                         dS )HTemporarily hide visible bars to avoid conflict with other log messages.N)r   r   r   r   r>   r   s     r   r   z_BarGroup.hide_bars
  s;    $++-- 	 	CGMMOOOO	 	rC   c                 p    | j                                         D ]}|j                                         dS )Opposite of hide_bars().N)r   r   r   rN   r   s     r   r   z_BarGroup.unhide_bars  s?    $++-- 	 	CGOO	 	rC   rp   )rq   rr   rs   rt   r?   boolr   rz   r   r   r   r   rv   r   r   r   r{   rC   r   r   r      s        0 0 0-4 - - - -H"2 Ht H H H H 0 T    
!/ !D ! ! ! !O O O*C *D * * * *   
     rC   r   c                   Z    e Zd ZdZd ZdeddfdZdeddfdZddZdd	Z	defd
Z
d ZdS )r
   zCentral tqdm manager run on the driver.

    This class holds a collection of BarGroups and updates their `pos_offset` as
    needed to ensure individual progress bars do not collide in position, kind of
    like a virtual memory manager.
    c                 &   dd l mc m} |                                | _        t          j                    | _        i | _        d| _	        d| _
        t          j                    | _        t          j        j                                         | _        d S )Nr   F)r%   r&   r'   r/   rh   r1   r2   ri   
bar_groupsin_hidden_state	num_hides	threadingRLocklockrJ   widgetsutilin_notebookshould_colorize)r>   r'   s     r   r?   z_BarManager.__init__  s    000000000..009;;$O%%	 $';#3#?#?#A#AArC   r~   rO   Nc                 p    | j         5  |                     |           ddd           dS # 1 swxY w Y   dS )zApply the remote progress bar state update.

        This creates a new bar locally if it doesn't already exist. When a bar is
        created or destroyed, we also recalculate and update the `pos_offset` of each
        BarGroup on the screen.
        N)r   _process_state_update_lockedr   s     r   r`   z _BarManager.process_state_update*  s     Y 	5 	5--e444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   +//c                    t           s+t          d          rt                              d           d S |d         | j        k    r|d         | j        k    rd}nd                    |                    d                    }| j        rEd                    t          j
        j        t          j        j        |t          j
        j                  }nd                    |                    d          |                    d                    }| j        rEd                    t          j
        j        t          j        j        |t          j
        j                  }||d	         z   |d	<   |                     |          }|                    |d
                   rJ|                    |           |d         r+|                    |           |                                  d S d S |                    |           |                                  d S )Nno_tqdmz6tqdm is not installed. Progress bars will be disabled.rh   ri   r#   z	(pid={}) z{}{}{}{}z(pid={}, ip={}) r   r5   rj   )r   r   loggerwarningrh   ri   formatr   r   coloramaStyleDIMForeCYAN	RESET_ALL_get_or_allocate_bar_groupr   r   r   _update_offsetsr   )r>   r~   prefixprocesss       r   r   z(_BarManager._process_state_update_locked4  s    		"" YWXXXF;$'!!U|tx''$++EIIe,<,<==' '.. * * 0	 F (..		%  		$ F # #**N&M&N,	  v.f11%88??5=)) 	#
 u%%%X '!!%((($$&&&&&' '   '''  """""rC   c                     | j         5  | j        sGd| _        | xj        dz  c_        | j                                        D ]}|                                 ddd           dS # 1 swxY w Y   dS )r   TrD   N)r   r   r   r   r   r   r>   groups     r   r   z_BarManager.hide_barsa  s    Y 	& 	&' &'+$!#!_3355 & &EOO%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   AA$$A(+A(c                     | j         5  | j        r7d| _        | j                                        D ]}|                                 ddd           dS # 1 swxY w Y   dS )r   FN)r   r   r   r   r   r   s     r   r   z_BarManager.unhide_barsj  s    Y 	( 	(# (',$!_3355 ( (E%%''''		( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   ?AAAc                     |d         |d         f}|| j         vrUt          d | j                                         D                       }t          |d         |d         |          | j         |<   | j         |         S )Nrh   ri   c              3   >   K   | ]}|                                 V  d S rQ   )r   )r   ps     r   r   z9_BarManager._get_or_allocate_bar_group.<locals>.<genexpr>u  s.      NN))++NNNNNNrC   )r   sumr   r   )r>   r~   ptupler   s       r   r   z&_BarManager._get_or_allocate_bar_groupr  sx    +uU|,((NNT_5K5K5M5MNNNNNF&/dU5\6&R&RDOF#v&&rC   c                     d}| j                                         D ].}|                    |           ||                                z  }/d S )Nr   )r   r   r   r   )r>   r   procs      r   r   z_BarManager._update_offsetsy  sZ    O**,, 	, 	,Dv&&&d))+++FF	, 	,rC   rp   )rq   rr   rs   rt   r?   rz   r`   r   r   r   r   r   r{   rC   r   r
   r
     s         B B B5*: 5t 5 5 5 5+#2B +#t +# +# +# +#Z& & & &( ( ( ('0@ ' ' ' ', , , , ,rC   rO   c                      t           5  t          .t                      at          dd          rddl} t
          | _        t          cddd           S # 1 swxY w Y   dS )z,Get or create a BarManager for this process.NRAY_TQDM_PATCH_PRINTTr   )	_mgr_lockr   r
   r   builtinsr   r\   )r   s    r   r   r     s     
  "}}H.55 ,!+                 s   <AAA__main__c                       fd}t           j                            dd                              |t           j                            d                                                     d S )Nc                 P    t          d|            t          j                   | S )NzIntermediate result)r\   rW   sleep)rf   delays    r   r   zprocessing.<locals>.sleep  s)    '+++JuHrC   i  d   )override_num_blocksrD   )size)compute)rJ   datarangemapActorPoolStrategycount)r   r   s   ` r   
processingr     so    	 	 	 	 	
 	t5599385515== 	: 	
 	

%'''''rC   gQ?g{Gz?g?)-r   ra   r]   loggingr1   r   r   rW   r5   typingr   r   r   r   r   rJ   ray._private.ray_constantsr   ray.util.debugr   	tqdm.autoautor   ImportError	getLoggerrq   r   ru   rz   rk   r   __annotations__Lockr   r\   r   r   r   r}   r   r
   r   remoter   r   r{   rC   r   <module>r      s       				 



       0 0 0 0 0 0 0 0 0 0 0 0  



 / / / / / / # # # # # #!!!!!!!   III 
	8	$	$ S>  , %)(=
! ( ( (IN		! ! !$j j j j j j j jZ2 2 2 2 2 2 2 2j9 9 9 9 9 9 9 9xh, h, h, h, h, h, h, h,V+     zZ  Z CGd##d##d##	
     s   A AA