
                         :    S SK Jr  S SKrSSKJr   " S S\5      rg)    )absolute_importN   )Cachec                       \ rS rSrSrS
S jr\R                  4S jr\R                  4S jr\R                  4S jr	S r
S	rg)LFUCache   z1Least Frequently Used (LFU) cache implementation.Nc                 f    [         R                  " XU5        [        R                  " 5       U l        g N)r   __init__collectionsCounter_LFUCache__counter)selfmaxsize	getsizeofs      !lib/third_party/cachetools/lfu.pyr   LFUCache.__init__   s     	NN4), ((*DN    c                 D    U" X5      nU R                   U==   S-  ss'   U$ Nr   r   )r   keycache_getitemvalues       r   __getitem__LFUCache.__getitem__   s%    $$ENN31Lr   c                 D    U" XU5        U R                   U==   S-  ss'   g r   r   )r   r   r   cache_setitems       r   __setitem__LFUCache.__setitem__   s     $U#NN31r   c                 .    U" X5        U R                   U	 g r
   r   )r   r   cache_delitems      r   __delitem__LFUCache.__delitem__   s    $sr   c                      U R                   R                  S5      u  u  pXR                  U5      4$ ! [         a#    [	        SU R
                  R                  -  5      ef = f)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   popitemLFUCache.popitem   s]    "..,,Q/ihs 88C=!!  >]T^^%<%<<==>s	   3 -A )	__counterr
   )r+   
__module____qualname____firstlineno____doc__r   r   r   r   r#   r-   __static_attributes__ r   r   r   r      s?    9+ ,1+<+< 
 382C2C  ,1+<+< "r   r   )
__future__r   r   cacher   r   r5   r   r   <module>r8      s    &  "u "r   