File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/cache.cpython-310.pyc
o
�N�g�- � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddl Zddl
ZddlZddlZddl
ZddlZddlZddlZddlmZ e�e�ZG dd� d�ZG dd� de�ZG dd � d e�ZG d
d� d�ZG dd
� d
�ZG dd� d�Zdd� Zdd� ZdS )z
In-memory caching used by Salt
� N)�zmqc @ s e Zd ZdZedd� �ZdS )�CacheFactoryz2
Cache which can use a number of backends
c O s\ t �d|� |dkrt|g|�R i |��S |dkr't||d g|�R i |��S t �d� d S )NzFactory backend: %sZmemoryZdiskZminion_cache_pathz-CacheFactory received unrecognized cache type)�log�debug� CacheDict� CacheDisk�error)�clsZbackend�ttl�args�kwargs� r
�D/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/cache.py�factory s zCacheFactory.factoryN)�__name__�
__module__�__qualname__�__doc__�classmethodr r
r
r
r r s r c @ s8 e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� ZdS )
r zA
Subclass of dict that will lazily delete items past ttl
c O s( t j| g|�R i |�� || _i | _d S �N)�dict�__init__�_ttl�_key_cache_time)�selfr
r r r
r
r r / s
zCacheDict.__init__c C sB || j vrdS t�� | j | | jkr| j |= t�| |� dS dS �zK
Enforce the TTL to a specific key, delete if its past TTL
N)r �timer r �__delitem__�r �keyr
r
r �_enforce_ttl_key4 s
�zCacheDict._enforce_ttl_keyc C � | � |� t�| |�S �z?
Check if the key is ttld out, then do the get
)r r �__getitem__r r
r
r r# >