Skip to main content

Typed decorators for classproperty and cached_classproperty.

Project description

typed_classproperties

Typed decorators for classproperty and cached_classproperty.

Python 3 compatible only. No dependencies.

Installation

This package is hosted on PYPI and can be installed using uv or pip. E.g.

uv add typed_classproperties
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

Tests

See tests.py for usage examples and expected behaviour.

To run tests:

uv run --group test pytest

Credits

Credits to Denis Ryzhkov on Stackoverflow for the implementation of classproperty: https://stackoverflow.com/a/13624858/1280629

Project details


Download files

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

Source Distribution

typed_classproperties-1.0.2.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

typed_classproperties-1.0.2-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file typed_classproperties-1.0.2.tar.gz.

File metadata

File hashes

Hashes for typed_classproperties-1.0.2.tar.gz
Algorithm Hash digest
SHA256 f82c7f80c2a5b7241c5cefd0186ff7d365ebfa0b4da6ab579320724734ae241c
MD5 ed1d136c33087a55efaeeaa7f9ebe812
BLAKE2b-256 e0f275118406fb1df162bce6b529987f284f2b42b5acbf7fc53ffefdbaac4586

See more details on using hashes here.

File details

Details for the file typed_classproperties-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for typed_classproperties-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 66e486e78df9be31cb6c2e077378a4d10469df051dac3b981330699d4637ee17
MD5 2ab784fb205665e445a5ead0bc83f0a5
BLAKE2b-256 f1b92caeefc24608c3f7bd7dd856a6776a1d83a571f74c14db21a7a3e24e4b87

See more details on using hashes here.

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