px
pypx

cachetools

v7.2.0

Extensible memoizing collections and decorators

17 KB Python 3.10+ py3-none-anyMIT
Diff
$ uv add cachetools

cachetools

Latest PyPI version CI build status Documentation build status Test coverage License

This module provides various memoizing collections and decorators, including variants of the Python Standard Library's @lru_cache_ function decorator.

from cachetools import cached, LRUCache, TTLCache

# speed up calculating Fibonacci numbers with dynamic programming
@cached(cache={})
def fib(n):
    return n if n < 2 else fib(n - 1) + fib(n - 2)

# cache least recently used Python Enhancement Proposals
@cached(cache=LRUCache(maxsize=32))
def get_pep(num):
    url = 'http://www.python.org/dev/peps/pep-%04d/' % num
    with urllib.request.urlopen(url) as s:
        return s.read()

# cache weather data for no longer than ten minutes
@cached(cache=TTLCache(maxsize=1024, ttl=600))
def get_weather(place):
    return owm.weather_at_place(place).get_weather()

For the purpose of this module, a cache is a mutable_ mapping_ of a fixed maximum size. When the cache is full, i.e. by adding another item the cache would exceed its maximum size, the cache must choose which item(s) to discard based on a suitable cache algorithm_.

This module provides multiple cache classes based on different cache algorithms, as well as decorators for easily memoizing function and method calls.

Installation

cachetools is available from PyPI_ and can be installed by running:

pip install cachetools

Project Resources

  • Documentation_
  • Issue tracker_
  • Source code_
  • Change log_

Related Projects

  • asyncache_: Helpers to use cachetools_ with asyncio.
  • cachetools-async_: Helpers to use cachetools_ with asyncio.
  • cacheing_: Pure Python Cacheing Library.
  • CacheToolsUtils_: Stackable cache classes for sharing, encryption,

statistics and more on top of cachetools_, redis_ and memcached_.

  • shelved-cache_: Persistent cache implementation for Python

cachetools_.

License

Copyright (c) 2014-2026 Thomas Kemmer.

Licensed under the MIT License_.

Details

Version
7.2.0
License
MIT
Python
>=3.10
Maintainer
Thomas Kemmer <[email protected]>

Release Cadence

23
releases in the past year
avg 60 days between releases

Maintainers