Ë
    tPêj  ã                   ól   — d dl Z d dlZd dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
mZ d„ Z G d„ de«      Zy)é    N)ÚFinal)ÚCustomLogger)ÚHTTPHandlerÚget_async_httpx_clientÚhttpxSpecialProviderc                  ó„   — dd l } ddl m } t        | d«      r|j                  | j                  «      S |j	                  «       S )Nr   )ÚdatetimeÚUTC)r	   ÚhasattrÚnowr
   Úutcnow)Údtr	   s     úc/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/openmeter.pyÚget_utc_datetimer      s2   € ÛÝ!äˆr�5ÔØ�|‰|˜BŸF™FÓ#Ð#à�‰Ó Ð ó    c                   ó>   ‡ — e Zd Zdˆ fd„Zd„ Zdefd„Zd„ Zd„ Zˆ xZ	S )ÚOpenMeterLoggerc                 óž   •— t         ‰| �  «        | j                  «        t        t        j
                  ¬«      | _        t        «       | _        y )N)Úllm_provider)	ÚsuperÚ__init__Úvalidate_environmentr   r   ÚLoggingCallbackÚasync_http_handlerr   Úsync_http_handler)ÚselfÚ	__class__s    €r   r   zOpenMeterLogger.__init__   s8   ø€ Ü‰ÑÔØ×!Ñ!Ô#Ü"8ÔFZ×FjÑFjÔ"kˆÔÜ!,£ˆÕr   c                 ó�   — g }t        j                  dd«      €|j                  d«       t        |«      dkD  rt	        d|› d�«      ‚y)zp
        Expects
        OPENMETER_API_ENDPOINT,
        OPENMETER_API_KEY,

        in the environment
        ÚOPENMETER_API_KEYNr   zMissing keys=z in environment.)ÚosÚgetenvÚappendÚlenÚ	Exception)r   Úmissing_keyss     r   r   z$OpenMeterLogger.validate_environment$   sQ   € ð !ˆÜ�9‰9Ð(¨$Ó/Ð7Ø×ÑÐ 3Ô4äˆ|Ó˜qÒ Ü˜m¨L¨>Ð9IÐJÓKÐKð !r   Úkwargsc           	      ó   — |j                  d|j                  d«      «      }t        «       j                  «       }|j                  dd «      }|j                  d«      }i }t        |t        j
                  «      st        |t        j                  «      rJt        |d«      r>|d   j                  dd«      |d   j                  dd«      |d   j                  d	«      d
