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 @@ -1101,6 +1101,14 @@ def __new__(cls, value):
1101
1101
def __init__ (self , * args , ** kwds ):
1102
1102
pass
1103
1103
1104
+ def __getattribute__ (self , name ):
1105
+ self_dict = super ().__getattribute__ ('__dict__' )
1106
+ cls = super ().__getattribute__ ('__class__' )
1107
+ value = super ().__getattribute__ (name )
1108
+ if isinstance (value , cls ) and name not in self_dict and name in self ._member_names_ :
1109
+ raise AttributeError ("<enum '%s'> member has no attribute %r" % (cls .__name__ , name ))
1110
+ return super ().__getattribute__ (name )
1111
+
1104
1112
def _generate_next_value_ (name , start , count , last_values ):
1105
1113
"""
1106
1114
Generate the next value when not given.
Original file line number Diff line number Diff line change @@ -2646,14 +2646,19 @@ class Private(Enum):
2646
2646
self .assertEqual (Private ._Private__corporal , 'Radar' )
2647
2647
self .assertEqual (Private ._Private__major_ , 'Hoolihan' )
2648
2648
2649
- @unittest .skip ("Accessing all values retained for performance reasons, see GH-93910" )
2650
2649
def test_exception_for_member_from_member_access (self ):
2651
2650
with self .assertRaisesRegex (AttributeError , "<enum .Di.> member has no attribute .NO." ):
2652
2651
class Di (Enum ):
2653
2652
YES = 1
2654
2653
NO = 0
2655
2654
nope = Di .YES .NO
2656
2655
2656
+ def test_no_exception_for_overridden_member_from_member_access (self ):
2657
+ class Di (Enum ):
2658
+ YES = 1
2659
+ NO = 0
2660
+ Di .YES .NO = Di .NO
2661
+ nope = Di .YES .NO
2657
2662
2658
2663
def test_dynamic_members_with_static_methods (self ):
2659
2664
#
You can’t perform that action at this time.
0 commit comments