freshcrate
Skin:/
Home > Frameworks > propcache

propcache

Accelerated property cache

Why this rank:Strong adoptionRecent releaseHealthy release cadence

Description

propcache ========= The module provides a fast implementation of cached properties for Python 3.9+. .. image:: https://github.com/aio-libs/propcache/actions/workflows/ci-cd.yml/badge.svg :target: https://github.com/aio-libs/propcache/actions?query=workflow%3ACI :align: right .. image:: https://codecov.io/gh/aio-libs/propcache/branch/master/graph/badge.svg :target: https://codecov.io/gh/aio-libs/propcache .. image:: https://badge.fury.io/py/propcache.svg :target: https://badge.fury.io/py/propcache .. image:: https://readthedocs.org/projects/propcache/badge/?version=latest :target: https://propcache.readthedocs.io .. image:: https://img.shields.io/pypi/pyversions/propcache.svg :target: https://pypi.python.org/pypi/propcache .. image:: https://img.shields.io/matrix/aio-libs:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat :target: https://matrix.to/#/%23aio-libs:matrix.org :alt: Matrix Room — #aio-libs:matrix.org .. image:: https://img.shields.io/matrix/aio-libs-space:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs-space%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat :target: https://matrix.to/#/%23aio-libs-space:matrix.org :alt: Matrix Space — #aio-libs-space:matrix.org Introduction ------------ The API is designed to be nearly identical to the built-in ``functools.cached_property`` class, except for the additional ``under_cached_property`` class which uses ``self._cache`` instead of ``self.__dict__`` to store the cached values and prevents ``__set__`` from being called. For full documentation please read https://propcache.readthedocs.io. Installation ------------ :: $ pip install propcache The library is Python 3 only! PyPI contains binary wheels for Linux, Windows and MacOS. If you want to install ``propcache`` on another operating system where wheels are not provided, the the tarball will be used to compile the library from the source code. It requires a C compiler and and Python headers installed. To skip the compilation you must explicitly opt-in by using a PEP 517 configuration setting ``pure-python``, or setting the ``PROPCACHE_NO_EXTENSIONS`` environment variable to a non-empty value, e.g.: .. code-block:: console $ pip install propcache --config-settings=pure-python=false Please note that the pure-Python (uncompiled) version is much slower. However, PyPy always uses a pure-Python implementation, and, as such, it is unaffected by this variable. API documentation ------------------ The documentation is located at https://propcache.readthedocs.io. Source code ----------- The project is hosted on GitHub_ Please file an issue on the `bug tracker <https://github.com/aio-libs/propcache/issues>`_ if you have found a bug or have some suggestion in order to improve the library. Discussion list --------------- *aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs Feel free to post your questions and ideas here. Authors and License ------------------- The ``propcache`` package is derived from ``yarl`` which is written by Andrew Svetlov. It's *Apache 2* licensed and freely available. .. _GitHub: https://github.com/aio-libs/propcache ========= Changelog ========= .. You should *NOT* be adding new change log entries to this file, this file is managed by towncrier. You *may* edit previous change logs to fix problems like typo corrections or such. To add a new change log entry, please see https://pip.pypa.io/en/latest/development/#adding-a-news-entry we named the news folder "changes". WARNING: Don't drop the next directive! .. towncrier release notes start 0.4.1 ===== *(2025-10-08)* Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by `@Vizonex <https://github.com/sponsors/Vizonex>`__. *Related issues and pull requests on GitHub:* `#162 <https://github.com/aio-libs/propcache/issues/162>`__. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* `#155 <https://github.com/aio-libs/propcache/issues/155>`__. ---- 0.4.0 ===== *(2025-10-04)* Features -------- - Optimized propcache by replacing sentinel ``object`` for checking if the ``object`` is ``NULL`` and changed ``dict`` API for Python C-API -- by `@Vizonex <https://github.com/sponsors/Vizonex>`__. *Related issues and pull requests on GitHub:* `#121 <https://github.com/aio-libs/propcache/issues/121>`__. Contributor-facing changes -------------------------- - Builds have been added for arm64 Windows wheels and the ``reusable-build-wheel.yml`` workflow has been modified to allow for an OS value (``windows-11-arm``) which does not include the ``-latest`` postfix

Release History

