From 6f2040b16d4990695fb2d3385c23a0971097c266 Mon Sep 17 00:00:00 2001 From: Jimmy Date: Sat, 16 Apr 2022 21:40:22 +1200 Subject: Make mypy slightly happier about pyqt wrapper I super don't like the extra duplication but we are all servants of our linters. Making mypy happy is the main reason I'm going through this renaming stuff effort so here it is. Remaining failures are because of string types that didn't get renamed and imports in TYPE_CHECKING conditionals. Options for for fixing those are: * running the rename tool again with TYPE_CHECKING=True everywhere * scraping mypys errors for things to update and; * regular expressions --- qutebrowser/qt.py | 65 ++++++++++++++++++++++++++++++-------------- qutebrowser/utils/version.py | 2 +- 2 files changed, 46 insertions(+), 21 deletions(-) diff --git a/qutebrowser/qt.py b/qutebrowser/qt.py index f0ba25cd4..112bd20a8 100644 --- a/qutebrowser/qt.py +++ b/qutebrowser/qt.py @@ -22,40 +22,65 @@ # pylint: disable=unused-import,import-error import importlib +PyQt5 = PyQt6 = False try: import PyQt5 as pyqt # noqa: N813 + PyQt5 = True except ImportError: import PyQt6 as pyqt # type: ignore[import, no-redef] # noqa: N813 + PyQt6 = True # While upstream recommends using PyQt5.sip ever since PyQt5 5.11, some distributions # still package later versions of PyQt5 with a top-level "sip" rather than "PyQt5.sip". -# pylint: disable=ungrouped-imports try: - sip = importlib.import_module(f"{pyqt.__name__}.sip") + if PyQt5: + from PyQt5 import sip + elif PyQt6: + from PyQt6 import sip # type: ignore[no-redef] except ImportError: import sip # type: ignore[import, no-redef] -QtCore = importlib.import_module(f"{pyqt.__name__}.QtCore") -QtDBus = importlib.import_module(f"{pyqt.__name__}.QtDBus") -QtGui = importlib.import_module(f"{pyqt.__name__}.QtGui") -QtNetwork = importlib.import_module(f"{pyqt.__name__}.QtNetwork") -QtPrintSupport = importlib.import_module(f"{pyqt.__name__}.QtPrintSupport") -QtQml = importlib.import_module(f"{pyqt.__name__}.QtQml") -QtSql = importlib.import_module(f"{pyqt.__name__}.QtSql") -QtWidgets = importlib.import_module(f"{pyqt.__name__}.QtWidgets") +# pylint: disable=ungrouped-imports +if PyQt5: + from PyQt5 import QtCore + from PyQt5 import QtDBus + from PyQt5 import QtGui + from PyQt5 import QtNetwork + from PyQt5 import QtPrintSupport + from PyQt5 import QtQml + from PyQt5 import QtSql + from PyQt5 import QtWidgets +elif PyQt6: + from PyQt6 import QtCore # type: ignore[no-redef] + from PyQt6 import QtDBus # type: ignore[no-redef] + from PyQt6 import QtGui # type: ignore[no-redef] + from PyQt6 import QtNetwork # type: ignore[no-redef] + from PyQt6 import QtPrintSupport # type: ignore[no-redef] + from PyQt6 import QtQml # type: ignore[no-redef] + from PyQt6 import QtSql # type: ignore[no-redef] + from PyQt6 import QtWidgets # type: ignore[no-redef] try: - QtWebEngine = importlib.import_module(f"{pyqt.__name__}.QtWebEngine") - QtWebEngineCore = importlib.import_module(f"{pyqt.__name__}.QtWebEngineCore") - QtWebEngineWidgets = importlib.import_module(f"{pyqt.__name__}.QtWebEngineWidgets") + if PyQt5: + from PyQt5 import QtWebEngine + from PyQt5 import QtWebEngineCore + from PyQt5 import QtWebEngineWidgets + elif PyQt6: + from PyQt6 import QtWebEngine # type: ignore[no-redef] + from PyQt6 import QtWebEngineCore # type: ignore[no-redef] + from PyQt6 import QtWebEngineWidgets # type: ignore[no-redef] except ImportError: - QtWebEngine = None - QtWebEngineCore = None - QtWebEngineWidgets = None + QtWebEngine = None # type: ignore[assignment] + QtWebEngineCore = None # type: ignore[assignment] + QtWebEngineWidgets = None # type: ignore[assignment] try: - QtWebKit = importlib.import_module(f"{pyqt.__name__}.QtWebKit") - QtWebKitWidgets = importlib.import_module(f"{pyqt.__name__}.QtWebKitWidgets") + if PyQt5: + from PyQt5 import QtWebKit + from PyQt5 import QtWebKitWidgets + elif PyQt6: + from PyQt6 import QtWebKit # type: ignore[no-redef] + from PyQt6 import QtWebKitWidgets # type: ignore[no-redef] except ImportError: - QtWebKit = None - QtWebKitWidgets = None + QtWebKit = None # type: ignore[assignment] + QtWebKitWidgets = None # type: ignore[assignment] diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py index 28df9199d..6f6b00a88 100644 --- a/qutebrowser/utils/version.py +++ b/qutebrowser/utils/version.py @@ -39,7 +39,7 @@ from typing import (Mapping, Optional, Sequence, Tuple, ClassVar, Dict, cast, from qutebrowser.qt import QtWidgets, QtWebKit, QtWebEngine, QtNetwork if not QtWebKit: - qWebKitVersion = None # type: ignore[assignment] # noqa: N816 + qWebKitVersion = None if QtWebEngine: PYQT_WEBENGINE_VERSION_STR = QtWebEngine.PYQT_WEBENGINE_VERSION_STR else: -- cgit v1.2.3-54-g00ecf