
                         @    S SK Jr  S SKrSSKJr  S r " S S\5      rg)    )absolute_importN   )Cachec                 .    [         R                  " U 5      $ N)randomchoice)seqs     lib/third_party/cachetools/rr.py_choicer   	   s    	s	    c                   P    \ rS rSrSr\R                  S4S jr\S 5       rS r	Sr
g)RRCache   z-Random Replacement (RR) cache implementation.Nc                 |    [         R                  " XU5        U[        R                  L a  [        U l        g X l        g r   )r   __init__r   r	   r   _RRCache__choice)selfmaxsizer	   	getsizeofs       r   r   RRCache.__init__   s(    	NN4),dmmr   c                     U R                   $ )z(The `choice` function used by the cache.)r   )r   s    r   r	   RRCache.choice   s     ==r   c                      U R                  [        U 5      5      nXR                  U5      4$ ! [         a#    [	        SU R
                  R                  -  5      ef = f)z/Remove and return a random `(key, value)` pair.z%s is empty)r   listpop
IndexErrorKeyError	__class____name__)r   keys     r   popitemRRCache.popitem   sW    "MM$t*%c 88C=!!  >]T^^%<%<<==>s	   . -A)__choice)r    
__module____qualname____firstlineno____doc__r   r	   r   propertyr"   __static_attributes__ r   r   r   r      s,    5%+]]d   "r   r   )
__future__r   r   cacher   r   r   r+   r   r   <module>r.      s    &  "e "r   