zope.cachedescriptors
Method and property caching decorators
Decision gist · record as of 2026-08-14
Yes, if you need dependency-aware property caching in a persistent object context or are already in the Zope ecosystem. The package is stable, has no known vulnerabilities, and installs with minimal friction. However, the aging maintenance status (no release in 336 days) and unclear license treatment warrant a review before adopting in new projects outside Zope—for simpler caching, functools.cached_property may suffice.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Low friction: pure Python wheel with only setuptools as a runtime dependency.
- Maintenance status is aging—last commit was 2025-09-12 and no release in 336 days—but the package is marked Production/Stable and has been in active use since 2007.
License · maintenance · safety
ZPL-2.1 (unclear) — Licensed under ZPL-2.1 (Zope Public License 2.1), which is OSI-approved but less common than MIT or Apache 2.0. License treatment is marked unclear, so review the full license text before adopting in proprietary or copyleft-sensitive projects.
last release 2025-09-12 (336 days) · last repo commit 2025-09-12 · 6 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 155,376 downloads/mo, #10,817 on PyPI
Alternatives
Verify before relying
from zope.cachedescriptors import property
import math
class Point:
def __init__(self, x, y):
self.x, self.y = x, y
@property.CachedProperty('x', 'y')
def radius(self):
return math.sqrt(self.x**2 + self.y**2)
point = Point(1.0, 2.0)
print(point.radius) # Computed once, cached thereafter
point.x = 2.0
print(point.radius) # Recomputed because x changed- Whether ZPL-2.1 is compatible with your project's licensing requirements (treatment marked unclear in metadata).
- Performance characteristics and memory overhead of cached descriptors in high-throughput scenarios.
- Compatibility with modern ORMs or persistence frameworks beyond the Zope ecosystem.
What it is and what it does
zope.cachedescriptors provides Python descriptors that cache computed values and automatically invalidate when their dependencies change. It includes CachedProperty (which recomputes when tracked attributes change), Lazy (which computes once and stays cached until manually deleted), and cached methods. Values are stored in _v_ volatile attributes, making them especially useful for persistent object frameworks where volatile storage is a standard pattern.
The package is a lightweight, dependency-minimal tool for avoiding redundant computation in classes where properties depend on instance state. It's designed for scenarios where you need fine-grained control over when a cached value is discarded—either automatically when dependencies shift, or manually when needed. It supports both decorator and functional syntax for backwards compatibility.
Use it for
- Cache expensive computed properties in ORM models that invalidate when their source attributes are modified.
- Implement lazy-loaded attributes that compute once on first access and persist for the object's lifetime.
- Build idempotent methods whose results are cached based on arguments and instance state in persistent frameworks.
- Manage volatile attribute computation in Zope or other persistence layers where _v_ attributes have special semantics.
- Reduce redundant calculations in geometric or scientific classes where derived values depend on a few tracked inputs.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need dependency-aware property caching in a persistent object context or are already in the Zope ecosystem.
The package is stable, has no known vulnerabilities, and installs with minimal friction. However, the aging maintenance status (no release in 336 days) and unclear license treatment warrant a review before adopting in new projects outside Zope—for simpler caching, functools.cached_property may suffice.
Install
zope-cachedescriptors on PyPI
Before you install
Low friction: pure Python wheel with only setuptools as a runtime dependency. Maintenance status is aging—last commit was 2025-09-12 and no release in 336 days—but the package is marked Production/Stable and has been in active use since 2007.
License in practice
Licensed under ZPL-2.1 (Zope Public License 2.1), which is OSI-approved but less common than MIT or Apache 2.0. License treatment is marked unclear, so review the full license text before adopting in proprietary or copyleft-sensitive projects.
Quickstart
from zope.cachedescriptors import property
import math
class Point:
def __init__(self, x, y):
self.x, self.y = x, y
@property.CachedProperty('x', 'y')
def radius(self):
return math.sqrt(self.x**2 + self.y**2)
point = Point(1.0, 2.0)
print(point.radius) # Computed once, cached thereafter
point.x = 2.0
print(point.radius) # Recomputed because x changed
Verify before relying
- Whether ZPL-2.1 is compatible with your project's licensing requirements (treatment marked unclear in metadata).
- Performance characteristics and memory overhead of cached descriptors in high-throughput scenarios.
- Compatibility with modern ORMs or persistence frameworks beyond the Zope ecosystem.
Package facts
| License | ZPL-2.1 unclear |
| Python support | Supports the current Python release >=3.9 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagesetuptools |
| Maintenance | Aging 336 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 155,376 / month, #10,817 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: Zope Public LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTopic :: Internet :: WWW/HTTPTopic :: Software Development |
Evidence: zope_cachedescriptors-6.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “method caching with dependencies”
- zope.cachedescriptorsProvides decorator-based caching for computed properties and methods…
- methodtoolsProvides LRU caching for methods, classmethods, and staticmethods…
- django-memoizeCaches function and method results in Django applications using…
Give your agent the search over MCP, or paste the wish link into any chat.
More Software Development packages
Provides backported and experimental type hints for Python 3.9+, allowing use of newer typing features on older Python versions and enabling early experimentation with type system PEPs before they enter the standard library.
NumPy provides an N-dimensional array object and a comprehensive suite of mathematical, linear algebra, Fourier transform, and random number functions for scientific computing in Python.
FastAPI is a Python web framework for building REST APIs using type hints, with automatic request validation, serialization, and interactive API documentation.
Provides a way to document function parameters, class attributes, return types, and variables inline using Python's `Annotated` type hint syntax instead of traditional docstrings.
Typer builds command-line applications from Python functions using type hints, automatically generating help text, argument parsing, and shell completion.
Install it if you are building CLIs in Python.
Distlib provides low-level packaging utilities for building, distributing, and managing Python software—including metadata handling, version specifiers, wheel support, script installation, and dependency resolution.
See also backports.cached-property · property-manager · lazy · async-property · cachier · django-memoize · cachey · memoization