From e674e48ddc2712f28cc7ecdc66a6c328066694b0 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Sat, 15 Jan 2022 01:18:00 +0300 Subject: bpo-46242: [Enum] better error message for extending `Enum` with members (GH-30357) --- Lib/enum.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'Lib/enum.py') diff --git a/Lib/enum.py b/Lib/enum.py index 86928b4f79f..93ea1bea36d 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -763,7 +763,7 @@ class EnumType(type): """ metacls = cls.__class__ bases = (cls, ) if type is None else (type, cls) - _, first_enum = cls._get_mixins_(cls, bases) + _, first_enum = cls._get_mixins_(class_name, bases) classdict = metacls.__prepare__(class_name, bases) # special processing needed for names? @@ -848,8 +848,8 @@ class EnumType(type): % (class_name, base.__name__) ) - @staticmethod - def _get_mixins_(class_name, bases): + @classmethod + def _get_mixins_(cls, class_name, bases): """ Returns the type for creating enum members, and the first inherited enum class. @@ -890,9 +890,8 @@ class EnumType(type): if not issubclass(first_enum, Enum): raise TypeError("new enumerations should be created as " "`EnumName([mixin_type, ...] [data_type,] enum_type)`") + cls._check_for_existing_members(class_name, bases) member_type = _find_data_type(bases) or object - if first_enum._member_names_: - raise TypeError("Cannot extend enumerations") return member_type, first_enum @staticmethod -- cgit v1.2.3