summaryrefslogtreecommitdiff
path: root/pylint/message/message_definition_store.py
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2021-08-03 22:05:11 +0200
committerGitHub <noreply@github.com>2021-08-03 22:05:11 +0200
commita71cfe1c4c700b9cf5ca4361f991f01b5a270f42 (patch)
treeb93f61c09d6a394b0e3e3421c1a095b2902aec07 /pylint/message/message_definition_store.py
parent741276e90a3698c8bf5ac621669453b67b7c2c7c (diff)
downloadpylint-git-a71cfe1c4c700b9cf5ca4361f991f01b5a270f42.tar.gz
Refactor ``--list-msgs`` & ``--list-msgs-enabled`` (#4793)
* Refactor ``--list-msgs`` & ``--list-msgs-enabled`` Both options now show which messages can't be emitted with the current interpreter. This makes function more like their name implies. This closes #4778 Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com>
Diffstat (limited to 'pylint/message/message_definition_store.py')
-rw-r--r--pylint/message/message_definition_store.py26
1 files changed, 21 insertions, 5 deletions
diff --git a/pylint/message/message_definition_store.py b/pylint/message/message_definition_store.py
index 80ee5b81d..c715d8561 100644
--- a/pylint/message/message_definition_store.py
+++ b/pylint/message/message_definition_store.py
@@ -2,7 +2,7 @@
# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE
import collections
-from typing import Dict, List, ValuesView
+from typing import Dict, List, Tuple, ValuesView
from pylint.exceptions import UnknownMessageError
from pylint.message.message_definition import MessageDefinition
@@ -73,9 +73,25 @@ class MessageDefinitionStore:
def list_messages(self) -> None:
"""Output full messages list documentation in ReST format."""
+ emittable, non_emittable = self.find_emittable_messages()
+ print("Emittable messages with current interpreter:")
+ for msg in emittable:
+ print(msg.format_help(checkerref=False))
+ print("\nNon-emittable messages with current interpreter:")
+ for msg in non_emittable:
+ print(msg.format_help(checkerref=False))
+ print("")
+
+ def find_emittable_messages(
+ self,
+ ) -> Tuple[List[MessageDefinition], List[MessageDefinition]]:
+ """Finds all emittable and non-emittable messages"""
messages = sorted(self._messages_definitions.values(), key=lambda m: m.msgid)
+ emittable = []
+ non_emittable = []
for message in messages:
- if not message.may_be_emitted():
- continue
- print(message.format_help(checkerref=False))
- print("")
+ if message.may_be_emitted():
+ emittable.append(message)
+ else:
+ non_emittable.append(message)
+ return emittable, non_emittable