From d6af5394542a96818ef8389227c7e4020f1c5f9f Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 14 Jun 2023 19:07:50 +0200 Subject: qt: Use warning instead if Qt was already imported --- qutebrowser/qt/machinery.py | 6 ++++-- tests/unit/test_qt_machinery.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/qutebrowser/qt/machinery.py b/qutebrowser/qt/machinery.py index e0a5e4cdd..15ff72b17 100644 --- a/qutebrowser/qt/machinery.py +++ b/qutebrowser/qt/machinery.py @@ -14,6 +14,7 @@ import sys import enum import html import argparse +import warnings import importlib import dataclasses from typing import Optional, Dict @@ -152,10 +153,11 @@ def _select_wrapper(args: Optional[argparse.Namespace]) -> SelectionInfo: - Otherwise, if the QUTE_QT_WRAPPER environment variable is set, use that. - Otherwise, use PyQt5 (FIXME:qt6 autoselect). """ + # If any Qt wrapper has been imported before this, something strange might + # be happening. for name in WRAPPERS: - # If any Qt wrapper has been imported before this, all hope is lost. if name in sys.modules: - raise Error(f"{name} already imported") + warnings.warn(f"{name} already imported", stacklevel=1) if args is not None and args.qt_wrapper is not None: assert args.qt_wrapper in WRAPPERS, args.qt_wrapper # ensured by argparse diff --git a/tests/unit/test_qt_machinery.py b/tests/unit/test_qt_machinery.py index d4e6a4736..53a715262 100644 --- a/tests/unit/test_qt_machinery.py +++ b/tests/unit/test_qt_machinery.py @@ -335,7 +335,7 @@ def test_select_wrapper( def test_select_wrapper_after_qt_import(monkeypatch: pytest.MonkeyPatch): monkeypatch.setitem(sys.modules, "PyQt6", None) - with pytest.raises(machinery.Error, match="PyQt6 already imported"): + with pytest.warns(UserWarning, match="PyQt6 already imported"): machinery._select_wrapper(args=None) -- cgit v1.2.3-54-g00ecf