diff options
author | Daniƫl van Noord <13665637+DanielNoord@users.noreply.github.com> | 2022-09-09 09:52:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-09 09:52:43 +0200 |
commit | f29bdd4e04c8c144b378220434646b37a8e7d9a0 (patch) | |
tree | 23231076dbd0beb358de9ea5d4325a27f8af40f1 /pylint/config | |
parent | ef7a9108e1bc5d1052d41bf7eda0311610c39d73 (diff) | |
download | pylint-git-f29bdd4e04c8c144b378220434646b37a8e7d9a0.tar.gz |
Turn on ``check-untyped-defs`` in ``mypy`` (#7407)
Diffstat (limited to 'pylint/config')
-rw-r--r-- | pylint/config/__init__.py | 6 | ||||
-rw-r--r-- | pylint/config/arguments_manager.py | 10 | ||||
-rw-r--r-- | pylint/config/configuration_mixin.py | 9 | ||||
-rw-r--r-- | pylint/config/option.py | 21 | ||||
-rw-r--r-- | pylint/config/option_manager_mixin.py | 13 | ||||
-rw-r--r-- | pylint/config/option_parser.py | 2 | ||||
-rw-r--r-- | pylint/config/options_provider_mixin.py | 2 |
7 files changed, 38 insertions, 25 deletions
diff --git a/pylint/config/__init__.py b/pylint/config/__init__.py index 7dc96f0cf..9a0d71f40 100644 --- a/pylint/config/__init__.py +++ b/pylint/config/__init__.py @@ -31,8 +31,10 @@ from pylint.config.find_default_config_files import ( ) from pylint.config.option import Option from pylint.config.option_manager_mixin import OptionsManagerMixIn -from pylint.config.option_parser import OptionParser -from pylint.config.options_provider_mixin import OptionsProviderMixIn +from pylint.config.option_parser import OptionParser # type: ignore[attr-defined] +from pylint.config.options_provider_mixin import ( # type: ignore[attr-defined] + OptionsProviderMixIn, +) from pylint.constants import PYLINT_HOME, USER_HOME from pylint.utils import LinterStats diff --git a/pylint/config/arguments_manager.py b/pylint/config/arguments_manager.py index eda1a583d..92bbfac0f 100644 --- a/pylint/config/arguments_manager.py +++ b/pylint/config/arguments_manager.py @@ -38,8 +38,10 @@ from pylint.config.exceptions import ( ) from pylint.config.help_formatter import _HelpFormatter from pylint.config.option import Option -from pylint.config.option_parser import OptionParser -from pylint.config.options_provider_mixin import OptionsProviderMixIn +from pylint.config.option_parser import OptionParser # type: ignore[attr-defined] +from pylint.config.options_provider_mixin import ( # type: ignore[attr-defined] + OptionsProviderMixIn, +) from pylint.config.utils import _convert_option_to_argument, _parse_rich_type_value from pylint.constants import MAIN_CHECKER_NAME from pylint.typing import DirectoryNamespaceDict, OptionDict @@ -287,7 +289,7 @@ class _ArgumentsManager: ) # command line parser self.cmdline_parser = OptionParser(Option, usage=usage) - self.cmdline_parser.options_manager = self # type: ignore[attr-defined] + self.cmdline_parser.options_manager = self self._optik_option_attrs = set(self.cmdline_parser.option_class.ATTRS) def register_options_provider( @@ -632,7 +634,7 @@ class _ArgumentsManager: if value is None: continue setattr(config, attr, value) - return args + return args # type: ignore[return-value] def help(self, level: int | None = None) -> str: """Return the usage string based on the available options.""" diff --git a/pylint/config/configuration_mixin.py b/pylint/config/configuration_mixin.py index 7854ff733..e92faa2d6 100644 --- a/pylint/config/configuration_mixin.py +++ b/pylint/config/configuration_mixin.py @@ -3,9 +3,12 @@ # Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt import warnings +from typing import Any from pylint.config.option_manager_mixin import OptionsManagerMixIn -from pylint.config.options_provider_mixin import OptionsProviderMixIn +from pylint.config.options_provider_mixin import ( # type: ignore[attr-defined] + OptionsProviderMixIn, +) class ConfigurationMixIn(OptionsManagerMixIn, OptionsProviderMixIn): @@ -13,7 +16,7 @@ class ConfigurationMixIn(OptionsManagerMixIn, OptionsProviderMixIn): manager / providers model. """ - def __init__(self, *args, **kwargs): + def __init__(self, *args: Any, **kwargs: Any) -> None: # TODO: 3.0: Remove deprecated class warnings.warn( "ConfigurationMixIn has been deprecated and will be removed in pylint 3.0", @@ -24,7 +27,7 @@ class ConfigurationMixIn(OptionsManagerMixIn, OptionsProviderMixIn): OptionsManagerMixIn.__init__(self, *args, **kwargs) OptionsProviderMixIn.__init__(self) if not getattr(self, "option_groups", None): - self.option_groups = [] + self.option_groups: list[tuple[str, str]] = [] for _, optdict in self.options: try: gdef = (optdict["group"].upper(), "") diff --git a/pylint/config/option.py b/pylint/config/option.py index 1cef7aba2..b3924c4aa 100644 --- a/pylint/config/option.py +++ b/pylint/config/option.py @@ -9,7 +9,7 @@ import optparse # pylint: disable=deprecated-module import pathlib import re import warnings -from collections.abc import Sequence +from collections.abc import Callable, Sequence from re import Pattern from typing import Any @@ -107,7 +107,7 @@ def _py_version_validator(_, name, value): return value -VALIDATORS = { +VALIDATORS: dict[str, Callable[[Any, str, Any], Any] | Callable[[Any], Any]] = { "string": utils._unquote, "int": int, "float": float, @@ -128,14 +128,14 @@ VALIDATORS = { } -def _call_validator(opttype, optdict, option, value): +def _call_validator(opttype: str, optdict: Any, option: str, value: Any) -> Any: if opttype not in VALIDATORS: raise Exception(f'Unsupported type "{opttype}"') try: - return VALIDATORS[opttype](optdict, option, value) + return VALIDATORS[opttype](optdict, option, value) # type: ignore[call-arg] except TypeError: try: - return VALIDATORS[opttype](value) + return VALIDATORS[opttype](value) # type: ignore[call-arg] except Exception as e: raise optparse.OptionValueError( f"{option} value ({value!r}) should be of type {opttype}" @@ -186,23 +186,23 @@ class Option(optparse.Option): DeprecationWarning, ) super().__init__(*opts, **attrs) - if hasattr(self, "hide") and self.hide: + if hasattr(self, "hide") and self.hide: # type: ignore[attr-defined] self.help = optparse.SUPPRESS_HELP def _check_choice(self): if self.type in {"choice", "multiple_choice", "confidence"}: - if self.choices is None: + if self.choices is None: # type: ignore[attr-defined] raise optparse.OptionError( "must supply a list of choices for type 'choice'", self ) - if not isinstance(self.choices, (tuple, list)): + if not isinstance(self.choices, (tuple, list)): # type: ignore[attr-defined] raise optparse.OptionError( # pylint: disable-next=consider-using-f-string "choices must be a list of strings ('%s' supplied)" - % str(type(self.choices)).split("'")[1], + % str(type(self.choices)).split("'")[1], # type: ignore[attr-defined] self, ) - elif self.choices is not None: + elif self.choices is not None: # type: ignore[attr-defined] raise optparse.OptionError( f"must not supply choices for type {self.type!r}", self ) @@ -210,6 +210,7 @@ class Option(optparse.Option): optparse.Option.CHECK_METHODS[2] = _check_choice # type: ignore[index] def process(self, opt, value, values, parser): # pragma: no cover # Argparse + assert isinstance(self.dest, str) if self.callback and self.callback.__module__ == "pylint.lint.run": return 1 # First, convert the value(s) to the right type. Howl if any diff --git a/pylint/config/option_manager_mixin.py b/pylint/config/option_manager_mixin.py index 2f0aac75f..a07865ff6 100644 --- a/pylint/config/option_manager_mixin.py +++ b/pylint/config/option_manager_mixin.py @@ -2,6 +2,7 @@ # For details: https://github.com/PyCQA/pylint/blob/main/LICENSE # Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt + # pylint: disable=duplicate-code from __future__ import annotations @@ -19,7 +20,7 @@ from typing import Any, TextIO from pylint import utils from pylint.config.option import Option -from pylint.config.option_parser import OptionParser +from pylint.config.option_parser import OptionParser # type: ignore[attr-defined] from pylint.typing import OptionDict if sys.version_info >= (3, 11): @@ -56,10 +57,10 @@ def _patch_optparse(): # pylint: disable = redefined-variable-type orig_default = optparse.HelpFormatter try: - optparse.HelpFormatter.expand_default = _expand_default + optparse.HelpFormatter.expand_default = _expand_default # type: ignore[assignment] yield finally: - optparse.HelpFormatter.expand_default = orig_default + optparse.HelpFormatter.expand_default = orig_default # type: ignore[assignment] class OptionsManagerMixIn: @@ -131,7 +132,7 @@ class OptionsManagerMixIn: # add section to the config file if ( group_name != "DEFAULT" - and group_name not in self.cfgfile_parser._sections + and group_name not in self.cfgfile_parser._sections # type: ignore[attr-defined] ): self.cfgfile_parser.add_section(group_name) # add provider's specific options @@ -256,11 +257,11 @@ class OptionsManagerMixIn: with open(config_file, encoding="utf_8_sig") as fp: parser.read_file(fp) # normalize each section's title - for sect, values in list(parser._sections.items()): + for sect, values in list(parser._sections.items()): # type: ignore[attr-defined] if sect.startswith("pylint."): sect = sect[len("pylint.") :] if not sect.isupper() and values: - parser._sections[sect.upper()] = values + parser._sections[sect.upper()] = values # type: ignore[attr-defined] if not verbose: return diff --git a/pylint/config/option_parser.py b/pylint/config/option_parser.py index b58fad3a4..78984db34 100644 --- a/pylint/config/option_parser.py +++ b/pylint/config/option_parser.py @@ -2,6 +2,8 @@ # For details: https://github.com/PyCQA/pylint/blob/main/LICENSE # Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt +# type: ignore # Deprecated module. + import optparse # pylint: disable=deprecated-module import warnings diff --git a/pylint/config/options_provider_mixin.py b/pylint/config/options_provider_mixin.py index 5b20a290f..ef85149a9 100644 --- a/pylint/config/options_provider_mixin.py +++ b/pylint/config/options_provider_mixin.py @@ -2,6 +2,8 @@ # For details: https://github.com/PyCQA/pylint/blob/main/LICENSE # Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt +# type: ignore # Deprecated module. + import optparse # pylint: disable=deprecated-module import warnings |