Skip to content

Commit 175f75b

Browse files
committed
Freeze register new messages
1 parent caf3334 commit 175f75b

File tree

2 files changed

+6
-11
lines changed

2 files changed

+6
-11
lines changed

pylint/lint/parallel.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import functools
88
from collections import defaultdict
99
from collections.abc import Iterable, Sequence
10-
from copy import copy
1110
from typing import TYPE_CHECKING, Any
1211

1312
import dill
@@ -55,19 +54,14 @@ def _worker_initialize(
5554

5655
# Re-register dynamic plugins, since the pool does not have access to the
5756
# astroid module that existed when the linter was pickled.
58-
# Save and restore enabled and disabled messages since those might get overwritten
59-
# during the dynamic plugin load.
60-
enable = copy(_worker_linter.config.enable)
61-
disable = copy(_worker_linter.config.disable)
57+
# Freeze register new messages to prevent overwriting enabled and disabled messaged
58+
# during dynamic plugin re-load.
59+
_worker_linter._freeze_register_msgs = True
6260
_worker_linter._deregister_checkers(
6361
_worker_linter._registered_dynamic_plugin_checkers
6462
)
6563
_worker_linter.load_plugin_modules(_worker_linter._dynamic_plugins, force=True)
6664
_worker_linter.load_plugin_configuration()
67-
for msg in enable:
68-
_worker_linter.linter.enable(msg)
69-
for msg in disable:
70-
_worker_linter.linter.disable(msg)
7165

7266
if extra_packages_paths:
7367
_augment_sys_path(extra_packages_paths)

pylint/lint/pylinter.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,7 @@ def __init__(
364364
self.msgs_store = MessageDefinitionStore(self.config.py_version)
365365
self.msg_status = 0
366366
self._by_id_managed_msgs: list[ManagedMessage] = []
367+
self._freeze_register_msgs = False
367368

368369
# Attributes related to visiting files
369370
self.file_state = FileState("", self.msgs_store, is_base_filestate=True)
@@ -506,13 +507,13 @@ def register_checker(self, checker: checkers.BaseChecker) -> None:
506507
self._registered_checkers.add((checker.name, checker))
507508
for r_id, r_title, r_cb in checker.reports:
508509
self.register_report(r_id, r_title, r_cb, checker)
509-
if hasattr(checker, "msgs"):
510+
if not self._freeze_register_msgs and hasattr(checker, "msgs"):
510511
self.msgs_store.register_messages_from_checker(checker)
511512
for message in checker.messages:
512513
if not message.default_enabled:
513514
self.disable(message.msgid)
514515
# Register the checker, but disable all of its messages.
515-
if not getattr(checker, "enabled", True):
516+
if not (self._freeze_register_msgs or getattr(checker, "enabled", True)):
516517
self.disable(checker.name)
517518

518519
def _deregister_checkers(

0 commit comments

Comments
 (0)