U
    2Òtc´  ã                   @   s0   d dl Z ddlmZ dd„ ZG dd„ deƒZdS )é    Né   )ÚCachec                 C   s
   t  | ¡S ©N)ÚrandomÚchoice)Úseq© r   ú1/tmp/pip-unpacked-wheel-7ofpm20j/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kr t| _n|| _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   sN   z|   t| ƒ¡}W n( tk
r:   tdt| ƒj ƒd‚Y nX ||  |¡fS dS )z/Remove and return a random `(key, value)` pair.z%s is emptyN)r   ÚlistÚ
IndexErrorÚKeyErrorÚtypeÚ__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   )r   Úcacher   r
   r   r   r   r   r	   Ú<module>   s   