NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #55 most downloaded on PyPI
Accelerated property cache
Last release 19 days ago
16 Sep 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 11 of 11 stable releases
2 versions withdrawn
withdrawn after publishing
2 years old
13 releases · first in 2024
One column per month.
Packaging updates and notes for downstreams
Fixed the release wheels being compiled without optimization since
version 0.5.0. The build backend set CFLAGS to add
-ffile-prefix-map, which replaced the interpreter's own compiler
flags instead of extending them, so -O3 and -DNDEBUG were
dropped; the extra flags now go through CPPFLAGS, which is
appended. Cached property reads are about 1.5x faster than in 0.5.3
-- by :user:bdraco.
Removals and backward incompatible breaking changes
Fixed a possible crash in the C implementation of cached_property
and under_cached_property on free-threaded Python, where a cached
value could be freed by another thread while it was being read; errors
raised while looking up the cache are now propagated on all builds,
and the computed value is no longer leaked if storing it fails
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#297.
Dropped support for free-threaded Python 3.13 -- by :user:Vizonex.
Related issues and pull requests on GitHub:
#223.
Updated discussion links from the defunct Google Groups forum to
GitHub Discussions
-- by :user:gundalow.
Related issues and pull requests on GitHub:
#217.
The setuptools build dependency lower bound has been restored to be
>= 47 after an incorrect automated increase in :pr:207
-- by :user:bbhtt.
Related issues and pull requests on GitHub:
#207.
Dropped support for free-threaded Python 3.13 -- by :user:Vizonex.
Related issues and pull requests on GitHub:
#223.
Dropped the deprecated License :: OSI Approved :: Apache Software License classifier; setuptools 84 warns about it and the dist
build treats warnings as errors, so releases could no longer be built
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#299.
Dependabot has been restricted to the requirements subdirectory to
avoid unintended updates outside dependency requirement files
-- by :user:bbhtt.
Related issues and pull requests on GitHub:
#207.
Added an AGENTS.md file with contributor guidance for AI
coding agents, adapted from the yarl equivalent
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#231.
Migrated from standalone black and isort pre-commit hooks
to ruff format and the ruff I lint rule, sharing a new
[tool.ruff] config in pyproject.toml. ruff-check runs
with --fix so import-order fixes apply on commit, and the
orphan [isort] block in setup.cfg was removed
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#232.
Switched the cibuildwheel build frontend to build[uv] so
that uv provisions every build and test virtual environment
in the wheel matrix. Test-dependency installation in particular
drops from a multi-second pip install per ABI to a roughly
sub-second uv resolve
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#234.
Dropped the libffi-devel install from the cibuildwheel
Linux before-all step. It was added in :pr:75 so
cffi could build from source during wheel testing; the
current wheel-test chain no longer pulls in cffi, so the
header package is dead weight
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#236.
The type preciseness coverage report generated by MyPy <https://mypy-lang.org>__ is now uploaded to Coveralls <https://coveralls.io/github/aio-libs/propcache>__ and
will not be included in the Codecov views <https://app.codecov.io/gh/aio-libs/propcache>__ going forward
-- by :user:aiolibsbot.
Related issues and pull requests on GitHub:
#239.
Switched CI/CD to tox-dev/workflow's :file:reusable-tox.yml
driven by an in-tree :file:tox.ini. The build,
metadata-validation and lint (pre-commit,
spellcheck-docs) jobs all run through the reusable workflow;
mypy coverage uploads to Coveralls from a post-tox-job
hook
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#243.
Overrode CIBW_BUILD_FRONTEND=build for the QEMU-emulated
odd-arch wheel matrix, since the pypa odd-arch container images
do not ship uv preinstalled and the project's
:file:pyproject.toml sets build-frontend = "build[uv]"
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#246.
Allowed re-running the deploy job after a partial release failure: the
Make Release step now skips when the GitHub Release already exists,
and the PyPI publish step uses skip-existing so dists that were
already uploaded on a prior attempt do not break the retry
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#247.
Switched the aarch64 and armv7l wheel builds to GitHub's native ARM
runners. The aarch64 wheels now build without QEMU emulation, and
armv7l runs on aarch64 hosts so its 32-bit ARM execution is far
cheaper than the previous aarch64-on-x86_64 path
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#248.
Added UV_CONSTRAINT and UV_BUILD_CONSTRAINT alongside
PIP_CONSTRAINT and PIP_BUILD_CONSTRAINT in the
cibuildwheel environment so the :file:requirements/cython.txt
pin is honored under the build[uv] frontend; uv pip
ignores the PIP_ variables and reads only the UV_ ones,
while the PIP_ variants are kept for the pip fallback path
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#249.
Fixed coverage for testing benchmarks when codspeed is not installed
-- by :user:Vizonex.
Related issues and pull requests on GitHub:
#251.
Stopped running the test suite inside the wheel build jobs outside of
release builds, since the test matrix installs and tests the same
wheels, and added Python 3.15 and 3.15t to the test matrix so those
wheels stay covered. Off-tag macOS builds are now limited to the
architecture the test matrix runs on. Release builds still build every
architecture and test every wheel, and all release checks in the CI
workflow now use github.ref_type
-- by :user:bdraco.
Related issues and pull requests on GitHub:
#300.
Removals and backward incompatible breaking changes
0.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.
Added support for newer type hints and remove Optional and Union from all annotations
-- by :user:Vizonex
Related issues and pull requests on GitHub: #193.
Dropped support for Python 3.9 as it has reached end of life.
Related issues and pull requests on GitHub: #216.
Changed the Cython build dependency from ~= 3.1.0 to >= 3.2.0,
removing the upper version bound to avoid conflicts for downstream packagers
-- by :user:jameshilliard and :user:gundalow.
The upstream Cython version is pinned to 3.2.4 in the CI/CD environment.
Related issues and pull requests on GitHub: #184, #188, #214.
Start building and shipping riscv64 wheels
-- by :user:justeph.
Related issues and pull requests on GitHub: #194.
The :pep:517 build backend now supports a new build-inplace
config setting (and PROPCACHE_BUILD_INPLACE environment variable)
for controlling whether to build the project in-tree or in a
temporary directory. It only affects wheels and is set up to build
in a temporary directory by default. It does not affect editable
wheel builds; they will keep being built in-tree regardless.
Here's an example of using this setting:
.. code-block:: console
$ python -m build --config-setting=build-inplace=true
Additionally, when building wheels in an automatically created
temporary directory, the build backend now normalizes the
respective file system path to a deterministic source checkout
directory by injecting the -ffile-prefix-map compiler option
into the CFLAGS environment variable, as suggested by known
reproducible build practices <https://reproducible-builds.org/docs/build-path/>__.
The effect is that downstreams will get reproducible build results.
Related issues and pull requests on GitHub: #218.
Fixed reference leak caused by Py_INCREF because Cython has its own reference counter systems -- by :user: Vizonex .
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.
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.
This release was YANKED due to a reference leak.
This release was YANKED due to a reference leak.
Optimized propcache by replacing sentinel object for checking if the object is NULL and changed dict API for Python C-API -- by Vizonex.
Related issues and pull requests on GitHub: #121.
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 -- by finnagin.
Related issues and pull requests on GitHub: #133.
Added CI for CPython 3.14 -- by kumaraditya303.
Related issues and pull requests on GitHub: #140.
This release was YANKED due to a reference leak.
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.
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
-- by :user:finnagin.
Related issues and pull requests on GitHub:
#133.
Added CI for CPython 3.14 -- by :user:kumaraditya303.
Related issues and pull requests on GitHub:
#140.
Fixed incorrect decorator usage in the ~propcache.api.under_cached_property example code -- by meanmail.
Fixed incorrect decorator usage in the ~propcache.api.under_cached_property example code -- by meanmail.
Related issues and pull requests on GitHub: #109.
Updated to use Cython 3.1 universally across the build path -- by lysnikolaou.
Related issues and pull requests on GitHub: #117.
Made Cython line tracing opt-in via the with-cython-tracing build config setting -- by bdraco.
Previously, line tracing was enabled by default in pyproject.toml, which caused build issues for some users and made wheels nearly twice as slow.
Now line tracing is only enabled when explicitly requested via pip install . --config-setting=with-cython-tracing=true or by setting the PROPCACHE_CYTHON_TRACING environment variable.
Related issues and pull requests on GitHub: #118.
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.
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 via the with-cython-tracing build config setting -- by :user:bdraco.
Previously, line tracing was enabled by default in :file:pyproject.toml, which caused build issues for some users and made wheels nearly twice as slow.
Now line tracing is only enabled when explicitly requested via pip install . --config-setting=with-cython-tracing=true or by setting the PROPCACHE_CYTHON_TRACING environment variable.
Related issues and pull requests on GitHub:
#118.
Improved typing annotations, fixing some type errors under correct usage and improving typing robustness generally -- by Dreamsorcerer.
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.
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.
(2025-03-25)
Improved typing annotations, fixing some type errors under correct usage and improving typing robustness generally -- by Dreamsorcerer.
Related issues and pull requests on GitHub: 103.
Implemented support for the free-threaded build of CPython 3.13 -- by lysnikolaou.
Implemented support for the free-threaded build of CPython 3.13 -- by :user:lysnikolaou.
Related issues and pull requests on GitHub: #84.
Started building wheels for the free-threaded build of CPython 3.13 -- by :user:lysnikolaou.
Related issues and pull requests on GitHub: #84.
GitHub Actions CI/CD is now configured to manage caching pip-ecosystem
dependencies using re-actors/cache-python-deps_ -- an action by
:user:webknjaz that takes into account ABI stability and the exact
version of Python runtime.
.. _re-actors/cache-python-deps:
https://github.com/marketplace/actions/cache-python-deps
Related issues and pull requests on GitHub: #93.
Removals and backward incompatible breaking changes
Stopped implicitly allowing the use of Cython pre-release versions when building the distribution package -- by ajsanchezsanz and markgreene74.
Related commits on GitHub: 64df0a6.
Fixed wrapped and func not being accessible in the Cython versions of propcache.api.cached_property and propcache.api.under_cached_property decorators -- by bdraco.
Related issues and pull requests on GitHub: #72.
Removed support for Python 3.8 as it has reached end of life -- by bdraco.
Related issues and pull requests on GitHub: #57.
Stopped implicitly allowing the use of Cython pre-release versions when building the distribution package -- by ajsanchezsanz and markgreene74.
Related commits on GitHub: 64df0a6.
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.
Removed support for Python 3.8 as it has reached end of life -- by :user:bdraco.
Related issues and pull requests on GitHub:
#57.
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 loading the C-extensions on Python 3.8 -- by bdraco.
Fixed loading the C-extensions on Python 3.8 -- by bdraco.
Related issues and pull requests on GitHub: #26.
Improved typing for the propcache.api.under_cached_property decorator -- by bdraco.
Related issues and pull requests on GitHub: #38.
Added API documentation for the propcache.api.cached_property and propcache.api.under_cached_property decorators -- by bdraco.
Related issues and pull requests on GitHub: #16.
Moved propcache.api.under_cached_property and propcache.api.cached_property to propcache.api -- by bdraco.
Both decorators remain importable from the top-level package, however importing from propcache.api is now the recommended way to use them.
Related issues and pull requests on GitHub: #19, #24, #32.
Converted project to use a src layout -- by bdraco.
Related issues and pull requests on GitHub: #22, #29, #37.
Fixed loading the C-extensions on Python 3.8 -- by :user:bdraco.
Related issues and pull requests on GitHub:
#26.
Improved typing for the :func:propcache.api.under_cached_property decorator -- by :user:bdraco.
Related issues and pull requests on GitHub:
#38.
Added API documentation for the :func:propcache.api.cached_property and :func:propcache.api.under_cached_property decorators -- by :user:bdraco.
Related issues and pull requests on GitHub:
#16.
Moved :func:propcache.api.under_cached_property and :func:propcache.api.cached_property to propcache.api -- by :user:bdraco.
Both decorators remain importable from the top-level package, however importing from propcache.api is now the recommended way to use them.
Converted project to use a src layout -- by :user:bdraco.
Added armv7l wheels -- by bdraco.
Added armv7l wheels -- by :user:bdraco.
Related issues and pull requests on GitHub: #5.
(2024-10-03)
Added armv7l wheels -- by bdraco.
Related issues and pull requests on GitHub: 5.
*(2024-10-02)* - Initial release.
(2024-10-02)
Initial release.
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →