summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2022-04-25 11:44:33 +0200
committerFlorian Bruhin <me@the-compiler.org>2022-04-25 17:23:16 +0200
commit737fafd313b14d7c1c8f25f17ab8afbbd9eab888 (patch)
tree2ed465f2c827e9b111bf8f1336bad304324e033a
parenta20bb67a878b2e68abf8268c1b0a27f018d01352 (diff)
downloadqutebrowser-737fafd313b14d7c1c8f25f17ab8afbbd9eab888.tar.gz
qutebrowser-737fafd313b14d7c1c8f25f17ab8afbbd9eab888.zip
mypy: Fix inspector typing
The previous solution with making AbstractInspector know about the concrete inspector types results in Liskov issues for the backend-specific overrides: https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides So, for now, let's just declare them as Any. Perhaps we should have a typing.Protocol to unify the two, as they don't share a common base class. See #7098.
-rw-r--r--qutebrowser/browser/inspector.py13
-rw-r--r--qutebrowser/browser/webkit/webkitinspector.py2
2 files changed, 5 insertions, 10 deletions
diff --git a/qutebrowser/browser/inspector.py b/qutebrowser/browser/inspector.py
index 51cad3709..017a54e9f 100644
--- a/qutebrowser/browser/inspector.py
+++ b/qutebrowser/browser/inspector.py
@@ -22,7 +22,7 @@
import base64
import binascii
import enum
-from typing import cast, Optional, Union, TYPE_CHECKING
+from typing import cast, Optional, Any, TYPE_CHECKING
from PyQt5.QtWidgets import QWidget
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QEvent
@@ -34,13 +34,9 @@ from qutebrowser.utils import log, usertypes
from qutebrowser.keyinput import modeman
from qutebrowser.misc import miscwidgets
-if TYPE_CHECKING:
- from PyQt5.QtWebKitWidgets import QWebInspector, QWebPage
- from PyQt5.QtWebEngineWidgets import QWebEnginePage
- from qutebrowser.browser.webengine import webengineinspector
-
-_WidgetType = Union["QWebInspector", "webengineinspector.WebEngineInspectorView"]
+# FIXME:mypy How to annotate this properly without running into Liskov issues?
+_WidgetType = Any
class Position(enum.Enum):
@@ -206,7 +202,8 @@ class AbstractWebInspector(QWidget):
geom = base64.b64encode(data).decode('ASCII')
configfiles.state['inspector']['window'] = geom
- def inspect(self, page: Union["QWebPage", "QWebEnginePage"]) -> None:
+ # FIXME:mypy How to annotate 'page' properly without running into Liskov issues?
+ def inspect(self, page: Any) -> None:
"""Inspect the given QWeb(Engine)Page."""
raise NotImplementedError
diff --git a/qutebrowser/browser/webkit/webkitinspector.py b/qutebrowser/browser/webkit/webkitinspector.py
index 2d4b95caf..4d9785cbe 100644
--- a/qutebrowser/browser/webkit/webkitinspector.py
+++ b/qutebrowser/browser/webkit/webkitinspector.py
@@ -31,8 +31,6 @@ class WebKitInspector(inspector.AbstractWebInspector):
"""A web inspector for QtWebKit."""
- _widget = QWebInspector
-
def __init__(self, splitter: miscwidgets.InspectorSplitter,
win_id: int,
parent: QWidget = None) -> None: