Dictionary with auto-expiring values for caching purposes.
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
expiringdict squash changes Jun 15, 2017
tests squash changes Jun 15, 2017
.gitignore squash changes Jun 15, 2017
.travis.yml squash changes Jun 15, 2017
LICENSE Update LICENSE Aug 8, 2013
MANIFEST.in Version bump and manifest fix. Mar 7, 2014
README.rst Add build status badge to README Jun 15, 2017
requirements.txt squash changes Jun 15, 2017
setup.py Bump version Nov 15, 2016
tox.ini squash changes Jun 15, 2017

README.rst

Expiring Dict

https://travis-ci.org/mailgun/expiringdict.svg?branch=master

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")