issue26893: use mro() to examine class heirarchy
authorEthan Furman <ethan@stoneleaf.us>
Sun, 1 May 2016 17:03:53 +0000 (10:03 -0700)
committerEthan Furman <ethan@stoneleaf.us>
Sun, 1 May 2016 17:03:53 +0000 (10:03 -0700)
Lib/enum.py
Lib/test/test_enum.py

index 246df17b949720d01e424a4f3e384a47edc9a116..b8787d19b884862265991e7a694b00f93f7b71e9 100644 (file)
@@ -118,7 +118,7 @@ class EnumMeta(type):
 
         # save attributes from super classes so we know if we can take
         # the shortcut of storing members in the class dict
-        base_attributes = {a for b in bases for a in b.__dict__}
+        base_attributes = {a for b in enum_class.mro() for a in b.__dict__}
 
         # Reverse value->name map for hashable values.
         enum_class._value2member_map_ = {}
index a59a04943407b143a1d8134e7f6200860a5403bc..4b14e7f013bf8b752b05902c440ba8b7220ca2db 100644 (file)
@@ -1568,6 +1568,19 @@ class TestUnique(unittest.TestCase):
                 triple = 3
                 turkey = 3
 
+    def test_unique_with_name(self):
+        @unique
+        class Silly(Enum):
+            one = 1
+            two = 'dos'
+            name = 3
+        @unique
+        class Sillier(IntEnum):
+            single = 1
+            name = 2
+            triple = 3
+            value = 4
+
 
 expected_help_output_with_docs = """\
 Help on class Color in module %s: