Source code for pythonwrench.enum

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from enum import Enum

from typing_extensions import Self


[docs] class StrEnum(str, Enum): """StrEnum is the same as Enum, but its members are also strings and can be used in most of the same places that a string can be used. Note: when used as keys of dicts, enums are considered different from strings keys. This class has the same objective than https://docs.python.org/3/library/enum.html#enum.StrEnum, which was introduced in Python 3.11. """
[docs] @classmethod def from_str( cls, value: str, case_sensitive: bool = False, ) -> Self: members = cls.__members__.keys() for member in members: if member == value or ( not case_sensitive and member.lower() == value.lower() ): return cls[member] msg = f"Invalid argument {value=}. (expected one of {tuple(members)})" raise ValueError(msg)
@staticmethod def _generate_next_value_(name, start, count, last_values) -> str: return name @property def value(self) -> str: return self._value_ def __eq__(self, other: object) -> bool: other = other.value if isinstance(other, Enum) else str(other) return self.value == other # type: ignore def __hash__(self) -> int: return hash(self.value) def __str__(self) -> str: return self.name