Source code for core_mixins.compatibility
# -*- coding: utf-8 -*-
"""
Compatibility utilities for Python
version differences.
"""
from enum import Enum
try:
from typing import Self
except ImportError:
from typing_extensions import Self
__all__ = [
"Self",
"StrEnum",
]
[docs]
class StrEnum(str, Enum):
"""
For backward compatibility because StrEnum class
was added in Python 3.11...
"""
def __new__(cls, value, *_args, **_kwargs):
if not isinstance(value, str):
raise TypeError(f"{value} is not a string")
obj = str.__new__(cls, value)
obj._value_ = value
return obj