38
38
import tokenize
39
39
import warnings
40
40
from pathlib import Path
41
- from typing import TYPE_CHECKING , Dict , Iterable , Iterator , List , Union
41
+ from typing import TYPE_CHECKING , Iterable , Iterator , List , Mapping , Union
42
42
43
43
import setuptools
44
44
53
53
if TYPE_CHECKING :
54
54
from typing_extensions import TypeAlias
55
55
56
-
57
56
__all__ = [
58
57
'get_requires_for_build_sdist' ,
59
58
'get_requires_for_build_wheel' ,
@@ -147,7 +146,7 @@ def suppress_known_deprecation():
147
146
yield
148
147
149
148
150
- _ConfigSettings : TypeAlias = Union [Dict [str , Union [str , List [str ], None ]], None ]
149
+ _ConfigSettings : TypeAlias = Union [Mapping [str , Union [str , List [str ], None ]], None ]
151
150
"""
152
151
Currently the user can run::
153
152
@@ -291,7 +290,9 @@ def _arbitrary_args(self, config_settings: _ConfigSettings) -> Iterator[str]:
291
290
292
291
293
292
class _BuildMetaBackend (_ConfigSettingsTranslator ):
294
- def _get_build_requires (self , config_settings , requirements ):
293
+ def _get_build_requires (
294
+ self , config_settings : _ConfigSettings , requirements : list [str ]
295
+ ):
295
296
sys .argv = [
296
297
* sys .argv [:1 ],
297
298
* self ._global_args (config_settings ),
@@ -305,7 +306,7 @@ def _get_build_requires(self, config_settings, requirements):
305
306
306
307
return requirements
307
308
308
- def run_setup (self , setup_script = 'setup.py' ):
309
+ def run_setup (self , setup_script : str = 'setup.py' ):
309
310
# Note that we can reuse our build directory between calls
310
311
# Correctness comes first, then optimization later
311
312
__file__ = os .path .abspath (setup_script )
@@ -328,13 +329,15 @@ def run_setup(self, setup_script='setup.py'):
328
329
"setup-py-deprecated.html" ,
329
330
)
330
331
331
- def get_requires_for_build_wheel (self , config_settings = None ):
332
+ def get_requires_for_build_wheel (self , config_settings : _ConfigSettings = None ):
332
333
return self ._get_build_requires (config_settings , requirements = [])
333
334
334
- def get_requires_for_build_sdist (self , config_settings = None ):
335
+ def get_requires_for_build_sdist (self , config_settings : _ConfigSettings = None ):
335
336
return self ._get_build_requires (config_settings , requirements = [])
336
337
337
- def _bubble_up_info_directory (self , metadata_directory : str , suffix : str ) -> str :
338
+ def _bubble_up_info_directory (
339
+ self , metadata_directory : StrPath , suffix : str
340
+ ) -> str :
338
341
"""
339
342
PEP 517 requires that the .dist-info directory be placed in the
340
343
metadata_directory. To comply, we MUST copy the directory to the root.
@@ -347,7 +350,7 @@ def _bubble_up_info_directory(self, metadata_directory: str, suffix: str) -> str
347
350
# PEP 517 allow other files and dirs to exist in metadata_directory
348
351
return info_dir .name
349
352
350
- def _find_info_directory (self , metadata_directory : str , suffix : str ) -> Path :
353
+ def _find_info_directory (self , metadata_directory : StrPath , suffix : str ) -> Path :
351
354
for parent , dirs , _ in os .walk (metadata_directory ):
352
355
candidates = [f for f in dirs if f .endswith (suffix )]
353
356
@@ -359,14 +362,14 @@ def _find_info_directory(self, metadata_directory: str, suffix: str) -> Path:
359
362
raise errors .InternalError (msg )
360
363
361
364
def prepare_metadata_for_build_wheel (
362
- self , metadata_directory , config_settings = None
365
+ self , metadata_directory : StrPath , config_settings : _ConfigSettings = None
363
366
):
364
367
sys .argv = [
365
368
* sys .argv [:1 ],
366
369
* self ._global_args (config_settings ),
367
370
"dist_info" ,
368
371
"--output-dir" ,
369
- metadata_directory ,
372
+ str ( metadata_directory ) ,
370
373
"--keep-egg-info" ,
371
374
]
372
375
with no_install_setup_requires ():
@@ -449,7 +452,7 @@ def build_editable(
449
452
self ,
450
453
wheel_directory : StrPath ,
451
454
config_settings : _ConfigSettings = None ,
452
- metadata_directory : str | None = None ,
455
+ metadata_directory : StrPath | None = None ,
453
456
):
454
457
# XXX can or should we hide our editable_wheel command normally?
455
458
info_dir = self ._get_dist_info_dir (metadata_directory )
@@ -460,11 +463,13 @@ def build_editable(
460
463
cmd , ".whl" , wheel_directory , config_settings
461
464
)
462
465
463
- def get_requires_for_build_editable (self , config_settings = None ):
466
+ def get_requires_for_build_editable (
467
+ self , config_settings : _ConfigSettings = None
468
+ ):
464
469
return self .get_requires_for_build_wheel (config_settings )
465
470
466
471
def prepare_metadata_for_build_editable (
467
- self , metadata_directory , config_settings = None
472
+ self , metadata_directory : StrPath , config_settings : _ConfigSettings = None
468
473
):
469
474
return self .prepare_metadata_for_build_wheel (
470
475
metadata_directory , config_settings
@@ -483,7 +488,7 @@ class _BuildMetaLegacyBackend(_BuildMetaBackend):
483
488
and will eventually be removed.
484
489
"""
485
490
486
- def run_setup (self , setup_script = 'setup.py' ):
491
+ def run_setup (self , setup_script : str = 'setup.py' ):
487
492
# In order to maintain compatibility with scripts assuming that
488
493
# the setup.py script is in a directory on the PYTHONPATH, inject
489
494
# '' into sys.path. (pypa/setuptools#1642)
0 commit comments