
                          :    d dl mZ d dlZddlmZ  G d de      Zy)    )absolute_importN   )Cachec                       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	 e
ej                  d      rd	 Zyd
 Zy)LRUCachez/Least Recently Used (LRU) cache implementation.Nc                 d    t        j                  | ||       t        j                         | _        y N)r   __init__collectionsOrderedDict_LRUCache__order)selfmaxsize	getsizeofs      !lib/third_party/cachetools/lru.pyr
   zLRUCache.__init__   s"    	NN4),**,DL    c                 :     || |      }| j                  |       |S r	   _LRUCache__update)r   keycache_getitemvalues       r   __getitem__zLRUCache.__getitem__   s    $$EMM#Lr   c                 :     || ||       | j                  |       y r	   r   )r   r   r   cache_setitems       r   __setitem__zLRUCache.__setitem__   s    $U#MM#r   c                 0     || |       | j                   |= y r	   )r   )r   r   cache_delitems      r   __delitem__zLRUCache.__delitem__   s    $Sr   c                     	 t        t        | j                              }|| j                  |      fS # t        $ r# t        d| j                  j                  z        w xY w)z>Remove and return the `(key, value)` pair least recently used.z%s is empty)nextiterr   popStopIterationKeyError	__class____name__r   r   s     r   popitemzLRUCache.popitem   sZ    "dll#$c 488C=!!  >]T^^%<%<<==>s	   3 ,Amove_to_endc                 x    	 | j                   j                  |       y # t        $ r d | j                   |<   Y y w xY wr	   )r   r*   r%   r(   s     r   __updatezLRUCache.__update'   s6    !  % ! S!s    99c                     	 | j                   j                  |      | j                   |<   y # t        $ r d | j                   |<   Y y w xY wr	   )r   r#   r%   r(   s     r   r,   zLRUCache.__update.   sA    ! LL,,S1S ! S!s   (+ AAr	   )r'   
__module____qualname____doc__r
   r   r   r   r   r)   hasattrr   r   r    r   r   r   r      s[    7- ,1+<+< 
 382C2C  ,1+<+< " [$$m4!!r   r   )
__future__r   r   cacher   r   r2   r   r   <module>r5      s    &  *!u *!r   