Ë
    tPêjü  ã                  óZ   — d Z ddlmZ ddlmZmZmZ ddlmZm	Z	m
Z
 dad„ Z G d„ d«      Zy)	z£
Helpers for the Prometheus integration (extracted to keep ``prometheus.py`` smaller).

``PrometheusLabelFactoryContext`` lives here so it has a dedicated module.
é    )Úannotations)ÚAnyÚFinalÚcast)ÚUserAPIKeyLabelValuesÚ_sanitize_prometheus_label_nameÚ _sanitize_prometheus_label_valueNc                 ó*   — t         €ddlm}  | a t         S )z×
    Get cached get_end_user_id_for_cost_tracking function.
    Lazy imports on first call to avoid loading utils.py at import time (60MB saved).
    Subsequent calls use cached function for better performance.
    r   ©Ú!get_end_user_id_for_cost_tracking)Ú"_get_end_user_id_for_cost_trackingÚlitellm.utilsr   r   s    úu/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/prometheus_helpers/__init__.pyÚ)_get_cached_end_user_id_for_cost_trackingr      s   € ô *Ð1ÝCà-NÐ*Ü-Ð-ó    c                  ó2   — e Zd ZdZdZ e«       Zdd„Zdd„Zy)ÚPrometheusLabelFactoryContextz—
    Precomputes per-request label inputs so prometheus_label_factory can subset
    per metric without repeated model_dump / tag / metadata work.
    )Ú_custom_by_sanitized_keyÚ_resolved_end_userÚ_sanitized_enumÚ_tag_labelsÚenum_valuesc                ó&  — || _         |j                  «       }|j                  «       D ��ci c]  \  }}|t        |«      “Œ c}}| _        i | _        |j                  �E|j                  j                  «       D ](  \  }}t        |«      }t        |«      | j
                  |<   Œ* i | _        |j                  �Fddl
m}  ||j                  «      j                  «       D ]  \  }}t        |«      | j                  |<   Œ | j                  | _        y c c}}w )Nr   )Úget_custom_labels_from_tags)r   Ú
model_dumpÚitemsr	   r   r   Úcustom_metadata_labelsr   r   ÚtagsÚlitellm.integrations.prometheusr   Ú_END_USER_NOT_COMPUTEDr   )	Úselfr   Ú	enum_dictÚkÚvÚkeyÚvalueÚskr   s	            r   Ú__init__z&PrometheusLabelFactoryContext.__init__2   s  € Ø&ˆÔØ&×1Ñ1Ó3ˆ	à?H¿¹Ó?P÷7
Ù7;°q¸!ˆAÔ/°Ó2Ñ2ó7
ˆÔð @BˆÔ%Ø×-Ñ-Ð9Ø)×@Ñ@×FÑFÓHò \‘
��UÜ4°SÓ9�Ü4TÐUZÓ4[�×-Ñ-¨bÒ1ð\ð 35ˆÔØ×ÑÐ'åSá3°K×4DÑ4DÓE×KÑKÓMò J‘��1Ü&FÀqÓ&I�× Ñ  Ò#ðJð (,×'BÑ'BˆÕùó!7
s   «Dc                óÊ   — | j                   | j                  u r/t        «       } |d| j                  j                  id¬«      | _         t        t        d z  | j                   «      S )NÚuser_api_key_end_user_idÚ
prometheus)Úlitellm_paramsÚservice_type)r   r    r   r   Úend_userr   Ústr)r!   Úfns     r   Úget_resolved_end_userz3PrometheusLabelFactoryContext.get_resolved_end_userG   s[   € Ø×"Ñ" d×&AÑ&AÑAÜAÓCˆBÙ&(Ø :¸D×<LÑ<L×<UÑ<UÐVØ)ô'ˆDÔ#ô ”C˜$‘J × 7Ñ 7Ó8Ð8r   N)r   r   ÚreturnÚNone)r2   z
str | None)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Úobjectr    r(   r1   © r   r   r   r   "   s#   „ ñð
€Iñ $›XÐóCô*9r   r   )r7   Ú
__future__r   Útypingr   r   r   Ú%litellm.types.integrations.prometheusr   r   r	   r   r   r   r:   r   r   ú<module>r>      s6   ðñõ #ç #Ñ #÷ñ ð &*Ð "ò.÷,9ò ,9r   