@@ -70,7 +70,7 @@ def fixup_build_ext(cmd: Incomplete) -> None:
7070
7171
7272def compile_c_extension (
73- generated_source_path : str ,
73+ generated_source_path : pathlib . Path ,
7474 build_dir : str | None = None ,
7575 verbose : bool = False ,
7676 keep_asserts : bool = True ,
@@ -101,8 +101,7 @@ def compile_c_extension(
101101 if verbose :
102102 setuptools .logging .set_threshold (logging .DEBUG )
103103
104- source_file_path = pathlib .Path (generated_source_path )
105- extension_name = source_file_path .stem
104+ extension_name = generated_source_path .stem
106105 extra_compile_args = get_extra_flags ("CFLAGS" , "PY_CFLAGS_NODIST" )
107106 extra_compile_args .append ("-DPy_BUILD_CORE_MODULE" )
108107 # Define _Py_TEST_PEGEN to not call PyAST_Validate() in Parser/pegen.c
@@ -122,39 +121,39 @@ def compile_c_extension(
122121 extra_link_args .append ("-fno-lto" )
123122
124123 common_sources = [
125- str ( MOD_DIR .parent .parent .parent / "Python" / "Python-ast.c" ) ,
126- str ( MOD_DIR .parent .parent .parent / "Python" / "asdl.c" ) ,
127- str ( MOD_DIR .parent .parent .parent / "Parser" / "lexer" / "lexer.c" ) ,
128- str ( MOD_DIR .parent .parent .parent / "Parser" / "lexer" / "layout.c" ) ,
129- str ( MOD_DIR .parent .parent .parent / "Parser" / "lexer" / "number.c" ) ,
130- str ( MOD_DIR .parent .parent .parent / "Parser" / "lexer" / "state.c" ) ,
131- str ( MOD_DIR .parent .parent .parent / "Parser" / "lexer" / "string.c" ) ,
132- str ( MOD_DIR .parent .parent .parent / "Parser" / "tokenizer" / "decoder.c" ) ,
133- str ( MOD_DIR .parent .parent .parent / "Parser" / "tokenizer" / "api.c" ) ,
134- str ( MOD_DIR .parent .parent .parent / "Parser" / "tokenizer" / "reader.c" ) ,
135- str ( MOD_DIR .parent .parent .parent / "Parser" / "tokenizer" / "helpers.c" ) ,
136- str ( MOD_DIR .parent .parent .parent / "Parser" / "pegen.c" ) ,
137- str ( MOD_DIR .parent .parent .parent / "Parser" / "pegen_errors.c" ) ,
138- str ( MOD_DIR .parent .parent .parent / "Parser" / "action_helpers.c" ) ,
139- str ( MOD_DIR .parent .parent .parent / "Parser" / "string_parser.c" ) ,
140- str ( MOD_DIR .parent / "peg_extension" / "peg_extension.c" ) ,
124+ MOD_DIR .parent .parent .parent / "Python" / "Python-ast.c" ,
125+ MOD_DIR .parent .parent .parent / "Python" / "asdl.c" ,
126+ MOD_DIR .parent .parent .parent / "Parser" / "lexer" / "lexer.c" ,
127+ MOD_DIR .parent .parent .parent / "Parser" / "lexer" / "layout.c" ,
128+ MOD_DIR .parent .parent .parent / "Parser" / "lexer" / "number.c" ,
129+ MOD_DIR .parent .parent .parent / "Parser" / "lexer" / "state.c" ,
130+ MOD_DIR .parent .parent .parent / "Parser" / "lexer" / "string.c" ,
131+ MOD_DIR .parent .parent .parent / "Parser" / "tokenizer" / "decoder.c" ,
132+ MOD_DIR .parent .parent .parent / "Parser" / "tokenizer" / "api.c" ,
133+ MOD_DIR .parent .parent .parent / "Parser" / "tokenizer" / "reader.c" ,
134+ MOD_DIR .parent .parent .parent / "Parser" / "tokenizer" / "helpers.c" ,
135+ MOD_DIR .parent .parent .parent / "Parser" / "pegen.c" ,
136+ MOD_DIR .parent .parent .parent / "Parser" / "pegen_errors.c" ,
137+ MOD_DIR .parent .parent .parent / "Parser" / "action_helpers.c" ,
138+ MOD_DIR .parent .parent .parent / "Parser" / "string_parser.c" ,
139+ MOD_DIR .parent / "peg_extension" / "peg_extension.c" ,
141140 ]
142141 include_dirs = [
143- str ( MOD_DIR .parent .parent .parent / "Include" / "internal" ) ,
144- str ( MOD_DIR .parent .parent .parent / "Include" / "internal" / "mimalloc" ) ,
145- str ( MOD_DIR .parent .parent .parent / "Parser" ) ,
146- str ( MOD_DIR .parent .parent .parent / "Parser" / "lexer" ) ,
147- str ( MOD_DIR .parent .parent .parent / "Parser" / "tokenizer" ) ,
142+ MOD_DIR .parent .parent .parent / "Include" / "internal" ,
143+ MOD_DIR .parent .parent .parent / "Include" / "internal" / "mimalloc" ,
144+ MOD_DIR .parent .parent .parent / "Parser" ,
145+ MOD_DIR .parent .parent .parent / "Parser" / "lexer" ,
146+ MOD_DIR .parent .parent .parent / "Parser" / "tokenizer" ,
148147 ]
149- library_dirs : list [str ] = []
148+ library_dirs : list [pathlib . Path ] = []
150149 if sys .platform == "win32" :
151150 # HACK: The location of pyconfig.h has moved within our build, and
152151 # setuptools hasn't updated for it yet. So add the path manually for now
153- include_dirs .append (str ( pathlib .Path (sysconfig .get_config_h_filename ()).parent ) )
152+ include_dirs .append (pathlib .Path (sysconfig .get_config_h_filename ()).parent )
154153 if sysconfig .is_python_build ():
155154 # HACK: Our output directory for free-threaded builds has moved, and so
156155 # tests running in-tree require our sys.executable directory for libs
157- library_dirs .append (str ( pathlib .Path (sys .executable ).parent ) )
156+ library_dirs .append (pathlib .Path (sys .executable ).parent )
158157 sources = [generated_source_path ]
159158 extension = Extension (
160159 extension_name ,
@@ -166,9 +165,9 @@ def compile_c_extension(
166165 cmd = dist .get_command_obj ("build_ext" )
167166 assert isinstance (cmd , setuptools .command .build_ext .build_ext )
168167 fixup_build_ext (cmd )
169- cmd .build_lib = str (source_file_path .parent )
170- cmd .include_dirs = include_dirs
171- cmd .library_dirs = library_dirs
168+ cmd .build_lib = str (generated_source_path .parent )
169+ cmd .include_dirs = [ str ( d ) for d in include_dirs ]
170+ cmd .library_dirs = [ str ( d ) for d in library_dirs ]
172171 if build_dir :
173172 cmd .build_temp = build_dir
174173 cmd .ensure_finalized ()
@@ -247,15 +246,15 @@ def compile_c_extension(
247246
248247
249248def build_parser (
250- grammar_file : str , verbose_tokenizer : bool = False , verbose_parser : bool = False
249+ grammar_file : pathlib . Path , verbose_tokenizer : bool = False , verbose_parser : bool = False
251250) -> tuple [Grammar , Parser , Tokenizer ]:
252251 with open (grammar_file ) as file :
253252 tokenizer = Tokenizer (tokenize .generate_tokens (file .readline ), verbose = verbose_tokenizer )
254253 parser = GrammarParser (tokenizer , verbose = verbose_parser )
255254 grammar = parser .start ()
256255
257256 if not grammar :
258- raise parser .make_syntax_error (grammar_file )
257+ raise parser .make_syntax_error (str ( grammar_file ) )
259258
260259 return grammar , parser , tokenizer
261260
@@ -291,9 +290,9 @@ def generate_token_definitions(tokens: IO[str]) -> TokenDefinitions:
291290
292291def build_c_generator (
293292 grammar : Grammar ,
294- grammar_file : str ,
295- tokens_file : str ,
296- output_file : str ,
293+ grammar_file : pathlib . Path ,
294+ tokens_file : pathlib . Path ,
295+ output_file : pathlib . Path ,
297296 compile_extension : bool = False ,
298297 verbose_c_extension : bool = False ,
299298 keep_asserts_in_extension : bool = True ,
@@ -320,8 +319,8 @@ def build_c_generator(
320319
321320def build_python_generator (
322321 grammar : Grammar ,
323- grammar_file : str ,
324- output_file : str ,
322+ grammar_file : pathlib . Path ,
323+ output_file : pathlib . Path ,
325324 skip_actions : bool = False ,
326325) -> ParserGenerator :
327326 with open (output_file , "w" ) as file :
@@ -331,9 +330,9 @@ def build_python_generator(
331330
332331
333332def build_c_parser_and_generator (
334- grammar_file : str ,
335- tokens_file : str ,
336- output_file : str ,
333+ grammar_file : pathlib . Path ,
334+ tokens_file : pathlib . Path ,
335+ output_file : pathlib . Path ,
337336 compile_extension : bool = False ,
338337 verbose_tokenizer : bool = False ,
339338 verbose_parser : bool = False ,
@@ -375,8 +374,8 @@ def build_c_parser_and_generator(
375374
376375
377376def build_python_parser_and_generator (
378- grammar_file : str ,
379- output_file : str ,
377+ grammar_file : pathlib . Path ,
378+ output_file : pathlib . Path ,
380379 verbose_tokenizer : bool = False ,
381380 verbose_parser : bool = False ,
382381 skip_actions : bool = False ,
0 commit comments