99import platform
1010import sys
1111import time
12+ from typing import NamedTuple
1213
1314from mypy import util
1415from mypy .build import (
3637CONNECTION_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+
3948def 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 )
0 commit comments