
    g                     \    d dl Z d dlmZmZmZ ddlmZ er	d dlmZ	 e	ZneZ G d de      Z
y)    N)TYPE_CHECKINGAnyOptional   )	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                 j    dd l }||j                  d      | _        y |j                  |      | _        y )Nr   z.litellm_cache)	diskcacheCache
disk_cache)selfr   dcs      O/var/www/openai/venv/lib/python3.12/site-packages/litellm/caching/disk_cache.py__init__zDiskCache.__init__   s.     ! hh'78DO hh~6DO    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+r   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    r0   appendr   r1   r   
return_valkvals         r   batch_get_cachezDiskCache.batch_get_cache2   s?    
A $..1Q1&1Cc"  r   r   returnc                 d    | j                  |      xs d}||z   } | j                  ||fi | |S N)r   r   )r0   r   r   r   r   r   
init_values        r   increment_cachezDiskCache.increment_cache9   s;    ^^^,1
U"sE,V,r   c                 2   K    | j                   dd|i|S wr3   )r0   )r   r   r   s      r   async_get_cachezDiskCache.async_get_cache@   s     t~~0#000s   c                 j   K   g }|D ]'  } | j                   dd|i|}|j                  |       ) |S wr3   r4   r6   s         r   async_batch_get_cachezDiskCache.async_batch_get_cacheC   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=   )rB   r"   r>   s        r   async_incrementzDiskCache.async_incrementJ   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_cacheQ   s    r   c                    K   y wr)   r    rI   s    r   
disconnectzDiskCache.disconnectT   s	     s   c                 :    | j                   j                  |       y r)   )r   pop)r   r   s     r   delete_cachezDiskCache.delete_cacheW   s    C r   r)   )__name__
__module____qualname__r   strr   r   r"   r'   r0   listr:   intr@   rB   rD   rF   rJ   rL   rO   r    r   r   r
   r
      sy    7x} 7,7AD # C 1  #  !r   r
   )r+   typingr   r   r   
base_cacher   opentelemetry.tracer   _Spanr
   r    r   r   <module>rZ      s/     / / !1DDJ!	 J!r   