summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimmy <jimmy@spalge.com>2022-04-16 14:57:30 +1200
committerJimmy <jimmy@spalge.com>2022-04-30 17:47:17 +1200
commit352cb15788ac61a5214a7c07ef753c7e2e48c302 (patch)
tree765b2edf47c9dcb63c2c837cc58859c19623914d
parentdf32aa482c05312e0244e7da5449b10b9a25ab34 (diff)
downloadqutebrowser-352cb15788ac61a5214a7c07ef753c7e2e48c302.tar.gz
qutebrowser-352cb15788ac61a5214a7c07ef753c7e2e48c302.zip
Import PyQt modules into qt.py as a wrapper.
Import all the PyQt modules that we use into qt.py so that we only have to have a PyQt5/6 conditional in one place. I'm using importlib instead of try/excepts to reduce the amount of duplication and because you can't do `from pyqt import QtCore` when pyqt is a local variable. TODO: * maybe some more conditional imports (for earlyinit stuff like no QSsl support) * adapt places looking for import errors to just importing None now * decide whether being in qt.py is fine or we should move to `qt/__init__.py`
-rw-r--r--qutebrowser/qt.py36
1 files changed, 34 insertions, 2 deletions
diff --git a/qutebrowser/qt.py b/qutebrowser/qt.py
index 5e0f80538..f0ba25cd4 100644
--- a/qutebrowser/qt.py
+++ b/qutebrowser/qt.py
@@ -19,11 +19,43 @@
"""Wrappers around Qt/PyQt code."""
-# pylint: disable=unused-import
+# pylint: disable=unused-import,import-error
+import importlib
+
+try:
+ import PyQt5 as pyqt # noqa: N813
+except ImportError:
+ import PyQt6 as pyqt # type: ignore[import, no-redef] # noqa: N813
# 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:
- from PyQt5 import sip
+ sip = importlib.import_module(f"{pyqt.__name__}.sip")
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")
+
+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")
+except ImportError:
+ QtWebEngine = None
+ QtWebEngineCore = None
+ QtWebEngineWidgets = None
+
+try:
+ QtWebKit = importlib.import_module(f"{pyqt.__name__}.QtWebKit")
+ QtWebKitWidgets = importlib.import_module(f"{pyqt.__name__}.QtWebKitWidgets")
+except ImportError:
+ QtWebKit = None
+ QtWebKitWidgets = None