Ë
    tPêjË  ã                   ó†   — d Z ddlmZmZ ddlmZmZ ddlmZ ddl	m
Z
 ddlmZ erddl	mZ  G d	„ d
e«      Z G d„ d«      Zy)z¬
New Relic Team Handler

Used to get the NewRelicMetricsLogger for a given request.
Handles Key/Team Based New Relic metrics, following the same pattern as DataDogHandler.
é    )ÚTYPE_CHECKINGÚFinal)ÚReadOnlyÚ	TypedDict)Úverbose_logger)ÚStandardCallbackDynamicParamsé   )ÚNewRelicMetricsLogger)ÚDynamicLoggingCachec                   ó:   — e Zd ZU eedz     ed<   eedz     ed<   y)ÚNewRelicLoggingConfigNÚnewrelic_api_keyÚnewrelic_region)Ú__name__Ú
__module__Ú__qualname__r   ÚstrÚ__annotations__© ó    úx/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/newrelic/newrelic_team_handler.pyr   r      s    … Ø˜s T™zÑ*Ó*Ø˜c D™jÑ)Ô)r   r   c                   ó|   — e Zd Zededddefd„«       Zededddefd„«       Zededefd„«       Z	edede
fd	„«       Zy
)ÚNewRelicHandlerÚ standard_callback_dynamic_paramsÚin_memory_dynamic_logger_cacher   Úreturnc                 óŠ   — t         j                  | ¬«      }|j                  |d¬«      }|€t         j                  ||¬«      }|S )aV  
        Get a team-scoped NewRelicMetricsLogger for a given request.

        Resolves and caches per-team NewRelicMetricsLogger instances using
        DynamicLoggingCache, keyed by the team's New Relic credentials. Each unique
        set of credentials gets its own logger instance with its own batch/flush loop.

        Note: This handler is only called when a team-scoped newrelic_api_key is
        present. The trace logger for the ``newrelic`` callback (OTel v2 / legacy
        agent) is managed separately by _init_custom_logger_compatible_class via
        _in_memory_loggers.
        ©r   Únewrelic)ÚcredentialsÚservice_name)r    r   )r   Ú#get_dynamic_newrelic_logging_configÚ	get_cacheÚ(_create_newrelic_logger_from_credentials)r   r   Ú_credentialsÚtemp_newrelic_loggers       r   Úget_newrelic_logger_for_requestz/NewRelicHandler.get_newrelic_logger_for_request   sh   € ô" .×QÑQØ-Mð Ró 
ˆð  >×GÑGØ$°:ð  Hó  
Ðð  Ð'Ü#2×#[Ñ#[Ø(Ø/Mð $\ó $Ð ð
 $Ð#r   r    c                 ó¶   — t        | j                  d«      xs d| j                  d«      ¬«      }|j                  | d|¬«       t        j                  d«       |S )Nr   Ú r   ©r   r   r   )r    r!   Úlogging_objzSNew Relic: Created and cached new NewRelicMetricsLogger for team-scoped credentials)r
   ÚgetÚ	set_cacher   Údebug)r    r   Únewrelic_loggers      r   r$   z8NewRelicHandler._create_newrelic_logger_from_credentials<   sb   € ô
 "7Ø(Ÿ_™_Ð-?Ó@ÒFÀBØ'ŸO™OÐ,=Ó>ô"
ˆð 	'×0Ñ0Ø#Ø#Ø'ð 	1ô 	
ô
 	×ÑÐrÔsØÐr   c                 óX   — t        | j                  d«      | j                  d«      ¬«      S )Nr   r   r*   )r   r,   r   s    r   r"   z3NewRelicHandler.get_dynamic_newrelic_logging_configM   s/   € ô %Ø=×AÑAÐBTÓUØ<×@Ñ@ÐARÓSô
ð 	
r   c                 ó(   — | j                  d«      d uS )Nr   )r,   r   s    r   Ú(_dynamic_newrelic_credentials_are_passedz8NewRelicHandler._dynamic_newrelic_credentials_are_passedV   s   € ð 0×3Ñ3Ð4FÓGÈtÐSÐSr   N)r   r   r   Ústaticmethodr   r
   r'   r   r$   r"   Úboolr2   r   r   r   r   r      s©   „ Øð$Ø*Gð$à(=ð$ð 
ò$ó ð$ð@ ðØ*ðà(=ðð 
òó ðð  ð
Ø*Gð
à	ò
ó ð
ð ðTØ*GðTà	òTó ñTr   r   N)Ú__doc__Útypingr   r   Útyping_extensionsr   r   Úlitellm._loggingr   Ú*litellm.litellm_core_utils.litellm_loggingr   Únewrelic_metricsr
   r   r   r   r   r   r   ú<module>r;      s;   ðñ÷ (ç 1å +Ý Tå 3áÝNô*˜Iô *÷
@Tò @Tr   