Files
devplacepy/devplacepy/cache.py
T

41 lines
1.0 KiB
Python
Raw Normal View History

2026-06-12 01:58:46 +02:00
# retoor <retoor@molodetz.nl>
2026-05-23 06:20:27 +02:00
import time
from collections import OrderedDict
class TTLCache:
def __init__(self, ttl: int, max_size: int = 0):
self.ttl = ttl
self.max_size = max_size
self._store = OrderedDict()
def get(self, key):
entry = self._store.get(key)
if entry is None:
return None
value, expiry = entry
if time.time() >= expiry:
self._store.pop(key, None)
return None
self._store.move_to_end(key)
return value
def set(self, key, value):
self._store[key] = (value, time.time() + self.ttl)
self._store.move_to_end(key)
if self.max_size and len(self._store) > self.max_size:
self._store.popitem(last=False)
def pop(self, key):
self._store.pop(key, None)
def clear(self):
self._store.clear()
def items(self):
now = time.time()
2026-06-09 18:48:08 +02:00
return [
(key, value) for key, (value, expiry) in self._store.items() if now < expiry
]