File: //home/arjun/projects/env/lib/python3.10/site-packages/cachelib/__pycache__/simple.cpython-310.pyc
o
!we�
� @ s@ d dl Zd dlmZ d dlmZ d dlmZ G dd� de�ZdS )� N)�time)� BaseCache)�SimpleSerializerc
@ s e Zd ZdZe� Z d$dedefdd�Zdefd d
�Z de
ddfd
d�Zd%dd�Zd%dd�Z
deje defdd�Zdedejfdd�Z d&dedejdeje deje fdd�Zd&dedejdeje defdd�Zdedefdd�Zdedefd d!�Zdefd"d#�ZdS )'�SimpleCachea� Simple memory cache for single process environments. This class exists
mainly for the development server and is not 100% thread safe. It tries
to use as many atomic operations as possible and no locks for simplicity
but it could happen under heavy load that keys are added multiple times.
:param threshold: the maximum number of items the cache stores before
it starts deleting some.
:param default_timeout: the default timeout that is used if no timeout is
specified on :meth:`~BaseCache.set`. A timeout of
0 indicates that the cache never expires.
�� �, � threshold�default_timeoutc C s t �| |� i | _|pd| _d S )Nr )r �__init__�_cache�
_threshold)�selfr r � r �H/home/arjun/projects/env/lib/python3.10/site-packages/cachelib/simple.pyr
s zSimpleCache.__init__�returnc C s t | j�| jkS �N)�lenr r �r
r r r �_over_threshold! s zSimpleCache._over_threshold�nowNc s4 � fdd�| j �� D �}|D ] }| j �|d � qd S )Nc s g | ]\}\}}|� k r|�qS r r )�.0�k�expires�_�r r r �
<listcomp>% s z/SimpleCache._remove_expired.<locals>.<listcomp>)r �items�pop)r
r �toremover r r r �_remove_expired$ s �zSimpleCache._remove_expiredc C sJ dd� t | j�� dd� d�D �}|D ]}| j�|d � | �� s" d S qd S )Nc s s � | ]\}}|V qd S r r )r r �vr r r � <genexpr>* s
� �
�z,SimpleCache._remove_older.<locals>.<genexpr>c S s | d d S )N� r r )�itemr r r �<lambda>- s z+SimpleCache._remove_older.<locals>.<lambda>)�key)�sortedr r r r )r
� k_orderedr r r r �
_remove_older) s ����zSimpleCache._remove_olderc C s0 | � � rt� }| �|� | � � r| �� d S d S r )r r r r( )r
r r r r �_prune5 s
�zSimpleCache._prune�timeoutc C s&