Skip to main content

Extensible memoizing collections and decorators

Project description

Latest PyPI version Documentation build status CI build status Test coverage License Code style: black

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. In general, a cache’s size is the total size of its items, and an item’s size is a property or function of its value, e.g. the result of sys.getsizeof(value). For the trivial but common case that each item counts as 1, a cache’s size is equal to the number of its items, or len(cache).

Multiple cache classes based on different caching algorithms are implemented, and decorators for easily memoizing function and method calls are provided, too.

Installation

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

pip install cachetools

Typing stubs for this package are provided by typeshed and can be installed by running:

pip install types-cachetools

Project Resources

License

Copyright (c) 2014-2021 Thomas Kemmer.

Licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cachetools-4.2.4.tar.gz (25.5 kB view details)

Uploaded Source

Built Distribution

cachetools-4.2.4-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file cachetools-4.2.4.tar.gz.

File metadata

  • Download URL: cachetools-4.2.4.tar.gz
  • Upload date:
  • Size: 25.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.10

File hashes

Hashes for cachetools-4.2.4.tar.gz
Algorithm Hash digest
SHA256 89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693
MD5 c64f38a505b122a2ecf2b7d93c0ec4b7
BLAKE2b-256 d769c457a860456cbf80ecc2e44ed4c201b49ec7ad124d769b71f6d0a7935dca

See more details on using hashes here.

File details

Details for the file cachetools-4.2.4-py3-none-any.whl.

File metadata

  • Download URL: cachetools-4.2.4-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.10

File hashes

Hashes for cachetools-4.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1
MD5 708c5e1124e0b4ea2102730e0f32b34b
BLAKE2b-256 eac14740af52db75e6dbdd57fc7e9478439815bbac549c1c05881be27d19a17d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page