diff options
author | Nikita Sobolev <mail@sobolevn.me> | 2022-01-15 01:18:00 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-14 14:18:00 -0800 |
commit | e674e48ddc2712f28cc7ecdc66a6c328066694b0 (patch) | |
tree | 4099bfdf43aab41e783bccf2e75a509765a9c4fc /Lib/enum.py | |
parent | 2402f1e1f80499a870a86d848e5228d527d9be1d (diff) | |
download | cpython-e674e48ddc2712f28cc7ecdc66a6c328066694b0.tar.gz cpython-e674e48ddc2712f28cc7ecdc66a6c328066694b0.zip |
bpo-46242: [Enum] better error message for extending `Enum` with members (GH-30357)
Diffstat (limited to 'Lib/enum.py')
-rw-r--r-- | Lib/enum.py | 9 |
1 files changed, 4 insertions, 5 deletions
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 |