diff options
author | Marc Mueller <30130371+cdce8p@users.noreply.github.com> | 2022-10-25 12:55:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-25 12:55:32 +0200 |
commit | 8c7af1e7bcad8b0717ab05863e5d79d82cb953b6 (patch) | |
tree | bf5b89a80417df003e630c28635ea0961ce990de | |
parent | b7e22417e43040618a1c16f4b9518cb40d3077eb (diff) | |
download | pylint-git-8c7af1e7bcad8b0717ab05863e5d79d82cb953b6.tar.gz |
Add default_enabled option to optional message dict (#7629)
-rw-r--r-- | doc/exts/pylint_messages.py | 10 | ||||
-rw-r--r-- | doc/whatsnew/fragments/7629.other | 4 | ||||
-rw-r--r-- | pylint/extensions/code_style.py | 5 | ||||
-rw-r--r-- | pylint/lint/pylinter.py | 3 | ||||
-rw-r--r-- | pylint/message/message_definition.py | 2 | ||||
-rw-r--r-- | pylint/typing.py | 1 |
6 files changed, 23 insertions, 2 deletions
diff --git a/doc/exts/pylint_messages.py b/doc/exts/pylint_messages.py index 0fcacf804..cef7c83a4 100644 --- a/doc/exts/pylint_messages.py +++ b/doc/exts/pylint_messages.py @@ -44,6 +44,7 @@ class MessageData(NamedTuple): checker_module_name: str checker_module_path: str shared: bool = False + default_enabled: bool = True MessagesDict = Dict[str, List[MessageData]] @@ -194,6 +195,7 @@ def _get_all_messages( checker_module.__name__, checker_module.__file__, message.shared, + message.default_enabled, ) msg_type = MSG_TYPES_DOC[message.msgid[0]] messages_dict[msg_type].append(message_data) @@ -271,7 +273,15 @@ def _generate_single_message_body(message: MessageData) -> str: **Description:** *{message.definition.description}* +""" + if not message.default_enabled: + body += f""" +.. caution:: + This message is disabled by default. To enable it, add ``{message.name}`` to the ``enable`` option. + +""" + body += f""" {message.bad_code} {message.good_code} {message.details} diff --git a/doc/whatsnew/fragments/7629.other b/doc/whatsnew/fragments/7629.other new file mode 100644 index 000000000..bac156ee5 --- /dev/null +++ b/doc/whatsnew/fragments/7629.other @@ -0,0 +1,4 @@ +Add ``default_enabled`` option to optional message dict. Provides an option to disable a checker message by default. +To use a disabled message, the user must enable it explicitly by adding the message to the ``enable`` option. + +Refs #7629 diff --git a/pylint/extensions/code_style.py b/pylint/extensions/code_style.py index f9a17d005..24eb7f667 100644 --- a/pylint/extensions/code_style.py +++ b/pylint/extensions/code_style.py @@ -65,6 +65,9 @@ class CodeStyleChecker(BaseChecker): "Emitted when an assignment is referring to the object that it is assigning " "to. This can be changed to be an augmented assign.\n" "Disabled by default!", + { + "default_enabled": False, + }, ), } options = ( @@ -325,5 +328,3 @@ class CodeStyleChecker(BaseChecker): def register(linter: PyLinter) -> None: linter.register_checker(CodeStyleChecker(linter)) - # Disable some checks by default - linter.disable("consider-using-augmented-assign") diff --git a/pylint/lint/pylinter.py b/pylint/lint/pylinter.py index d337fd32c..66455bfb1 100644 --- a/pylint/lint/pylinter.py +++ b/pylint/lint/pylinter.py @@ -488,6 +488,9 @@ class PyLinter( self.register_report(r_id, r_title, r_cb, checker) if hasattr(checker, "msgs"): self.msgs_store.register_messages_from_checker(checker) + for message in checker.messages: + if not message.default_enabled: + self.disable(message.msgid) # Register the checker, but disable all of its messages. if not getattr(checker, "enabled", True): self.disable(checker.name) diff --git a/pylint/message/message_definition.py b/pylint/message/message_definition.py index a44e6b780..2dcaee480 100644 --- a/pylint/message/message_definition.py +++ b/pylint/message/message_definition.py @@ -32,6 +32,7 @@ class MessageDefinition: maxversion: tuple[int, int] | None = None, old_names: list[tuple[str, str]] | None = None, shared: bool = False, + default_enabled: bool = True, ) -> None: self.checker_name = checker.name self.check_msgid(msgid) @@ -43,6 +44,7 @@ class MessageDefinition: self.minversion = minversion self.maxversion = maxversion self.shared = shared + self.default_enabled = default_enabled self.old_names: list[tuple[str, str]] = [] if old_names: for old_msgid, old_symbol in old_names: diff --git a/pylint/typing.py b/pylint/typing.py index 6e6f88bfd..282d14eda 100644 --- a/pylint/typing.py +++ b/pylint/typing.py @@ -125,6 +125,7 @@ class ExtraMessageOptions(TypedDict, total=False): maxversion: tuple[int, int] minversion: tuple[int, int] shared: bool + default_enabled: bool MessageDefinitionTuple = Union[ |