Source code
Revision control
Copy as Markdown
Other Tools
Metadata-Version: 2.4
Name: propcache
Version: 0.3.2
Summary: Accelerated property cache
Author: Andrew Svetlov
Author-email: andrew.svetlov@gmail.com
Maintainer: aiohttp team <team@aiohttp.org>
Maintainer-email: team@aiohttp.org
License: Apache-2.0
Project-URL: CI: GitHub Workflows, https://github.com/aio-libs/propcache/actions?query=branch:master
Keywords: cython,cext,propcache
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
License-File: NOTICE
Dynamic: license-file
propcache
=========
The module provides a fast implementation of cached properties for Python 3.9+.
:align: right
:alt: Matrix Room — #aio-libs: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.
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
------------------
Source code
-----------
The project is hosted on GitHub_
Please file an issue on the `bug tracker
or have some suggestion in order to improve the library.
Discussion list
---------------
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.
=========
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
we named the news folder "changes".
WARNING: Don't drop the next directive!
.. towncrier release notes start
0.3.2
=====
*(2025-06-09)*
Improved documentation
----------------------
- Fixed incorrect decorator usage in the ``~propcache.api.under_cached_property`` example code -- by `@meanmail <https://github.com/sponsors/meanmail>`__.
*Related issues and pull requests on GitHub:*
Packaging updates and notes for downstreams
-------------------------------------------
- Updated to use Cython 3.1 universally across the build path -- by `@lysnikolaou <https://github.com/sponsors/lysnikolaou>`__.
*Related issues and pull requests on GitHub:*
- Made Cython line tracing opt-in via the ``with-cython-tracing`` build config setting -- by `@bdraco <https://github.com/sponsors/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:*
----
0.3.1
=====
*(2025-03-25)*
Bug fixes
---------
- Improved typing annotations, fixing some type errors under correct usage
and improving typing robustness generally -- by `@Dreamsorcerer <https://github.com/sponsors/Dreamsorcerer>`__.
*Related issues and pull requests on GitHub:*
----
0.3.0
=====
*(2025-02-20)*
Features
--------
- Implemented support for the free-threaded build of CPython 3.13 -- by `@lysnikolaou <https://github.com/sponsors/lysnikolaou>`__.
*Related issues and pull requests on GitHub:*
Packaging updates and notes for downstreams
-------------------------------------------
- Started building wheels for the free-threaded build of CPython 3.13 -- by `@lysnikolaou <https://github.com/sponsors/lysnikolaou>`__.
*Related issues and pull requests on GitHub:*
Contributor-facing changes
--------------------------
- GitHub Actions CI/CD is now configured to manage caching pip-ecosystem
dependencies using `re-actors/cache-python-deps`_ -- an action by
`@webknjaz <https://github.com/sponsors/webknjaz>`__ that takes into account ABI stability and the exact
version of Python runtime.
.. _`re-actors/cache-python-deps`:
*Related issues and pull requests on GitHub:*
----
0.2.1
=====
*(2024-12-01)*
Bug fixes
---------
- Stopped implicitly allowing the use of Cython pre-release versions when
building the distribution package -- by `@ajsanchezsanz <https://github.com/sponsors/ajsanchezsanz>`__ and
*Related commits on GitHub:*
- 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 <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
Removals and backward incompatible breaking changes
---------------------------------------------------
- Removed support for Python 3.8 as it has reached end of life -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
Packaging updates and notes for downstreams
-------------------------------------------
- Stopped implicitly allowing the use of Cython pre-release versions when
building the distribution package -- by `@ajsanchezsanz <https://github.com/sponsors/ajsanchezsanz>`__ and
*Related commits on GitHub:*
----
0.2.0
=====
*(2024-10-07)*
Bug fixes
---------
- Fixed loading the C-extensions on Python 3.8 -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
Features
--------
- Improved typing for the ``propcache.api.under_cached_property`` decorator -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
Improved documentation
----------------------
- Added API documentation for the ``propcache.api.cached_property`` and ``propcache.api.under_cached_property`` decorators -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
Packaging updates and notes for downstreams
-------------------------------------------
- Moved ``propcache.api.under_cached_property`` and ``propcache.api.cached_property`` to `propcache.api` -- by `@bdraco <https://github.com/sponsors/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 <https://github.com/aio-libs/propcache/issues/19>`__, `#24 <https://github.com/aio-libs/propcache/issues/24>`__, `#32 <https://github.com/aio-libs/propcache/issues/32>`__.
*Related issues and pull requests on GitHub:*
`#22 <https://github.com/aio-libs/propcache/issues/22>`__, `#29 <https://github.com/aio-libs/propcache/issues/29>`__, `#37 <https://github.com/aio-libs/propcache/issues/37>`__.
----
0.1.0
=====
*(2024-10-03)*
Features
--------
*Related issues and pull requests on GitHub:*
----
0.0.0
=====
*(2024-10-02)*
- Initial release.