
    q`                     4    d dl Z ddlmZ d Z G d de      Zy)    N   )Cachec                 ,    t        j                  |       S N)randomchoice)seqs    -lib/python3.12/site-packages/cachetools/rr.py_choicer      s    ==    c                   F    e Zd ZdZej
                  dfdZed        Zd Zy)RRCachez-Random Replacement (RR) cache implementation.Nc                 |    t        j                  | ||       |t        j                  u rt        | _        y || _        y r   )r   __init__r   r   r   _RRCache__choice)selfmaxsizer   	getsizeofs       r
   r   zRRCache.__init__   s,    tWi0V]]"#DM"DMr   c                     | j                   S )z(The `choice` function used by the cache.)r   )r   s    r
   r   zRRCache.choice   s     }}r   c                     	 | j                  t        |             }|| j                  |      fS # t        $ r# t	        dt        |       j                  z        dw xY w)z/Remove and return a random `(key, value)` pair.z%s is emptyN)r   listpop
IndexErrorKeyErrortype__name__)r   keys     r
   popitemzRRCache.popitem   s]    	(--T
+C #''  	J=4:+>+>>?TI	Js	   / ,A)	r   
__module____qualname____doc__r   r   r   propertyr    r   r
   r   r      s,    7'-}} #  (r   r   )r   cacher   r   r   r#   r   r
   <module>r%      s     (e (r   