from enum import Enum, auto from typing import Self, TypeGuard, TypeVar from ._cru import CRU _T = TypeVar("_T") class CruConstantBase(Enum): @classmethod def check(cls, v: _T | Self) -> TypeGuard[Self]: return isinstance(v, cls) @classmethod def check_not(cls, v: _T | Self) -> TypeGuard[_T]: return not cls.check(v) @classmethod def value(cls) -> Self: return cls.VALUE # type: ignore class CruNotFound(CruConstantBase): VALUE = auto() class CruUseDefault(CruConstantBase): VALUE = auto() class CruDontChange(CruConstantBase): VALUE = auto() class CruNoValue(CruConstantBase): VALUE = auto() class CruPlaceholder(CruConstantBase): VALUE = auto() CRU.add_objects( CruNotFound, CruUseDefault, CruDontChange, CruNoValue, CruPlaceholder, )