o
    $i!                     @   s   U d dl mZ d dlmZmZmZ d dlmZ dZdZ	dd dd d	Z
eeeee gef f ed
< dai Zeeee f ed< G dd deeZdS )    )Enum)CallableDictList)RAY_METRIC_CARDINALITY_LEVELWorkerIdNamec                 C      t | S Nsumvalues r   f/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/ray/_private/telemetry/metric_cardinality.py<lambda>       r   c                 C   r	   r
   r   r   r   r   r   r      r   tasksactors'HIGH_CARDINALITY_METRICS_TO_AGGREGATIONN_HIGH_CARDINALITY_LABELSc                   @   s~   e Zd ZdZdZdZdZedddZede	de
ee gef fd	d
Zedee	 fddZede	dee	 fddZdS )MetricCardinalitya  Cardinality level configuration for all Ray metrics (ray_tasks, ray_actors,
    etc.). This configurtion is used to determine whether to globally drop high
    cardinality labels. This is important for high scale clusters that might consist
    thousands of workers, millions of tasks.

    - LEGACY: Keep all labels. This is the default behavior.
    - RECOMMENDED: Drop high cardinality labels. The set of high cardinality labels
    are determined internally by Ray and not exposed to users. Currently, this includes
    the following labels: WorkerId
    - LOW: Same as RECOMMENDED, but also drop the Name label for tasks and actors.
    legacyrecommendedlowreturnc                   C   s:   t d urt S z	tt a W t S  ty   tja Y t S w r
   )_CARDINALITY_LEVELr   r   lower
ValueErrorLEGACYr   r   r   r   get_cardinality_level$   s   z'MetricCardinality.get_cardinality_levelmetric_namec                 C   s   | t v rt |  S dd S )Nc                 S   s   | d S )Nr   r   r   r   r   r   r   3   r   z<MetricCardinality.get_aggregation_function.<locals>.<lambda>)r   )r"   r   r   r   get_aggregation_function/   s   z*MetricCardinality.get_aggregation_functionc                   C   s   t t S r
   )listr   keysr   r   r   r   get_high_cardinality_metrics5   s   z.MetricCardinality.get_high_cardinality_metricsc                 C   sl   | t v rt |  S t }|tjks| t vrg t | < g S tgt | < |tjkr2| dv r2t |  t t |  S )z@
        Get the high cardinality labels of the metric.
        r   )	r   r   r!   r    r&   WORKER_ID_TAG_KEYLOWappendTASK_OR_ACTOR_NAME_TAG_KEY)r"   cardinality_levelr   r   r   #get_high_cardinality_labels_to_drop9   s   

z5MetricCardinality.get_high_cardinality_labels_to_dropN)r   r   )__name__
__module____qualname____doc__r    RECOMMENDEDr(   staticmethodr!   strr   r   floatr#   r&   r,   r   r   r   r   r      s    
"r   )enumr   typingr   r   r   ray._private.ray_constantsr   r'   r*   r   r3   r4   __annotations__r   r   r   r   r   r   r   <module>   s    $