o
    €Ïß  ã                   @   s4   d dl mZ d dlZddlmZ G dd„ deƒZdS )é    )Úabsolute_importNé   )Ú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   ú7/tmp/google-cloud-sdk/lib/third_party/cachetools/lfu.pyr      s   zLFUCache.__init__c                 C   s    || |ƒ}| 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   sD   z| j  d¡\\}}W n ty   td| jj ƒ‚w ||  |¡fS )z@Remove and return the `(key, value)` pair least frequently used.r   z%s is empty)r
   Úmost_commonÚ
ValueErrorÚKeyErrorÚ	__class__Ú__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   )Ú
__future__r   r   Úcacher   r   r   r   r   r   Ú<module>   s    