summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Mueller <30130371+cdce8p@users.noreply.github.com>2022-10-25 12:55:32 +0200
committerGitHub <noreply@github.com>2022-10-25 12:55:32 +0200
commit8c7af1e7bcad8b0717ab05863e5d79d82cb953b6 (patch)
treebf5b89a80417df003e630c28635ea0961ce990de
parentb7e22417e43040618a1c16f4b9518cb40d3077eb (diff)
downloadpylint-git-8c7af1e7bcad8b0717ab05863e5d79d82cb953b6.tar.gz
Add default_enabled option to optional message dict (#7629)
-rw-r--r--doc/exts/pylint_messages.py10
-rw-r--r--doc/whatsnew/fragments/7629.other4
-rw-r--r--pylint/extensions/code_style.py5
-rw-r--r--pylint/lint/pylinter.py3
-rw-r--r--pylint/message/message_definition.py2
-rw-r--r--pylint/typing.py1
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[