
    ^h                        % S SK r S SKJr  S SKJr  S SKJrJrJrJrJ	r	J
r
  S SKrS SKJr  S SKJr  S SKJr  S SKJrJrJr  \(       a!  S S	KJr  S S
KJr  S SKJr  S SKJ r!  \r\r\!r \rO\r\r\r \r\ RD                  " SS5      r#\ RD                  " SS5      \ RD                  " SS5      \ RD                  " SS5      S.r$\\\4   \%S'   Sr&Sr'\ " S S5      5       r( " S S\5      r)g)    N)	dataclass)datetime)TYPE_CHECKINGAnyDictListOptionalUnion)verbose_logger)CustomLogger)ServiceLoggerPayload)ChatCompletionMessageToolCallFunctionStandardLoggingPayload)SpanExporter)Span) ManagementEndpointLoggingPayload)UserAPIKeyAuthOTEL_TRACER_NAMElitellmOTEL_SERVICE_NAMEOTEL_ENVIRONMENT_NAME
production)zservice.namezdeployment.environmentmodel_idLITELLM_RESOURCEraw_gen_ai_requestlitellm_requestc                   f    \ rS rSr% Sr\\\4   \S'   Sr	\
\   \S'   Sr\
\   \S'   \S 5       rSrg)	OpenTelemetryConfig.   consoleexporterNendpointheadersc                     SSK Jn  [        R                  " S5      S:X  a  U " U" 5       S9$ U " [        R                  " SS5      [        R                  " S5      [        R                  " S5      S	9$ )
z
OTEL_HEADERS=x-honeycomb-team=B85YgLm9****
OTEL_EXPORTER="otlp_http"
OTEL_ENDPOINT="https://api.honeycomb.io/v1/traces"

OTEL_HEADERS gets sent as headers = {"x-honeycomb-team": "B85YgLm96******"}
r   )InMemorySpanExporterOTEL_EXPORTER	in_memory)r"   r!   OTEL_ENDPOINTOTEL_HEADERS)r"   r#   r$   )6opentelemetry.sdk.trace.export.in_memory_span_exporterr&   osgetenv)clsr&   s     \/home/james-whalen/.local/lib/python3.13/site-packages/litellm/integrations/opentelemetry.pyfrom_envOpenTelemetryConfig.from_env5   s_    	
 99_%4 4 677YY	:YY/II
 	
     )__name__
__module____qualname____firstlineno__r"   r
   strr   __annotations__r#   r	   r$   classmethodr0   __static_attributes__r3   r2   r/   r   r   .   sF     *3HeC%&2"Hhsm"!GXc]!
 
