o
    ưi                     @   s   d dl Z d dlmZmZmZmZ d dlmZ er5d dlm	Z
 d dlmZ d dlmZ eZeZee
ef Z	neZeZeZ	G dd dZG d	d
 d
eZdS )    N)TYPE_CHECKINGAnyOptionalUnion)OpenTelemetry)Span)OpenTelemetryConfig)Protocolc                   @   s*   e Zd ZdZdee dedefddZdS )
LevoConfigz(Configuration for Levo OTLP integration.otlp_auth_headersprotocolendpointc                 C   s   || _ || _|| _d S )Nr   r   r   )selfr   r   r    r   U/home/app/Keep/.python/lib/python3.10/site-packages/litellm/integrations/levo/levo.py__init__   s   
zLevoConfig.__init__N)__name__
__module____qualname____doc__r   strr	   r   r   r   r   r   r
      s    r
   c                   @   s*   e Zd ZdZedefddZdd ZdS )
LevoLoggerz<Levo Logger that extends OpenTelemetry for OTLP integration.returnc                  C   s   t jdd} t jdd}t jdd}t jdd}| s"td|s(td|s.td|s4td	|}d
}d|  g}|d|  |d|  d|}t|||dS )a  
        Retrieves the Levo configuration based on environment variables.

        Returns:
            LevoConfig: Configuration object containing Levo OTLP settings.

        Raises:
            ValueError: If required environment variables are missing.
        ZLEVOAI_API_KEYNZLEVOAI_ORG_IDZLEVOAI_WORKSPACE_IDZLEVOAI_COLLECTOR_URLzELEVOAI_API_KEY environment variable is required for Levo integration.zDLEVOAI_ORG_ID environment variable is required for Levo integration.zJLEVOAI_WORKSPACE_ID environment variable is required for Levo integration.zLEVOAI_COLLECTOR_URL environment variable is required for Levo integration. Please contact Levo support to get your collector URL.Z	otlp_httpzAuthorization=Bearer zx-levo-organization-id=zx-levo-workspace-id=,r   )osenvironget
ValueErrorappendjoinr
   )Zapi_keyZorg_idZworkspace_idZcollector_urlr   r   Zheaders_partsr   r   r   r   get_levo_config&   s>   
zLevoLogger.get_levo_configc              
      s\   z|   }|jsdddW S dddW S  ty- } zdt|dW  Y d}~S d}~ww )z
        Health check for Levo integration.

        Returns:
            dict: Health status with status and message/error_message keys.
        Z	unhealthyz+LEVOAI_API_KEY environment variable not set)statuserror_messageZhealthyz(Levo credentials are configured properly)r"   messageN)r!   r   r   r   )r   configer   r   r   async_health_check\   s    zLevoLogger.async_health_checkN)r   r   r   r   staticmethodr
   r!   r'   r   r   r   r   r   #   s
    5r   )r   typingr   r   r   r   Z"litellm.integrations.opentelemetryr   Zopentelemetry.tracer   _Spanr   Z_OpenTelemetryConfigZ litellm.types.integrations.arizer	   Z	_Protocolr
   r   r   r   r   r   <module>   s    