o
    €Ï„  ã                   @   s<   d dl mZ d dlZddlmZ dd„ ZG dd„ deƒZdS )	é    )Úabsolute_importNé   )ÚCachec                 C   s
   t  | ¡S ©N)ÚrandomÚchoice)Úseq© r	   ú6/tmp/google-cloud-sdk/lib/third_party/cachetools/rr.pyÚ_choice	   s   
r   c                   @   s4   e Zd ZdZejdfdd„Zedd„ ƒZdd„ ZdS )	ÚRRCachez-Random Replacement (RR) cache implementation.Nc                 C   s,   t  | ||¡ |tju rt| _d S || _d S r   )r   Ú__init__r   r   r   Ú_RRCache__choice)ÚselfÚmaxsizer   Ú	getsizeofr	   r	   r
   r      s   


zRRCache.__init__c                 C   s   | j S )z(The `choice` function used by the cache.)r   )r   r	   r	   r
   r      s   zRRCache.choicec                 C   s@   z	|   t| ƒ¡}W n ty   td| jj ƒ‚w ||  |¡fS )z/Remove and return a random `(key, value)` pair.z%s is empty)r   ÚlistÚ
IndexErrorÚKeyErrorÚ	__class__Ú__name__Úpop)r   Úkeyr	   r	   r
   Úpopitem   s   ÿzRRCache.popitem)	r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   Úpropertyr   r	   r	   r	   r
   r      s    
r   )Ú
__future__r   r   Úcacher   r   r   r	   r	   r	   r
   Ú<module>   s
    