
    &`i                        d dl Z d dlZd dlmZmZmZ d dlmZmZm	Z	 d dl
mZ eZg dZedez  dez  dez  d	ez  d
ez  e	de	z  de	z  de	z  d	e	z  d
e	z  edez  dez  dez  dez  d	ez  d
ez  dez  dez  gZg dZ G d d          ZdS )    N)DictListTuple)GiBKiBMiB)	Histogram)g?g      ?g      ?g      ?g      @g      @g      @g      $@g      .@g      4@g      9@g      I@g     R@g      Y@g     b@g     @@g     @@g     @g     @   @         i         i   i   )      
      2   d      i  i  i	  i  i'  ia  iP  i i i  i@B i%& i@KL i c                       e Zd ZdZdee         fdZddedefdZde	d	e
eef         fd
Zd Zdeeef         fdZdefdZdS )RuntimeMetricsHistogramz
    Class that tracks a histogram of values.

    Contains helper methods to record the values and apply those values to a `ray.util.metrics.Histogram` metric.
    
boundariesc                 ~    || _         d t          t          |          dz             D             | _        d | _        d S )Nc                     g | ]}d S )r    ).0_s     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/data/_internal/execution/interfaces/common.py
<listcomp>z4RuntimeMetricsHistogram.__init__.<locals>.<listcomp>_   s    EEEQqEEE    r   )_boundariesrangelen_bucket_counts_memoized_avg)selfr   s     r   __init__z RuntimeMetricsHistogram.__init__\   sA    %EE%J!0C*D*DEEE!r!   r   valuenum_observationsc                 d    | j         |                     |          xx         |z  cc<   d | _        d S N)r%   _find_bucket_indexr&   )r'   r)   r*   s      r   observezRuntimeMetricsHistogram.observeb   s>    D33E::;;;?OO;;;!r!   metrictagsc                 j   t          |dd          i |_        t          j        |d          }|j                            |          }t          t          | j                            D ]}|t          | j                  dz
  k     r| j        |         n| j        d         dz   }|dk    r| j        |dz
           nd}||z   d	z  }|| j        |         ||         z
  n| j        |         }	t          |	          D ]}
|	                    ||           | j        
                                |j        |<   dS )
a  
        This method calculates the difference between the current bucket counts and the previous bucket counts,
        and applies those observations to the metric.

        This method stores the previous_bucket_counts in the metric as `last_applied_bucket_counts_for_tags`.
        #last_applied_bucket_counts_for_tagsNT)	sort_keysr   r   r      )getattrr2   jsondumpsgetr#   r$   r%   r"   r.   copy)r'   r/   r0   tags_keyprevious_bucket_countsiboundary_upper_boundboundary_lower_boundbucket_valuediffr   s              r   	export_toz!RuntimeMetricsHistogram.export_tof   s}    6@$GGO9;F6:dd333!'!K!O!O"
 "
 s4.//00 	3 	3A s4.//!333  ## %b)C/ ! ?@!ee4#3AE#:#: 03GG1LL
 *5 #A&)?)BBB(+ 
 4[[ 3 3|T22223
 $$&& 	2	
 	
 	
r!   c                 j    | j         |                                 | _         | j         \  }}d| d|ddS )Nz
(samples: z, avg: z.2f))r&   _calculate_average_value)r'   total_samplesaverages      r   __repr__z RuntimeMetricsHistogram.__repr__   sH    %!%!>!>!@!@D!%!3w@M@@'@@@@@r!   returnc                 l   t          | j                  }|dk    r|dfS d}t          | j                  D ]w\  }}|dk    rl|dk    r| j        d         dz  }nM|t	          | j                  dz
  k    r| j        d         dz  }n!| j        |dz
           | j        |         z   dz  }|||z  z  }x||z  }||fS )z
        Calculate the average value of all samples.

        Used to show a representative value for the histogram when
        printing the histogram as a string.
        r   g        r5   r   r4   g      ?)sumr%   	enumerater"   r$   )r'   rF   weighted_sumr=   countr@   rG   s          r   rE   z0RuntimeMetricsHistogram._calculate_average_value   s     D/00A !##!$"566 	5 	5HAuqyy66#'#3A#6#:LL#d122Q666#'#3B#7##=LL %)$4QU$;d>Nq>Q$QUV#VLu 44.g%%r!   c                 6    t          j        | j        |          S r,   )bisectbisect_leftr"   )r'   r)   s     r   r-   z*RuntimeMetricsHistogram._find_bucket_index   s    !$"2E:::r!   N)r   )__name__
__module____qualname____doc__r   floatr(   intr.   r	   r   strrB   rH   r   rE   r-   r   r!   r   r   r   U   s         "4; " " " "" "U "c " " " "-'-' 38n-' -' -' -'^A A A&%U
*; & & & &<; ; ; ; ; ; ;r!   r   )rP   r7   typingr   r   r   ray.data._internal.utilr   r   r   ray.util.metricsr	   rX   	NodeIdStrhistogram_buckets_shistogram_buckets_byteshistogram_bucket_rowsr   r   r!   r   <module>r`      s]     $ $ $ $ $ $ $ $ $ $ 1 1 1 1 1 1 1 1 1 1 & & & & & & 	   0 GH#I#I#IGH#I#I#IGHH#I#I#I3J3J+ 2   2e; e; e; e; e; e; e; e; e; e;r!   