Source code for pooltool.utils.strenum

from enum import Enum, auto
from typing import Any, List, Type, TypeVar

__all__ = ["auto"]

_S = TypeVar("_S", bound="StrEnum")


[docs] class StrEnum(str, Enum): """ Enum where members are also (and must be) strings """ def __new__(cls: Type[_S], *values: str) -> _S: if len(values) > 3: raise TypeError("too many arguments for str(): %r" % (values,)) if len(values) == 1: # it must be a string if not isinstance(values[0], str): raise TypeError("%r is not a string" % (values[0],)) if len(values) >= 2: # check that encoding argument is a string value = values[1] # type: ignore if not isinstance(value, str): raise TypeError("encoding must be a string, not %r" % (value,)) if len(values) == 3: # check that errors argument is a string if not isinstance(values[2], str): raise TypeError("errors must be a string, not %r" % (values[2])) value = str(*values) member = str.__new__(cls, value) member._value_ = value return member __str__ = str.__str__ # type: ignore @staticmethod def _generate_next_value_( name: str, start: int, count: int, last_values: List[Any] ) -> str: """ Return the lower-cased version of the member name. """ return name.lower()