U
    nciG                     @   s    d dl mZ G dd deZdS )    )OrderedDictc                       sn   e Zd Z fddZ fddZd fdd	Z fdd	Z fd
dZ fddZ fddZ	dd Z
  ZS )LRUCachec                    s   t    t | _|| _d S N)super__init__r   _ordermaxsize)selfr   	__class__ 6/tmp/pip-unpacked-wheel-fpe1mg0e/google/auth/_cache.pyr      s    
zLRUCache.__init__c                    s   t    | j  d S r   )r   clearr   )r	   r
   r   r   r      s    
zLRUCache.clearNc                    s:   zt  |}| | |W S  tk
r4   | Y S X d S r   )r   __getitem___updateKeyError)r	   keydefaultvaluer
   r   r   get   s    
zLRUCache.getc                    s   t  |}| | |S r   )r   r   r   )r	   r   r   r
   r   r   r   $   s    
zLRUCache.__getitem__c                    sL   | j }|dkrd S || kr0t| |kr0|   qt || | | d S )Nr   )r   lenpopitemr   __setitem__r   )r	   r   r   r   r
   r   r   r   )   s    
zLRUCache.__setitem__c                    s   t  | | j|= d S r   )r   __delitem__r   r	   r   r
   r   r   r   3   s    zLRUCache.__delitem__c                    s"   | j jdd\}}|t |fS )z9Remove and return the least recently used key-value pair.F)last)r   r   r   pop)r	   r   _r
   r   r   r   7   s    zLRUCache.popitemc                 C   s4   z| j | W n tk
r.   d | j |< Y nX d S r   )r   move_to_endr   r   r   r   r   r   <   s    zLRUCache._update)N)__name__
__module____qualname__r   r   r   r   r   r   r   r   __classcell__r   r   r
   r   r      s   
r   N)collectionsr   dictr   r   r   r   r   <module>   s   