Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

3.11.4: ValueError when inverting enum.Flag member with mask member #105497

Closed
Assignees
ethanfurman
Labels
3.11only security fixes3.12only security fixesstdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error
@The-Compiler

Description

@The-Compiler

With code such as:

importenumclassFlag(enum.Flag):A=0x01B=0x02Mask=0xffprint(~Flag.A)

Python 3.10.11 printsFlag.B, and so does Python 3.11.3. However, with Python 3.11.4, this happens instead:

Traceback (most recent call last):  File"/home/florian/tmp/f.py", line9, in<module>print(~Flag.A)^^^^^^^  File"/usr/lib/python3.11/enum.py", line1542, in__invert__self._inverted_=self.__class__(self._flag_mask_^self._value_)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File"/usr/lib/python3.11/enum.py", line711, in__call__returncls.__new__(cls, value)^^^^^^^^^^^^^^^^^^^^^^^  File"/usr/lib/python3.11/enum.py", line1136, in__new__raise exc  File"/usr/lib/python3.11/enum.py", line1113, in__new__    result=cls._missing_(value)^^^^^^^^^^^^^^^^^^^^  File"/usr/lib/python3.11/enum.py", line1454, in_missing_raiseValueError('%r: no members with value%r'% (cls, unknown))ValueError:<flag 'Flag'>: no members with value 252

As a workaround, a detour via.value works in this case:

>>>Flag((Flag.A|Flag.B).value&~Flag.A.value)<Flag.B:2>

This causes issues with PyQt, which has the following flags (as bindings from C++):

>>>fromPyQt6.QtCoreimportQt>>>foreinQt.KeyboardModifier:...print(f"{e.name} ={hex(e.value)}")...NoModifier=0x0ShiftModifier=0x2000000ControlModifier=0x4000000AltModifier=0x8000000MetaModifier=0x10000000KeypadModifier=0x20000000GroupSwitchModifier=0x40000000KeyboardModifierMask=0xfe000000

(Output from Python 3.10 - with Python 3.11,KeyboardModifierMask goes missing in the output, and so doesFlag.Mask above, but that seems like a different issue?)

With my project, I'mtrying to remove a modifier from the given flags. With Python 3.10.11 and 3.11.3:

>>> (Qt.KeyboardModifier.ShiftModifier|Qt.KeyboardModifier.ControlModifier)&~Qt.KeyboardModifier.ControlModifier<KeyboardModifier.ShiftModifier:33554432>

But with Python 3.11.4, same issue as above:

>>> from PyQt6.QtCore import Qt>>> (Qt.KeyboardModifier.ShiftModifier | Qt.KeyboardModifier.ControlModifier) & ~Qt.KeyboardModifier.ControlModifierTraceback (most recent call last):  File"<stdin>", line1, in<module>  File"/usr/lib/python3.11/enum.py", line1542, in__invert__self._inverted_=self.__class__(self._flag_mask_^self._value_)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File"/usr/lib/python3.11/enum.py", line711, in__call__returncls.__new__(cls, value)^^^^^^^^^^^^^^^^^^^^^^^  File"/usr/lib/python3.11/enum.py", line1136, in__new__raise exc  File"/usr/lib/python3.11/enum.py", line1113, in__new__    result=cls._missing_(value)^^^^^^^^^^^^^^^^^^^^  File"/usr/lib/python3.11/enum.py", line1454, in_missing_raiseValueError('%r: no members with value%r'% (cls, unknown))ValueError:<flag 'KeyboardModifier'>: no members with value 2147483648

As a culprit, I suspect:

cc@ethanfurman@benburrill

Linked PRs

Metadata

Metadata

Assignees

Labels

3.11only security fixes3.12only security fixesstdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions


    [8]ページ先頭

    ©2009-2025 Movatter.jp