
    h                     j    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e      Zy)    N)TYPE_CHECKINGAnyOptionalUnion   )	BaseCache)Spanc                       e Zd Zddee   fdZd Zd Zd Zd Z	de
fd	Zd
edefdZd Zde
fdZd
edefdZd Zd Zd Zy)	DiskCacheNdisk_cache_dirc                     	 dd l }||j                  d      | _        y |j                  |      | _        y # t        $ r}t        d      |d }~ww xY w)Nr   zCPlease install litellm with `litellm[caching]` to use disk caching.z.litellm_cache)	diskcacheModuleNotFoundErrorCache
disk_cache)selfr   dces       V/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/caching/disk_cache.py__init__zDiskCache.__init__   sX    	" ! hh'78DO hh~6DO # 	%U	s   6 	AAAc                     d|v r"| j                   j                  |||d          y | j                   j                  ||       y )Nttl)expire)r   setr   keyvaluekwargss       r   	set_cachezDiskCache.set_cache   s:    F?OOU6%=AOOU+    c                 6   K    | j                   d||d| y w)Nr   r    r   r   s       r   async_set_cachezDiskCache.async_set_cache#   s     63e6v6s   c                 ~   K   |D ]4  \  }}d|v r| j                  |||d          "| j                  ||       6 y w)Nr   )r   r   r   r"   r$   )r   
cache_listr   	cache_keycache_values        r   async_set_cache_pipelinez"DiskCache.async_set_cache_pipeline&   sB     &0"I{9KVE]S9K@	 '1s   ;=c                     | j                   j                  |      }|r	 t        j                  |      }|S y # t        $ r |}Y |S w xY wN)r   getjsonloads	Exception)r   r   r   original_cached_responsecached_responses        r   	get_cachezDiskCache.get_cache-   sU    #'??#6#6s#; #;"&**-E"F #"  ;":"";s   7 AAkeysc                 b    g }|D ]'  } | j                   dd|i|}|j                  |       ) |S Nr   r#   r3   appendr   r4   r   
return_valkvals         r   batch_get_cachezDiskCache.batch_get_cache7   s?    
A $..1Q1&1Cc"  r    r   returnc                 d    | j                  |      xs d}||z   } | j                  ||fi | |S N)r   r   )r3   r   r   r   r   r   
init_values        r   increment_cachezDiskCache.increment_cache>   s;    ^^^,1
U"sE,V,r    c                 2   K    | j                   dd|i|S wr6   )r3   )r   r   r   s      r   async_get_cachezDiskCache.async_get_cacheE   s     t~~0#000s   c                 j   K   g }|D ]'  } | j                   dd|i|}|j                  |       ) |S wr6   r7   r9   s         r   async_batch_get_cachezDiskCache.async_batch_get_cacheH   sC     
A $..1Q1&1Cc"  s   13c                    K   | j                  |       d {   xs d}||z   } | j                  ||fi | d {    |S 7 +7 wr@   )rE   r%   rA   s        r   async_incrementzDiskCache.async_incrementO   sV     //C/88=A
U""d""38888 98s   AA$AAAAc                 8    | j                   j                          y r,   )r   clearr   s    r   flush_cachezDiskCache.flush_cacheV   s    r    c                    K   y wr,   r#   rL   s    r   
disconnectzDiskCache.disconnectY   s	     s   c                 :    | j                   j                  |       y r,   )r   pop)r   r   s     r   delete_cachezDiskCache.delete_cache\   s    C r    r,   )__name__
__module____qualname__r   strr   r   r%   r*   r3   listr=   intrC   rE   rG   rI   rM   rO   rR   r#   r    r   r   r      sy    7x} 7,7AD # C 1  #  !r    r   )r.   typingr   r   r   r   
base_cacher   opentelemetry.tracer	   _Spanr   r#   r    r   <module>r]      s8     6 6 !1DDO!	 O!r    