Ë
    tPêjÑ  ã                   óˆ   — d dl Z d dlZd dlmZmZ d dlZd dlZd dlmZ d dl	m
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ÚLiteral)Úverbose_logger)Úuuid)Ú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     ú^/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/lago.pyÚget_utc_datetimer      s2   € ÛÝ!äˆr�5ÔØ�|‰|˜BŸF™FÓ#Ð#à�‰Ó Ð ó    c                   óB   ‡ — e Zd Zdˆ fd„Zd„ Zdedefd„Zd„ Zd„ Zˆ xZ	S )	Ú
LagoLoggerÚreturnc                 óž   •— 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LagoLogger.__init__    s8   ø€ Ü‰ÑÔØ×!Ñ!Ô#Ü"8ÔFZ×FjÑFjÔ"kˆÔÜ!,£ˆÕr   c                 ó,  — g }t        j                  dd«      €|j                  d«       t        j                  dd«      €|j                  d«       t        j                  dd«      €|j                  d«       t        |«      dkD  rt	        d|› d�«      ‚y)z­
        Expects
        LAGO_API_BASE,
        LAGO_API_KEY,
        LAGO_API_EVENT_CODE,

        Optional:
        LAGO_API_CHARGE_BY

        in the environment
        ÚLAGO_API_KEYNÚLAGO_API_BASEÚLAGO_API_EVENT_CODEr   zMissing keys=z in environment.)ÚosÚgetenvÚappendÚlenÚ	Exception)r    Úmissing_keyss     r   r   zLagoLogger.validate_environment&   s�   € ð !ˆÜ�9‰9�^ TÓ*Ð2Ø×Ñ Ô/ä�9‰9�_ dÓ+Ð3Ø×Ñ Ô0ä�9‰9Ð*¨DÓ1Ð9Ø×ÑÐ 5Ô6äˆ|Ó˜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
œ}|j                  di «      xs i }|j                  d«      xs i }|j                  di «      j                  dd «      }|d   j                  dd «      }	|d   j                  dd «      }
|d   j                  dd «       d}d }t        j                  dd «      �Ut        t        j                  d   t        «      r4t        j                  d   dv rt        j                  d   }nt        d«      ‚|dk(  r|}n|dk(  r|
}n|dk(  r|	}|€t        d|› d|	› d|› d|
› �«      ‚dt        t        j                  «       «      |t        j                  d«      ||dœ|¥d œi}t        j                   d!|«       |S )"NÚidÚlitellm_call_idÚresponse_costÚmodelÚusageÚprompt_tokensr   Úcompletion_tokensÚtotal_tokens)r3   r4   r5   Úlitellm_paramsÚproxy_server_requestÚbodyÚuserÚmetadataÚuser_api_key_user_idÚuser_api_key_team_idÚuser_api_key_org_idÚend_user_idÚLAGO_API_CHARGE_BY)r>   Úuser_idÚteam_idzinvalid LAGO_API_CHARGE_BY setrA   r@   z+External Customer ID is not set. Charge_by=z
. User_id=z. End_user_id=z
. Team_id=Úeventr%   )r1   r0   )Útransaction_idÚexternal_subscription_idÚcodeÚ
propertiesz [91mLogged Lago Object:
%s[0m
)Úgetr   Ú	isoformatÚ
isinstanceÚlitellmÚModelResponseÚEmbeddingResponser   r&   r'   ÚenvironÚstrr*   r   Úuuid4r   Údebug)r    r,   Úresponse_objÚcostr1   r2   r6   r7   r>   r@   rA   Ú	charge_byÚexternal_customer_idÚreturned_vals                 r   Ú_common_logiczLagoLogger._common_logic?   s�  € Ø×Ñ˜˜vŸz™zÐ*;Ó<Ô=ÜÓ×$Ñ$Ô&Ø—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ð !'§
¡
Ð+;¸RÓ @Ò FÀBˆØ&4×&8Ñ&8Ð9OÓ&PÒ&VÐTVÐØ1×5Ñ5°f¸bÓA×EÑEÀfÈdÓSˆØ'¨
Ñ3×7Ñ7Ð8NÐPTÓUˆØ'¨
Ñ3×7Ñ7Ð8NÐPTÓUˆØ�zÑ"×&Ñ&Ð'<¸dÔCàBOˆ	Ø+/Ðä�9‰9Ð)¨4Ó0Ð<ÄÌBÏJÉJÐWkÑLlÔnqÔArÜ�z‰zÐ.Ñ/ð 4ñ ô
 ŸJ™JÐ';Ñ<‘	äÐ @ÓAÐAà˜Ò%Ø#.Ñ Ø˜)Ò#Ø#*Ñ Ø˜)Ò#Ø#*Ð àÐ'ÜØ=¸i¸[È
ÐSZÐR[Ð[iÐjuÐivð  wAð  BIð  AJð  Kóð ð
 Ü"%¤d§j¡j£lÓ"3Ø,@ÜŸ	™	Ð"7Ó8Ø(-ÀÑNÈÐNñ	ð
ˆô 	×ÑÐGÈÔVØÐr   c                 ó  — t        j                  d«      }|�t        |t        «      s
J d|› �«       ‚|j	                  d«      r|dz  }n|dz  }t        j                  d«      }| j                  ||¬«      }dd	|› �d
œ}	 | j                  j                  |t        j                  |«      |¬«      }	|	j                  «        y # t        $ rB}
t        |
dd «      }|�,t        |d«      r t        j                  d|j                   «       |
‚d }
~
ww xY w)Nr$   ú:LAGO_API_BASE missing or not set correctly. LAGO_API_BASE=ú/úapi/v1/eventsú/api/v1/eventsr#   ©r,   rQ   úapplication/jsonúBearer ©zContent-TypeÚAuthorization©ÚurlÚdataÚheadersÚresponseÚtextú
Error Message: %s)r&   r'   rI   rN   ÚendswithrV   r   ÚpostÚjsonÚdumpsÚraise_for_statusr*   Úgetattrr   r   rP   rf   )r    r,   rQ   Ú
start_timeÚend_timeÚ_urlÚapi_keyÚ_dataÚ_headersre   ÚeÚerror_responses               r   Úlog_success_eventzLagoLogger.log_success_event{   s  € Ü�y‰y˜Ó)ˆØÐ¤J¨t´SÔ$9ð 	
ØHÈÈÐOó	
Ð9ð �=‰=˜ÔØ�OÑ#‰DàÐ$Ñ$ˆDäŸ™ >Ó2ˆà×)Ñ)°ÀlÐ)ÓSˆà.Ø& w iÐ0ñ
ˆð
	Ø"×4Ñ4×9Ñ9ØÜ—Z‘Z Ó&Ø ð :ó ˆHð ×%Ñ%Õ'øÜò 	Ü$+¨A¨z¸4Ó$@ˆNØÐ)¬g°nÀfÔ.MÜ×$Ñ$Ð%:¸N×<OÑ<OÔPØˆGûð		ús   Á?AC Ã	DÃ
