summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/enum.py17
-rw-r--r--Lib/test/test_enum.py1
2 files changed, 10 insertions, 8 deletions
diff --git a/Lib/enum.py b/Lib/enum.py
index 69216c9..652878c 100644
--- a/Lib/enum.py
+++ b/Lib/enum.py
@@ -309,16 +309,17 @@ class _proto_member:
if descriptor and not need_override:
# previous enum.property found, no further action needed
pass
- else:
+ elif descriptor and need_override:
redirect = property()
redirect.__set_name__(enum_class, member_name)
- if descriptor and need_override:
- # previous enum.property found, but some other inherited attribute
- # is in the way; copy fget, fset, fdel to this one
- redirect.fget = descriptor.fget
- redirect.fset = descriptor.fset
- redirect.fdel = descriptor.fdel
+ # Previous enum.property found, but some other inherited attribute
+ # is in the way; copy fget, fset, fdel to this one.
+ redirect.fget = descriptor.fget
+ redirect.fset = descriptor.fset
+ redirect.fdel = descriptor.fdel
setattr(enum_class, member_name, redirect)
+ else:
+ setattr(enum_class, member_name, enum_member)
# now add to _member_map_ (even aliases)
enum_class._member_map_[member_name] = enum_member
try:
@@ -647,7 +648,7 @@ class EnumType(type):
'member order does not match _order_:\n %r\n %r'
% (enum_class._member_names_, _order_)
)
- #
+
return enum_class
def __bool__(cls):
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index a263509..aec18c7 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -2646,6 +2646,7 @@ class TestSpecial(unittest.TestCase):
self.assertEqual(Private._Private__corporal, 'Radar')
self.assertEqual(Private._Private__major_, 'Hoolihan')
+ @unittest.skip("Accessing all values retained for performance reasons, see GH-93910")
def test_exception_for_member_from_member_access(self):
with self.assertRaisesRegex(AttributeError, "<enum .Di.> member has no attribute .NO."):
class Di(Enum):