
    q`                     .    d dl Z ddlmZ  G d de      Zy)    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 Z
y)
LRUCachez/Least Recently Used (LRU) cache implementation.Nc                 d    t        j                  | ||       t        j                         | _        y N)r   __init__collectionsOrderedDict_LRUCache__order)selfmaxsize	getsizeofs      .lib/python3.12/site-packages/cachetools/lru.pyr	   zLRUCache.__init__	   s"    tWi0"..0    c                 B     || |      }|| v r| j                  |       |S r   _LRUCache__update)r   keycache_getitemvalues       r   __getitem__zLRUCache.__getitem__   s&    dC($;MM#r   c                 :     || ||       | j                  |       y r   r   )r   r   r   cache_setitems       r   __setitem__zLRUCache.__setitem__   s    dC'cr   c                 0     || |       | j                   |= y r   )r   )r   r   cache_delitems      r   __delitem__zLRUCache.__delitem__   s    dC LLr   c                     	 t        t        | j                              }|| j                  |      fS # t        $ r# t        dt        |       j                  z        dw xY w)z>Remove and return the `(key, value)` pair least recently used.z%s is emptyN)nextiterr   popStopIterationKeyErrortype__name__r   r   s     r   popitemzLRUCache.popitem   s^    	(tDLL)*C #''  	J=4:+>+>>?TI	Js	   3 ,Ac                 x    	 | j                   j                  |       y # t        $ r d | j                   |<   Y y w xY wr   )r   move_to_endr$   r'   s     r   __updatezLRUCache.__update$   s6    	%LL$$S) 	% $DLL	%s    99r   )r&   
__module____qualname____doc__r	   r   r   r   r   r(   r    r   r   r   r      sD    91 .3->->  5:4E4E  .3->-> (%r   r   )r
   cacher   r   r/   r   r   <module>r1      s     "%u "%r   