28 lines
790 B
Python
28 lines
790 B
Python
from enum import StrEnum
|
|
from typing import Any
|
|
|
|
|
|
class AutoName(StrEnum):
|
|
"""Use the lower case name as the value for Python Enum (default would be integers).
|
|
|
|
Inherits from str to ensure all types are string and as a bonus it becomes JSON
|
|
serializable.
|
|
|
|
See here for more information:
|
|
https://docs.python.org/3/library/enum.html#using-automatic-values
|
|
"""
|
|
|
|
def __str__(self) -> str:
|
|
"""Return string representation."""
|
|
return str(self.value)
|
|
|
|
@staticmethod
|
|
def _generate_next_value_(
|
|
name: str, start: int, count: int, last_values: list[Any]
|
|
) -> str:
|
|
"""Enum standard structure - the next value.
|
|
|
|
See this on @staticmethod: https://github.com/python/mypy/issues/7591
|
|
"""
|
|
return name.lower()
|