œ}t        j                  dd«      j                  «       dk7  }|r|j                  dd «      nd }	|	€F|j                  di «      }
|
j                  di «      }|j                  dd «      }|�|}	nt        d«      ‚t        |	«      }dt        j                  dd«      |||d||dœ|¥dœS )NÚidÚlitellm_call_idÚresponse_costÚmodelÚusageÚprompt_tokensr   Úcompletion_tokensÚtotal_tokens)r-   r.   r/   ÚOPENMETER_TRUST_REQUEST_USERÚtrueÚfalseÚuserÚlitellm_paramsÚmetadataÚuser_api_key_user_idzOpenMeter: user is requiredz1.0ÚOPENMETER_EVENT_TYPEÚlitellm_tokenszlitellm-proxy)r+   Úcost)ÚspecversionÚtyper(   ÚtimeÚsubjectÚsourceÚdata)Úgetr   Ú	isoformatÚ
isinstanceÚlitellmÚModelResponseÚEmbeddingResponser   r    r!   Úlowerr$   Ústr)r   r&   Úresponse_objÚcall_idr   r9   r+   r,   Útrust_request_userÚ
user_paramr4   r5   r6   r=   s                 r   Ú_common_logiczOpenMeterLogger._common_logic3   s�  € Ø%×)Ñ)¨$°·
±
Ð;LÓ0MÓNˆÜ$Ó&×0Ñ0Ó2ˆØ—j‘j °$Ó7ˆØ—z‘z 'Ó*ˆØˆä�|¤W×%:Ñ%:Ô;¼zÈ,ÔX_×XqÑXqÔ?rÜ�l GÔ,à!-¨gÑ!6×!:Ñ!:¸?ÈAÓ!NØ%1°'Ñ%:×%>Ñ%>Ð?RÐTUÓ%VØ ,¨WÑ 5× 9Ñ 9¸.Ó IñˆEô %'§I¡IÐ.LÈfÓ$U×$[Ñ$[Ó$]ÐahÑ$hÐÙ1C�V—Z‘Z ¨Ô-Èˆ
ð Ðà$*§J¡JÐ/?ÀÓ$DˆNØ,×0Ñ0°¸RÓ@ˆHØ*2¯,©,Ð7MÈtÓ*TÐ à#Ð/Ø1‘
äÐ =Ó>Ð>ô ˜Z›ˆð !Ü—I‘IÐ4Ð6FÓGØØØØ%Ø#¨TÑ;°UÐ;ñ
ð 	
r   c                 óÂ  — t        j                  dd«      }|j                  d«      r|dz  }n|dz  }t        j                  d«      }| j                  ||¬«      }dd	|› �d
œ}	 | j                  j                  |t        j                  |«      |¬«       y # t        j                  $ r'}	t        d|	j                  j                  › �«      ‚d }	~	wt        $ r}	|	‚d }	~	ww xY w©NÚOPENMETER_API_ENDPOINTzhttps://openmeter.cloudú/zapi/v1/eventsz/api/v1/eventsr   )r&   rH   zapplication/cloudevents+jsonzBearer )zContent-TypeÚAuthorization)Úurlr?   ÚheaderszOpenMeter logging error: )r    r!   ÚendswithrL   r   ÚpostÚjsonÚdumpsÚhttpxÚHTTPStatusErrorr$   ÚresponseÚtext©
r   r&   rH   Ú
start_timeÚend_timeÚ_urlÚapi_keyÚ_dataÚ_headersÚes
             r   Úlog_success_eventz!OpenMeterLogger.log_success_eventc   sà   € Ü�y‰yÐ1Ð3LÓMˆØ�=‰=˜ÔØ�OÑ#‰DàÐ$Ñ$ˆDäŸ™Ð#6Ó7ˆà×)Ñ)°ÀlÐ)ÓSˆà:Ø& w iÐ0ñ
ˆð
		Ø×"Ñ"×'Ñ'ØÜ—Z‘Z Ó&Ø ð (õ øô
 ×$Ñ$ò 	KÜÐ7¸¿
¹
¿¹Ð7HÐIÓJÐJûÜò 	ØˆGûð	ús$   Á$1B ÂCÂ)"CÃCÃCÃCc              ƒ   óÞ  K  — t        j                  dd«      }|j                  d«      r|dz  }n|dz  }t        j                  d«      }| j                  ||¬«      }dd	|› �d
œ}	 | j                  j                  |t        j                  |«      |¬«      ƒ d {  –—†  y 7 Œ# t        j                  $ r'}	t        d|	j                  j                  › �«      ‚d }	~	wt        $ r}	|	‚d }	~	ww xY w­wrN   )r    r!   rT   rL   r   rU   rV   rW   rX   rY   r$   rZ   r[   r\   s
             r   Úasync_log_success_eventz'OpenMeterLogger.async_log_success_event}   sí   è ø€ Ü�y‰yÐ1Ð3LÓMˆØ�=‰=˜ÔØ�OÑ#‰DàÐ$Ñ$ˆDäŸ™Ð#6Ó7ˆà×)Ñ)°ÀlÐ)ÓSˆà:Ø& w iÐ0ñ
ˆð
		Ø×)Ñ)×.Ñ.ØÜ—Z‘Z Ó&Ø ð /ó ÷ ò ùô
 ×$Ñ$ò 	KÜÐ7¸¿
¹
¿¹Ð7HÐIÓJÐJûÜò 	ØˆGûð	üsH   ‚A#C-Á&4B" ÂB ÂB" ÂC-Â B" Â"C*Â5"CÃC*Ã#C%Ã%C*Ã*C-)ÚreturnN)
Ú__name__Ú
__module__Ú__qualname__r   r   ÚdictrL   rd   rf   Ú__classcell__)r   s   @r   r   r      s%   ø„ õ/òLð.
 Dó .
ò`ö4r   r   )rV   r    Útypingr   rX   rC   Ú"litellm.integrations.custom_loggerr   Ú&litellm.llms.custom_httpx.http_handlerr   r   r   r   r   © r   r   ú<module>rq      s6   ðó Û 	Ý ã ã Ý ;÷ñ ò!ôx�lõ xr   