o
    ưi7                     @   sX   d Z ddlZddlZddlmZmZ ddlZddlmZ ddl	m
Z
 G dd de
ZdS )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                	       s\   e Zd Z			ddeej dee dee ddf fddZdd	 Zd
d Z	dd Z
  ZS )CustomBatchLoggerN
flush_lock
batch_sizeflush_intervalreturnc                    sD   g | _ |ptj| _|ptj| _t | _|| _t	 j
di | dS )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litellmZDEFAULT_FLUSH_INTERVAL_SECONDSr	   ZDEFAULT_BATCH_SIZEr   timelast_flush_timer   super__init__)selfr   r   r	   kwargs	__class__r   _/home/app/Keep/.python/lib/python3.10/site-packages/litellm/integrations/custom_batch_logger.pyr      s   
zCustomBatchLogger.__init__c                    s:   	 t | jI d H  td| j d |  I d H  q)NTz"CustomLogger periodic flush after z seconds)asynciosleepr	   r   debugflush_queuer   r   r   r   periodic_flush$   s   z CustomBatchLogger.periodic_flushc              	      s   | j d u rd S | j 4 I d H ) | jr-tdt| j |  I d H  | j  t | _W d   I d H  d S 1 I d H s>w   Y  d S )Nz)CustomLogger: Flushing batch of %s events)	r   r   r   r   lenasync_send_batchclearr   r   r   r   r   r   r   ,   s   


.zCustomBatchLogger.flush_queuec                    s   d S )Nr   )r   argsr   r   r   r   r   9   s   z"CustomBatchLogger.async_send_batch)NNN)__name__
__module____qualname__r   r   Lockintr   r   r   r   __classcell__r   r   r   r   r      s     r   )__doc__r   r   typingr   r   r   Zlitellm._loggingr   Z"litellm.integrations.custom_loggerr   r   r   r   r   r   <module>   s    