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 )MRUCachez.Most Recently Used (MRU) cache implementation.Nc                 C   s   t | || t | _d S N)r   __init__collectionsOrderedDict_MRUCache__order)selfmaxsize	getsizeof r   e/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/cachetools/mru.pyr   	   s   zMRUCache.__init__c                 C   s    || |}|| v r|  | |S r   _MRUCache__update)r	   keycache_getitemvaluer   r   r   __getitem__   s   

zMRUCache.__getitem__c                 C   s   || || |  | d S r   r   )r	   r   r   cache_setitemr   r   r   __setitem__   s   zMRUCache.__setitem__c                 C   s   || | | j |= d S r   )r   )r	   r   cache_delitemr   r   r   __delitem__   s   
zMRUCache.__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 most recently used.z%s is emptyN)nextiterr   StopIterationKeyErrortype__name__popr	   r   r   r   r   popitem   s   zMRUCache.popitemc                 C   s6   z| j j|dd W d S  ty   d | j |< Y d S w )NF)last)r   move_to_endr   r   r   r   r   __update$   s
   zMRUCache.__updater   )r   
__module____qualname____doc__r   r   r   r   r   r    r   r   r   r   r   r      s    
	r   )r   cachetools.cacher   r   r   r   r   r   <module>   s    