• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

.github/workflows/25-Apr-2025-2320

docs/25-Apr-2025-715538

src/25-Apr-2025-918714

tests/25-Apr-2025-1,3431,007

.gitignoreD25-Apr-202597 1211

Android.bpD25-Apr-2025992 3128

CHANGELOG.rstD25-Apr-20256.7 KiB370193

LICENSED25-Apr-20251.1 KiB2116

MANIFEST.inD25-Apr-2025167 118

NOTICED25-Apr-20251.1 KiB2116

OWNERSD25-Apr-202542 32

README.rstD25-Apr-20253.8 KiB11079

pyproject.tomlD25-Apr-2025100 43

setup.cfgD25-Apr-20251.3 KiB4843

setup.pyD25-Apr-202538 42

tox.iniD25-Apr-2025770 4034

README.rst

1cachetools
2========================================================================
3
4.. image:: https://img.shields.io/pypi/v/cachetools
5   :target: https://pypi.org/project/cachetools/
6   :alt: Latest PyPI version
7
8.. image:: https://img.shields.io/readthedocs/cachetools
9   :target: https://cachetools.readthedocs.io/
10   :alt: Documentation build status
11
12.. image:: https://img.shields.io/github/workflow/status/tkem/cachetools/CI
13   :target: https://github.com/tkem/cachetools/actions/workflows/ci.yml
14   :alt: CI build status
15
16.. image:: https://img.shields.io/codecov/c/github/tkem/cachetools/master.svg
17   :target: https://codecov.io/gh/tkem/cachetools
18   :alt: Test coverage
19
20.. image:: https://img.shields.io/github/license/tkem/cachetools
21   :target: https://raw.github.com/tkem/cachetools/master/LICENSE
22   :alt: License
23
24.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
25   :target: https://github.com/psf/black
26   :alt: Code style: black
27
28This module provides various memoizing collections and decorators,
29including variants of the Python Standard Library's `@lru_cache`_
30function decorator.
31
32.. code-block:: python
33
34   from cachetools import cached, LRUCache, TTLCache
35
36   # speed up calculating Fibonacci numbers with dynamic programming
37   @cached(cache={})
38   def fib(n):
39       return n if n < 2 else fib(n - 1) + fib(n - 2)
40
41   # cache least recently used Python Enhancement Proposals
42   @cached(cache=LRUCache(maxsize=32))
43   def get_pep(num):
44       url = 'http://www.python.org/dev/peps/pep-%04d/' % num
45       with urllib.request.urlopen(url) as s:
46           return s.read()
47
48   # cache weather data for no longer than ten minutes
49   @cached(cache=TTLCache(maxsize=1024, ttl=600))
50   def get_weather(place):
51       return owm.weather_at_place(place).get_weather()
52
53For the purpose of this module, a *cache* is a mutable_ mapping_ of a
54fixed maximum size.  When the cache is full, i.e. by adding another
55item the cache would exceed its maximum size, the cache must choose
56which item(s) to discard based on a suitable `cache algorithm`_.  In
57general, a cache's size is the total size of its items, and an item's
58size is a property or function of its value, e.g. the result of
59``sys.getsizeof(value)``.  For the trivial but common case that each
60item counts as ``1``, a cache's size is equal to the number of its
61items, or ``len(cache)``.
62
63Multiple cache classes based on different caching algorithms are
64implemented, and decorators for easily memoizing function and method
65calls are provided, too.
66
67
68Installation
69------------------------------------------------------------------------
70
71cachetools is available from PyPI_ and can be installed by running::
72
73  pip install cachetools
74
75Typing stubs for this package are provided by typeshed_ and can be
76installed by running::
77
78  pip install types-cachetools
79
80
81Project Resources
82------------------------------------------------------------------------
83
84- `Documentation`_
85- `Issue tracker`_
86- `Source code`_
87- `Change log`_
88
89
90License
91------------------------------------------------------------------------
92
93Copyright (c) 2014-2021 Thomas Kemmer.
94
95Licensed under the `MIT License`_.
96
97
98.. _@lru_cache: https://docs.python.org/3/library/functools.html#functools.lru_cache
99.. _mutable: https://docs.python.org/dev/glossary.html#term-mutable
100.. _mapping: https://docs.python.org/dev/glossary.html#term-mapping
101.. _cache algorithm: https://en.wikipedia.org/wiki/Cache_algorithms
102
103.. _PyPI: https://pypi.org/project/cachetools/
104.. _typeshed: https://github.com/python/typeshed/
105.. _Documentation: https://cachetools.readthedocs.io/
106.. _Issue tracker: https://github.com/tkem/cachetools/issues/
107.. _Source code: https://github.com/tkem/cachetools/
108.. _Change log: https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst
109.. _MIT License: https://raw.github.com/tkem/cachetools/master/LICENSE
110