from enum import Enum, EnumMeta class MyMeta(EnumMeta): pass class MyEnumBase1(Enum, metaclass=MyMeta): pass # SUCCEEDS: MyEnum1 class MyEnum1(MyEnumBase1): one = 1 # SUCCEEDS: MyEnum4 MyEnum4 = Enum('MyEnum2', [], type=MyEnumBase1) # FAILURE: MyEnum2 fails with KeyError. MyEnum2 = Enum('MyEnum2', ['one'], type=MyEnumBase1) # SUCCEEDS: MyEnum4 class MyEnumBase2(Enum, metaclass=EnumMeta): pass MyEnum4 = Enum('MyEnum3', ['one'], type=MyEnumBase2)