|
1 | 1 | import sys |
2 | 2 | import builtins as bltns |
3 | 3 | from types import MappingProxyType, DynamicClassAttribute |
| 4 | +from abc import ABCMeta |
4 | 5 |
|
5 | 6 |
|
6 | 7 | __all__ = [ |
@@ -466,7 +467,7 @@ def update(self, members, **more_members): |
466 | 467 | _EnumDict = EnumDict # keep private name for backwards compatibility |
467 | 468 |
|
468 | 469 |
|
469 | | -class EnumType(type): |
| 470 | +class EnumType(ABCMeta): |
470 | 471 | """ |
471 | 472 | Metaclass for Enum |
472 | 473 | """ |
@@ -1773,7 +1774,7 @@ def convert_class(cls): |
1773 | 1774 | body['__rand__'] = Flag.__rand__ |
1774 | 1775 | body['__invert__'] = Flag.__invert__ |
1775 | 1776 | for name, obj in cls.__dict__.items(): |
1776 | | - if name in ('__dict__', '__weakref__'): |
| 1777 | + if name in ('__dict__', '__weakref__', '_abc_impl'): |
1777 | 1778 | continue |
1778 | 1779 | if _is_dunder(name) or _is_private(cls_name, name) or _is_sunder(name) or _is_descriptor(obj): |
1779 | 1780 | body[name] = obj |
@@ -2038,7 +2039,7 @@ def _test_simple_enum(checked_enum, simple_enum): |
2038 | 2039 | ) |
2039 | 2040 | for key in set(checked_keys + simple_keys): |
2040 | 2041 | if key in ('__module__', '_member_map_', '_value2member_map_', '__doc__', |
2041 | | - '__static_attributes__', '__firstlineno__'): |
| 2042 | + '__static_attributes__', '__firstlineno__', '_abc_impl'): |
2042 | 2043 | # keys known to be different, or very long |
2043 | 2044 | continue |
2044 | 2045 | elif key in member_names: |
@@ -2094,7 +2095,7 @@ def _test_simple_enum(checked_enum, simple_enum): |
2094 | 2095 | simple_value = simple_member_dict[key] |
2095 | 2096 | if checked_value != simple_value: |
2096 | 2097 | failed_member.append("%r:\n %s\n %s" % ( |
2097 | | - key, |
| 2098 | + key, |
2098 | 2099 | "checked member -> %r" % (checked_value, ), |
2099 | 2100 | "simple member -> %r" % (simple_value, ), |
2100 | 2101 | )) |
|
0 commit comments