
    ui4                         d dl mZ d dlmZmZmZmZmZ  ed          Z ed          Z	 G d deee	f                   Z
dS )    )OrderedDict)AnyCallableGenericOptionalTypeVarKVc                   t    e Zd ZdZddedeeeege	f                  fdZ
dedee         fdZded	eddfd
ZdS )LRUCachezA simple LRU cache implementation, based on the OrderedDict class, which allows
    for a callback to be invoked when an item is evicted from the cache.Ncapacitycallbackc                 H    || _         t                      | _        || _        d S N)r   r   cacher   )selfr   r   s      K/var/www/icac/venv/lib/python3.11/site-packages/chromadb/utils/lru_cache.py__init__zLRUCache.__init__   s     (3
     keyreturnc                 d    || j         vrd S | j                             |          }|| j         |<   |S r   )r   pop)r   r   values      r   getzLRUCache.get   s7    dj  4
s##
3r   r   c                    || j         v r| j                             |           nXt          | j                   | j        k    r;| j                             d          \  }}| j        r|                     ||           || j         |<   d S )NF)last)r   r   lenr   popitemr   )r   r   r   evicted_keyevicted_values        r   setzLRUCache.set   s    $*JNN3__--)-);););)G)G&K} :k=999
3r   r   )__name__
__module____qualname____doc__intr   r   r	   r
   r   r   r   r"    r   r   r   r   	   s        L L! ! !1a&#+9N0O ! ! ! !
q Xa[     q    t            r   r   N)collectionsr   typingr   r   r   r   r   r	   r
   r   r(   r   r   <module>r+      s    # # # # # # < < < < < < < < < < < < < < GCLLGCLL         wq!t}          r   