summaryrefslogtreecommitdiff
path: root/qutebrowser/keyinput/keyutils.py
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2022-08-25 08:41:16 +1200
committertoofar <toofar@spalge.com>2022-08-25 08:53:31 +1200
commitd20a58c26bf741846abeb5a2f3498a57ff6c6a4f (patch)
treee8d345fd858a061a9c08b6e2bdbe2aed6809fecc /qutebrowser/keyinput/keyutils.py
parentdfde9798074eb5ed192ff8ba074032e8a42b219a (diff)
downloadqutebrowser-feat/pyqt6_and_mypy.tar.gz
qutebrowser-feat/pyqt6_and_mypy.zip
Some Qt6 mypy fixesfeat/pyqt6_and_mypy
I'm running mypy like so: mypy --always-true=USE_PYQT6 --always-false=USE_PYQT5 --always-false=USE_PYSIDE2 --always-false=USE_PYSIDE6 --always-false=IS_QT5 --always-true=IS_QT6 qutebrowser/ And I just went down the output fixing easy stuff. Currently I'm getting 61 errors on Qt5 and 207 errors on Qt6 (down from 230 or so). I think the comparison ignores I removed are still needed on Qt5. I'm not sure how best to deal with situations that need to be ignored on one implementation and not on another. One way to do it would be to have alternate implementations per backend, but that could become a bit or a maintenance burden, see https://github.com/python/mypy/issues/8823 I'm also seeing some "Statement is unreachable" errors popping up which might be due to the same scenario. Many of the errors are related to there being no webkit on Qt6 so the webkit modules get resolved as ANY which makes all the # type: ignore messages be complained about. Not sure what we can do about that, possibly something from https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-exclude I see that Phil said we shouldn't need separate stubs for PyQt6. I'm still using them and haven't tried without yet.
Diffstat (limited to 'qutebrowser/keyinput/keyutils.py')
-rw-r--r--qutebrowser/keyinput/keyutils.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py
index f91936257..fdf5340f7 100644
--- a/qutebrowser/keyinput/keyutils.py
+++ b/qutebrowser/keyinput/keyutils.py
@@ -37,10 +37,11 @@ from typing import Iterator, List, Mapping, Optional, Union, overload
from qutebrowser.qt.core import Qt, QEvent
from qutebrowser.qt.gui import QKeySequence, QKeyEvent
-try:
- from qutebrowser.qt.core import QKeyCombination
-except ImportError:
+from qutebrowser.qt import machinery
+if machinery.IS_QT5:
QKeyCombination = None # Qt 6 only
+else:
+ from qutebrowser.qt.core import QKeyCombination
from qutebrowser.utils import utils, qtutils, debug
@@ -69,7 +70,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
@@ -541,6 +542,7 @@ class KeySequence:
def __iter__(self) -> Iterator[KeyInfo]:
"""Iterate over KeyInfo objects."""
+ combination: QKeySequence
for combination in itertools.chain.from_iterable(self._sequences):
yield KeyInfo.from_qt(combination)
@@ -712,7 +714,7 @@ class KeySequence:
mappings: Mapping['KeySequence', 'KeySequence']
) -> 'KeySequence':
"""Get a new KeySequence with the given mappings applied."""
- infos = []
+ infos: List[KeyInfo] = []
for info in self:
key_seq = KeySequence(info)
if key_seq in mappings: