forked from K0lb3/UnityPy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExtendableEnum.py
More file actions
19 lines (16 loc) · 775 Bytes
/
ExtendableEnum.py
File metadata and controls
19 lines (16 loc) · 775 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from enum import IntEnum
# based on https://stackoverflow.com/a/57179436
class ExtendableEnum(IntEnum):
@classmethod
def _missing_(cls, value):
if isinstance(value, int):
pseudo_member = cls._value2member_map_.get(value, None)
if pseudo_member is None:
new_member = int.__new__(cls, value)
# I expect a name attribute to hold a string, hence str(value)
# However, new_member._name_ = value works, too
new_member._name_ = f"Unknown ({value})"
new_member._value_ = value
pseudo_member = cls._value2member_map_.setdefault(value, new_member)
return pseudo_member
return None # will raise the ValueError in Enum.__new__