diff options
author | Daniël van Noord <13665637+DanielNoord@users.noreply.github.com> | 2021-10-02 15:52:48 +0200 |
---|---|---|
committer | Daniël van Noord <13665637+DanielNoord@users.noreply.github.com> | 2021-10-02 16:38:04 +0200 |
commit | 86c073e49fc099d8111da96cfbb2f30ccd659338 (patch) | |
tree | 2270029529c9ad66b0b60c5cffd33af523a0e109 | |
parent | 87ab1bd84536c7ef7e50229a5cb56625b1bd4daf (diff) | |
download | pylint-git-86c073e49fc099d8111da96cfbb2f30ccd659338.tar.gz |
Add basic typing to ``pylint/message``
-rw-r--r-- | pylint/message/message_definition.py | 13 | ||||
-rw-r--r-- | pylint/message/message_definition_store.py | 9 | ||||
-rw-r--r-- | pylint/message/message_id_store.py | 18 |
3 files changed, 26 insertions, 14 deletions
diff --git a/pylint/message/message_definition.py b/pylint/message/message_definition.py index 31fbeb08d..bdada19fe 100644 --- a/pylint/message/message_definition.py +++ b/pylint/message/message_definition.py @@ -2,17 +2,20 @@ # For details: https://github.com/PyCQA/pylint/blob/main/LICENSE import sys -from typing import List, Optional, Tuple +from typing import TYPE_CHECKING, List, Optional, Tuple from pylint.constants import MSG_TYPES from pylint.exceptions import InvalidMessageError from pylint.utils import normalize_text +if TYPE_CHECKING: + from pylint.checkers import BaseChecker + class MessageDefinition: def __init__( self, - checker, # BaseChecker + checker: "BaseChecker", msgid: str, msg: str, description: str, @@ -21,7 +24,7 @@ class MessageDefinition: minversion: Optional[Tuple[int, int]] = None, maxversion: Optional[Tuple[int, int]] = None, old_names: Optional[List[Tuple[str, str]]] = None, - ): + ) -> None: self.checker_name = checker.name self.check_msgid(msgid) self.msgid = msgid @@ -46,10 +49,10 @@ class MessageDefinition: if msgid[0] not in MSG_TYPES: raise InvalidMessageError(f"Bad message type {msgid[0]} in {msgid!r}") - def __repr__(self): + def __repr__(self) -> str: return f"MessageDefinition:{self.symbol} ({self.msgid})" - def __str__(self): + def __str__(self) -> str: return f"{repr(self)}:\n{self.msg} {self.description}" def may_be_emitted(self) -> bool: diff --git a/pylint/message/message_definition_store.py b/pylint/message/message_definition_store.py index c715d8561..c160a85ba 100644 --- a/pylint/message/message_definition_store.py +++ b/pylint/message/message_definition_store.py @@ -2,12 +2,15 @@ # For details: https://github.com/PyCQA/pylint/blob/main/LICENSE import collections -from typing import Dict, List, Tuple, ValuesView +from typing import TYPE_CHECKING, Dict, List, Tuple, ValuesView from pylint.exceptions import UnknownMessageError from pylint.message.message_definition import MessageDefinition from pylint.message.message_id_store import MessageIdStore +if TYPE_CHECKING: + from pylint.checkers import BaseChecker + class MessageDefinitionStore: @@ -15,7 +18,7 @@ class MessageDefinitionStore: no particular state during analysis. """ - def __init__(self): + def __init__(self) -> None: self.message_id_store: MessageIdStore = MessageIdStore() # Primary registry for all active messages definitions. # It contains the 1:1 mapping from msgid to MessageDefinition. @@ -29,7 +32,7 @@ class MessageDefinitionStore: """The list of all active messages.""" return self._messages_definitions.values() - def register_messages_from_checker(self, checker) -> None: + def register_messages_from_checker(self, checker: "BaseChecker") -> None: """Register all messages definitions from a checker.""" checker.check_consistency() for message in checker.messages: diff --git a/pylint/message/message_id_store.py b/pylint/message/message_id_store.py index f0ba0c2de..87e185ac7 100644 --- a/pylint/message/message_id_store.py +++ b/pylint/message/message_id_store.py @@ -1,23 +1,29 @@ # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html # For details: https://github.com/PyCQA/pylint/blob/main/LICENSE +import sys from typing import Dict, List, Optional, Tuple from pylint.exceptions import InvalidMessageError, UnknownMessageError +if sys.version_info >= (3, 6, 2): + from typing import NoReturn +else: + from typing_extensions import NoReturn + class MessageIdStore: """The MessageIdStore store MessageId and make sure that there is a 1-1 relation between msgid and symbol.""" - def __init__(self): + def __init__(self) -> None: self.__msgid_to_symbol: Dict[str, str] = {} self.__symbol_to_msgid: Dict[str, str] = {} self.__old_names: Dict[str, List[str]] = {} - def __len__(self): + def __len__(self) -> int: return len(self.__msgid_to_symbol) - def __repr__(self): + def __repr__(self) -> str: result = "MessageIdStore: [\n" for msgid, symbol in self.__msgid_to_symbol.items(): result += f" - {msgid} ({symbol})\n" @@ -40,7 +46,7 @@ class MessageIdStore: def register_message_definition( self, msgid: str, symbol: str, old_names: List[Tuple[str, str]] - ): + ) -> None: self.check_msgid_and_symbol(msgid, symbol) self.add_msgid_and_symbol(msgid, symbol) for old_msgid, old_symbol in old_names: @@ -81,7 +87,7 @@ class MessageIdStore: self._raise_duplicate_symbol(msgid, symbol, existing_symbol) @staticmethod - def _raise_duplicate_symbol(msgid: str, symbol: str, other_symbol: str): + def _raise_duplicate_symbol(msgid: str, symbol: str, other_symbol: str) -> NoReturn: """Raise an error when a symbol is duplicated.""" symbols = [symbol, other_symbol] symbols.sort() @@ -90,7 +96,7 @@ class MessageIdStore: raise InvalidMessageError(error_message) @staticmethod - def _raise_duplicate_msgid(symbol: str, msgid: str, other_msgid: str) -> None: + def _raise_duplicate_msgid(symbol: str, msgid: str, other_msgid: str) -> NoReturn: """Raise an error when a msgid is duplicated.""" msgids = [msgid, other_msgid] msgids.sort() |