enum.py 600 B

1234567891011121314151617181920
  1. """Enum backports from standard lib."""
  2. from __future__ import annotations
  3. from enum import Enum
  4. from typing import Any, Self
  5. class StrEnum(str, Enum):
  6. """Partial backport of Python 3.11's StrEnum for our basic use cases."""
  7. def __new__(cls, value: str, *args: Any, **kwargs: Any) -> Self:
  8. """Create a new StrEnum instance."""
  9. if not isinstance(value, str):
  10. raise TypeError(f"{value!r} is not a string")
  11. return super().__new__(cls, value, *args, **kwargs)
  12. def __str__(self) -> str:
  13. """Return self.value."""
  14. return str(self.value)