enum.Flag ignores bitwise operator methods from mixins · Issue #121291 · python/cpython · GitHub
Skip to content

enum.Flag ignores bitwise operator methods from mixins #121291

Description

@gswifort

When I define methods ('__or__', '__and__', '__xor__', '__ror__', '__rand__', '__rxor__', '__invert__')
directly in the class inheriting from enum.Flag, these methods are "added" (mro) to the members, however, if the method is defined in the mixin, the methods defined in enum.Flag are added (e.g. Flag.__or__). I would expect methods to be called from mixin.

from enum import Flag


class Mixin:
    def __or__(self, value): ...


class MyFlag(Mixin, Flag):
    pass


class MyFlag2(Flag):
    def __or__(self, value): ...


print(MyFlag.__or__.__qualname__)  # Flag.__or__, I would expect Mixin.__or__
print(MyFlag2.__or__.__qualname__)  # MyFlag2.__or__ - GOOD

cpython/Lib/enum.py

Lines 610 to 619 in 0898354

Linked PRs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

stdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions