diff options
author | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2022-06-04 10:41:54 +0200 |
---|---|---|
committer | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2022-06-04 11:13:39 +0200 |
commit | f388437a11cd39350fcd738b6a93c128c2b8d92e (patch) | |
tree | 33c16a6278e75057d688874df81ca14ab8430fe9 /pylint/message | |
parent | 90d963058ea1faba53e27b425662efe421b535a4 (diff) | |
download | pylint-git-f388437a11cd39350fcd738b6a93c128c2b8d92e.tar.gz |
[deleted messages] Add an exception for deleted messages in MessageIdStore
Diffstat (limited to 'pylint/message')
-rw-r--r-- | pylint/message/_deleted_message_ids.py | 21 | ||||
-rw-r--r-- | pylint/message/message_id_store.py | 17 |
2 files changed, 35 insertions, 3 deletions
diff --git a/pylint/message/_deleted_message_ids.py b/pylint/message/_deleted_message_ids.py index 349d30f66..7a8872db7 100644 --- a/pylint/message/_deleted_message_ids.py +++ b/pylint/message/_deleted_message_ids.py @@ -4,6 +4,7 @@ from __future__ import annotations +from functools import lru_cache from typing import NamedTuple @@ -123,3 +124,23 @@ DELETED_MESSAGES_IDS = { DeletedMessage("W0111", "assign-to-new-keyword"), ], } + + +@lru_cache(maxsize=None) +def is_deleted_symbol(symbol: str) -> str | None: + """Return the explanation for removal if the message was removed.""" + for explanation, deleted_messages in DELETED_MESSAGES_IDS.items(): + for deleted_message in deleted_messages: + if symbol == deleted_message.symbol: + return explanation + return None + + +@lru_cache(maxsize=None) +def is_deleted_msgid(msgid: str) -> str | None: + """Return the explanation for removal if the message was removed.""" + for explanation, deleted_messages in DELETED_MESSAGES_IDS.items(): + for deleted_message in deleted_messages: + if msgid == deleted_message.msgid: + return explanation + return None diff --git a/pylint/message/message_id_store.py b/pylint/message/message_id_store.py index bb807dcf6..508c67b31 100644 --- a/pylint/message/message_id_store.py +++ b/pylint/message/message_id_store.py @@ -6,7 +6,12 @@ from __future__ import annotations from typing import NoReturn -from pylint.exceptions import InvalidMessageError, UnknownMessageError +from pylint.exceptions import ( + DeletedMessageError, + InvalidMessageError, + UnknownMessageError, +) +from pylint.message._deleted_message_ids import is_deleted_msgid, is_deleted_symbol class MessageIdStore: @@ -122,18 +127,24 @@ class MessageIdStore: # If we don't have a cached value yet we compute it msgid: str | None + deletion_reason = None if msgid_or_symbol[1:].isdigit(): # Only msgid can have a digit as second letter msgid = msgid_or_symbol.upper() symbol = self.__msgid_to_symbol.get(msgid) + if not symbol: + deletion_reason = is_deleted_msgid(msgid) else: - msgid = self.__symbol_to_msgid.get(msgid_or_symbol) symbol = msgid_or_symbol + msgid = self.__symbol_to_msgid.get(msgid_or_symbol) + if not msgid: + deletion_reason = is_deleted_symbol(symbol) if not msgid or not symbol: + if deletion_reason is not None: + raise DeletedMessageError(msgid_or_symbol, deletion_reason) error_msg = f"No such message id or symbol '{msgid_or_symbol}'." raise UnknownMessageError(error_msg) ids = self.__old_names.get(msgid, [msgid]) - # Add to cache self.__active_msgids[msgid_or_symbol] = ids return ids |