o
    ÑtBhÈ  ã                   @   s(   d dl Z ddlmZ G dd„ deƒZdS )é    Né   )ÚCachec                   @   sT   e Zd ZdZddd„Zejfdd„Zejfdd„Zejfd	d
„Zdd„ Z	dd„ Z
dS )ÚLRUCachez/Least Recently Used (LRU) cache implementation.Nc                 C   s   t  | ||¡ t ¡ | _d S ©N)r   Ú__init__ÚcollectionsÚOrderedDictÚ_LRUCache__order)ÚselfÚmaxsizeÚ	getsizeof© r   úe/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/cachetools/lru.pyr   	   s   zLRUCache.__init__c                 C   s    || |ƒ}|| v r|   |¡ |S r   ©Ú_LRUCache__update)r
   ÚkeyÚcache_getitemÚvaluer   r   r   Ú__getitem__   s   

zLRUCache.__getitem__c                 C   s   || ||ƒ |   |¡ d S r   r   )r
   r   r   Úcache_setitemr   r   r   Ú__setitem__   s   zLRUCache.__setitem__c                 C   s   || |ƒ | j |= d S r   )r	   )r
   r   Úcache_delitemr   r   r   Ú__delitem__   s   
zLRUCache.__delitem__c                 C   sD   z	t t| jƒƒ}W n ty   tdt| ƒj ƒd‚w ||  |¡fS )z>Remove and return the `(key, value)` pair least recently used.z%s is emptyN)ÚnextÚiterr	   ÚStopIterationÚKeyErrorÚtypeÚ__name__Úpop©r
   r   r   r   r   Úpopitem   s   ÿzLRUCache.popitemc                 C   s2   z	| j  |¡ W d S  ty   d | j |< Y d S w r   )r	   Úmove_to_endr   r    r   r   r   Ú__update$   s
   ÿzLRUCache.__updater   )r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r!   r   r   r   r   r   r      s    
	r   )r   Úcacher   r   r   r   r   r   Ú<module>   s    