diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2022-07-18 20:56:21 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-18 20:56:21 (GMT) |
commit | be84daf52aec7b963a743d0c2d66dbd175810803 (patch) | |
tree | c3c67c05291dc90d3057b178fed3562541ae93a6 | |
parent | eda2f90094731a7a1a30bc4a50a6c1bc050a4b2c (diff) | |
download | cpython-be84daf52aec7b963a743d0c2d66dbd175810803.zip cpython-be84daf52aec7b963a743d0c2d66dbd175810803.tar.gz cpython-be84daf52aec7b963a743d0c2d66dbd175810803.tar.bz2 |
Revert "gh-93910: [Enum] restore member.member restriction while keeping performance boost (GH-94913)" (#94981)
This reverts commit 30f28ac296e506b336e0ab56c41422a53c36d0c2.
-rw-r--r-- | Lib/enum.py | 8 | ||||
-rw-r--r-- | Lib/test/test_enum.py | 7 |
2 files changed, 1 insertions, 14 deletions
diff --git a/Lib/enum.py b/Lib/enum.py index f5c29ed..63ca160 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -1125,14 +1125,6 @@ class Enum(metaclass=EnumType): 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 80834f2..4a42c73 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -2611,6 +2611,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): @@ -2618,12 +2619,6 @@ class TestSpecial(unittest.TestCase): 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): # |