|
29 | 29 | MSG_STATE_SCOPE_CONFIG, |
30 | 30 | MSG_STATE_SCOPE_MODULE, |
31 | 31 | MSG_TYPES, |
32 | | - MSG_TYPES_LONG, |
33 | 32 | MSG_TYPES_STATUS, |
34 | 33 | WarningScope, |
35 | 34 | ) |
36 | 35 | from pylint.lint.base_options import _make_linter_options |
37 | 36 | from pylint.lint.caching import load_results, save_results |
38 | 37 | from pylint.lint.expand_modules import expand_modules |
| 38 | +from pylint.lint.message_state_handler import _MessageStateHandler |
39 | 39 | from pylint.lint.parallel import check_parallel |
40 | 40 | from pylint.lint.report_functions import ( |
41 | 41 | report_messages_by_module_stats, |
@@ -227,6 +227,7 @@ def _load_reporter_by_class(reporter_class: str) -> type[BaseReporter]: |
227 | 227 | # pylint: disable=too-many-instance-attributes,too-many-public-methods |
228 | 228 | class PyLinter( |
229 | 229 | _ArgumentsManager, |
| 230 | + _MessageStateHandler, |
230 | 231 | reporters.ReportsHandlerMixIn, |
231 | 232 | checkers.BaseTokenChecker, |
232 | 233 | ): |
@@ -265,6 +266,7 @@ def __init__( |
265 | 266 | pylintrc: str | None = None, # pylint: disable=unused-argument |
266 | 267 | ) -> None: |
267 | 268 | _ArgumentsManager.__init__(self, prog="pylint") |
| 269 | + _MessageStateHandler.__init__(self, self) |
268 | 270 |
|
269 | 271 | # Some stuff has to be done before initialization of other ancestors... |
270 | 272 | # messages store / checkers / reporter / astroid manager |
@@ -320,7 +322,6 @@ def __init__( |
320 | 322 | # Attributes related to messages (states) and their handling |
321 | 323 | self.msgs_store = MessageDefinitionStore() |
322 | 324 | self.msg_status = 0 |
323 | | - self._msgs_state: dict[str, bool] = {} |
324 | 325 | self._by_id_managed_msgs: list[ManagedMessage] = [] |
325 | 326 |
|
326 | 327 | reporters.ReportsHandlerMixIn.__init__(self) |
@@ -1401,119 +1402,6 @@ def add_ignored_message( |
1401 | 1402 |
|
1402 | 1403 | # Setting the state (disabled/enabled) of messages and registering them |
1403 | 1404 |
|
1404 | | - def _set_one_msg_status( |
1405 | | - self, scope: str, msg: MessageDefinition, line: int | None, enable: bool |
1406 | | - ) -> None: |
1407 | | - """Set the status of an individual message.""" |
1408 | | - if scope == "module": |
1409 | | - assert isinstance(line, int) # should always be int inside module scope |
1410 | | - |
1411 | | - self.file_state.set_msg_status(msg, line, enable) |
1412 | | - if not enable and msg.symbol != "locally-disabled": |
1413 | | - self.add_message( |
1414 | | - "locally-disabled", line=line, args=(msg.symbol, msg.msgid) |
1415 | | - ) |
1416 | | - else: |
1417 | | - msgs = self._msgs_state |
1418 | | - msgs[msg.msgid] = enable |
1419 | | - |
1420 | | - def _get_messages_to_set( |
1421 | | - self, msgid: str, enable: bool, ignore_unknown: bool = False |
1422 | | - ) -> list[MessageDefinition]: |
1423 | | - """Do some tests and find the actual messages of which the status should be set.""" |
1424 | | - message_definitions = [] |
1425 | | - if msgid == "all": |
1426 | | - for _msgid in MSG_TYPES: |
1427 | | - message_definitions.extend( |
1428 | | - self._get_messages_to_set(_msgid, enable, ignore_unknown) |
1429 | | - ) |
1430 | | - return message_definitions |
1431 | | - |
1432 | | - # msgid is a category? |
1433 | | - category_id = msgid.upper() |
1434 | | - if category_id not in MSG_TYPES: |
1435 | | - category_id_formatted = MSG_TYPES_LONG.get(category_id) |
1436 | | - else: |
1437 | | - category_id_formatted = category_id |
1438 | | - if category_id_formatted is not None: |
1439 | | - for _msgid in self.msgs_store._msgs_by_category[category_id_formatted]: |
1440 | | - message_definitions.extend( |
1441 | | - self._get_messages_to_set(_msgid, enable, ignore_unknown) |
1442 | | - ) |
1443 | | - return message_definitions |
1444 | | - |
1445 | | - # msgid is a checker name? |
1446 | | - if msgid.lower() in self._checkers: |
1447 | | - for checker in self._checkers[msgid.lower()]: |
1448 | | - for _msgid in checker.msgs: |
1449 | | - message_definitions.extend( |
1450 | | - self._get_messages_to_set(_msgid, enable, ignore_unknown) |
1451 | | - ) |
1452 | | - return message_definitions |
1453 | | - |
1454 | | - # msgid is report id? |
1455 | | - if msgid.lower().startswith("rp"): |
1456 | | - if enable: |
1457 | | - self.enable_report(msgid) |
1458 | | - else: |
1459 | | - self.disable_report(msgid) |
1460 | | - return message_definitions |
1461 | | - |
1462 | | - try: |
1463 | | - # msgid is a symbolic or numeric msgid. |
1464 | | - message_definitions = self.msgs_store.get_message_definitions(msgid) |
1465 | | - except exceptions.UnknownMessageError: |
1466 | | - if not ignore_unknown: |
1467 | | - raise |
1468 | | - return message_definitions |
1469 | | - |
1470 | | - def _set_msg_status( |
1471 | | - self, |
1472 | | - msgid: str, |
1473 | | - enable: bool, |
1474 | | - scope: str = "package", |
1475 | | - line: int | None = None, |
1476 | | - ignore_unknown: bool = False, |
1477 | | - ) -> None: |
1478 | | - """Do some tests and then iterate over message definitions to set state.""" |
1479 | | - assert scope in {"package", "module"} |
1480 | | - |
1481 | | - message_definitions = self._get_messages_to_set(msgid, enable, ignore_unknown) |
1482 | | - |
1483 | | - for message_definition in message_definitions: |
1484 | | - self._set_one_msg_status(scope, message_definition, line, enable) |
1485 | | - |
1486 | | - # sync configuration object |
1487 | | - self.config.enable = [] |
1488 | | - self.config.disable = [] |
1489 | | - for msgid_or_symbol, is_enabled in self._msgs_state.items(): |
1490 | | - symbols = [ |
1491 | | - m.symbol |
1492 | | - for m in self.msgs_store.get_message_definitions(msgid_or_symbol) |
1493 | | - ] |
1494 | | - if is_enabled: |
1495 | | - self.config.enable += symbols |
1496 | | - else: |
1497 | | - self.config.disable += symbols |
1498 | | - |
1499 | | - def _register_by_id_managed_msg( |
1500 | | - self, msgid_or_symbol: str, line: int | None, is_disabled: bool = True |
1501 | | - ) -> None: |
1502 | | - """If the msgid is a numeric one, then register it to inform the user |
1503 | | - it could furnish instead a symbolic msgid. |
1504 | | - """ |
1505 | | - if msgid_or_symbol[1:].isdigit(): |
1506 | | - try: |
1507 | | - symbol = self.msgs_store.message_id_store.get_symbol( |
1508 | | - msgid=msgid_or_symbol |
1509 | | - ) |
1510 | | - except exceptions.UnknownMessageError: |
1511 | | - return |
1512 | | - managed = ManagedMessage( |
1513 | | - self.current_name, msgid_or_symbol, symbol, line, is_disabled |
1514 | | - ) |
1515 | | - self._by_id_managed_msgs.append(managed) |
1516 | | - |
1517 | 1405 | def disable( |
1518 | 1406 | self, |
1519 | 1407 | msgid: str, |
|
0 commit comments