From 01f4807eaf8d20dcc3802cd2febf9432568f3935 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 25 Mar 2024 12:15:03 +0100 Subject: mypy: Set local_partial_types = True This is going to be default behavior in mypy 2.0, see: - #8123 - https://mypy-lang.blogspot.com/2024/03/mypy-19-released.html - https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-local-partial-types --- .mypy.ini | 3 +++ qutebrowser/browser/network/proxy.py | 4 +++- qutebrowser/browser/qutescheme.py | 4 ++-- qutebrowser/browser/webengine/webenginesettings.py | 2 +- qutebrowser/commands/runners.py | 4 ++-- qutebrowser/config/config.py | 2 +- qutebrowser/config/configinit.py | 3 ++- qutebrowser/config/websettings.py | 2 +- qutebrowser/extensions/loader.py | 2 +- qutebrowser/keyinput/keyutils.py | 2 +- qutebrowser/misc/consolewidget.py | 4 ++-- qutebrowser/misc/ipc.py | 2 +- qutebrowser/misc/nativeeventfilter.py | 2 +- qutebrowser/qt/machinery.py | 4 ++-- qutebrowser/utils/log.py | 4 ++-- qutebrowser/utils/qtlog.py | 2 +- qutebrowser/utils/qtutils.py | 2 +- qutebrowser/utils/resources.py | 4 ++-- qutebrowser/utils/standarddir.py | 4 ++-- qutebrowser/utils/utils.py | 2 +- qutebrowser/utils/version.py | 2 +- 21 files changed, 33 insertions(+), 27 deletions(-) diff --git a/.mypy.ini b/.mypy.ini index ef34dbada..e987da336 100644 --- a/.mypy.ini +++ b/.mypy.ini @@ -29,6 +29,9 @@ pretty = True ### FIXME:v4 get rid of this no_implicit_optional = False +### Future default behavior +local_partial_types = True + [mypy-hunter] # https://github.com/ionelmc/python-hunter/issues/43 ignore_missing_imports = True diff --git a/qutebrowser/browser/network/proxy.py b/qutebrowser/browser/network/proxy.py index f0c511853..62872d68e 100644 --- a/qutebrowser/browser/network/proxy.py +++ b/qutebrowser/browser/network/proxy.py @@ -4,6 +4,8 @@ """Handling of proxies.""" +from typing import Optional + from qutebrowser.qt.core import QUrl, pyqtSlot from qutebrowser.qt.network import QNetworkProxy, QNetworkProxyFactory @@ -13,7 +15,7 @@ from qutebrowser.misc import objects from qutebrowser.browser.network import pac -application_factory = None +application_factory: Optional["ProxyFactory"] = None def init(): diff --git a/qutebrowser/browser/qutescheme.py b/qutebrowser/browser/qutescheme.py index f325ff9e3..508d510d7 100644 --- a/qutebrowser/browser/qutescheme.py +++ b/qutebrowser/browser/qutescheme.py @@ -32,10 +32,10 @@ from qutebrowser.qt import sip pyeval_output = ":pyeval was never called" -csrf_token = None +csrf_token: Optional[str] = None -_HANDLERS = {} +_HANDLERS: Dict[str, "_HandlerCallable"] = {} class Error(Exception): diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index 2b375a7b0..78a4946ad 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -37,7 +37,7 @@ private_profile: Optional[QWebEngineProfile] = None # The global WebEngineSettings object _global_settings = cast('WebEngineSettings', None) -parsed_user_agent = None +parsed_user_agent: Optional[websettings.UserAgent] = None _qute_scheme_handler = cast(webenginequtescheme.QuteSchemeHandler, None) _req_interceptor = cast('interceptor.RequestInterceptor', None) diff --git a/qutebrowser/commands/runners.py b/qutebrowser/commands/runners.py index 1ad563c5d..0d63d0021 100644 --- a/qutebrowser/commands/runners.py +++ b/qutebrowser/commands/runners.py @@ -7,7 +7,7 @@ import traceback import re import contextlib -from typing import TYPE_CHECKING, Callable, Dict, Iterator, Mapping, MutableMapping +from typing import TYPE_CHECKING, Callable, Dict, Tuple, Iterator, Mapping, MutableMapping from qutebrowser.qt.core import pyqtSlot, QUrl, QObject @@ -21,7 +21,7 @@ if TYPE_CHECKING: _ReplacementFunction = Callable[['tabbedbrowser.TabbedBrowser'], str] -last_command = {} +last_command: Dict[usertypes.KeyMode, Tuple[str, int]] = {} def _url(tabbed_browser): diff --git a/qutebrowser/config/config.py b/qutebrowser/config/config.py index 573f25fa1..cb7fe77b3 100644 --- a/qutebrowser/config/config.py +++ b/qutebrowser/config/config.py @@ -29,7 +29,7 @@ key_instance = cast('KeyConfig', None) cache = cast('configcache.ConfigCache', None) # Keeping track of all change filters to validate them later. -change_filters = [] +change_filters: List["change_filter"] = [] # Sentinel UNSET = object() diff --git a/qutebrowser/config/configinit.py b/qutebrowser/config/configinit.py index 5d000c3ec..a08ddb619 100644 --- a/qutebrowser/config/configinit.py +++ b/qutebrowser/config/configinit.py @@ -7,6 +7,7 @@ import argparse import os.path import sys +from typing import Optional from qutebrowser.qt.widgets import QMessageBox @@ -19,7 +20,7 @@ from qutebrowser.misc import msgbox, objects, savemanager # Error which happened during init, so we can show a message box. -_init_errors = None +_init_errors: Optional[configexc.ConfigFileErrors] = None def early_init(args: argparse.Namespace) -> None: diff --git a/qutebrowser/config/websettings.py b/qutebrowser/config/websettings.py index 9f5bf92d0..7824ae258 100644 --- a/qutebrowser/config/websettings.py +++ b/qutebrowser/config/websettings.py @@ -246,7 +246,7 @@ def clear_private_data() -> None: elif objects.backend == usertypes.Backend.QtWebKit: from qutebrowser.browser.webkit import cookies assert cookies.ram_cookie_jar is not None - cookies.ram_cookie_jar.setAllCookies([]) # type: ignore[unreachable] + cookies.ram_cookie_jar.setAllCookies([]) else: raise utils.Unreachable(objects.backend) diff --git a/qutebrowser/extensions/loader.py b/qutebrowser/extensions/loader.py index b5b232c5a..ff9974d9d 100644 --- a/qutebrowser/extensions/loader.py +++ b/qutebrowser/extensions/loader.py @@ -21,7 +21,7 @@ from qutebrowser.misc import objects # ModuleInfo objects for all loaded plugins -_module_infos = [] +_module_infos: List["ModuleInfo"] = [] InitHookType = Callable[['InitContext'], None] ConfigChangedHookType = Callable[[], None] diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py index af19bb61c..54b6e88b1 100644 --- a/qutebrowser/keyinput/keyutils.py +++ b/qutebrowser/keyinput/keyutils.py @@ -26,7 +26,7 @@ from qutebrowser.qt.gui import QKeySequence, QKeyEvent if machinery.IS_QT6: from qutebrowser.qt.core import QKeyCombination else: - QKeyCombination = None # QKeyCombination was added in Qt 6 + QKeyCombination: None = None # QKeyCombination was added in Qt 6 from qutebrowser.utils import utils, qtutils, debug diff --git a/qutebrowser/misc/consolewidget.py b/qutebrowser/misc/consolewidget.py index b489aaf36..08f5dc5ff 100644 --- a/qutebrowser/misc/consolewidget.py +++ b/qutebrowser/misc/consolewidget.py @@ -6,7 +6,7 @@ import sys import code -from typing import MutableSequence +from typing import MutableSequence, Optional from qutebrowser.qt.core import pyqtSignal, pyqtSlot, Qt from qutebrowser.qt.widgets import QTextEdit, QWidget, QVBoxLayout, QApplication @@ -17,7 +17,7 @@ from qutebrowser.misc import cmdhistory, miscwidgets from qutebrowser.utils import utils, objreg -console_widget = None +console_widget: Optional["ConsoleWidget"] = None class ConsoleLineEdit(miscwidgets.CommandLineEdit): diff --git a/qutebrowser/misc/ipc.py b/qutebrowser/misc/ipc.py index 2dc34c886..21a3352d6 100644 --- a/qutebrowser/misc/ipc.py +++ b/qutebrowser/misc/ipc.py @@ -28,7 +28,7 @@ PROTOCOL_VERSION = 1 # The ipc server instance -server = None +server: Optional["IPCServer"] = None def _get_socketname_windows(basedir): diff --git a/qutebrowser/misc/nativeeventfilter.py b/qutebrowser/misc/nativeeventfilter.py index 9b1bbb97c..06533bd42 100644 --- a/qutebrowser/misc/nativeeventfilter.py +++ b/qutebrowser/misc/nativeeventfilter.py @@ -20,7 +20,7 @@ from qutebrowser.utils import log # Needs to be saved to avoid garbage collection -_instance = None +_instance: Optional["NativeEventFilter"] = None # Using C-style naming for C structures in this file # pylint: disable=invalid-name diff --git a/qutebrowser/qt/machinery.py b/qutebrowser/qt/machinery.py index 616c7ccfc..f9e3721f8 100644 --- a/qutebrowser/qt/machinery.py +++ b/qutebrowser/qt/machinery.py @@ -34,7 +34,7 @@ from qutebrowser.utils import log # sed -i 's/_WRAPPER_OVERRIDE = .*/_WRAPPER_OVERRIDE = "PyQt6"/' qutebrowser/qt/machinery.py # # Users: Set the QUTE_QT_WRAPPER environment variable to change the default wrapper. -_WRAPPER_OVERRIDE = None +_WRAPPER_OVERRIDE = None # type: ignore[var-annotated] WRAPPERS = [ "PyQt6", @@ -190,7 +190,7 @@ def _select_wrapper(args: Optional[argparse.Namespace]) -> SelectionInfo: return SelectionInfo(wrapper=env_wrapper, reason=SelectionReason.env) if _WRAPPER_OVERRIDE is not None: - assert _WRAPPER_OVERRIDE in WRAPPERS # type: ignore[unreachable] + assert _WRAPPER_OVERRIDE in WRAPPERS return SelectionInfo(wrapper=_WRAPPER_OVERRIDE, reason=SelectionReason.override) return _autoselect_wrapper() diff --git a/qutebrowser/utils/log.py b/qutebrowser/utils/log.py index 3e3b407b0..9695ec5a2 100644 --- a/qutebrowser/utils/log.py +++ b/qutebrowser/utils/log.py @@ -31,7 +31,7 @@ if TYPE_CHECKING: from qutebrowser.config import config as configmodule _log_inited = False -_args = None +_args: Optional[argparse.Namespace] = None COLORS = ['black', 'red', 'green', 'yellow', 'blue', 'purple', 'cyan', 'white'] COLOR_ESCAPES = {color: '\033[{}m'.format(i) @@ -146,7 +146,7 @@ LOGGER_NAMES = [ ram_handler: Optional['RAMHandler'] = None console_handler: Optional[logging.Handler] = None -console_filter = None +console_filter: Optional["LogFilter"] = None def stub(suffix: str = '') -> None: diff --git a/qutebrowser/utils/qtlog.py b/qutebrowser/utils/qtlog.py index 1de9181cf..78b48ebee 100644 --- a/qutebrowser/utils/qtlog.py +++ b/qutebrowser/utils/qtlog.py @@ -15,7 +15,7 @@ from typing import Iterator, Optional from qutebrowser.qt import core as qtcore from qutebrowser.utils import log -_args = None +_args: Optional[argparse.Namespace] = None def init(args: argparse.Namespace) -> None: diff --git a/qutebrowser/utils/qtutils.py b/qutebrowser/utils/qtutils.py index 89175ca4e..12c98cc1d 100644 --- a/qutebrowser/utils/qtutils.py +++ b/qutebrowser/utils/qtutils.py @@ -736,4 +736,4 @@ else: def add_optional(obj: Optional[_T]) -> Optional[_T]: return obj - QT_NONE = None + QT_NONE: None = None diff --git a/qutebrowser/utils/resources.py b/qutebrowser/utils/resources.py index 60d90fd31..a40f9d2bd 100644 --- a/qutebrowser/utils/resources.py +++ b/qutebrowser/utils/resources.py @@ -9,7 +9,7 @@ import sys import contextlib import posixpath import pathlib -from typing import Iterator, Iterable, Union +from typing import Iterator, Iterable, Union, Dict # We cannot use the stdlib version on 3.8 because we need the files() API. @@ -25,7 +25,7 @@ else: # pragma: no cover from importlib_resources.abc import Traversable import qutebrowser -_cache = {} +_cache: Dict[str, str] = {} _ResourceType = Union[Traversable, pathlib.Path] diff --git a/qutebrowser/utils/standarddir.py b/qutebrowser/utils/standarddir.py index 2d2ae53f9..026376dc2 100644 --- a/qutebrowser/utils/standarddir.py +++ b/qutebrowser/utils/standarddir.py @@ -10,7 +10,7 @@ import sys import contextlib import enum import argparse -from typing import Iterator, Optional +from typing import Iterator, Optional, Dict from qutebrowser.qt.core import QStandardPaths from qutebrowser.qt.widgets import QApplication @@ -18,7 +18,7 @@ from qutebrowser.qt.widgets import QApplication from qutebrowser.utils import log, debug, utils, version, qtutils # The cached locations -_locations = {} +_locations: Dict["_Location", str] = {} class _Location(enum.Enum): diff --git a/qutebrowser/utils/utils.py b/qutebrowser/utils/utils.py index a9de4bc00..11c160c9e 100644 --- a/qutebrowser/utils/utils.py +++ b/qutebrowser/utils/utils.py @@ -38,7 +38,7 @@ except ImportError: # pragma: no cover from qutebrowser.utils import log -fake_clipboard = None +fake_clipboard: Optional[str] = None log_clipboard = False is_mac = sys.platform.startswith('darwin') diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py index 59da5b5f0..58772b3db 100644 --- a/qutebrowser/utils/version.py +++ b/qutebrowser/utils/version.py @@ -78,7 +78,7 @@ class DistributionInfo: pretty: str -pastebin_url = None +pastebin_url: Optional[str] = None class Distribution(enum.Enum): -- cgit v1.2.3-54-g00ecf