1212import argparse
1313import sys
1414import warnings
15- from collections .abc import Sequence
15+ from collections .abc import Callable , Sequence
1616from pathlib import Path
1717from 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
410423class _OutputFormatAction (_AccessLinterObjectAction ):
0 commit comments