VersionChangesUrgencyDate
v0.5.20.5.0 and 0.5.1 were tagged earlier today but never reached PyPI: 0.5.0's deploy failed at cibuildwheel's post-build pytest on free-threaded armv7l musllinux (SIGBUS under QEMU emulation while importing the C extension), and 0.5.1's deploy hit a transient sigstore Rekor 502 during the attestation step. 0.5.2 is the first of the three to actually publish. Features -------- - Added support for newer type hints and remove ``Optional`` and ``Union`` from all annotations -- by :user:`Vizonex` High5/8/2026
0.4.1Imported from PyPI (0.4.1)Low4/21/2026
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.1Bug fixes --------- - Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #162. Contributor-facing changes -------------------------- - Fixes the default value for the ``os`` parameter in ``reusable-build-wheel.yml`` to be ``ubuntu-latest`` instead of ``ubuntu``. *Related issues and pull requests on GitHub:* #155. ----Low10/8/2025
v0.4.0This release was YANKED due to a reference leak. Features -------- - Optimized propcache by replacing sentinel :py:class:`object` for checking if the :py:class:`object` is ``NULL`` and changed :py:class:`dict` API for Python C-API -- by :user:`Vizonex`. *Related issues and pull requests on GitHub:* #121. Contributor-facing changes -------------------------- - Builds have been added for arm64 Windows wheels and the ``reusable-build-wheel.yml`` workflow has beenLow10/4/2025
v0.3.2Improved documentation ---------------------- - Fixed incorrect decorator usage in the :func:`~propcache.api.under_cached_property` example code -- by :user:`meanmail`. *Related issues and pull requests on GitHub:* #109. Packaging updates and notes for downstreams ------------------------------------------- - Updated to use Cython 3.1 universally across the build path -- by :user:`lysnikolaou`. *Related issues and pull requests on GitHub:* #117. - Made Cython line tracing opt-in vLow6/9/2025
v0.3.1Bug fixes --------- - Improved typing annotations, fixing some type errors under correct usage and improving typing robustness generally -- by :user:`Dreamsorcerer`. *Related issues and pull requests on GitHub:* #103. ----Low3/26/2025
v0.3.0Features -------- - Implemented support for the free-threaded build of CPython 3.13 -- by :user:`lysnikolaou`. *Related issues and pull requests on GitHub:* #84. Packaging updates and notes for downstreams ------------------------------------------- - Started building wheels for the free-threaded build of CPython 3.13 -- by :user:`lysnikolaou`. *Related issues and pull requests on GitHub:* #84. Contributor-facing changes -------------------------- - GitHub Actions CI/CD is now cLow2/20/2025
v0.2.1Bug fixes --------- - Stopped implicitly allowing the use of Cython pre-release versions when building the distribution package -- by :user:`ajsanchezsanz` and :user:`markgreene74`. *Related commits on GitHub:* :commit:`64df0a6`. - Fixed ``wrapped`` and ``func`` not being accessible in the Cython versions of :func:`propcache.api.cached_property` and :func:`propcache.api.under_cached_property` decorators -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* #72. ReLow12/1/2024
v0.2.0Bug fixes --------- - Fixed loading the C-extensions on Python 3.8 -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* #26. Features -------- - Improved typing for the :func:`propcache.api.under_cached_property` decorator -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* #38. Improved documentation ---------------------- - Added API documentation for the :func:`propcache.api.cached_property` and :func:`propcache.api.under_cached_property` decoraLow10/7/2024
v0.1.0Features -------- - Added ``armv7l`` wheels -- by :user:`bdraco`. *Related issues and pull requests on GitHub:* #5. ----Low10/3/2024
v0.0.0- Initial release.Low10/2/2024

Dependencies & License Audit

Loading dependencies...

Similar Packages

tqdmFast, Extensible Progress Meterv4.68.1
inspect-aiFramework for large language model evaluationsmain@2026-06-05
hypothesisThe property-based testing library for Pythonv6.155.2
bleachAn easy safelist-based HTML-sanitizing tool.main@2026-06-05
jupyter-clientJupyter protocol implementation and client librariesv8.9.0

More from Andrew Svetlov

async-timeoutTimeout context manager for asyncio programs

More in Frameworks

langchainThe agent engineering platform
deer-flowAn open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of ta
tqdmFast, Extensible Progress Meter
simBuild, deploy, and orchestrate AI agents. Sim is the central intelligence layer for your AI workforce.