Skip to content

Commit

Permalink
mypy: Fix typing around browsertab/webkittab/webenginetab
Browse files Browse the repository at this point in the history
See #5368
See #4800
  • Loading branch information
The-Compiler committed May 9, 2020
1 parent 80dc7dd commit d848c51
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 8 deletions.
15 changes: 9 additions & 6 deletions qutebrowser/browser/browsertab.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import itertools
import typing
import functools
import typing

import attr
from PyQt5.QtCore import (pyqtSignal, pyqtSlot, QUrl, QObject, QSizeF, Qt,
Expand Down Expand Up @@ -71,7 +72,7 @@ def create(win_id: int,
mode_manager = modeman.instance(win_id)
if objects.backend == usertypes.Backend.QtWebEngine:
from qutebrowser.browser.webengine import webenginetab
tab_class = webenginetab.WebEngineTab
tab_class = webenginetab.WebEngineTab # type: typing.Type[AbstractTab]
else:
from qutebrowser.browser.webkit import webkittab
tab_class = webkittab.WebKitTab
Expand Down Expand Up @@ -438,16 +439,15 @@ class AbstractCaret(QObject):
follow_selected_done = pyqtSignal()

def __init__(self,
tab: 'AbstractTab',
mode_manager: modeman.ModeManager,
parent: QWidget = None) -> None:
super().__init__(parent)
self._tab = tab
self._widget = typing.cast(QWidget, None)
self.selection_enabled = False
self._mode_manager = mode_manager
mode_manager.entered.connect(self._on_mode_entered)
mode_manager.left.connect(self._on_mode_left)
# self._tab is set by subclasses so mypy knows its concrete type.

def _on_mode_entered(self, mode: usertypes.KeyMode) -> None:
raise NotImplementedError
Expand Down Expand Up @@ -689,9 +689,9 @@ class AbstractElements:
[typing.Optional['webelem.AbstractWebElement']], None]
_ErrorCallback = typing.Callable[[Exception], None]

def __init__(self, tab: 'AbstractTab') -> None:
def __init__(self) -> None:
self._widget = typing.cast(QWidget, None)
self._tab = tab
# self._tab is set by subclasses so mypy knows its concrete type.

def find_css(self, selector: str,
callback: _MultiCallback,
Expand Down Expand Up @@ -876,8 +876,11 @@ class AbstractTab(QWidget):
# for a given hostname anyways.
_insecure_hosts = set() # type: typing.Set[str]

def __init__(self, *, win_id: int, private: bool,
def __init__(self, *, win_id: int,
mode_manager: modeman.ModeManager,
private: bool,
parent: QWidget = None) -> None:
utils.unused(mode_manager) # needed for mypy
self.is_private = private
self.win_id = win_id
self.tab_id = next(tab_id_gen)
Expand Down
17 changes: 16 additions & 1 deletion qutebrowser/browser/webengine/webenginetab.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
from qutebrowser.misc import miscwidgets, objects
from qutebrowser.utils import (usertypes, qtutils, log, javascript, utils,
message, objreg, jinja, debug)
from qutebrowser.keyinput import modeman
from qutebrowser.qt import sip


Expand Down Expand Up @@ -336,6 +337,13 @@ class WebEngineCaret(browsertab.AbstractCaret):

"""QtWebEngine implementations related to moving the cursor/selection."""

def __init__(self,
tab: 'WebEngineTab',
mode_manager: modeman.ModeManager,
parent: QWidget = None) -> None:
super().__init__(mode_manager, parent)
self._tab = tab

def _flags(self):
"""Get flags to pass to JS."""
flags = set()
Expand Down Expand Up @@ -713,6 +721,10 @@ class WebEngineElements(browsertab.AbstractElements):

"""QtWebEngine implemementations related to elements on the page."""

def __init__(self, tab: 'WebEngineTab') -> None:
super().__init__()
self._tab = tab

def _js_cb_multiple(self, callback, error_cb, js_elems):
"""Handle found elements coming from JS and call the real callback.
Expand Down Expand Up @@ -1244,7 +1256,10 @@ class WebEngineTab(browsertab.AbstractTab):
abort_questions = pyqtSignal()

def __init__(self, *, win_id, mode_manager, private, parent=None):
super().__init__(win_id=win_id, private=private, parent=parent)
super().__init__(win_id=win_id,
mode_manager=mode_manager,
private=private,
parent=parent)
widget = webview.WebEngineView(tabdata=self.data, win_id=win_id,
private=private)
self.history = WebEngineHistory(tab=self)
Expand Down
18 changes: 17 additions & 1 deletion qutebrowser/browser/webkit/webkittab.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,14 @@
from PyQt5.QtGui import QIcon
from PyQt5.QtWebKitWidgets import QWebPage, QWebFrame
from PyQt5.QtWebKit import QWebSettings
from PyQt5.QtWidgets import QWidget
from PyQt5.QtPrintSupport import QPrinter

from qutebrowser.browser import browsertab, shared
from qutebrowser.browser.webkit import (webview, tabhistory, webkitelem,
webkitsettings)
from qutebrowser.utils import qtutils, usertypes, utils, log, debug
from qutebrowser.keyinput import modeman
from qutebrowser.qt import sip


Expand Down Expand Up @@ -172,6 +174,13 @@ class WebKitCaret(browsertab.AbstractCaret):

"""QtWebKit implementations related to moving the cursor/selection."""

def __init__(self,
tab: 'WebKitTab',
mode_manager: modeman.ModeManager,
parent: QWidget = None) -> None:
super().__init__(mode_manager, parent)
self._tab = tab

@pyqtSlot(usertypes.KeyMode)
def _on_mode_entered(self, mode):
if mode != usertypes.KeyMode.caret:
Expand Down Expand Up @@ -582,6 +591,10 @@ class WebKitElements(browsertab.AbstractElements):

"""QtWebKit implemementations related to elements on the page."""

def __init__(self, tab: 'WebKitTab') -> None:
super().__init__()
self._tab = tab

def find_css(self, selector, callback, error_cb, *, only_visible=False):
utils.unused(error_cb)
mainframe = self._widget.page().mainFrame()
Expand Down Expand Up @@ -699,7 +712,10 @@ class WebKitTab(browsertab.AbstractTab):
"""A QtWebKit tab in the browser."""

def __init__(self, *, win_id, mode_manager, private, parent=None):
super().__init__(win_id=win_id, private=private, parent=parent)
super().__init__(win_id=win_id,
mode_manager=mode_manager,
private=private,
parent=parent)
widget = webview.WebView(win_id=win_id, tab_id=self.tab_id,
private=private, tab=self)
if private:
Expand Down

0 comments on commit d848c51

Please sign in to comment.