Expiring Dict
expiringdict is a Python caching library. The core of the library is ExpiringDict class which is an ordered dictionary with auto-expiring values for caching purposes. Expiration happens on any access, object is locked during cleanup from expired values. ExpiringDict can not store more than max_len elements - the oldest will be deleted.
Note: Iteration over dict and also keys() do not remove expired values!
Installation
If you wish to install from PyPi:
pip install expiringdict
If you wish to download the source and install from GitHub:
git clone git@github.com:mailgun/expiringdict.git
python setup.py install
or to install with test dependencies (Nose, Mock, coverage) run from the directory above:
pip install -e expiringdict[test]
To run tests with coverage:
nosetests --with-coverage --cover-package=expiringdict
Usage
Create a dictionary with capacity for 100 elements and elements expiring in 10 seconds:
from expiringdict import ExpiringDict
cache = ExpiringDict(max_len=100, max_age_seconds=10)
put and get a value there:
cache["key"] = "value"
cache.get("key")
copy from dict or OrderedDict:
from expiringdict import ExpiringDict
my_dict=dict()
my_dict['test'] = 1
cache = ExpiringDict(max_len=100, max_age_seconds=10, items=my_dict)
assert cache['test'] == 1
copy from another ExpiringDict, with or without new length and timeout:
from expiringdict import ExpiringDict
cache_hour = ExpiringDict(max_len=100, max_age_seconds=3600)
cache_hour['test'] = 1
cache_hour_copy = ExpiringDict(max_len=None, max_age_seconds=None, items=cache_hour)
cache_minute_copy = ExpiringDict(max_len=None, max_age_seconds=60, items=cache_hour)
assert cache_minute_copy['test'] == 1
pickle :
import dill
from expiringdict import ExpiringDict
cache = ExpiringDict(max_len=100, max_age_seconds=10)
cache['test'] = 1
pickled_cache = dill.dumps(cache)
unpickled_cache = dill.loads(cache)
assert unpickled_cache['test'] == 1
Metadata
Release files for expiringdict 1.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| expiringdict-1.2.2.tar.gz | 8.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| expiringdict-1.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.6 kB
Release files / expiringdict-1.2.2.tar.gz
| Download URL | expiringdict-1.2.2.tar.gz |
|---|---|
| Size | 8.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
300fb92a7e98f15b05cf9a856c1415b3bc4f2e132be07daa326da6414c23ee09
|
|
BLAKE2b-256 checksum How to use checksums |
fc62c2af4ebce24c379b949de69d49e3ba97c7e9c9775dc74d18307afa8618b7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.12
|
Release files / expiringdict-1.2.2-py3-none-any.whl
| Download URL | expiringdict-1.2.2-py3-none-any.whl |
|---|---|
| Size | 8.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
09a5d20bc361163e6432a874edd3179676e935eb81b925eccef48d409a8a45e8
|
|
BLAKE2b-256 checksum How to use checksums |
cb84a04c59324445f4bcc98dc05b39a1cd07c242dde643c1a3c21e4f7beaf2f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.12
|