cachetools


Namecachetools JSON
Version 5.4.0 PyPI version JSON
download
home_pagehttps://github.com/tkem/cachetools/
SummaryExtensible memoizing collections and decorators
upload_time2024-07-15 18:46:25
maintainerNone
docs_urlNone
authorThomas Kemmer
requires_python>=3.7
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            cachetools
========================================================================

.. image:: https://img.shields.io/pypi/v/cachetools
   :target: https://pypi.org/project/cachetools/
   :alt: Latest PyPI version

.. image:: https://img.shields.io/github/actions/workflow/status/tkem/cachetools/ci.yml
   :target: https://github.com/tkem/cachetools/actions/workflows/ci.yml
   :alt: CI build status

.. image:: https://img.shields.io/readthedocs/cachetools
   :target: https://cachetools.readthedocs.io/
   :alt: Documentation build status

.. image:: https://img.shields.io/codecov/c/github/tkem/cachetools/master.svg
   :target: https://codecov.io/gh/tkem/cachetools
   :alt: Test coverage

.. image:: https://img.shields.io/librariesio/sourcerank/pypi/cachetools
   :target: https://libraries.io/pypi/cachetools
   :alt: Libraries.io SourceRank

.. image:: https://img.shields.io/github/license/tkem/cachetools
   :target: https://raw.github.com/tkem/cachetools/master/LICENSE
   :alt: License

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://github.com/psf/black
   :alt: Code style: black


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

.. code-block:: python

   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

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

  pip install types-cachetools


Project Resources
------------------------------------------------------------------------

- `Documentation`_
- `Issue tracker`_
- `Source code`_
- `Change log`_


Related Projects
------------------------------------------------------------------------

- asyncache_: Helpers to use cachetools with async functions
- cacheing_: Pure Python Cacheing Library
- CacheToolsUtils_: Cachetools Utilities
- kids.cache_: Kids caching library
- shelved-cache_: Persistent cache for Python cachetools


License
------------------------------------------------------------------------

Copyright (c) 2014-2024 Thomas Kemmer.

Licensed under the `MIT License`_.


.. _@lru_cache: https://docs.python.org/3/library/functools.html#functools.lru_cache
.. _mutable: https://docs.python.org/dev/glossary.html#term-mutable
.. _mapping: https://docs.python.org/dev/glossary.html#term-mapping
.. _cache algorithm: https://en.wikipedia.org/wiki/Cache_algorithms

.. _PyPI: https://pypi.org/project/cachetools/
.. _typeshed: https://github.com/python/typeshed/
.. _Documentation: https://cachetools.readthedocs.io/
.. _Issue tracker: https://github.com/tkem/cachetools/issues/
.. _Source code: https://github.com/tkem/cachetools/
.. _Change log: https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst
.. _MIT License: https://raw.github.com/tkem/cachetools/master/LICENSE

