summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimmy <jimmy@spalge.com>2022-04-16 21:40:22 +1200
committerJimmy <jimmy@spalge.com>2022-04-30 18:23:14 +1200
commit6f2040b16d4990695fb2d3385c23a0971097c266 (patch)
treea2561085d6be184bee4481d1ed5784bb2f6d46ed
parent802ef377dbddac79016824a161cba97345895790 (diff)
downloadqutebrowser-6f2040b16d4990695fb2d3385c23a0971097c266.tar.gz
qutebrowser-6f2040b16d4990695fb2d3385c23a0971097c266.zip
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
-rw-r--r--qutebrowser/qt.py65
-rw-r--r--qutebrowser/utils/version.py2
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: