[Python-checkins] Revert "gh-93910: [Enum] restore member.member restriction while keeping performance boost (GH-94913)" (#94985)
ethanfurman
webhook-mailer at python.org
Mon Jul 18 16:22:56 EDT 2022
https://github.com/python/cpython/commit/73eab9f35ca17c7c3b813c717673934b0ab8ed64
commit: 73eab9f35ca17c7c3b813c717673934b0ab8ed64
branch: main
author: Ethan Furman <ethan at stoneleaf.us>
committer: ethanfurman <ethan at stoneleaf.us>
date: 2022-07-18T13:22:52-07:00
summary:
Revert "gh-93910: [Enum] restore member.member restriction while keeping performance boost (GH-94913)" (#94985)
This reverts commit c20186c3972ff38577c4c5e32ca86748210983d2.
files:
M Lib/enum.py
M Lib/test/test_enum.py
diff --git a/Lib/enum.py b/Lib/enum.py
index 80945c116bfe5..935e2bd15d0af 100644
--- a/Lib/enum.py
+++ b/Lib/enum.py
@@ -1112,14 +1112,6 @@ def __new__(cls, value):
def __init__(self, *args, **kwds):
pass
- def __getattribute__(self, name):
- self_dict = super().__getattribute__('__dict__')
- cls = super().__getattribute__('__class__')
- value = super().__getattribute__(name)
- if isinstance(value, cls) and name not in self_dict and name in self._member_names_:
- raise AttributeError("<enum '%s'> member has no attribute %r" % (cls.__name__, name))
- return super().__getattribute__(name)
-
def _generate_next_value_(name, start, count, last_values):
"""
Generate the next value when not given.
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index 69fba9a13c89a..bfab0bd4b07f5 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -2646,6 +2646,7 @@ class Private(Enum):
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):
@@ -2653,12 +2654,6 @@ class Di(Enum):
NO = 0
nope = Di.YES.NO
- def test_no_exception_for_overridden_member_from_member_access(self):
- class Di(Enum):
- YES = 1
- NO = 0
- Di.YES.NO = Di.NO
- nope = Di.YES.NO
def test_dynamic_members_with_static_methods(self):
#
More information about the Python-checkins
mailing list