Ë
    tPêjZ  ã                   óZ   — d Z ddlZddlZddlmZ ddlZddlmZ ddlm	Z	  G d„ de	«      Z
y)z|
Custom Logger that handles batching logic

Use this if you want your logs to be stored in memory and flushed periodically.
é    N)ÚFinal)Úverbose_logger)ÚCustomLoggerc                   ó†   ‡ — e Zd ZdZdZ	 	 	 	 ddej                  dz  dedz  dedz  dedz  ddf
ˆ fd	„Zdd
„Z	d„ Z
d„ Zˆ xZS )ÚCustomBatchLoggerFiPÃ  NÚ
flush_lockÚ
batch_sizeÚflush_intervalÚmax_queue_sizeÚreturnc                 ó   •— g | _         |xs t        j                  | _        |xs t        j                  | _        t        j                  «       | _        || _        |�|n| j                  | _
        t        ‰| �0  di |¤Ž y)aÛ  
        Args:
            flush_lock (Optional[asyncio.Lock], optional): Lock to use when flushing the queue. Defaults to None. Only used for custom loggers that do batching
            max_queue_size (Optional[int], optional): Maximum number of events to retain in ``log_queue``. When the limit is exceeded (e.g. because the send destination is unreachable and events are preserved for retry), the oldest events are dropped. Defaults to ``DEFAULT_MAX_QUEUE_SIZE``.
        N© )Ú	log_queueÚlitellmÚDEFAULT_FLUSH_INTERVAL_SECONDSr
   ÚDEFAULT_BATCH_SIZEr	   ÚtimeÚlast_flush_timer   ÚDEFAULT_MAX_QUEUE_SIZEr   ÚsuperÚ__init__)Úselfr   r	   r
   r   ÚkwargsÚ	__class__s         €úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/custom_batch_logger.pyr   zCustomBatchLogger.__init__   sl   ø€ ð  "ˆŒØ,ÒV´×0VÑ0VˆÔØ)ÒG¬W×-GÑ-GˆŒÜ#Ÿy™y›{ˆÔØ$ˆŒØ5CÐ5O¡>ÐUY×UpÑUpˆÔä‰ÑÑ"˜6Ó"ó    c              ƒ   óÔ   K  — 	 t        j                  | j                  «      ƒ d {  –—†  t        j                  d| j                  «       | j                  «       ƒ d {  –—†  Œ`7 Œ=7 Œ­w)Nz,CustomLogger periodic flush after %s seconds)ÚasyncioÚsleepr
   r   ÚdebugÚflush_queue)r   s    r   Úperiodic_flushz CustomBatchLogger.periodic_flush0   sW   è ø€ ØÜ—-‘- × 3Ñ 3Ó4×4Ð4Ü× Ñ Ð!OÐQU×QdÑQdÔeØ×"Ñ"Ó$×$Ð$ð Ø4øà$ús!   ‚$A(¦A$§7A(ÁA&ÁA(Á&A(c              ƒ   ó$  K  — | j                   €y | j                   4 ƒd {  –—†  | j                  r¦t        | j                  «      }t        j                  dt        | j                  «      «       	 | j                  «       ƒ d {  –—†  | j                  r| j                  d |…= n| j                  j                  «        t        j                  «       | _        d d d «      ƒd {  –—†  y 7 ŒÇ7 Œf# t        $ r� t        j                  d|«       t        | j                  «      | j                  z
  }|dkD  r0| j                  d |…= t        j                  d| j                  |«       Y d d d «      ƒd {  –—†7   y w xY w7 Œ–# 1 ƒd {  –—†7  sw Y   y xY w­w)Nz)CustomLogger: Flushing batch of %s eventszNCustomLogger: async_send_batch raised; preserving %s events in queue for retryr   zMCustomLogger: log queue exceeded max_queue_size=%s; dropped %s oldest events.)r   r   Úlenr   r    Úasync_send_batchÚ	ExceptionÚ	exceptionr   ÚwarningÚ"preserve_events_added_during_flushÚclearr   r   )r   Úlog_queue_lengthÚoverflows      r   r!   zCustomBatchLogger.flush_queue6   s^  è ø€ Ø�?‰?Ð"Øà—?‘?÷  	3ñ  	3Ø�~Š~Ü*-¨d¯n©nÓ*=Ð Ü×$Ñ$Ð%PÔRUÐVZ×VdÑVdÓReÔfðØ×/Ñ/Ó1×1Ð1ð. ×:Ò:ØŸ™Ð'8Ð(8Ð'8Ñ9à—N‘N×(Ñ(Ô*Ü'+§y¡y£{�Ô$÷A 	3÷  	3ñ  	3øð
 2ùÜ ò ô #×,Ñ,ØhØ(ôô '*¨$¯.©.Ó&9¸D×<OÑ<OÑ&O�HØ !’|Ø ŸN™N¨9¨H¨9Ð5Ü&×.Ñ.ØkØ ×/Ñ/Ø$ôð
 ÷7 	3÷  	3ñ  	3ðúð 	3ø÷  	3÷  	3ñ  	3üs�   ‚F C(¡F¤AE;Á0C,ÂC*ÂC,ÂAE;ÃFÃ"E9Ã#FÃ*C,Ã,A6E6Å"E;Å#FÅ.E1Å/FÅ5E6Å6E;Å9FÅ;FÆFÆFÆ	Fc              �   ó   K  — y ­w)Nr   )r   Úargsr   s      r   r%   z"CustomBatchLogger.async_send_batch\   s	   è ø€ Øùs   ‚)NNNN)r   N)Ú__name__Ú
__module__Ú__qualname__r)   r   r   ÚLockÚintr   r"   r!   r%   Ú__classcell__)r   s   @r   r   r      sy   ø„ Ø).Ð&ð $Ðð +/Ø!%Ø%)Ø%)ñ#à—L‘L 4Ñ'ð#ð ˜$‘Jð#ð ˜d™
ð	#ð
 ˜d™
ð#ð 
õ#ó,%ò$3öLr   r   )Ú__doc__r   r   Útypingr   r   Úlitellm._loggingr   Ú"litellm.integrations.custom_loggerr   r   r   r   r   ú<module>r9      s,   ðñó Û Ý ã Ý +Ý ;ôM˜õ Mr   