o
    `۷i                     @   sf   d dl Z d dlmZ dZdZdZdZdZdZd	d
 Z	e	eeeedZ
e	eeeedZG dd dZdS )    N)	Histogram      g-C6?g      ?g?g     @c                    s6   |dkrgS d|d   fddt |D S )zGenerates a list of `num` buckets between `event_min` and `event_max`.
    `coeff` - specifies how much denser at the low end
       c                    s(   g | ]}d |       qS )r    ).0icoeff	event_max	event_minstepr   Y/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/rllib/utils/metrics/ray_metrics.py
<listcomp>   s    z#_create_buckets.<locals>.<listcomp>)ranger
   r   r   numr   r	   r   _create_buckets   s   r   r   c                   @   s.   e Zd ZdZdefddZdd Zdd Zd	S )
TimerAndPrometheusLoggerzContext manager for timing code execution.

    Elapsed time is automatically logged to the provided Prometheus Histogram.

    Example:
        with TimerAndPrometheusLogger(Histogram):
            learner.update()
    	histogramc                 C   s
   || _ d S N)
_histogram)selfr   r   r   r   __init__2   s   
z!TimerAndPrometheusLogger.__init__c                 C   s   t  | _| S r   )timeperf_counterstart)r   r   r   r   	__enter__5   s   
z"TimerAndPrometheusLogger.__enter__c                 C   s"   t  | j | _| j| j d S r   )r   r   r   elapsedr   observe)r   exc_type	exc_value	tracebackr   r   r   __exit__9   s   z!TimerAndPrometheusLogger.__exit__N)__name__
__module____qualname____doc__r   r   r   r#   r   r   r   r   r   (   s
    	r   )r   ray.util.metricsr   _num_buckets_coeff_short_event_min_short_event_max_long_event_min_long_event_maxr   )DEFAULT_HISTOGRAM_BOUNDARIES_SHORT_EVENTS(DEFAULT_HISTOGRAM_BOUNDARIES_LONG_EVENTSr   r   r   r   r   <module>   s,    