/
ordered.py
41 lines (30 loc) · 1.13 KB
/
ordered.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"Ordered cache to save keys in order."
import sqlite3
from .core import Cache, Disk, ENOVAL
class OrderedCache(Cache):
"Cache that saves keys in order."
def __init__(self, directory, timeout=60, disk=Disk(),
**settings):
"""Initialize OrderedCache instance.
:param str directory: cache directory
:param float timeout: SQLite connection timeout
:param disk: `Disk`: instance for serialization
:param settings: any of `DEFAULT_SETTINGS`
"""
super(self.__class__, self).__init__(directory, timeout, disk)
def first(self, default=ENOVAL):
"""Retrieve the first key in the cache based on age
:param key default: default value if cache is empty
"""
try:
return next(iter(self))
except StopIteration:
return default
def last(self, default=ENOVAL):
"""Retrieve the last key in the cache based on age
:param key default: default value if cache is empty
"""
try:
return next(reversed(self))
except StopIteration:
return default