
    ^h7                     ^    S r SSKrSSKrSSKJrJr  SSKrSSKJr  SSK	J
r
   " S S\
5      rg)z|
Custom Logger that handles batching logic 

Use this if you want your logs to be stored in memory and flushed periodically
    N)ListOptional)verbose_logger)CustomLoggerc            	       ~   ^  \ rS rSr   SS\\R                     S\\   S\\   SS4U 4S jjjrS r	S	 r
S
 rSrU =r$ )CustomBatchLogger   N
flush_lock
batch_sizeflush_intervalreturnc                    > / U l         U=(       d    [        R                  U l        U=(       d    [        R                  U l        [        R                  " 5       U l        Xl        [        TU ](  " S0 UD6  g)z
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
N )	log_queuelitellmDEFAULT_FLUSH_INTERVAL_SECONDSr   DEFAULT_BATCH_SIZEr   timelast_flush_timer
   super__init__)selfr
   r   r   kwargs	__class__s        b/home/james-whalen/.local/lib/python3.13/site-packages/litellm/integrations/custom_batch_logger.pyr   CustomBatchLogger.__init__   sT      ",V0V0V)GW-G-G#yy{$"6"    c                    #     [         R                  " U R                  5      I S h  vN   [        R                  " SU R                   S35        U R                  5       I S h  vN   Mf   NB N7f)Nz"CustomLogger periodic flush after z seconds)asynciosleepr   r   debugflush_queuer   s    r   periodic_flush CustomBatchLogger.periodic_flush%   sb     -- 3 3444  4T5H5H4IR ""$$$ 4 %s!   %A.A*;A.#A,$A.,A.c                   #    U R                   c  g U R                    IS h  vN   U R                  (       av  [        R                  " S[	        U R                  5      5        U R                  5       I S h  vN   U R                  R                  5         [        R                  " 5       U l        S S S 5      IS h  vN   g  N NK N	! , IS h  vN  (       d  f       g = f7f)Nz)CustomLogger: Flushing batch of %s events)	r
   r   r   r!   lenasync_send_batchclearr   r   r#   s    r   r"   CustomBatchLogger.flush_queue-   s     ??"???~~$$?T^^AT ++---$$&'+yy{$ #??
 . #???sW   CB>CAC4C 58C-C8C9C CCC
CCCc                    #    g 7f)Nr   )r   argsr   s      r   r(   "CustomBatchLogger.async_send_batch:   s     s   )r   r   r
   r   r   )NNN)__name__
__module____qualname____firstlineno__r   r   Lockintr   r$   r"   r(   __static_attributes____classcell__)r   s   @r   r   r      sc     .2$((,	#W\\*# SM# !	# 
# #&%3 r   r   )__doc__r   r   typingr   r   r   litellm._loggingr   "litellm.integrations.custom_loggerr   r   r   r   r   <module>r:      s*      !  + ;+ +r   