diff options
author | Florian Bruhin <me@the-compiler.org> | 2022-04-25 11:44:33 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2022-04-25 17:23:16 +0200 |
commit | 737fafd313b14d7c1c8f25f17ab8afbbd9eab888 (patch) | |
tree | 2ed465f2c827e9b111bf8f1336bad304324e033a | |
parent | a20bb67a878b2e68abf8268c1b0a27f018d01352 (diff) | |
download | qutebrowser-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.py | 13 | ||||
-rw-r--r-- | qutebrowser/browser/webkit/webkitinspector.py | 2 |
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: |