File: PKG-INFO

package info (click to toggle)
python-expiringdict 1.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 120 kB
  • sloc: python: 213; makefile: 3
file content (117 lines) | stat: -rw-r--r-- 3,468 bytes parent folder | download | duplicates (2)
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
Metadata-Version: 2.1
Name: expiringdict
Version: 1.2.2
Summary: Dictionary with auto-expiring values for caching purposes
Home-page: https://www.mailgun.com/
Author: Mailgun Technologies Inc.
Author-email: admin@mailgun.com
License: Apache 2
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries
Provides-Extra: tests
License-File: LICENSE

Expiring Dict
-------------

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

.. image:: https://coveralls.io/repos/github/mailgun/expiringdict/badge.svg?branch=master
    :target: https://coveralls.io/github/mailgun/expiringdict?branch=master

ChangeLog_

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!

.. _ChangeLog: ./CHANGELOG.rst

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

copy from dict or OrderedDict:

.. code-block:: py

     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:

.. code-block:: py

     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 :

.. code-block:: py

    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