12345678910111213141516171819202122232425262728293031 |
- """Utility functions for constants."""
- from collections.abc import Callable
- from typing import Any, Generic, TypeVar
- T = TypeVar("T")
- V = TypeVar("V")
- class classproperty(Generic[T, V]):
- """A class property decorator."""
- def __init__(self, getter: Callable[[type[T]], V]) -> None:
- """Initialize the class property.
- Args:
- getter: The getter function.
- """
- self.getter = getattr(getter, "__func__", getter)
- def __get__(self, instance: Any, owner: type[T]) -> V:
- """Get the value of the class property.
- Args:
- instance: The instance of the class.
- owner: The class itself.
- Returns:
- The value of the class property.
- """
- return self.getter(owner)
|