=DÄDc              ƒ   ó¶  K  — 	 t        j                  d«       t        j                  d«      }|�t	        |t
        «      s
J d|› �«       ‚|j                  d«      r|dz  }n|dz  }t        j                  d«      }| j                  ||¬«      }d	d
|› �dœ}d }
	 | j                  j                  |t        j                  |«      |¬«      ƒ d {  –—† }
|
j                  «        t        j                  d|
j                  «       y # t        $ r}	|	‚d }	~	ww xY w7 ŒH# t        $ r5}	|
�,t        |
d«      r t        j                  d|
j                  «       |	‚d }	~	ww xY w­w)NzENTERS LAGO CALLBACKr$   rX   rY   rZ   r[   r#   r\   r]   r^   r_   ra   zLogged Lago Object: %srf   rg   )r   rP   r&   r'   rI   rN   rh   rV   r*   r   ri   rj   rk   rl   rf   r   )r    r,   rQ   rn   ro   rp   rq   rr   rs   rt   re   s              r   Úasync_log_success_eventz"LagoLogger.async_log_success_event›   s_  è ø€ ð	Ü× Ñ Ð!7Ô8Ü—9‘9˜_Ó-ˆDØÐ#¬
°4¼Ô(=ð ØLÈTÈFÐSóÐ=ð �}‰}˜SÔ!Ø˜Ñ'‘àÐ(Ñ(�äŸY™Y ~Ó6ˆGà×-Ñ-°VÈ,Ð-ÓWˆEà 2Ø#*¨7¨)Ð!4ñˆHð +/ˆð	Ø!×4Ñ4×9Ñ9ØÜ—Z‘Z Ó&Ø ð :ó ÷ ˆHð ×%Ñ%Ô'ä× Ñ Ð!9¸8¿=¹=ÕIøô ò 	ØˆGûð	úð
ùô ò 	ØÐ#¬°¸&Ô(AÜ×$Ñ$Ð%:¸H¿M¹MÔJØˆGûð	üs_   ‚E„BD ÂEÂ4D ÃDÃ4D ÄEÄ	DÄDÄDÄEÄD Ä	EÄ!0EÅEÅE)r   N)
Ú__name__Ú
__module__Ú__qualname__r   r   ÚdictrV   rv   rx   Ú__classcell__)r!   s   @r   r   r      s-   ø„ õ/òLð2: Dð :¸4ó :òxö@$r   r   )rj   r&   Útypingr   r   ÚhttpxrJ   Úlitellm._loggingr   Úlitellm._uuidr   Ú"litellm.integrations.custom_loggerr   Ú&litellm.llms.custom_httpx.http_handlerr   r	   r
   r   r   © r   r   ú<module>r…      s<   ðó Û 	ß !ã ã Ý +Ý Ý ;÷ñ ò!ô`�õ `r   