o
    ưi                     @   sb   d dl Z d dlmZmZmZmZ ddlmZ er%d dlm	Z
 ee
ef Z	neZ	G dd deZdS )    N)TYPE_CHECKINGAnyOptionalUnion   )	BaseCache)Spanc                   @   s   e Zd Zd dee fddZdd Zdd Zd	d
 Zdd Z	de
fddZdedefddZdd Zde
fddZdedefddZdd Zdd Zdd ZdS )!	DiskCacheNdisk_cache_dirc              
   C   sX   zdd l }W n ty } ztd|d }~ww |d u r$|d| _d S ||| _d S )Nr   zCPlease install litellm with `litellm[caching]` to use disk caching.z.litellm_cache)Z	diskcacheModuleNotFoundErrorCache
disk_cache)selfr
   dce r   Q/home/app/Keep/.python/lib/python3.10/site-packages/litellm/caching/disk_cache.py__init__   s   zDiskCache.__init__c                 K   s4   d|v r| j j|||d d d S | j || d S )Nttl)Zexpire)r   setr   keyvaluekwargsr   r   r   	set_cache   s   zDiskCache.set_cachec                    s   | j d||d| d S )Nr   r   r   r   r   r   r   r   async_set_cache#   s   zDiskCache.async_set_cachec                    s@   |D ]\}}d|v r| j |||d d q| j ||d qd S )Nr   )r   r   r   r   r   )r   Z
cache_listr   	cache_keyZcache_valuer   r   r   async_set_cache_pipeline&   s   z"DiskCache.async_set_cache_pipelinec                 K   s>   | j |}|rzt|}W |S  ty   |}Y |S w d S N)r   getjsonloads	Exception)r   r   r   Zoriginal_cached_responsecached_responser   r   r   	get_cache-   s   zDiskCache.get_cachekeysc                 K   s0   g }|D ]}| j dd|i|}|| q|S Nr   r   r&   appendr   r'   r   
return_valkvalr   r   r   batch_get_cache7   s
   zDiskCache.batch_get_cacher   returnc                 K   s0   | j |dpd}|| }| j||fi | |S N)r   r   )r&   r   r   r   r   r   Z
init_valuer   r   r   increment_cache>   s   zDiskCache.increment_cachec                    s   | j dd|i|S r(   )r&   )r   r   r   r   r   r   async_get_cacheE   s   zDiskCache.async_get_cachec                    s2   g }|D ]}| j dd|i|}|| q|S r(   r)   r+   r   r   r   async_batch_get_cacheH   s   zDiskCache.async_batch_get_cachec                    s>   | j |dI d H pd}|| }| j||fi |I d H  |S r1   )r4   r   r2   r   r   r   async_incrementO   s
   zDiskCache.async_incrementc                 C   s   | j   d S r    )r   clearr   r   r   r   flush_cacheV   s   zDiskCache.flush_cachec                    s   d S r    r   r8   r   r   r   
disconnectY   s   zDiskCache.disconnectc                 C   s   | j | d S r    )r   pop)r   r   r   r   r   delete_cache\   s   zDiskCache.delete_cacher    )__name__
__module____qualname__r   strr   r   r   r   r&   listr/   intr3   r4   r5   r6   r9   r:   r<   r   r   r   r   r	      s    
r	   )r"   typingr   r   r   r   Z
base_cacher   Zopentelemetry.tracer   _Spanr	   r   r   r   r   <module>   s    