
                         :    d dl mZ d dlZddlmZ  G d de      Zy)    )absolute_importN   )Cachec                   x    e Zd ZdZddZej                  fdZej                  fdZej                  fdZd Z	y)	LFUCachez1Least Frequently Used (LFU) cache implementation.Nc                 d    t        j                  | ||       t        j                         | _        y N)r   __init__collectionsCounter_LFUCache__counter)selfmaxsize	getsizeofs      !lib/third_party/cachetools/lfu.pyr
   zLFUCache.__init__   s"    	NN4), ((*DN    c                 F     || |      }| j                   |xx   dz  cc<   |S Nr   r   )r   keycache_getitemvalues       r   __getitem__zLFUCache.__getitem__   s'    $$ENN31Lr   c                 F     || ||       | j                   |xx   dz  cc<   y r   r   )r   r   r   cache_setitems       r   __setitem__zLFUCache.__setitem__   s"    $U#NN31r   c                 0     || |       | j                   |= y r	   r   )r   r   cache_delitems      r   __delitem__zLFUCache.__delitem__   s    $sr   c                     	 | j                   j                  d      \  \  }}|| j                  |      fS # t        $ r# t	        d| j
                  j                  z        w xY w)z@Remove and return the `(key, value)` pair least frequently used.r   z%s is empty)r   most_commonpop
ValueErrorKeyError	__class____name__)r   r   _s      r   popitemzLFUCache.popitem   sa    "..,,Q/ihsA 488C=!!  >]T^^%<%<<==>s	    5 ,A!r	   )
r&   
__module____qualname____doc__r
   r   r   r   r   r(    r   r   r   r      s?    9+ ,1+<+< 
 382C2C  ,1+<+< "r   r   )
__future__r   r   cacher   r   r,   r   r   <module>r/      s    &  "u "r   