diff options
author | toofar <toofar@spalge.com> | 2022-08-25 08:41:16 +1200 |
---|---|---|
committer | toofar <toofar@spalge.com> | 2022-08-25 08:53:31 +1200 |
commit | d20a58c26bf741846abeb5a2f3498a57ff6c6a4f (patch) | |
tree | e8d345fd858a061a9c08b6e2bdbe2aed6809fecc /qutebrowser/keyinput/keyutils.py | |
parent | dfde9798074eb5ed192ff8ba074032e8a42b219a (diff) | |
download | qutebrowser-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.py | 12 |
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: |