summaryrefslogtreecommitdiff
path: root/pylint/config
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2022-09-09 09:52:43 +0200
committerGitHub <noreply@github.com>2022-09-09 09:52:43 +0200
commitf29bdd4e04c8c144b378220434646b37a8e7d9a0 (patch)
tree23231076dbd0beb358de9ea5d4325a27f8af40f1 /pylint/config
parentef7a9108e1bc5d1052d41bf7eda0311610c39d73 (diff)
downloadpylint-git-f29bdd4e04c8c144b378220434646b37a8e7d9a0.tar.gz
Turn on ``check-untyped-defs`` in ``mypy`` (#7407)
Diffstat (limited to 'pylint/config')
-rw-r--r--pylint/config/__init__.py6
-rw-r--r--pylint/config/arguments_manager.py10
-rw-r--r--pylint/config/configuration_mixin.py9
-rw-r--r--pylint/config/option.py21
-rw-r--r--pylint/config/option_manager_mixin.py13
-rw-r--r--pylint/config/option_parser.py2
-rw-r--r--pylint/config/options_provider_mixin.py2
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