Add type hints for utils.message
This commit is contained in:
parent
8164682f73
commit
218c8bbf1e
4
mypy.ini
4
mypy.ini
|
|
@ -137,3 +137,7 @@ disallow_incomplete_defs = True
|
|||
[mypy-qutebrowser.utils.log]
|
||||
disallow_untyped_defs = True
|
||||
disallow_incomplete_defs = True
|
||||
|
||||
[mypy-qutebrowser.utils.message]
|
||||
disallow_untyped_defs = True
|
||||
disallow_incomplete_defs = True
|
||||
|
|
|
|||
|
|
@ -23,8 +23,9 @@
|
|||
"""Message singleton so we don't have to define unneeded signals."""
|
||||
|
||||
import traceback
|
||||
import typing
|
||||
|
||||
from PyQt5.QtCore import pyqtSignal, QObject
|
||||
from PyQt5.QtCore import pyqtSignal, QObject, QUrl
|
||||
|
||||
from qutebrowser.utils import usertypes, log, utils
|
||||
|
||||
|
|
@ -82,11 +83,14 @@ def info(message: str, *, replace: bool = False) -> None:
|
|||
global_bridge.show(usertypes.MessageLevel.info, message, replace)
|
||||
|
||||
|
||||
def _build_question(title, text=None, *, mode, default=None, abort_on=(),
|
||||
url=None, option=None):
|
||||
def _build_question(title: str,
|
||||
text: str = None, *,
|
||||
mode: usertypes.PromptMode,
|
||||
default: typing.Union[None, bool, str] = None,
|
||||
abort_on: typing.Iterable[pyqtSignal] = (),
|
||||
url: QUrl = None,
|
||||
option: str = None) -> usertypes.Question:
|
||||
"""Common function for ask/ask_async."""
|
||||
if not isinstance(mode, usertypes.PromptMode):
|
||||
raise TypeError("Mode {} is no PromptMode member!".format(mode))
|
||||
question = usertypes.Question()
|
||||
question.title = title
|
||||
question.text = text
|
||||
|
|
@ -106,7 +110,7 @@ def _build_question(title, text=None, *, mode, default=None, abort_on=(),
|
|||
return question
|
||||
|
||||
|
||||
def ask(*args, **kwargs):
|
||||
def ask(*args: typing.Any, **kwargs: typing.Any) -> typing.Any:
|
||||
"""Ask a modular question in the statusbar (blocking).
|
||||
|
||||
Args:
|
||||
|
|
@ -128,7 +132,10 @@ def ask(*args, **kwargs):
|
|||
return answer
|
||||
|
||||
|
||||
def ask_async(title, mode, handler, **kwargs):
|
||||
def ask_async(title: str,
|
||||
mode: usertypes.PromptMode,
|
||||
handler: typing.Callable[[typing.Any], None],
|
||||
**kwargs: typing.Any) -> None:
|
||||
"""Ask an async question in the statusbar.
|
||||
|
||||
Args:
|
||||
|
|
@ -144,8 +151,10 @@ def ask_async(title, mode, handler, **kwargs):
|
|||
global_bridge.ask(question, blocking=False)
|
||||
|
||||
|
||||
def confirm_async(*, yes_action, no_action=None, cancel_action=None,
|
||||
**kwargs):
|
||||
def confirm_async(*, yes_action: typing.Callable[[], None],
|
||||
no_action: typing.Callable[[], None] = None,
|
||||
cancel_action: typing.Callable[[], None] = None,
|
||||
**kwargs: typing.Any) -> usertypes.Question:
|
||||
"""Ask a yes/no question to the user and execute the given actions.
|
||||
|
||||
Args:
|
||||
|
|
@ -204,12 +213,15 @@ class GlobalMessageBridge(QObject):
|
|||
mode_left = pyqtSignal(usertypes.KeyMode)
|
||||
clear_messages = pyqtSignal()
|
||||
|
||||
def __init__(self, parent=None):
|
||||
def __init__(self, parent: QObject = None) -> None:
|
||||
super().__init__(parent)
|
||||
self._connected = False
|
||||
self._cache = []
|
||||
self._cache = [
|
||||
] # type: typing.List[typing.Tuple[usertypes.MessageLevel, str, bool]]
|
||||
|
||||
def ask(self, question, blocking, *, log_stack=False):
|
||||
def ask(self, question: usertypes.Question,
|
||||
blocking: bool, *,
|
||||
log_stack: bool = False) -> None:
|
||||
"""Ask a question to the user.
|
||||
|
||||
Note this method doesn't return the answer, it only blocks. The caller
|
||||
|
|
@ -223,14 +235,16 @@ class GlobalMessageBridge(QObject):
|
|||
"""
|
||||
self.ask_question.emit(question, blocking)
|
||||
|
||||
def show(self, level, text, replace=False):
|
||||
def show(self, level: usertypes.MessageLevel,
|
||||
text: str,
|
||||
replace: bool = False) -> None:
|
||||
"""Show the given message."""
|
||||
if self._connected:
|
||||
self.show_message.emit(level, text, replace)
|
||||
else:
|
||||
self._cache.append((level, text, replace))
|
||||
|
||||
def flush(self):
|
||||
def flush(self) -> None:
|
||||
"""Flush messages which accumulated while no handler was connected.
|
||||
|
||||
This is so we don't miss messages shown during some early init phase.
|
||||
|
|
@ -256,10 +270,10 @@ class MessageBridge(QObject):
|
|||
s_set_text = pyqtSignal(str)
|
||||
s_maybe_reset_text = pyqtSignal(str)
|
||||
|
||||
def __repr__(self):
|
||||
def __repr__(self) -> str:
|
||||
return utils.get_repr(self)
|
||||
|
||||
def set_text(self, text, *, log_stack=False):
|
||||
def set_text(self, text: str, *, log_stack: bool = False) -> None:
|
||||
"""Set the normal text of the statusbar.
|
||||
|
||||
Args:
|
||||
|
|
@ -270,7 +284,7 @@ class MessageBridge(QObject):
|
|||
log.message.debug(text)
|
||||
self.s_set_text.emit(text)
|
||||
|
||||
def maybe_reset_text(self, text, *, log_stack=False):
|
||||
def maybe_reset_text(self, text: str, *, log_stack: bool = False) -> None:
|
||||
"""Reset the text in the statusbar if it matches an expected text.
|
||||
|
||||
Args:
|
||||
|
|
|
|||
Loading…
Reference in New Issue