o
    ÑtBhO  ã                   @   s(   d dl Z ddlmZ G dd„ deƒZdS )é    Né   )ÚCachec                   @   sL   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S )ÚLFUCachez1Least Frequently Used (LFU) cache implementation.Nc                 C   s   t  | ||¡ t ¡ | _d S ©N)r   Ú__init__ÚcollectionsÚCounterÚ_LFUCache__counter)ÚselfÚmaxsizeÚ	getsizeof© r   úe/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/cachetools/lfu.pyr   	   s   zLFUCache.__init__c                 C   s(   || |ƒ}|| v r| j |  d8  < |S ©Nr   ©r	   )r
   ÚkeyÚcache_getitemÚvaluer   r   r   Ú__getitem__   s   
zLFUCache.__getitem__c                 C   s"   || ||ƒ | j |  d8  < d S r   r   )r
   r   r   Úcache_setitemr   r   r   Ú__setitem__   s   zLFUCache.__setitem__c                 C   s   || |ƒ | j |= d S r   r   )r
   r   Úcache_delitemr   r   r   Ú__delitem__   s   
zLFUCache.__delitem__c                 C   sH   z| j  d¡\\}}W n ty   tdt| ƒj ƒd‚w ||  |¡fS )z@Remove and return the `(key, value)` pair least frequently used.r   z%s is emptyN)r	   Úmost_commonÚ
ValueErrorÚKeyErrorÚtypeÚ__name__Úpop)r
   r   Ú_r   r   r   Úpopitem   s   ÿzLFUCache.popitemr   )
r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r    r   r   r   r   r      s    
r   )r   Úcacher   r   r   r   r   r   Ú<module>   s    