
    &`iU                     (    d dl Z  G d d          ZdS )    Nc                   z    e Zd ZdZddZd Zd Zd Zd Zd Z	e
d	             Ze
d
             Ze
d             ZdS )_TimerzA running stat for conveniently logging the duration of a code block.

    Example:
        wait_timer = TimerStat()
        with wait_timer:
            ray.wait(...)

    Note that this class is *not* thread-safe.
    
   c                 Z    || _         g | _        g | _        d | _        d| _        d| _        d S )N        r   )_window_size_samples_units_processed_start_time_total_timecount)selfwindow_sizes     b/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/util/timer.py__init__z_Timer.__init__   s4    ' "


    c                 X    | j         
J d            t          j                    | _         d S )Nz concurrent updates not supported)r   timer   s    r   	__enter__z_Timer.__enter__   s.    '')K'''9;;r   c                     | j         J t          j                    | j         z
  }|                     |           d | _         d S )N)r   r   push)r   exc_type	exc_valuetb
time_deltas        r   __exit__z_Timer.__exit__   sD    +++Y[[4#33
		*r   c                     | j                             |           t          | j                   | j        k    r| j                             d           | xj        dz  c_        | xj        |z  c_        d S )Nr      )r	   appendlenr   popr   r   )r   r   s     r   r   z_Timer.push!   so    Z(((t} 111Ma   

a

J&r   c                     | j                             |           t          | j                   | j        k    r| j                             d           d S d S Nr   )r
   r    r!   r   r"   )r   ns     r   push_units_processedz_Timer.push_units_processed(   sW    $$Q'''t$%%(999!%%a((((( :9r   c                 2    t          | j                  dk    S r$   )r!   r
   r   s    r   has_units_processedz_Timer.has_units_processed-   s    4())A--r   c                     t          | j                  dk    rdS t          t          | j                            t          | j                  z  S Nr   r   )r!   r	   floatsumr   s    r   meanz_Timer.mean0   sC    t}""3S''((3t}+=+===r   c                     t          | j                  dk    rdS t          t          | j                            t          | j                  z  S r*   )r!   r
   r+   r,   r   s    r   mean_units_processedz_Timer.mean_units_processed6   sF    t$%%**3S.//003t7L3M3MMMr   c                     t          t          | j                            }|sdS t          t          | j                            |z  S )Nr   )r+   r,   r	   r
   )r   
time_totals     r   mean_throughputz_Timer.mean_throughput<   sD    3t}--..
 	3S.//00:==r   N)r   )__name__
__module____qualname____doc__r   r   r   r   r&   r(   propertyr-   r/   r2    r   r   r   r      s            ' ' '     ' ' ') ) )
. . . > > X>
 N N XN
 > > X> > >r   r   )r   r   r8   r   r   <module>r9      s@    => => => => => => => => => =>r   