.. _asyncache: https://pypi.org/project/asyncache/
.. _cacheing: https://github.com/breid48/cacheing
.. _CacheToolsUtils: https://pypi.org/project/CacheToolsUtils/
.. _kids.cache: https://pypi.org/project/kids.cache/
.. _shelved-cache: https://pypi.org/project/shelved-cache/

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/tkem/cachetools/",
    "name": "cachetools",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": null,
    "author": "Thomas Kemmer",
    "author_email": "tkemmer@computer.org",
    "download_url": "https://files.pythonhosted.org/packages/a7/3f/ea907ec6d15f68ea7f381546ba58adcb298417a59f01a2962cb5e486489f/cachetools-5.4.0.tar.gz",
    "platform": null,
    "description": "cachetools\n========================================================================\n\n.. image:: https://img.shields.io/pypi/v/cachetools\n   :target: https://pypi.org/project/cachetools/\n   :alt: Latest PyPI version\n\n.. image:: https://img.shields.io/github/actions/workflow/status/tkem/cachetools/ci.yml\n   :target: https://github.com/tkem/cachetools/actions/workflows/ci.yml\n   :alt: CI build status\n\n.. image:: https://img.shields.io/readthedocs/cachetools\n   :target: https://cachetools.readthedocs.io/\n   :alt: Documentation build status\n\n.. image:: https://img.shields.io/codecov/c/github/tkem/cachetools/master.svg\n   :target: https://codecov.io/gh/tkem/cachetools\n   :alt: Test coverage\n\n.. image:: https://img.shields.io/librariesio/sourcerank/pypi/cachetools\n   :target: https://libraries.io/pypi/cachetools\n   :alt: Libraries.io SourceRank\n\n.. image:: https://img.shields.io/github/license/tkem/cachetools\n   :target: https://raw.github.com/tkem/cachetools/master/LICENSE\n   :alt: License\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n   :target: https://github.com/psf/black\n   :alt: Code style: black\n\n\nThis module provides various memoizing collections and decorators,\nincluding variants of the Python Standard Library's `@lru_cache`_\nfunction decorator.\n\n.. code-block:: python\n\n   from cachetools import cached, LRUCache, TTLCache\n\n   # speed up calculating Fibonacci numbers with dynamic programming\n   @cached(cache={})\n   def fib(n):\n       return n if n < 2 else fib(n - 1) + fib(n - 2)\n\n   # cache least recently used Python Enhancement Proposals\n   @cached(cache=LRUCache(maxsize=32))\n   def get_pep(num):\n       url = 'http://www.python.org/dev/peps/pep-%04d/' % num\n       with urllib.request.urlopen(url) as s:\n           return s.read()\n\n   # cache weather data for no longer than ten minutes\n   @cached(cache=TTLCache(maxsize=1024, ttl=600))\n   def get_weather(place):\n       return owm.weather_at_place(place).get_weather()\n\nFor the purpose of this module, a *cache* is a mutable_ mapping_ of a\nfixed maximum size.  When the cache is full, i.e. by adding another\nitem the cache would exceed its maximum size, the cache must choose\nwhich item(s) to discard based on a suitable `cache algorithm`_.\n\nThis module provides multiple cache classes based on different cache\nalgorithms, as well as decorators for easily memoizing function and\nmethod calls.\n\n\nInstallation\n------------------------------------------------------------------------\n\ncachetools is available from PyPI_ and can be installed by running::\n\n  pip install cachetools\n\nTyping stubs for this package are provided by typeshed_ and can be\ninstalled by running::\n\n  pip install types-cachetools\n\n\nProject Resources\n------------------------------------------------------------------------\n\n- `Documentation`_\n- `Issue tracker`_\n- `Source code`_\n- `Change log`_\n\n\nRelated Projects\n------------------------------------------------------------------------\n\n- asyncache_: Helpers to use cachetools with async functions\n- cacheing_: Pure Python Cacheing Library\n- CacheToolsUtils_: Cachetools Utilities\n- kids.cache_: Kids caching library\n- shelved-cache_: Persistent cache for Python cachetools\n\n\nLicense\n------------------------------------------------------------------------\n\nCopyright (c) 2014-2024 Thomas Kemmer.\n\nLicensed under the `MIT License`_.\n\n\n.. _@lru_cache: https://docs.python.org/3/library/functools.html#functools.lru_cache\n.. _mutable: https://docs.python.org/dev/glossary.html#term-mutable\n.. _mapping: https://docs.python.org/dev/glossary.html#term-mapping\n.. _cache algorithm: https://en.wikipedia.org/wiki/Cache_algorithms\n\n.. _PyPI: https://pypi.org/project/cachetools/\n.. _typeshed: https://github.com/python/typeshed/\n.. _Documentation: https://cachetools.readthedocs.io/\n.. _Issue tracker: https://github.com/tkem/cachetools/issues/\n.. _Source code: https://github.com/tkem/cachetools/\n.. _Change log: https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\n.. _MIT License: https://raw.github.com/tkem/cachetools/master/LICENSE\n\n.. _asyncache: https://pypi.org/project/asyncache/\n.. _cacheing: https://github.com/breid48/cacheing\n.. _CacheToolsUtils: https://pypi.org/project/CacheToolsUtils/\n.. _kids.cache: https://pypi.org/project/kids.cache/\n.. _shelved-cache: https://pypi.org/project/shelved-cache/\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Extensible memoizing collections and decorators",
    "version": "5.4.0",
    "project_urls": {
        "Homepage": "https://github.com/tkem/cachetools/"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "04e6a1551acbaa06f3e48b311329828a34bc9c51a8cfaecdeb4d03c329a1ef85",
                "md5": "3a18974717141403cb45e7c9b34eeb28",
                "sha256": "3ae3b49a3d5e28a77a0be2b37dbcb89005058959cb2323858c2657c4a8cab474"
            },
            "downloads": -1,
            "filename": "cachetools-5.4.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3a18974717141403cb45e7c9b34eeb28",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 9455,
            "upload_time": "2024-07-15T18:46:23",
            "upload_time_iso_8601": "2024-07-15T18:46:23.563201Z",
            "url": "https://files.pythonhosted.org/packages/04/e6/a1551acbaa06f3e48b311329828a34bc9c51a8cfaecdeb4d03c329a1ef85/cachetools-5.4.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a73fea907ec6d15f68ea7f381546ba58adcb298417a59f01a2962cb5e486489f",
                "md5": "1e4f423bd9620958d320764deff7076a",
                "sha256": "b8adc2e7c07f105ced7bc56dbb6dfbe7c4a00acce20e2227b3f355be89bc6827"
            },
            "downloads": -1,
            "filename": "cachetools-5.4.0.tar.gz",
            "has_sig": false,
            "md5_digest": "1e4f423bd9620958d320764deff7076a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 26975,
            "upload_time": "2024-07-15T18:46:25",
            "upload_time_iso_8601": "2024-07-15T18:46:25.973174Z",
            "url": "https://files.pythonhosted.org/packages/a7/3f/ea907ec6d15f68ea7f381546ba58adcb298417a59f01a2962cb5e486489f/cachetools-5.4.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-07-15 18:46:25",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tkem",
    "github_project": "cachetools",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "cachetools"
}
        
Elapsed time: 0.28390s