summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimmy <jimmy@spalge.com>2022-04-17 11:00:43 +1200
committerJimmy <jimmy@spalge.com>2022-04-30 18:23:14 +1200
commitff96b06f54bbab231a5b859b7ba5c405edfa69df (patch)
treeecd4a6df56031f7faf0bb4b5376c6b238744d067
parentdee75f9c7741c70b73e86bc7259f40da3d4ca9b9 (diff)
downloadqutebrowser-ff96b06f54bbab231a5b859b7ba5c405edfa69df.tar.gz
qutebrowser-ff96b06f54bbab231a5b859b7ba5c405edfa69df.zip
Fix make earlyinit and version PyQt version independant
These require a bit of special casing due to how they handle imports.
-rw-r--r--qutebrowser/misc/earlyinit.py29
-rw-r--r--qutebrowser/utils/version.py8
2 files changed, 26 insertions, 11 deletions
diff --git a/qutebrowser/misc/earlyinit.py b/qutebrowser/misc/earlyinit.py
index 2c71804e7..d0396ced8 100644
--- a/qutebrowser/misc/earlyinit.py
+++ b/qutebrowser/misc/earlyinit.py
@@ -137,7 +137,14 @@ def init_faulthandler(fileobj=sys.__stderr__):
def check_pyqt():
"""Check if PyQt core modules (QtCore/QtWidgets) are installed."""
- for name in ['PyQt5.QtCore', 'PyQt5.QtWidgets']:
+ pyqt_name = "PyQt6"
+ try:
+ import PyQt5
+ pyqt_name = PyQt5.__name__
+ except ImportError:
+ pass
+
+ for name in [f'{pyqt_name}.QtCore', f'{pyqt_name}.QtWidgets']:
try:
importlib.import_module(name)
except ImportError as e:
@@ -228,13 +235,21 @@ def _check_modules(modules):
def check_libraries():
"""Check if all needed Python libraries are installed."""
+ pyqt_name = None
+ try:
+ import PyQt5
+ pyqt_name = PyQt5.__name__
+ except ImportError:
+ import PyQt6 # type: ignore[import]
+ pyqt_name = PyQt6.__name__
+
modules = {
'jinja2': _missing_str("jinja2"),
'yaml': _missing_str("PyYAML"),
- 'PyQt5.QtQml': _missing_str("PyQt5.QtQml"),
- 'PyQt5.QtSql': _missing_str("PyQt5.QtSql"),
- 'PyQt5.QtOpenGL': _missing_str("PyQt5.QtOpenGL"),
- 'PyQt5.QtDBus': _missing_str("PyQt5.QtDBus"),
+ f'{pyqt_name}.QtQml': _missing_str(f"{pyqt_name}.QtQml"),
+ f'{pyqt_name}.QtSql': _missing_str(f"{pyqt_name}.QtSql"),
+ f'{pyqt_name}.QtOpenGL': _missing_str(f"{pyqt_name}.QtOpenGL"),
+ f'{pyqt_name}.QtDBus': _missing_str(f"{pyqt_name}.QtDBus"),
}
if sys.version_info < (3, 9):
# Backport required
@@ -248,7 +263,8 @@ def configure_pyqt():
Doing this means we can't use the interactive shell anymore (which we don't
anyways), but we can use pdb instead.
"""
- from PyQt5 import QtCore
+ from qutebrowser.qt import QtCore, sip
+
QtCore.pyqtRemoveInputHook()
try:
QtCore.pyqt5_enable_new_onexit_scheme(True) # type: ignore[attr-defined]
@@ -256,7 +272,6 @@ def configure_pyqt():
# Added in PyQt 5.13 somewhere, going to be the default in 5.14
pass
- from qutebrowser.qt import sip
sip.enableoverflowchecking(True)
diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py
index 6f6b00a88..18a6d7e27 100644
--- a/qutebrowser/utils/version.py
+++ b/qutebrowser/utils/version.py
@@ -52,7 +52,7 @@ from qutebrowser.utils import log, utils, standarddir, usertypes, message, resou
from qutebrowser.misc import objects, earlyinit, sql, httpclient, pastebin, elf
from qutebrowser.browser import pdfjs
from qutebrowser.config import config
-from qutebrowser.qt import QtGui, QtCore
+from qutebrowser.qt import QtGui, QtCore, pyqt
if TYPE_CHECKING:
from qutebrowser.config import websettings
@@ -398,9 +398,9 @@ MODULE_INFO: Mapping[str, ModuleInfo] = collections.OrderedDict([
('pygments', ['__version__']),
('yaml', ['__version__']),
('adblock', ['__version__'], "0.3.2"),
- ('PyQt5.QtWebEngineWidgets', []),
- ('PyQt5.QtWebEngine', ['PYQT_WEBENGINE_VERSION_STR']),
- ('PyQt5.QtWebKitWidgets', []),
+ (f'{pyqt.__name__}.QtWebEngineWidgets', []),
+ (f'{pyqt.__name__}.QtWebEngine', ['PYQT_WEBENGINE_VERSION_STR']),
+ (f'{pyqt.__name__}.QtWebKitWidgets', []),
]
])