Skip to content

Commit 4621ad5

Browse files
[refactor] Callback for disabling or enabling option use a base class
1 parent 9706473 commit 4621ad5

File tree

2 files changed

+37
-25
lines changed

2 files changed

+37
-25
lines changed

pylint/config/callback_actions.py

+34-21
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import argparse
1313
import sys
1414
import warnings
15-
from collections.abc import Sequence
15+
from collections.abc import Callable, Sequence
1616
from pathlib import Path
1717
from typing import TYPE_CHECKING, Any
1818

@@ -365,28 +365,49 @@ def __call__(
365365
raise NotImplementedError # pragma: no cover
366366

367367

368-
class _DisableAction(_AccessLinterObjectAction):
369-
"""Callback action for disabling a message."""
368+
class _XableAction(_AccessLinterObjectAction):
369+
"""Callback action for enabling or disabling a message."""
370370

371-
def __call__(
371+
def _call(
372372
self,
373-
parser: argparse.ArgumentParser,
374-
namespace: argparse.Namespace,
373+
xabling_function: Callable[[str], None],
375374
values: str | Sequence[Any] | None,
376-
option_string: str | None = "--disable",
377-
) -> None:
375+
option_string: str | None,
376+
):
378377
assert isinstance(values, (tuple, list))
379-
msgids = utils._check_csv(values[0])
380-
for msgid in msgids:
378+
for msgid in utils._check_csv(values[0]):
381379
try:
382-
self.linter.disable(msgid)
380+
xabling_function(msgid)
383381
except exceptions.UnknownMessageError:
384382
self.linter._stashed_messages[self.linter.current_name].append(
385383
(option_string, msgid)
386384
)
387385

386+
@abc.abstractmethod
387+
def __call__(
388+
self,
389+
parser: argparse.ArgumentParser,
390+
namespace: argparse.Namespace,
391+
values: str | Sequence[Any] | None,
392+
option_string: str | None = "--disable",
393+
) -> None:
394+
raise NotImplementedError # pragma: no cover
388395

389-
class _EnableAction(_AccessLinterObjectAction):
396+
397+
class _DisableAction(_XableAction):
398+
"""Callback action for disabling a message."""
399+
400+
def __call__(
401+
self,
402+
parser: argparse.ArgumentParser,
403+
namespace: argparse.Namespace,
404+
values: str | Sequence[Any] | None,
405+
option_string: str | None = "--disable",
406+
) -> None:
407+
self._call(self.linter.disable, values, option_string)
408+
409+
410+
class _EnableAction(_XableAction):
390411
"""Callback action for enabling a message."""
391412

392413
def __call__(
@@ -396,15 +417,7 @@ def __call__(
396417
values: str | Sequence[Any] | None,
397418
option_string: str | None = "--enable",
398419
) -> None:
399-
assert isinstance(values, (tuple, list))
400-
msgids = utils._check_csv(values[0])
401-
for msgid in msgids:
402-
try:
403-
self.linter.enable(msgid)
404-
except exceptions.UnknownMessageError:
405-
self.linter._stashed_messages[self.linter.current_name].append(
406-
(option_string, msgid)
407-
)
420+
self._call(self.linter.enable, values, option_string)
408421

409422

410423
class _OutputFormatAction(_AccessLinterObjectAction):

pylint/lint/pylinter.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -1203,13 +1203,12 @@ def add_ignored_message(
12031203
)
12041204

12051205
def _emit_stashed_messages(self) -> None:
1206-
for modname in self._stashed_messages:
1206+
for modname, values in self._stashed_messages.items():
12071207
self.linter.set_current_module(modname)
1208-
values = self._stashed_messages[modname]
1209-
for option_string, msg_id in values:
1208+
for option_string, msgid in values:
12101209
self.add_message(
12111210
"bad-option-value",
1212-
args=(option_string, msg_id),
1211+
args=(option_string, msgid),
12131212
line=0,
12141213
confidence=HIGH,
12151214
)

0 commit comments

Comments
 (0)