typed_classproperties
Typed decorators for
classpropertyandcached_classproperty.Python 3 compatible only. No dependenciesfootnote:[The library
[typing_extensions](https://github.com/python/typing_extensions)is required when running with a Python version less than3.12].
Installation
This package is hosted on PyPI and can be installed using uv or pip.
Add to your uv project/script’s dependencies
uv add typed_classproperties
Install using pip after creating a virtual environment
path/to/venv/python -m pip install typed_classproperties
Example Usage
from typing import override
from typed_classproperties import classproperty, cached_classproperty
class Foo:
@override
def __init__(self, bar: str) -> None:
self.bar: str = bar
@classproperty
def BAR(cls) -> int:
return 1
assert Foo.BAR == 1
assert Foo(bar="one").BAR == 1
class CachedFoo:
@override
def __init__(self, bar: str) -> None:
self.bar: str = bar
@cached_classproperty
def BAR(cls) -> int:
print("This will be executed only once")
return 1
assert CachedFoo.BAR == 1
assert CachedFoo(bar="bar").FOO == 1
Supported Type-Checkers
This package makes use of some reasonably advanced Python functionality, not supported by all static type checkers. While we will attempt to fix type bugs in this project for alternative type-checkers, our focus is on the following officially supported type checkersfootnote:[The list of officially supported type checkers is subject to change between any minor version release]:
- mypy
- tyfootnote:[Support for ty is provided for preview only until ty provides its first non-beta full release. Our support for ty may be revoked at any time, while it is still in preview.]
❗ IMPORTANT
Patches to fix bugs in this project for alternative type-checkers are welcome and much appreciated!
Tests
See tests.py for further usage examples and expected behaviour.
To run tests
uv run --group test -- pytest
Credits
Credits to Denis Ryzhkov, on Stack Overflow, for the original implementation of the @classproperty decorator:
https://stackoverflow.com/a/13624858/1280629
Release files for typed_classproperties 1.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| typed_classproperties-1.5.1.tar.gz | 11.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| typed_classproperties-1.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.8 kB
Release files / typed_classproperties-1.5.1.tar.gz
| Download URL | typed_classproperties-1.5.1.tar.gz |
|---|---|
| Size | 11.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
19e55985f13e13c700aad9260ee8812d4ccb4f5e45e35a080fc1fc15bf1f3ea1
|
|
BLAKE2b-256 checksum How to use checksums |
fffe1bb60f7f671477ec1eb92dc3c5ba3fc7470594463f84309bde0eccb64cbb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / typed_classproperties-1.5.1-py3-none-any.whl
| Download URL | typed_classproperties-1.5.1-py3-none-any.whl |
|---|---|
| Size | 5.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
74658bc4abcdee3b2261e51ec2c134520a052d6260f240a3b10b9a7f8602c55d
|
|
BLAKE2b-256 checksum How to use checksums |
269815222b62a0465ef5eecb3c4eec18d9ccd8ab4af7517145a19ced5a84f57c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|