gh-101541: [Enum] create flag psuedo-member without calling original __new__ (GH-101590)

This commit is contained in:
Ethan Furman 2023-02-05 19:29:06 -08:00 committed by GitHub
parent d3e2dd6e71
commit ef7c2bfcf1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 3 deletions

View file

@ -1429,12 +1429,11 @@ class Flag(Enum, boundary=CONFORM):
% (cls.__name__, value, unknown, bin(unknown))
)
# normal Flag?
__new__ = getattr(cls, '__new_member__', None)
if cls._member_type_ is object and not __new__:
if cls._member_type_ is object:
# construct a singleton enum pseudo-member
pseudo_member = object.__new__(cls)
else:
pseudo_member = (__new__ or cls._member_type_.__new__)(cls, value)
pseudo_member = cls._member_type_.__new__(cls, value)
if not hasattr(pseudo_member, '_value_'):
pseudo_member._value_ = value
if member_value: