|
3 | 3 |
|
4 | 4 | import sys
|
5 | 5 | from io import TextIOWrapper
|
6 |
| -from typing import List, TextIO, Tuple, Union |
| 6 | +from typing import TYPE_CHECKING, Any, List, Optional, TextIO, Tuple, Union |
| 7 | + |
| 8 | +from astroid import nodes |
7 | 9 |
|
8 | 10 | from pylint.constants import (
|
9 | 11 | _SCOPE_EXEMPT,
|
|
21 | 23 | NoLineSuppliedError,
|
22 | 24 | UnknownMessageError,
|
23 | 25 | )
|
24 |
| -from pylint.interfaces import UNDEFINED |
| 26 | +from pylint.interfaces import UNDEFINED, Confidence |
25 | 27 | from pylint.message.message import Message
|
26 | 28 | from pylint.utils import get_module_and_frameid, get_rst_section, get_rst_title
|
27 | 29 |
|
| 30 | +if TYPE_CHECKING: |
| 31 | + from pylint.lint.pylinter import PyLinter |
| 32 | + from pylint.message import MessageDefinition |
| 33 | + |
28 | 34 |
|
29 | 35 | class MessagesHandlerMixIn:
|
30 | 36 | """A mix-in class containing all the messages related methods for the main lint class."""
|
@@ -226,9 +232,15 @@ def is_one_message_enabled(self, msgid, line):
|
226 | 232 | return self._msgs_state.get(msgid, fallback)
|
227 | 233 | return self._msgs_state.get(msgid, True)
|
228 | 234 |
|
229 |
| - def add_message( |
230 |
| - self, msgid, line=None, node=None, args=None, confidence=None, col_offset=None |
231 |
| - ): |
| 235 | + def add_message( # type: ignore # MessagesHandlerMixIn is always mixed with PyLinter |
| 236 | + self: "PyLinter", |
| 237 | + msgid: str, |
| 238 | + line: Optional[int] = None, |
| 239 | + node: Optional[nodes.NodeNG] = None, |
| 240 | + args: Any = None, |
| 241 | + confidence: Optional[Confidence] = None, |
| 242 | + col_offset: Optional[int] = None, |
| 243 | + ) -> None: |
232 | 244 | """Adds a message given by ID or name.
|
233 | 245 |
|
234 | 246 | If provided, the message string is expanded using args.
|
@@ -267,14 +279,20 @@ def check_message_definition(message_definition, line, node):
|
267 | 279 | f"Message {message_definition.msgid} must provide Node, got None"
|
268 | 280 | )
|
269 | 281 |
|
270 |
| - def add_one_message( |
271 |
| - self, message_definition, line, node, args, confidence, col_offset |
272 |
| - ): |
| 282 | + def add_one_message( # type: ignore # MessagesHandlerMixIn is always mixed with PyLinter |
| 283 | + self: "PyLinter", |
| 284 | + message_definition: "MessageDefinition", |
| 285 | + line: Optional[int], |
| 286 | + node: Optional[nodes.NodeNG], |
| 287 | + args: Any, |
| 288 | + confidence: Optional[Confidence], |
| 289 | + col_offset: Optional[int], |
| 290 | + ) -> None: |
273 | 291 | self.check_message_definition(message_definition, line, node)
|
274 | 292 | if line is None and node is not None:
|
275 | 293 | line = node.fromlineno
|
276 | 294 | if col_offset is None and hasattr(node, "col_offset"):
|
277 |
| - col_offset = node.col_offset |
| 295 | + col_offset = node.col_offset # type: ignore |
278 | 296 |
|
279 | 297 | # should this message be displayed
|
280 | 298 | if not self.is_message_enabled(message_definition.msgid, line, confidence):
|
@@ -303,13 +321,13 @@ def add_one_message(
|
303 | 321 | "by_module": {self.current_name: {msg_cat: 0}},
|
304 | 322 | "by_msg": {},
|
305 | 323 | }
|
306 |
| - self.stats[msg_cat] += 1 |
307 |
| - self.stats["by_module"][self.current_name][msg_cat] += 1 |
| 324 | + self.stats[msg_cat] += 1 # type: ignore |
| 325 | + self.stats["by_module"][self.current_name][msg_cat] += 1 # type: ignore |
308 | 326 | try:
|
309 |
| - self.stats["by_msg"][message_definition.symbol] += 1 |
| 327 | + self.stats["by_msg"][message_definition.symbol] += 1 # type: ignore |
310 | 328 | except KeyError:
|
311 |
| - self.stats["by_msg"][message_definition.symbol] = 1 |
312 |
| - # expand message ? |
| 329 | + self.stats["by_msg"][message_definition.symbol] = 1 # type: ignore |
| 330 | + # Interpolate arguments into message string |
313 | 331 | msg = message_definition.msg
|
314 | 332 | if args:
|
315 | 333 | msg %= args
|
|
0 commit comments