Source code for eolib.protocol.protocol_enum_meta
from enum import EnumMeta
[docs]
class ProtocolEnumMeta(EnumMeta):
"""
Enum metaclass that preserves unrecognized values as synthetic enum members.
"""
def __call__(cls, value, names=None, *, module=None, qualname=None, type=None, start=1):
if names is not None:
return super().__call__(
value, names=names, module=module, qualname=qualname, type=type, start=start
)
try:
return super().__call__(value, module=module, qualname=qualname, type=type, start=start)
except ValueError:
unrecognized = int.__new__(cls, value)
unrecognized._name_ = f"Unrecognized({int(value)})"
unrecognized._value_ = value
return unrecognized