Source code for runtimepy.enum.types

"""
A module implementing a type system for runtime enumerations.
"""

# built-in
from enum import Enum as _Enum
from typing import Union as _Union

EnumTypelike = _Union[str, "EnumType"]


[docs] class EnumType(_Enum): """An enumeration containing the types of runtime enumerations.""" BOOL = "bool" INT = "int" def __str__(self) -> str: """Get this enum type as a string.""" return self.value
[docs] def valid(self, val: _Union[int, bool]) -> bool: """Determine if a value is valid based on this enumeration.""" return isinstance(val, bool if self is EnumType.BOOL else int)
[docs] def validate(self, val: _Union[int, bool]) -> None: """Validate a primitive value.""" if not self.valid(val): raise ValueError(f"Value '{val}' is not {self.value}!")
[docs] @staticmethod def normalize(val: EnumTypelike) -> "EnumType": """Normalize an enumeration type.""" if isinstance(val, str): val = EnumType(val.lower()) return val