Skip to content

Commit 518218e

Browse files
committed
Fix custom error codes
1 parent 1e5b1fe commit 518218e

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

mypy/build_worker/worker.py

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import platform
1010
import sys
1111
import time
12+
from typing import NamedTuple
1213

1314
from mypy import util
1415
from mypy.build import (
@@ -36,6 +37,14 @@
3637
CONNECTION_NAME = "build_worker"
3738

3839

40+
class ServerContext(NamedTuple):
41+
options: Options
42+
disable_error_code: list[str]
43+
enable_error_code: list[str]
44+
errors: Errors
45+
fscache: FileSystemCache
46+
47+
3948
def main(argv: list[str]) -> None:
4049
# Set recursion limit consistent with mypy/main.py
4150
sys.setrecursionlimit(RECURSION_LIMIT)
@@ -46,6 +55,8 @@ def main(argv: list[str]) -> None:
4655

4756
options_dict = pickle.loads(base64.b64decode(args.options_data))
4857
options_obj = Options()
58+
disable_error_code = options_dict.pop("disable_error_code", [])
59+
enable_error_code = options_dict.pop("enable_error_code", [])
4960
options = options_obj.apply_changes(options_dict)
5061

5162
status_file = args.status_file
@@ -59,9 +70,10 @@ def main(argv: list[str]) -> None:
5970
cached_read = fscache.read
6071
errors = Errors(options, read_source=lambda path: read_py_file(path, cached_read))
6172

73+
ctx = ServerContext(options, disable_error_code, enable_error_code, errors, fscache)
6274
try:
6375
with server:
64-
serve(server, options, errors, fscache)
76+
serve(server, ctx)
6577
except OSError:
6678
pass
6779
except Exception as exc:
@@ -73,10 +85,10 @@ def main(argv: list[str]) -> None:
7385
util.hard_exit(0)
7486

7587

76-
def serve(server: IPCServer, options: Options, errors: Errors, fscache: FileSystemCache) -> None:
88+
def serve(server: IPCServer, ctx: ServerContext) -> None:
7789
data = receive(server)
7890
sources = [BuildSource(*st) for st in data["sources"]]
79-
manager = setup_worker_manager(sources, options, errors, fscache)
91+
manager = setup_worker_manager(sources, ctx)
8092
if manager is None:
8193
return
8294

@@ -125,19 +137,22 @@ def serve(server: IPCServer, options: Options, errors: Errors, fscache: FileSyst
125137
manager.add_stats(total_process_stale_time=time.time() - t0, stale_sccs_processed=1)
126138

127139

128-
def setup_worker_manager(
129-
sources: list[BuildSource], options: Options, errors: Errors, fscache: FileSystemCache
130-
) -> BuildManager | None:
140+
def setup_worker_manager(sources: list[BuildSource], ctx: ServerContext) -> BuildManager | None:
131141
data_dir = os.path.dirname(os.path.dirname(__file__))
132142
alt_lib_path = os.environ.get("MYPY_ALT_LIB_PATH")
133-
search_paths = compute_search_paths(sources, options, data_dir, alt_lib_path)
143+
search_paths = compute_search_paths(sources, ctx.options, data_dir, alt_lib_path)
134144

135145
source_set = BuildSourceSet(sources)
136146
try:
137-
plugin, snapshot = load_plugins(options, errors, sys.stdout, [])
147+
plugin, snapshot = load_plugins(ctx.options, ctx.errors, sys.stdout, [])
138148
except CompileError:
139149
return None
140150

151+
options = ctx.options
152+
options.disable_error_code = ctx.disable_error_code
153+
options.enable_error_code = ctx.enable_error_code
154+
options.process_error_codes(error_callback=lambda msg: None)
155+
141156
def flush_errors(filename: str | None, new_messages: list[str], is_serious: bool) -> None:
142157
pass
143158

@@ -151,10 +166,10 @@ def flush_errors(filename: str | None, new_messages: list[str], is_serious: bool
151166
version_id=__version__,
152167
plugin=plugin,
153168
plugins_snapshot=snapshot,
154-
errors=errors,
169+
errors=ctx.errors,
155170
error_formatter=None,
156171
flush_errors=flush_errors,
157-
fscache=fscache,
172+
fscache=ctx.fscache,
158173
stdout=sys.stdout,
159174
stderr=sys.stderr,
160175
)

test-data/unit/check-plugin-error-codes.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
def main() -> None:
55
return
6-
main() # E: Custom error [custom]
6+
main() # E: Custom error [custom]
77

88
[file mypy.ini]
99
\[mypy]
@@ -25,7 +25,7 @@ plugins=<ROOT>/test-data/unit/plugins/custom_errorcode.py
2525

2626
def main() -> None:
2727
return
28-
main() # E: Custom error [custom]
28+
main() # E: Custom error [custom]
2929

3030
[file mypy.ini]
3131
\[mypy]

0 commit comments

Comments
 (0)