From c99b7c66e0ef3f471b0c35efd1fb1cd3ce795219 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 12 Jan 2021 13:50:43 +0100 Subject: dataclasses: Initial mypy fix See #6023 --- qutebrowser/browser/browsertab.py | 1 + qutebrowser/browser/hints.py | 10 +++++----- qutebrowser/browser/webengine/webenginetab.py | 1 + qutebrowser/commands/command.py | 8 +++++--- qutebrowser/commands/runners.py | 4 ++-- qutebrowser/completion/completer.py | 10 ++++++---- qutebrowser/components/misccommands.py | 1 + qutebrowser/misc/backendproblem.py | 6 +++--- 8 files changed, 24 insertions(+), 17 deletions(-) diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py index b78faacd2..26d5ed65d 100644 --- a/qutebrowser/browser/browsertab.py +++ b/qutebrowser/browser/browsertab.py @@ -869,6 +869,7 @@ class AbstractTabPrivate: """Show/hide (and if needed, create) the web inspector for this tab.""" tabdata = self._tab.data if tabdata.inspector is None: + assert tabdata.splitter is not None tabdata.inspector = inspector.create( splitter=tabdata.splitter, win_id=self._tab.win_id) diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index e36d73321..4a8a9c761 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -28,7 +28,7 @@ import enum import dataclasses from string import ascii_lowercase from typing import (TYPE_CHECKING, Callable, Dict, Iterable, Iterator, List, Mapping, - MutableSequence, Optional, Sequence, Set) + MutableSequence, Optional, Sequence, Set, cast) from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, Qt, QUrl from PyQt5.QtWidgets import QLabel @@ -183,15 +183,15 @@ class HintContext: all_labels: List[HintLabel] = dataclasses.field(default_factory=list) labels: Dict[str, HintLabel] = dataclasses.field(default_factory=dict) - target: Optional[Target] = None - baseurl: Optional[QUrl] = None + target: Target = cast(Target, None) # FIXME + baseurl: QUrl = cast(QUrl, None) # FIXME to_follow: Optional[str] = None rapid: bool = False first_run: bool = True add_history: bool = False - filterstr: Optional[str] = None + filterstr: str = cast(str, None) # FIXME args: List[str] = dataclasses.field(default_factory=list) - tab: Optional['browsertab.AbstractTab'] = None + tab: 'browsertab.AbstractTab' = cast('browsertab.AbstractTab', None) # FIXME group: Optional[str] = None hint_mode: Optional[str] = None first: bool = False diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index c0b269665..efdc8a59e 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -1529,6 +1529,7 @@ class WebEngineTab(browsertab.AbstractTab): # However, self.url() is not available yet and the requested URL # might not match the URL we get from the error - so we just apply a # heuristic here. + assert self.data.last_navigation is not None if (show_non_overr_cert_error and url.matches(self.data.last_navigation.url, QUrl.RemoveScheme)): self._show_error_page(url, str(error)) diff --git a/qutebrowser/commands/command.py b/qutebrowser/commands/command.py index 36dc73d5d..388fcfb81 100644 --- a/qutebrowser/commands/command.py +++ b/qutebrowser/commands/command.py @@ -24,13 +24,15 @@ import collections import traceback import typing import dataclasses -from typing import Any, MutableMapping, MutableSequence, Tuple, Union, List, Optional +from typing import (Any, MutableMapping, MutableSequence, Tuple, Union, List, Optional, + Callable) from qutebrowser.api import cmdutils from qutebrowser.commands import cmdexc, argparser from qutebrowser.utils import log, message, docutils, objreg, usertypes, utils from qutebrowser.utils import debug as debug_utils from qutebrowser.misc import objects +from qutebrowser.completion.models import completionmodel @dataclasses.dataclass @@ -42,8 +44,8 @@ class ArgInfo: hide: bool = False metavar: Optional[str] = None flag: Optional[str] = None - completion: Any = None # FIXME - choices: List[str] = None + completion: Optional[Callable[..., completionmodel.CompletionModel]] = None + choices: Optional[List[str]] = None class Command: diff --git a/qutebrowser/commands/runners.py b/qutebrowser/commands/runners.py index b4994ffec..2a30344cd 100644 --- a/qutebrowser/commands/runners.py +++ b/qutebrowser/commands/runners.py @@ -30,7 +30,7 @@ from PyQt5.QtCore import pyqtSlot, QUrl, QObject from qutebrowser.api import cmdutils from qutebrowser.config import config -from qutebrowser.commands import cmdexc +from qutebrowser.commands import cmdexc, command from qutebrowser.utils import message, objreg, qtutils, usertypes, utils from qutebrowser.misc import split, objects from qutebrowser.keyinput import macros, modeman @@ -48,7 +48,7 @@ class ParseResult: """The result of parsing a commandline.""" - cmd: Optional[str] + cmd: Optional[command.Command] args: Optional[List[str]] cmdline: List[str] diff --git a/qutebrowser/completion/completer.py b/qutebrowser/completion/completer.py index 5b9ac2a76..df54c5908 100644 --- a/qutebrowser/completion/completer.py +++ b/qutebrowser/completion/completer.py @@ -20,7 +20,7 @@ """Completer attached to a CompletionView.""" import dataclasses -from typing import Any +from typing import Any, TYPE_CHECKING from PyQt5.QtCore import pyqtSlot, QObject, QTimer @@ -29,6 +29,8 @@ from qutebrowser.commands import runners from qutebrowser.misc import objects from qutebrowser.utils import log, utils, debug, objreg from qutebrowser.completion.models import miscmodels +if TYPE_CHECKING: + from qutebrowser.browser import browsertab @dataclasses.dataclass @@ -36,10 +38,10 @@ class CompletionInfo: """Context passed into all completion functions.""" - config: Any # FIXME - keyconf: Any # FIXME + config: config.Config + keyconf: config.KeyConfig win_id: int - cur_tab: Any # FIXME + cur_tab: 'browsertab.AbstractTab' class Completer(QObject): diff --git a/qutebrowser/components/misccommands.py b/qutebrowser/components/misccommands.py index 85598f56a..b8906b7b0 100644 --- a/qutebrowser/components/misccommands.py +++ b/qutebrowser/components/misccommands.py @@ -339,6 +339,7 @@ def devtools(tab: apitypes.Tab, @cmdutils.argument('tab', value=cmdutils.Value.cur_tab) def devtools_focus(tab: apitypes.Tab) -> None: """Toggle focus between the devtools/tab.""" + assert tab.data.splitter is not None try: tab.data.splitter.cycle_focus() except apitypes.InspectorError as e: diff --git a/qutebrowser/misc/backendproblem.py b/qutebrowser/misc/backendproblem.py index 4d8cd80cc..2b31470b9 100644 --- a/qutebrowser/misc/backendproblem.py +++ b/qutebrowser/misc/backendproblem.py @@ -27,7 +27,7 @@ import enum import shutil import argparse import dataclasses -from typing import Any, List, Sequence, Tuple, Optional +from typing import Any, List, Sequence, Tuple, Optional, cast from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QDialog, QPushButton, QHBoxLayout, QVBoxLayout, QLabel, @@ -157,8 +157,8 @@ class _BackendImports: webkit_available: Optional[bool] = None webengine_available: Optional[bool] = None - webkit_error: Optional[str] = None - webengine_error: Optional[str] = None + webkit_error: str = cast(str, None) # FIXME + webengine_error: str = cast(str, None) # FIXME class _BackendProblemChecker: -- cgit v1.2.3-54-g00ecf