Metadata-Version: 2.1
Name: expiringdict
Version: 1.1.4
Summary: Dictionary with auto-expiring values for caching purposes
Home-page: https://github.com/mailgun/expiringdict
Author: Anton Efimenko
Author-email: anton@mailgunhq.com
License: Apache 2
Platform: UNKNOWN
Provides-Extra: test
Requires-Dist: nose ; extra == 'test'
Requires-Dist: mock ; extra == 'test'
Requires-Dist: coverage ; extra == 'test'
Expiring Dict
-------------
.. image:: https://travis-ci.org/mailgun/expiringdict.svg?branch=master
:target: https://travis-ci.org/mailgun/expiringdict
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:
.. code-block:: bash
pip install expiringdict
If you wish to download the source and install from GitHub:
.. code-block:: bash
git clone git@github.com:mailgun/expiringdict.git
python setup.py install
or to install with test dependencies (`Nose <http://readthedocs.org/docs/nose/en/latest/>`_, `Mock <http://www.voidspace.org.uk/python/mock/>`_, `coverage <http://nedbatchelder.com/code/coverage/>`_) run from the directory above:
.. code-block:: bash
pip install -e expiringdict[test]
To run tests with coverage:
.. code-block:: bash
nosetests --with-coverage --cover-package=expiringdict
Usage
-----
Create a dictionary with capacity for 100 elements and elements expiring in 10 seconds:
.. code-block:: py
from expiringdict import ExpiringDict
cache = ExpiringDict(max_len=100, max_age_seconds=10)
put and get a value there:
.. code-block:: py
cache["key"] = "value"
cache.get("key")