mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Revert "gh-93910: [Enum] restore member.member restriction while keeping performance boost (GH-94913)" (#94985)
This reverts commit c20186c397
.
This commit is contained in:
parent
4b5360c7d5
commit
73eab9f35c
2 changed files with 1 additions and 14 deletions
|
@ -1112,14 +1112,6 @@ class Enum(metaclass=EnumType):
|
||||||
def __init__(self, *args, **kwds):
|
def __init__(self, *args, **kwds):
|
||||||
pass
|
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):
|
def _generate_next_value_(name, start, count, last_values):
|
||||||
"""
|
"""
|
||||||
Generate the next value when not given.
|
Generate the next value when not given.
|
||||||
|
|
|
@ -2646,6 +2646,7 @@ class TestSpecial(unittest.TestCase):
|
||||||
self.assertEqual(Private._Private__corporal, 'Radar')
|
self.assertEqual(Private._Private__corporal, 'Radar')
|
||||||
self.assertEqual(Private._Private__major_, 'Hoolihan')
|
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):
|
def test_exception_for_member_from_member_access(self):
|
||||||
with self.assertRaisesRegex(AttributeError, "<enum .Di.> member has no attribute .NO."):
|
with self.assertRaisesRegex(AttributeError, "<enum .Di.> member has no attribute .NO."):
|
||||||
class Di(Enum):
|
class Di(Enum):
|
||||||
|
@ -2653,12 +2654,6 @@ class TestSpecial(unittest.TestCase):
|
||||||
NO = 0
|
NO = 0
|
||||||
nope = Di.YES.NO
|
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):
|
def test_dynamic_members_with_static_methods(self):
|
||||||
#
|
#
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue