Skip to main content

Accelerated property cache

Project description

propcache

The module provides a fast implementation of cached properties for Python 3.8+.

https://github.com/aio-libs/propcache/actions/workflows/ci-cd.yml/badge.svg https://codecov.io/gh/aio-libs/propcache/branch/master/graph/badge.svg https://badge.fury.io/py/propcache.svg https://readthedocs.org/projects/propcache/badge/?version=latest https://img.shields.io/pypi/pyversions/propcache.svg Matrix Room — #aio-libs:matrix.org 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.:

$ 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 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.

Changelog

0.2.0

(2024-10-07)

Bug fixes

  • Fixed loading the C-extensions on Python 3.8 – by @bdraco.

    Related issues and pull requests on GitHub: #26.

Features

  • Improved typing for the propcache.api.under_cached_property decorator – by @bdraco.

    Related issues and pull requests on GitHub: #38.

Improved documentation

  • 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.

Packaging updates and notes for downstreams

  • 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.


0.1.0

(2024-10-03)

Features

  • Added armv7l wheels – by @bdraco.

    Related issues and pull requests on GitHub: #5.


0.0.0

(2024-10-02)

  • Initial release.

Download files

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

Source Distribution

propcache-0.2.0.tar.gz (41.0 kB view hashes)

Uploaded Source

Built Distributions

propcache-0.2.0-py3-none-any.whl (11.6 kB view hashes)

Uploaded Python 3

propcache-0.2.0-cp313-cp313-win_amd64.whl (43.7 kB view hashes)

Uploaded CPython 3.13 Windows x86-64

propcache-0.2.0-cp313-cp313-win32.whl (39.7 kB view hashes)

Uploaded CPython 3.13 Windows x86

propcache-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl (221.1 kB view hashes)

Uploaded CPython 3.13 musllinux: musl 1.2+ x86-64

propcache-0.2.0-cp313-cp313-musllinux_1_2_s390x.whl (228.3 kB view hashes)

Uploaded CPython 3.13 musllinux: musl 1.2+ s390x

propcache-0.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl (222.3 kB view hashes)

Uploaded CPython 3.13 musllinux: musl 1.2+ ppc64le

propcache-0.2.0-cp313-cp313-musllinux_1_2_i686.whl (212.9 kB view hashes)

Uploaded CPython 3.13 musllinux: musl 1.2+ i686

propcache-0.2.0-cp313-cp313-musllinux_1_2_armv7l.whl (212.5 kB view hashes)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARMv7l

propcache-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl (217.0 kB view hashes)

Uploaded CPython 3.13 musllinux: musl 1.2+ ARM64

