diff options
author | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2022-06-04 17:28:42 +0200 |
---|---|---|
committer | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2022-06-05 23:49:01 +0200 |
commit | 2a040b9837df8988496197413c973dc15bfafd37 (patch) | |
tree | 5c578f5cbc00606f4d4839663becb04043cbd110 | |
parent | b6b9bc58087894a7f7dd84f34c1174d308cb5b70 (diff) | |
download | pylint-git-2a040b9837df8988496197413c973dc15bfafd37.tar.gz |
[refactor] Callback for disabling or enabling option use a base class
-rw-r--r-- | pylint/config/callback_actions.py | 55 | ||||
-rw-r--r-- | pylint/lint/pylinter.py | 7 |
2 files changed, 37 insertions, 25 deletions
diff --git a/pylint/config/callback_actions.py b/pylint/config/callback_actions.py index f8afefe77..f1a7bece0 100644 --- a/pylint/config/callback_actions.py +++ b/pylint/config/callback_actions.py @@ -12,7 +12,7 @@ import abc import argparse import sys import warnings -from collections.abc import Sequence +from collections.abc import Callable, Sequence from pathlib import Path from typing import TYPE_CHECKING, Any @@ -365,28 +365,49 @@ class _AccessLinterObjectAction(_CallbackAction): raise NotImplementedError # pragma: no cover -class _DisableAction(_AccessLinterObjectAction): - """Callback action for disabling a message.""" +class _XableAction(_AccessLinterObjectAction): + """Callback action for enabling or disabling a message.""" - def __call__( + def _call( self, - parser: argparse.ArgumentParser, - namespace: argparse.Namespace, + xabling_function: Callable[[str], None], values: str | Sequence[Any] | None, - option_string: str | None = "--disable", - ) -> None: + option_string: str | None, + ): assert isinstance(values, (tuple, list)) - msgids = utils._check_csv(values[0]) - for msgid in msgids: + for msgid in utils._check_csv(values[0]): try: - self.linter.disable(msgid) + xabling_function(msgid) except exceptions.UnknownMessageError: self.linter._stashed_messages[self.linter.current_name].append( (option_string, msgid) ) + @abc.abstractmethod + def __call__( + self, + parser: argparse.ArgumentParser, + namespace: argparse.Namespace, + values: str | Sequence[Any] | None, + option_string: str | None = "--disable", + ) -> None: + raise NotImplementedError # pragma: no cover -class _EnableAction(_AccessLinterObjectAction): + +class _DisableAction(_XableAction): + """Callback action for disabling a message.""" + + def __call__( + self, + parser: argparse.ArgumentParser, + namespace: argparse.Namespace, + values: str | Sequence[Any] | None, + option_string: str | None = "--disable", + ) -> None: + self._call(self.linter.disable, values, option_string) + + +class _EnableAction(_XableAction): """Callback action for enabling a message.""" def __call__( @@ -396,15 +417,7 @@ class _EnableAction(_AccessLinterObjectAction): values: str | Sequence[Any] | None, option_string: str | None = "--enable", ) -> None: - assert isinstance(values, (tuple, list)) - msgids = utils._check_csv(values[0]) - for msgid in msgids: - try: - self.linter.enable(msgid) - except exceptions.UnknownMessageError: - self.linter._stashed_messages[self.linter.current_name].append( - (option_string, msgid) - ) + self._call(self.linter.enable, values, option_string) class _OutputFormatAction(_AccessLinterObjectAction): diff --git a/pylint/lint/pylinter.py b/pylint/lint/pylinter.py index ab789a9a4..613c9eba2 100644 --- a/pylint/lint/pylinter.py +++ b/pylint/lint/pylinter.py @@ -1227,13 +1227,12 @@ class PyLinter( ) def _emit_stashed_messages(self) -> None: - for modname in self._stashed_messages: + for modname, values in self._stashed_messages.items(): self.linter.set_current_module(modname) - values = self._stashed_messages[modname] - for option_string, msg_id in values: + for option_string, msgid in values: self.add_message( "bad-option-value", - args=(option_string, msg_id), + args=(option_string, msgid), line=0, confidence=HIGH, ) |