
    q`O                     6    d dl Z ddlmZ  G d de          ZdS )    N   )Cachec                   \    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	dS )	LFUCachez1Least Frequently Used (LFU) cache implementation.Nc                 b    t          j        | ||           t          j                    | _        d S N)r   __init__collectionsCounter_LFUCache__counter)selfmaxsize	getsizeofs      .lib/python3.11/site-packages/cachetools/lfu.pyr	   zLFUCache.__init__	   s*    tWi000$,..    c                 P     || |          }|| v r| j         |xx         dz  cc<   |S Nr   r   )r   keycache_getitemvalues       r   __getitem__zLFUCache.__getitem__   s?    dC(($;;N31$r   c                 J     || ||           | j         |xx         dz  cc<   d S r   r   )r   r   r   cache_setitems       r   __setitem__zLFUCache.__setitem__   s:    dC'''sq r   c                 .     || |           | j         |= d S r   r   )r   r   cache_delitems      r   __delitem__zLFUCache.__delitem__   s$    dC   N3r   c                     	 | j                             d          \  \  }}||                     |          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   sx    	(.44Q77KXc1 #''  	J 	J 	J=4::+>>??TI	Js	   8 0A(r   )
r%   
__module____qualname____doc__r	   r   r   r   r   r'    r   r   r   r      s        ;;/ / / / .3->     5:4E ! ! ! ! .3->        ( ( ( ( (r   r   )r
   cacher   r   r+   r   r   <module>r-      sW             ( ( ( ( (u ( ( ( ( (r   