File tree Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -1114,6 +1114,14 @@ def __new__(cls, value):
1114
1114
def __init__ (self , * args , ** kwds ):
1115
1115
pass
1116
1116
1117
+ def __getattribute__ (self , name ):
1118
+ self_dict = super ().__getattribute__ ('__dict__' )
1119
+ cls = super ().__getattribute__ ('__class__' )
1120
+ value = super ().__getattribute__ (name )
1121
+ if isinstance (value , cls ) and name not in self_dict and name in self ._member_names_ :
1122
+ raise AttributeError ("<enum '%s'> member has no attribute %r" % (cls .__name__ , name ))
1123
+ return super ().__getattribute__ (name )
1124
+
1117
1125
def _generate_next_value_ (name , start , count , last_values ):
1118
1126
"""
1119
1127
Generate the next value when not given.
Original file line number Diff line number Diff line change @@ -2611,14 +2611,19 @@ class Private(Enum):
2611
2611
self .assertEqual (Private ._Private__corporal , 'Radar' )
2612
2612
self .assertEqual (Private ._Private__major_ , 'Hoolihan' )
2613
2613
2614
- @unittest .skip ("Accessing all values retained for performance reasons, see GH-93910" )
2615
2614
def test_exception_for_member_from_member_access (self ):
2616
2615
with self .assertRaisesRegex (AttributeError , "<enum .Di.> member has no attribute .NO." ):
2617
2616
class Di (Enum ):
2618
2617
YES = 1
2619
2618
NO = 0
2620
2619
nope = Di .YES .NO
2621
2620
2621
+ def test_no_exception_for_overridden_member_from_member_access (self ):
2622
+ class Di (Enum ):
2623
+ YES = 1
2624
+ NO = 0
2625
+ Di .YES .NO = Di .NO
2626
+ nope = Di .YES .NO
2622
2627
2623
2628
def test_dynamic_members_with_static_methods (self ):
2624
2629
#
You can’t perform that action at this time.
0 commit comments