
    q`O                     .    d dl Z ddlmZ  G d de      Zy)    N   )Cachec                   x    e Zd ZdZddZej                  fdZej                  fdZej                  fdZd Z	y)	LFUCachez1Least Frequently Used (LFU) cache implementation.Nc                 d    t        j                  | ||       t        j                         | _        y N)r   __init__collectionsCounter_LFUCache__counter)selfmaxsize	getsizeofs      .lib/python3.12/site-packages/cachetools/lfu.pyr	   zLFUCache.__init__	   s"    tWi0$,,.    c                 N     || |      }|| v r| j                   |xx   dz  cc<   |S Nr   r   )r   keycache_getitemvalues       r   __getitem__zLFUCache.__getitem__   s.    dC($;NN31$r   c                 F     || ||       | j                   |xx   dz  cc<   y r   r   )r   r   r   cache_setitems       r   __setitem__zLFUCache.__setitem__   s"    dC'sq r   c                 0     || |       | j                   |= y r   r   )r   r   cache_delitems      r   __delitem__zLFUCache.__delitem__   s    dC NN3r   c                     	 | j                   j                  d      \  \  }}|| j                  |      fS # t        $ r# t	        dt        |       j                  z        dw xY w)z@Remove and return the `(key, value)` pair least frequently used.r   z%s is emptyN)r   most_commonpop
ValueErrorKeyErrortype__name__)r   r   _s      r   popitemzLFUCache.popitem   se    	(..44Q7KXc1 #''  	J=4:+>+>>?TI	Js	    5 ,A!r   )
r%   
__module____qualname____doc__r	   r   r   r   r   r'    r   r   r   r      s?    ;/ .3->->  5:4E4E ! .3->->  (r   r   )r
   cacher   r   r+   r   r   <module>r-      s     (u (r   