o
    µ+keÒ  ã                   @   s   e ƒ ZG d d„ dƒZdS )c                   @   s^   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zddd„Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚLRUCachec                 C   s   i | _ g | _|| _|| _d S ©N)Ú_cacheÚ_lruÚ	_capacityÚ_dispose)ÚselfÚcapacityZdispose© r	   ú1usr/lib/python3.10/site-packages/borg/lrucache.pyÚ__init__   s   
zLRUCache.__init__c                 C   sX   || j vs	J dƒ‚| j |¡ t| jƒ| jkr%| | jd = t| jƒ| jks|| j |< d S )NzQUnexpected attempt to replace a cached item, without first deleting the old item.é    )r   r   ÚappendÚlenr   ©r   ÚkeyÚvaluer	   r	   r
   Ú__setitem__   s   ÿÿzLRUCache.__setitem__c                 C   s&   | j | }| j |¡ | j |¡ |S r   )r   r   Úremover   r   r	   r	   r
   Ú__getitem__   s   
zLRUCache.__getitem__c                 C   s&   | j  |¡}|  |¡ | j |¡ d S r   )r   Úpopr   r   r   r   r	   r	   r
   Ú__delitem__   s   
zLRUCache.__delitem__c                 C   s
   || j v S r   ©r   )r   r   r	   r	   r
   Ú__contains__   ó   
zLRUCache.__contains__Nc                 C   s6   | j  |t¡}|tu r|S | j |¡ | j |¡ |S r   )r   ÚgetÚsentinelr   r   r   )r   r   Údefaultr   r	   r	   r
   r   "   s   zLRUCache.getc                 C   s    || j v s	J dƒ‚|| j |< d S )Nz1Unexpected attempt to update a non-existing item.r   r   r	   r	   r
   Úupd*   s   zLRUCache.updc                 C   s(   | j  ¡ D ]}|  |¡ q| j  ¡  d S r   )r   Úvaluesr   Úclear)r   r   r	   r	   r
   r   0   s   zLRUCache.clearc                 C   s
   | j  ¡ S r   )r   Úitems©r   r	   r	   r
   r    5   r   zLRUCache.itemsc                 C   s
   t | jƒS r   )r   r   r!   r	   r	   r
   Ú__len__8   r   zLRUCache.__len__r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r    r"   r	   r	   r	   r
   r      s    	
r   N)Úobjectr   r   r	   r	   r	   r
   Ú<module>   s    