summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Sassoulas <pierre.sassoulas@gmail.com>2022-06-04 17:28:42 +0200
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2022-06-05 23:49:01 +0200
commit2a040b9837df8988496197413c973dc15bfafd37 (patch)
tree5c578f5cbc00606f4d4839663becb04043cbd110
parentb6b9bc58087894a7f7dd84f34c1174d308cb5b70 (diff)
downloadpylint-git-2a040b9837df8988496197413c973dc15bfafd37.tar.gz
[refactor] Callback for disabling or enabling option use a base class
-rw-r--r--pylint/config/callback_actions.py55
-rw-r--r--pylint/lint/pylinter.py7
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,
)