
    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)
MRUCachez.Most Recently Used (MRU) cache implementation.Nc                 d    t        j                  | ||       t        j                         | _        y N)r   __init__collectionsOrderedDict_MRUCache__order)selfmaxsize	getsizeofs      .lib/python3.12/site-packages/cachetools/mru.pyr   zMRUCache.__init__	   s"    tWi0"..0    c                 B     || |      }|| v r| j                  |       |S r   _MRUCache__update)r   keycache_getitemvalues       r   __getitem__zMRUCache.__getitem__   s&    dC($;MM#r   c                 :     || ||       | j                  |       y r   r   )r   r   r   cache_setitems       r   __setitem__zMRUCache.__setitem__   s    dC'cr   c                 0     || |       | j                   |= y r   )r   )r   r   cache_delitems      r   __delitem__zMRUCache.__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 most recently used.z%s is emptyN)nextiterr   popStopIterationKeyErrortype__name__r   r   s     r   popitemzMRUCache.popitem   s^    	(tDLL)*C #''  	J=4:+>+>>?TI	Js	   3 ,Ac                 |    	 | j                   j                  |d       y # t        $ r d | j                   |<   Y y w xY w)NF)last)r   move_to_endr#   r&   s     r   __updatezMRUCache.__update$   s;    	%LL$$Su$5 	% $DLL	%s     ;;r   )r%   
__module____qualname____doc__r   r   r   r   r   r'   r    r   r   r   r      sD    81 .3->->  5:4E4E  .3->-> (%r   r   )r	   cachetools.cacher   r   r/   r   r   <module>r1      s     ""%u "%r   