r2   r   c                   B  ^  \ rS rSr  S-S\\   S\\   4U 4S jjjrS rS r	S r
S r    S.S	\S
\\   S\\\\4      S\\\\4      S\\   4
S jjr     S/S	\S\\   S
\\   S\\\\4      S\\\\4      S\\   4S jjrS\S\S\4S jrS rS rS\4S jrS\\\\\4   4S jr\S\\   S\ \\!4   4S j5       r"S\S\\!   4S jr#S\\\\\4   4S jr$S\S \S!\!4S" jr%S\4S# jr&S$ r'S% r(S& r)S' r*S( r+ S0S)\,S
\\   4S* jjr- S0S)\,S
\\   4S+ jjr.S,r/U =r0$ )1OpenTelemetryM   configcallback_namec                   > SSK Jn  SSKJn  SSKJn  Uc  [        R                  5       nXl        U R                  R                  U l
        U R                  R                  U l        U R                  R                  U l        U" U" [        S9S9nUR!                  U R#                  5       5        X l        UR'                  U5        UR)                  [*        5      U l        [/        [0        R2                  " SS5      5      R5                  5       nUS	:X  a^  SS Kn	U	R9                  U	R:                  S
9  U	R=                  [>        5        U	R=                  S5      n
U
RA                  U	R:                  5        [B        TU ]  " S0 UD6  g )Nr   trace)Resource)TracerProvider)
attributes)resource
DEBUG_OTELFalsetrue)levelzopentelemetry.sdk.trace.exportr3   )#opentelemetryrC   opentelemetry.sdk.resourcesrD   opentelemetry.sdk.tracerE   r   r0   r?   r"   r'   r#   r)   r$   r*   r   add_span_processor_get_span_processorr@   set_tracer_provider
get_tracerLITELLM_TRACER_NAMEtracerr8   r,   r-   lowerloggingbasicConfigDEBUG	getLoggerr4   setLevelsuper__init__)selfr?   r@   kwargsrC   rD   rE   provider_debug_otelrV   otel_exporter_logger	__class__s              r/   r\   OpenTelemetry.__init__N   s.    	(8:>(113F![[11![[11 KK//!8?O+PQ##D$<$<$>?*!!(+&&':;"))L':;AAC& gmm4h' $+#4#45U#V  ))'--8 	"6"r2   c                 (    U R                  XX45        g N_handle_sucessr]   r^   response_obj
start_timeend_times        r/   log_success_eventOpenTelemetry.log_success_eventv   s    F*Gr2   c                 (    U R                  XX45        g re   _handle_failurerh   s        r/   log_failure_eventOpenTelemetry.log_failure_eventy   s    V:Hr2   c                 0   #    U R                  XX45        g 7fre   rf   rh   s        r/   async_log_success_event%OpenTelemetry.async_log_success_event|   s     F*G   c                 0   #    U R                  XX45        g 7fre   ro   rh   s        r/   async_log_failure_event%OpenTelemetry.async_log_failure_event   s     V:Hrv   payloadparent_otel_spanrj   rk   event_metadatac                 *  #    SSK Jn  SSKJnJn  Sn	Sn
[        U[        5      (       a  [        US-  5      n	OU R                  U5      n	[        U[        5      (       a  [        US-  5      n
OU R                  U5      n
Ub  UR                  nU R                  R                  UUR                  U5      U	S9nU R                  USUR                  S9  U R                  USUR                  R                  S9  U(       aP  UR!                  5        H<  u  pUc  S	n[        U["        5      (       a   [%        U5      nU R                  UUUS9  M>     UR)                  U" UR*                  5      5        UR-                  U
S9  g g ! [&         a    S
n NUf = f7f)Nr   rB   Status
StatusCode    eAnamecontextrj   	call_typespankeyvalueserviceNonez0litellm logging error - could_not_json_serializerk   )rL   rC   opentelemetry.tracer   r   
isinstancefloatint_to_nsr   rT   
start_spanset_span_in_contextsafe_set_attributer   r   itemsdictr8   	Exception
set_statusOKend)r]   rz   r{   rj   rk   r|   rC   r   r   _start_time_ns_end_time_ns
_span_nameservice_logging_spanr   r   s                  r/   async_service_success_hook(OpenTelemetry.async_service_success_hook   s     	(:j%(( c!12N![[4Nh&&x#~.L;;x0L' J#';;#9#9112BC) $: $ 
 ##)'' $ 
 ##)oo++ $  "0"6"6"8JC} &!%..W$'JE ++1# ,  #9 !++F:==,AB $$l$;C (2  ) W$VEWs+   D,F/F:AFFFFFerrorc                 v  #    SSK Jn  SSKJnJn	  Sn
Sn[        U[        5      (       a  [        [        U5      S-  5      n
OU R                  U5      n
[        U[        5      (       a  [        [        U5      S-  5      nOU R                  U5      nUGb  UR                  nU R                  R                  UUR                  U5      U
S9nU R                  USUR                  S9  U R                  USUR                  R                  S9  U(       a  U R                  US	US9  U(       aK  UR!                  5        H7  u  p[        U["        5      (       a   [%        U5      nU R                  UUUS9  M9     UR)                  U" U	R*                  5      5        UR-                  US9  g g ! [&         a    S
n NUf = f7f)Nr   rB   r~   r   r   r   r   r   r   z/litllm logging error - could_not_json_serializer   )rL   rC   r   r   r   r   r   r   r   r   rT   r   r   r   r   r   r   r   r8   r   r   ERRORr   )r]   rz   r   r{   rj   rk   r|   rC   r   r   r   r   r   r   r   r   s                   r/   async_service_failure_hook(OpenTelemetry.async_service_failure_hook   s     	(:j%(( Z3!67N![[4Nh&&s8}s23L;;x0L' J#';;#9#9112BC) $: $ 
 ##)'' $ 
 ##)oo++ $ 
 ''- ( 
 "0"6"6"8JC!%..V$'JE ++1# ,  #9 !++F:3C3C,DE $$l$;K (8  ) V$UEVs+   EF9F' AF9'F63F95F66F9request_dataoriginal_exceptionuser_api_key_dictc                   #    SSK Jn  SSKJnJn  UR
                  nUb  UR                  U" UR                  5      5        SnU R                  R                  UUR                  U5      S9n	U R                  U	S[        U5      S9  U	R                  U" UR                  5      5        U	R                  U R                  [        R                   " 5       5      S9  UR                  U R                  [        R                   " 5       5      S9  g g 7f)	Nr   rB   r~   zFailed Proxy Server Request)r   r   	exceptionr   r   )rL   rC   r   r   r   r{   r   r   rT   r   r   r   r8   r   r   r   now)
r]   r   r   r   rC   r   r   r{   r   exception_logging_spans
             r/   async_post_call_failure_hook*OpenTelemetry.async_post_call_failure_hook   s      	(:,=='''z/?/?(@A6J &*[[%;%;112BC &< &" ##+,- $ 
 #--fZ5E5E.FG"&&HLLN0K&L   $++hlln*E F% (s   D	Dc                 l   SSK Jn  SSKJnJn  [
        R                  " SUU R                  5        U R                  U5      u  pU R                  R                  U R                  U5      U R                  U5      US9n
U
R                  U" UR                  5      5        U R                  XU5        [         R"                  SL a  OU R$                  SLa  OU R                  R                  [&        U R                  U5      UR)                  U
5      S9nUR                  U" UR                  5      5        U R+                  XU5        UR-                  U R                  U5      S9  U
R-                  U R                  U5      S9  U	b2  U	R-                  U R                  [.        R0                  " 5       5      S9  g g )Nr   rB   r~   zAOpenTelemetry Logger: Logging kwargs: %s, OTEL config settings=%sr   rj   r   Tr   )rL   rC   r   r   r   r   debugr?   _get_span_contextrT   r   _get_span_namer   r   r   set_attributesr   turn_off_message_loggingmessage_loggingRAW_REQUEST_SPAN_NAMEr   set_raw_request_attributesr   r   r   )r]   r^   ri   rj   rk   rC   r   r   _parent_contextr{   r   raw_request_spans               r/   rg   OpenTelemetry._handle_sucess  sx   ':OKK	

 -1,B,B6,J) {{%%$$V,{{:.# & 

 	z}}-.D,7++t3!!-  ${{55*;;z211$7  6   ''z}}(=>++,<lS  $++h*? @$++h/0'  $++hlln*E F (r2   c                    SSK JnJn  [        R                  " SUU R
                  5        U R                  U5      u  pxU R                  R                  U R                  U5      U R                  U5      US9n	U	R                  U" UR                  5      5        U R                  XU5        U	R                  U R                  U5      S9  Ub2  UR                  U R                  [        R                   " 5       5      S9  g g )Nr   r~   zPOpenTelemetry Logger: Failure HandlerLogging kwargs: %s, OTEL config settings=%sr   r   )r   r   r   r   r   r?   r   rT   r   r   r   r   r   r   r   r   r   )
r]   r^   ri   rj   rk   r   r   r   r{   r   s
             r/   rp   OpenTelemetry._handle_failureF  s    :^KK	

 -1,B,B6,J) {{%%$$V,{{:.# & 

 	z//01D,7$++h/0'  $++hlln*E F (r2   r   c           
         SS K nSSKJn  U(       d  g  [        U5       H  u  pVUR	                  S5      nU(       d  M  UR
                   SU 3nU R                  UU S3UR	                  S5      S9  U R                  UU S3UR	                  S	5      S9  U R                  UU S
3UR                  UR	                  S5      5      S9  M     g ! [         a*  n	[        R                  " S[        U	5      5         S n	A	g S n	A	ff = f)Nr   SpanAttributesfunction.z.namer   r   z.descriptiondescriptionz.parameters
parametersz1OpenTelemetry: Error setting tools attributes: %s)jsonlitellm.proxy._typesr   	enumerategetLLM_REQUEST_FUNCTIONSr   dumpsr   r   r   r8   )
r]   r   toolsr   r   itoolr   prefixes
             r/   set_tools_attributes"OpenTelemetry.set_tools_attributes]  s   7	$U+88J/*@@A1#F''!(%(",,v. ( 
 ''!(,/",,}5 ( 
 ''!(+.**X\\,%?@ ( ! ,*  	  CSV 		s   B7C 
D  C;;D returnc                     Uc  g[        U[        [        [        [        45      (       a  U$  [        U5      $ ! [
         a     gf = fz
Casts the value to a primitive OTEL type if it is not already a primitive type.

OTEL supports - str, bool, int, float

If it's not a primitive type, then it's converted to a string
 r   r8   boolr   r   r   r]   r   s     r/   cast_as_primitive_value_type*OpenTelemetry.cast_as_primitive_value_type  H     =ec4e455L	u: 		   
8 
AA
tool_callsc           	      "   SSK Jn  0 n[        U 5       Hw  u  p4UR                  S5      nU(       d  M  [        R
                  R                  5       nU H4  nUR                  U5      nU(       d  M  UUUR                   SU SU 3'   M6     My     U$ )Nr   r   r   r   z.function_call.)r   r   r   r   r   r9   keysLLM_COMPLETIONS)	r   r   kv_pairsidx	tool_call	_functionr   r   _values	            r/   _tool_calls_kv_pair!OpenTelemetry._tool_calls_kv_pair  s     	8#%'
3NC!j1I++002D"s+6  )99:!C5PSuU  4 r2   ri   c           
           U R                   S:X  a  SSKJn  UR                  XU5        g U R                   S:X  a  SSKJn  U" 5       R                  XU5        g SSKJn  UR                  S0 5      nUR                  S0 5      =(       d    0 nUR                  S	5      n	U	c  [        S
5      eU	S   n
U
R                  5        H%  u  pU R                  USR                  U5      US9  M'     UR                  S5      (       a*  U R                  UUR                  UR                  S5      S9  U R                  UUR                  U	S   S9  U R                  UUR                   UR                  SS5      S9  UR                  S5      (       a*  U R                  UUR"                  UR                  S5      S9  UR                  S5      (       a*  U R                  UUR$                  UR                  S5      S9  UR                  S5      (       a*  U R                  UUR&                  UR                  S5      S9  U R                  UUR(                  [+        UR                  SS5      5      S9  UR                  S5      (       a*  U R                  UUR,                  UR                  S5      S9  U(       a6  UR                  S5      (       a   U R                  USUR                  S5      S9  U(       a@  UR                  S5      (       a*  U R                  UUR.                  UR                  S5      S9  U=(       a    UR                  S5      nU(       a~  U R                  UUR0                  UR                  S5      S9  U R                  UUR2                  UR                  S5      S9  U R                  UUR4                  UR                  S5      S9  [6        R8                  SL a  g U R:                  SLa  g UR                  S5      (       a  US   nU R=                  X5        UR                  S 5      (       a  [?        UR                  S 5      5       H  u  nnUR                  S!5      (       a0  U R                  UUR@                   S"U S#3UR                  S!5      S9  UR                  S$5      (       d  Md  [C        UR                  S$5      [*        5      (       d  [+        UR                  S$5      5      US$'   U R                  UUR@                   S"U S%3UR                  S$5      S9  M     UGb2  UR                  S&5      (       Ga  [?        UR                  S&5      5       GH  u  nnUR                  S'5      (       a0  U R                  UURD                   S"U S(3UR                  S'5      S9  UR                  S)5      (       d  Me  UR                  S)5      R                  S!5      (       a?  U R                  UURD                   S"U S#3UR                  S)5      R                  S!5      S9  UR                  S)5      R                  S$5      (       a  [C        UR                  S)5      R                  S$5      [*        5      (       d/  [+        UR                  S)5      R                  S$5      5      US)   S$'   U R                  UURD                   S"U S%3UR                  S)5      R                  S$5      S9  UR                  S)5      nUR                  S*5      nU(       d  GM  [F        RI                  U5      nUR                  5        H  u  pU R                  UUUS9  M     GM     g g g ! [J         a*  n[L        RN                  " S+[+        U5      5         S nAg S nAff = f),Narizer   )ArizeLogger	langtrace)LangtraceAttributesr   optional_paramslitellm_paramsstandard_logging_objectz+standard_logging_object not found in kwargsmetadatazmetadata.{}r   modelr   custom_llm_providerUnknown
max_tokenstemperaturetop_pstreamFuseridzgen_ai.response.idusagetotal_tokenscompletion_tokensprompt_tokensTr   messagesroler   z.rolecontentz.contentchoicesfinish_reasonz.finish_reasonmessager   z0OpenTelemetry logging error in set_attributes %s)(r@   litellm.integrations.arize_air   set_arize_ai_attributeslitellm.integrations.langtracer   set_langtrace_attributesr   r   r   
ValueErrorr   r   formatLLM_REQUEST_MODELLLM_REQUEST_TYPE
LLM_SYSTEMLLM_REQUEST_MAX_TOKENSLLM_REQUEST_TEMPERATURELLM_REQUEST_TOP_PLLM_IS_STREAMINGr8   LLM_USERLLM_RESPONSE_MODELLLM_USAGE_TOTAL_TOKENSLLM_USAGE_COMPLETION_TOKENSLLM_USAGE_PROMPT_TOKENSr   r   r   r   r   LLM_PROMPTSr   r   r=   r   r   r   r   )r]   r   r^   ri   r   r   r   r   r   standard_logging_payloadr   r   r   r   r   r   promptchoicer  r   r   r   s                         r/   r   OpenTelemetry.set_attributes  sV   Q	!!W,E33D,O##{2N#%>>, ;$jj):B?O#ZZ(8"=CNIO)J$ (/ !NOO 0
;H&nn.
''=#7#7#<E (  / zz'""''&88 **W- (  ##"33.{; $  ##"--$(()>	J $  ""<00''&==)--l; (  ""=11''&>>)--m< (  ""7++''&88)--g6 (  ##"33/--h>? $  ""6**''&//)--f5 (   0 0 6 6''#7|?O?OPT?U ( 
  0 0 9 9''&99&**73 (  !>\%5%5g%>E''&==))N3 (  ''&BB))$78 (  ''&>>))O4 (  //47##4/""7++'0))$6zz*%%#,VZZ
-C#DKCzz&))//!%#1#=#=">auE J"(**V"4 0  zz),,)&**Y*?EE03FJJy4I0JF9-//!%#1#=#=">auH M"(**Y"7 0  $E& '##I..'01A1A)1L'MV!::o66 33%)'5'E'E&FauN$[&,jj&A 4 
 "::i00%zz)488@@ $ 7 7)-+9+I+I*J!C5PU(V*0**Y*?*C*CF*K !8 !"
  &zz)488CC'1$*JJy$9$=$=i$H#(" (" DG(.

9(=(A(A)(LD&F9$5i$@ !% 7 7)-+9+I+I*J!C5PX(Y*0**Y*?*C*CI*N !8 !" '-jj&;G)0\)BJ)z+8+L+LZ+X2:..2BJC$($;$;-1,/.3 %< %& 3C? (N / (P  	$$BCF 	sE   (] -] N] ] -B<] -D] <E] A] 
^# ^^c                     Uc  g[        U[        [        [        [        45      (       a  U$  [        U5      $ ! [
         a     gf = fr   r   r   s     r/   _cast_as_primitive_value_type+OpenTelemetry._cast_as_primitive_value_type~  r   r   r   r   c                 H    U R                  U5      nUR                  X$5        g)zO
Safely sets an attribute on the span, ensuring the value is a primitive type.
N)r  set_attribute)r]   r   r   r   primitive_values        r/   r    OpenTelemetry.safe_set_attribute  s"     <<UC30r2   c                    UR                  S0 5        UR                  S0 5      =(       d    0 nUR                  SS5      nUR                  S5      nUR                  S0 5      =(       d    0 nUR                  S5      nU(       aE  [        U[        5      (       a0  UR                  5        H  u  pU R	                  USU S	U	 3U
S
9  M     U(       a]  [        U[
        5      (       aG  SS Kn UR                  U5      nUR                  5        H  u  pU R	                  USU S	U	 3U
S
9  M     g g g ! UR                   a=    [        R                  " SR                  U5      5        U R	                  USU S3US
9   g f = f)Nr   r   r   r   original_responseadditional_argscomplete_input_dictzllm.r   r   r   zglitellm.integrations.opentelemetry.py::set_raw_request_attributes() - raw_response not json string - {}z.stringified_raw_response)r   r   r   r   r   r8   r   loadsJSONDecodeErrorr   r   r	  )r]   r   r^   ri   r   r   _raw_response_additional_argsr%  paramvalr   s               r/   r   (OpenTelemetry.set_raw_request_attributes  s   

$b)$4b9?R,001F	R

#67!::&7<B.223HI :.A4#H#H1779
''T*=)>aw#Gs (  : Zs;; $

= 9"/"5"5"7JE++!"#6"7q@! ,  #8 <= '' $$}  E  E% ''233LM' ( s   *AD. .A
E;:E;c                 :    [        UR                  5       S-  5      $ )Nr   )r   	timestamp)r]   dts     r/   r   OpenTelemetry._to_ns  s    2<<>C'((r2   c                     [         $ re   )LITELLM_REQUEST_SPAN_NAME)r]   r^   s     r/   r   OpenTelemetry._get_span_name  s    ((r2   c                 z    Uc  g UR                  SS 5      nUc  g SSKJn  U" 5       nSU0nUR                  US9nU$ )Ntraceparentr   TraceContextTextMapPropagatorcarrier)r   ,opentelemetry.trace.propagation.tracecontextr7  extract)r]   r$   _traceparentr7  
propagatorr9  r   s          r/   get_traceparent_from_header)OpenTelemetry.get_traceparent_from_header  sU    ?{{=$7	
 34
 ,/$,,W,=r2   c                    SSK Jn  SSKJn  UR	                  S0 5      =(       d    0 nUR	                  S0 5      =(       d    0 nUR	                  S0 5      =(       d    0 nUR	                  SS 5      nUR	                  S0 5      =(       d    0 nUR	                  S	S 5      n	 U	b  UR                  U	5      U	4$ Uc  g
SU0n
U" 5       R                  U
S9S 4$ )Nr   rB   r6  r   proxy_server_requestr$   r5  r   litellm_parent_otel_spanNNr8  )rL   rC   r:  r7  r   r   r;  )r]   r^   rC   r7  r   rA  r$   r5  	_metadatar{   r9  s              r/   r   OpenTelemetry._get_span_context  s    '	
  $4b9?R-112H"MSQS&**9b9?Rkk-6"&&z26<"	$==)CTJ	
 ',,-=>@PPP$k2G02::7:KTQQr2   c                    SSK Jn  SSKJn  SSKJnJnJnJn  [        R                  " SU R                  U R                  U R                  5        0 nU R                  bD  [        U R                  [        5      (       a%  U R                  R                  S5      nUS   US   0n[        U R                  U5      (       a3  [        R                  " SU R                  5        U" U R                  5      $ U R                  S:X  a.  [        R                  " S	U R                  5        U" U" 5       5      $ U R                  S
:X  a8  [        R                  " SU R                  5        U" U" U R                  US95      $ U R                  S:X  a8  [        R                  " SU R                  5        U" U" U R                  US95      $ [        R                  " S	U R                  5        U" U" 5       5      $ )Nr   )OTLPSpanExporter)BatchSpanProcessorConsoleSpanExporterSimpleSpanProcessorr   zvOpenTelemetry Logger, initializing span processor 
self.OTEL_EXPORTER: %s
self.OTEL_ENDPOINT: %s
self.OTEL_HEADERS: %s=   zDOpenTelemetry: intiializing SpanExporter. Value of OTEL_EXPORTER: %sr!   zHOpenTelemetry: intiializing console exporter. Value of OTEL_EXPORTER: %s	otlp_httpzEOpenTelemetry: intiializing http exporter. Value of OTEL_EXPORTER: %s)r#   r$   	otlp_grpczEOpenTelemetry: intiializing grpc exporter. Value of OTEL_EXPORTER: %s)5opentelemetry.exporter.otlp.proto.grpc.trace_exporterrG  5opentelemetry.exporter.otlp.proto.http.trace_exporteropentelemetry.sdk.trace.exportrH  rI  rJ  r   r   r   r'   r)   r*   r   r8   split)r]   OTLPSpanExporterGRPCOTLPSpanExporterHTTPrH  rI  rJ  r   _split_otel_headerss           r/   rP   !OpenTelemetry._get_span_processor  s   	
	
	
 	
 	 H		
 !(Z8I8I3-O-O"&"3"3"9"9#">#6q#9;Nq;Q"Rd((,77  V"" 't'9'9::*  Z"" &&9&;<<;.  W"" &$!//9L 
 ;.  W"" &$!//9L    Z"" &&9&;<<r2   logging_payloadc                   #    SSK Jn  SSKJnJn  SnSnUR
                  nUR                  n	[        U[        5      (       a  [        US-  5      nOU R                  U5      n[        U	[        5      (       a  [        U	S-  5      nOU R                  U	5      nUb  UR                  n
U R                  R                  U
UR                  U5      US9nUR                  nUb-  UR!                  5        H  u  pU R#                  USU 3US9  M     UR$                  nUb-  UR!                  5        H  u  pU R#                  USU 3US9  M     UR'                  U" UR(                  5      5        UR+                  US	9  g g 7f)
Nr   rB   r~   r   r   request.r   z	response.r   )rL   rC   r   r   r   rj   rk   r   r   r   r   routerT   r   r   r   r   r   responser   r   r   )r]   rW  r{   rC   r   r   r   r   rj   rk   r   management_endpoint_span_request_datar   r   	_responses                   r/   &async_management_endpoint_success_hook4OpenTelemetry.async_management_endpoint_success_hook9  s     	(:$//
"++j%(( c!12N![[4Nh&&x#~.L;;x0L'(..J'+{{'='=112BC) (> ($ ,88M("/"5"5"7JC++5&se,# ,  #8 (00I$"+//"3JC++5'u-# ,  #4 %//z}}0EF$((,(?7 (s   E8E:c                   #    SSK Jn  SSKJnJn  SnSnUR
                  nUR                  n	[        U[        5      (       a  [        [        U5      S-  5      nOU R                  U5      n[        U	[        5      (       a  [        [        U	5      S-  5      nOU R                  U	5      nUb  UR                  n
U R                  R                  U
UR                  U5      US9nUR                  nUb-  UR!                  5        H  u  pU R#                  USU 3US9  M     UR$                  nU R#                  US['        U5      S9  UR)                  U" UR*                  5      5        UR-                  US	9  g g 7f)
Nr   rB   r~   r   r   rY  r   r   r   )rL   rC   r   r   r   rj   rk   r   r   r   r   rZ  rT   r   r   r   r   r   r   r8   r   r   r   )r]   rW  r{   rC   r   r   r   r   rj   rk   r   r\  r]  r   r   
_exceptions                   r/   &async_management_endpoint_failure_hook4OpenTelemetry.async_management_endpoint_failure_hooko  sr     	(:$//
"++j%(( Z3!67N![[4Nh&&s8}s23L;;x0L'(..J'+{{'='=112BC) (> ($ ,88M("/"5"5"7JC++5&se,# ,  #8 )22J##-*o $ 
 %//z7G7G0HI$((,(?1 (s   E4E6)r)   r'   r*   r@   r?   rT   rC  )NNNN)r   NNNNre   )1r4   r5   r6   r7   r	   r   r8   r\   rl   rq   rt   rx   r   r   r
   r   r   r   r   r   r   r   r   rg   rp   r   r   r   r   staticmethodr   r   r   r   r   r   r  r   r   r   r   r>  r   rP   r   r_  rc  r;   __classcell__)rb   s   @r/   r=   r=   M   s|    15'+&#,-&#  }&# &#PHIHI ,07;59)-:<%:< #4.:< U8U?34	:<
 5512:< !:<~  "+/7;59)-?<%?< }?< #4.	?<
 U8U?34?< 512?< !?<BGG &G *	G<'GRG." "HU3c5;P5Q " 67	c3h *TT08TleCsE<Q6R "1t 1# 1c 1.t .`))"R6?=H ,04@94@ #4.4@r ,01@91@ #4.1@ 1@r2   r=   )*r,   dataclassesr   r   typingr   r   r   r   r	   r
   r   litellm._loggingr   "litellm.integrations.custom_loggerr   litellm.types.servicesr   litellm.types.utilsr   r   r   rQ  r   _SpanExporterr   r   _Spanr   r   !_ManagementEndpointLoggingPayloadlitellm.proxy.proxy_serverr   _UserAPIKeyAuthr-   rS   r   r9   r   r2  r   r=   r3   r2   r/   <module>rr     s    	 !  B B  + ; 7  L1 MD L$N'H$DLN'*$ ii 2I> II19= ii(?N		-y9$ $sCx. 
 - -  
 
 
<S@L S@r2   