From ed13c3c734d265fc92b9b4ea118505aed0aa4414 Mon Sep 17 00:00:00 2001 From: toofar Date: Sun, 11 Sep 2022 14:00:10 +1200 Subject: mypy: ignores for another enum: KeyboardModifier There are several cases where PyQt5 methods expects the plural flags version but we've got the singular Enum version from accessing enum members directly. It's not easy to turn those enums into flags and the flags don't even exist in PyQt6. --- qutebrowser/keyinput/keyutils.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py index f91936257..3af103607 100644 --- a/qutebrowser/keyinput/keyutils.py +++ b/qutebrowser/keyinput/keyutils.py @@ -33,7 +33,7 @@ handle what we actually think we do. import itertools import dataclasses -from typing import Iterator, List, Mapping, Optional, Union, overload +from typing import Iterator, List, Mapping, Optional, Union, overload, cast from qutebrowser.qt.core import Qt, QEvent from qutebrowser.qt.gui import QKeySequence, QKeyEvent @@ -69,7 +69,7 @@ try: except ValueError: # WORKAROUND for # https://www.riverbankcomputing.com/pipermail/pyqt/2022-April/044607.html - _NIL_KEY = 0 + _NIL_KEY = 0 # type: ignore[assignment] _ModifierType = Qt.KeyboardModifier @@ -252,7 +252,7 @@ def _modifiers_to_string(modifiers: _ModifierType) -> str: _assert_plain_modifier(modifiers) altgr = Qt.KeyboardModifier.GroupSwitchModifier if modifiers & altgr: - modifiers &= ~altgr + modifiers &= ~altgr # type: ignore[assignment] result = 'AltGr+' else: result = '' @@ -376,7 +376,7 @@ class KeyInfo: except ValueError as ex: raise InvalidKeyError(str(ex)) key = _remap_unicode(key, e.text()) - modifiers = e.modifiers() + modifiers = cast(Qt.KeyboardModifier, e.modifiers()) return cls(key, modifiers) @classmethod @@ -411,7 +411,7 @@ class KeyInfo: if self.key in _MODIFIER_MAP: # Don't return e.g. - modifiers &= ~_MODIFIER_MAP[self.key] + modifiers &= ~_MODIFIER_MAP[self.key] # type: ignore[assignment] elif _is_printable(self.key): # "normal" binding if not key_string: # pragma: no cover @@ -479,7 +479,8 @@ class KeyInfo: return QKeyCombination(self.modifiers, key) def with_stripped_modifiers(self, modifiers: Qt.KeyboardModifier) -> "KeyInfo": - return KeyInfo(key=self.key, modifiers=self.modifiers & ~modifiers) + mods = self.modifiers & ~modifiers + return KeyInfo(key=self.key, modifiers=mods) # type: ignore[arg-type] def is_special(self) -> bool: """Check whether this key requires special key syntax.""" @@ -648,7 +649,7 @@ class KeySequence: raise KeyParseError(None, f"Got invalid key: {e}") _assert_plain_key(key) - _assert_plain_modifier(ev.modifiers()) + _assert_plain_modifier(cast(Qt.KeyboardModifier, ev.modifiers())) key = _remap_unicode(key, ev.text()) modifiers = ev.modifiers() @@ -675,10 +676,11 @@ class KeySequence: # # In addition, Shift also *is* relevant when other modifiers are # involved. Shift-Ctrl-X should not be equivalent to Ctrl-X. - if (modifiers == Qt.KeyboardModifier.ShiftModifier and + shift_modifier = Qt.KeyboardModifier.ShiftModifier + if (modifiers == shift_modifier and # type: ignore[comparison-overlap] _is_printable(key) and not ev.text().isupper()): - modifiers = Qt.KeyboardModifier.NoModifier + modifiers = Qt.KeyboardModifier.NoModifier # type: ignore[assignment] # On macOS, swap Ctrl and Meta back # @@ -697,7 +699,7 @@ class KeySequence: modifiers |= Qt.KeyboardModifier.ControlModifier infos = list(self) - infos.append(KeyInfo(key, modifiers)) + infos.append(KeyInfo(key, cast(Qt.KeyboardModifier, modifiers))) return self.__class__(*infos) -- cgit v1.2.3-54-g00ecf