Ethan Furman <et...@stoneleaf.us> added the comment:

Since I like puzzles, here is a working LenientStrEnum:

    class LenientStrEnum(str, Enum):
        #
        def __init__(self, *args):
            self._valid = True
        #
        @classmethod
        def _missing_(cls, value):
            logger.warning(
                f"[{cls.__name__}] encountered an unknown value!\n"
                f"Luckily I'm a LenientStrEnum, so I won't crash just yet.\n"
                f"You might want to add a new case though.\n"
                f"Value was: '{value}'"
                )
            unknown = cls._member_type_.__new__(cls, value)
            unknown._valid = False
            unknown._name_ = value.upper()
            unknown._value_ = value
            cls._member_map_[value] = unknown
            return unknown
        #
        @property
        def valid(self):
            return self._valid

`_member_map_` is not guaranteed, but is unlikely to change.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue44356>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to