Spaces:
Running
Running
| import enum | |
| class StrEnum(str, enum.Enum): | |
| """ | |
| Enum where members are also (and must be) strings (backported from Python 3.11). | |
| """ | |
| def __new__(cls, *values: str) -> "StrEnum": | |
| "values must already be of type `str`" | |
| 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): # type: ignore | |
| raise TypeError("%r is not a string" % (values[0],)) | |
| if len(values) >= 2: | |
| # check that encoding argument is a string | |
| if not isinstance(values[1], str): # type: ignore | |
| raise TypeError("encoding must be a string, not %r" % (values[1],)) | |
| if len(values) == 3: | |
| # check that errors argument is a string | |
| if not isinstance(values[2], str): # type: ignore | |
| raise TypeError("errors must be a string, not %r" % (values[2])) | |
| value = str(*values) | |
| member = str.__new__(cls, value) | |
| member._value_ = value | |
| return member | |
| def _generate_next_value_( | |
| name: str, start: int, count: int, last_values: list[str] | |
| ) -> str: | |
| """ | |
| Return the lower-cased version of the member name. | |
| """ | |
| return name.lower() | |