diff options
author | Jimmy <jimmy@spalge.com> | 2022-04-16 14:57:30 +1200 |
---|---|---|
committer | Jimmy <jimmy@spalge.com> | 2022-04-30 17:47:17 +1200 |
commit | 352cb15788ac61a5214a7c07ef753c7e2e48c302 (patch) | |
tree | 765b2edf47c9dcb63c2c837cc58859c19623914d | |
parent | df32aa482c05312e0244e7da5449b10b9a25ab34 (diff) | |
download | qutebrowser-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.py | 36 |
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 |