
    AHj                         d dl Z d dlmZmZmZmZ d dlmZ erd 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      Z G d	 d
e      Zy)    N)TYPE_CHECKINGAnyOptionalUnion)OpenTelemetry)Span)OpenTelemetryConfig)Protocolc                   *    e Zd ZdZdee   dedefdZy)
LevoConfigz(Configuration for Levo OTLP integration.otlp_auth_headersprotocolendpointc                 .    || _         || _        || _        y )Nr   r   r   )selfr   r   r   s       V/root/tools/cai/cai_env/lib/python3.12/site-packages/litellm/integrations/levo/levo.py__init__zLevoConfig.__init__   s     "3      N)__name__
__module____qualname____doc__r   strr
   r    r   r   r   r      s*    2!#C=! ! 	!r   r   c                   ,    e Zd ZdZedefd       Zd Zy)
LevoLoggerz<Levo Logger that extends OpenTelemetry for OTLP integration.returnc                     t         j                  j                  dd      } t         j                  j                  dd      }t         j                  j                  dd      }t         j                  j                  dd      }| st        d      |st        d      |st        d      |st        d	      |}d
}d|  g}|j	                  d|        |j	                  d|        dj                  |      }t        |||      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.
        LEVOAI_API_KEYNLEVOAI_ORG_IDLEVOAI_WORKSPACE_ID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.	otlp_httpzAuthorization=Bearer zx-levo-organization-id=zx-levo-workspace-id=,r   )osenvironget
ValueErrorappendjoinr   )api_keyorg_idworkspace_idcollector_urlr   r   headers_partsr   s           r   get_levo_configzLevoLogger.get_levo_config(   s    **..!1486zz~~&;TB

'=tD W  V  \  I  !( 1	:;6vh?@3L>BCHH]3/
 	
r   c                    K   	 | j                         }|j                  sdddS dddS # t        $ r}dt        |      dcY d}~S d}~ww xY ww)z
        Health check for Levo integration.

        Returns:
            dict: Health status with status and message/error_message keys.
        	unhealthyz+LEVOAI_API_KEY environment variable not set)statuserror_messagehealthyz(Levo credentials are configured properly)r4   messageN)r1   r   r)   r   )r   configes      r   async_health_checkzLevoLogger.async_health_check^   si     	))+F++)%R  $E   	%!$Q 	s9   A * A* A	AA AAAAN)r   r   r   r   staticmethodr   r1   r:   r   r   r   r   r   %   s$    F3
Z 3
 3
jr   r   )r&   typingr   r   r   r   "litellm.integrations.opentelemetryr   opentelemetry.tracer   _Spanr	   _OpenTelemetryConfig litellm.types.integrations.arizer
   	_Protocolr   r   r   r   r   <module>rC      sc    	 6 6 <1 GH.DHD! !Q Qr   