propcache-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (231.9 kB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

propcache-0.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (237.3 kB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ s390x

propcache-0.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (234.0 kB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ppc64le

propcache-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (229.6 kB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

propcache-0.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (217.8 kB view hashes)

Uploaded CPython 3.13 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

propcache-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (44.4 kB view hashes)

Uploaded CPython 3.13 macOS 11.0+ ARM64

propcache-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl (45.1 kB view hashes)

Uploaded CPython 3.13 macOS 10.13+ x86-64

propcache-0.2.0-cp313-cp313-macosx_10_13_universal2.whl (78.1 kB view hashes)

Uploaded CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64)

propcache-0.2.0-cp312-cp312-win_amd64.whl (44.4 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

propcache-0.2.0-cp312-cp312-win32.whl (40.2 kB view hashes)

Uploaded CPython 3.12 Windows x86

propcache-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl (235.9 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

propcache-0.2.0-cp312-cp312-musllinux_1_2_s390x.whl (244.8 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ s390x

propcache-0.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl (238.4 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ppc64le

propcache-0.2.0-cp312-cp312-musllinux_1_2_i686.whl (227.6 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

propcache-0.2.0-cp312-cp312-musllinux_1_2_armv7l.whl (225.9 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARMv7l

propcache-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl (229.9 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

propcache-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (248.2 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

propcache-0.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (253.4 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

propcache-0.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (251.8 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

propcache-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (246.2 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

propcache-0.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (233.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

propcache-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (45.7 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

propcache-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl (46.4 kB view hashes)

Uploaded CPython 3.12 macOS 10.13+ x86-64

propcache-0.2.0-cp312-cp312-macosx_10_13_universal2.whl (80.8 kB view hashes)

Uploaded CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64)

propcache-0.2.0-cp311-cp311-win_amd64.whl (44.9 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

propcache-0.2.0-cp311-cp311-win32.whl (40.5 kB view hashes)

Uploaded CPython 3.11 Windows x86

propcache-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl (227.7 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

propcache-0.2.0-cp311-cp311-musllinux_1_2_s390x.whl (237.7 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ s390x

propcache-0.2.0-cp311-cp311-musllinux_1_2_ppc64le.whl (233.0 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ppc64le

propcache-0.2.0-cp311-cp311-musllinux_1_2_i686.whl (220.1 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

propcache-0.2.0-cp311-cp311-musllinux_1_2_armv7l.whl (217.3 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARMv7l

propcache-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl (224.9 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

propcache-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (236.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

propcache-0.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (243.6 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

propcache-0.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (244.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

propcache-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (236.2 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

propcache-0.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (224.8 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

propcache-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (45.6 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

propcache-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl (46.4 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

propcache-0.2.0-cp311-cp311-macosx_10_9_universal2.whl (80.8 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

propcache-0.2.0-cp310-cp310-win_amd64.whl (45.0 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

propcache-0.2.0-cp310-cp310-win32.whl (40.5 kB view hashes)

Uploaded CPython 3.10 Windows x86

propcache-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl (207.6 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

propcache-0.2.0-cp310-cp310-musllinux_1_2_s390x.whl (215.6 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ s390x

propcache-0.2.0-cp310-cp310-musllinux_1_2_ppc64le.whl (211.0 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ppc64le

propcache-0.2.0-cp310-cp310-musllinux_1_2_i686.whl (201.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

propcache-0.2.0-cp310-cp310-musllinux_1_2_armv7l.whl (199.8 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARMv7l

propcache-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl (202.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

propcache-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (208.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

propcache-0.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (221.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

propcache-0.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (222.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

propcache-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (208.7 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

propcache-0.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (200.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

propcache-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (45.6 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

propcache-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl (46.3 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

propcache-0.2.0-cp310-cp310-macosx_10_9_universal2.whl (80.7 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

propcache-0.2.0-cp39-cp39-win_amd64.whl (45.6 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

propcache-0.2.0-cp39-cp39-win32.whl (41.0 kB view hashes)

Uploaded CPython 3.9 Windows x86

propcache-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl (211.6 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

propcache-0.2.0-cp39-cp39-musllinux_1_2_s390x.whl (220.1 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ s390x

propcache-0.2.0-cp39-cp39-musllinux_1_2_ppc64le.whl (215.5 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ppc64le

propcache-0.2.0-cp39-cp39-musllinux_1_2_i686.whl (204.7 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

propcache-0.2.0-cp39-cp39-musllinux_1_2_armv7l.whl (203.3 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARMv7l

propcache-0.2.0-cp39-cp39-musllinux_1_2_aarch64.whl (208.8 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

propcache-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (211.8 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

propcache-0.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (225.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

propcache-0.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (226.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

propcache-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (211.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

propcache-0.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (203.1 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

propcache-0.2.0-cp39-cp39-macosx_11_0_arm64.whl (46.1 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

propcache-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl (47.0 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

propcache-0.2.0-cp39-cp39-macosx_10_9_universal2.whl (81.9 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

propcache-0.2.0-cp38-cp38-win_amd64.whl (45.7 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

propcache-0.2.0-cp38-cp38-win32.whl (41.0 kB view hashes)

Uploaded CPython 3.8 Windows x86

propcache-0.2.0-cp38-cp38-musllinux_1_2_x86_64.whl (207.8 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

propcache-0.2.0-cp38-cp38-musllinux_1_2_s390x.whl (229.3 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ s390x

propcache-0.2.0-cp38-cp38-musllinux_1_2_ppc64le.whl (225.6 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ppc64le

propcache-0.2.0-cp38-cp38-musllinux_1_2_i686.whl (201.6 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

propcache-0.2.0-cp38-cp38-musllinux_1_2_armv7l.whl (200.5 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARMv7l

propcache-0.2.0-cp38-cp38-musllinux_1_2_aarch64.whl (202.4 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

propcache-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (213.6 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

propcache-0.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (222.6 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

propcache-0.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (224.6 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

propcache-0.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (212.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

propcache-0.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (205.4 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

propcache-0.2.0-cp38-cp38-macosx_11_0_arm64.whl (46.3 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

propcache-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl (47.2 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

propcache-0.2.0-cp38-cp38-macosx_10_9_universal2.whl (82.3 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

Supported by

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