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-0.2.4.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for typed_classproperties-0.2.4.tar.gz
Algorithm Hash digest
SHA256 b0c32689bda803ee648774a9e1292fbac51e74cbd9dbca188dea02d85e76051f
MD5 70f261f573922241fa06e112a5bdd38a
BLAKE2b-256 e82941a5c177d3632a6525f60d10babcae59ad100ed4ade46ca5ac829c155529

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for typed_classproperties-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 8a53515cb2630ab0ae9001fa6c998fd2458595c5bcf38442c6b9a191b172e48c
MD5 a2d5ec60b73e186ba9e47ab26e8331e6
BLAKE2b-256 a9b39d625fda19dccf728335c5ab2aeb23fb1d67206a1aa4a47e9aec8f9a0ba1

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