|
40 | 40 |
|
41 | 41 | import setuptools |
42 | 42 | import distutils |
| 43 | +from . import errors |
43 | 44 | from ._path import same_path |
44 | 45 | from ._reqs import parse_strings |
45 | 46 | from ._deprecation_warning import SetuptoolsDeprecationWarning |
@@ -346,16 +347,23 @@ def _bubble_up_info_directory(self, metadata_directory: str, suffix: str) -> str |
346 | 347 |
|
347 | 348 | Returns the basename of the info directory, e.g. `proj-0.0.0.dist-info`. |
348 | 349 | """ |
349 | | - candidates = list(Path(metadata_directory).glob(f"**/*{suffix}/")) |
350 | | - assert len(candidates) == 1, f"Exactly one {suffix} should have been produced" |
351 | | - info_dir = candidates[0] |
352 | | - |
| 350 | + info_dir = self._find_info_directory(metadata_directory, suffix) |
353 | 351 | if not same_path(info_dir.parent, metadata_directory): |
354 | 352 | shutil.move(str(info_dir), metadata_directory) |
355 | 353 | # PEP 517 allow other files and dirs to exist in metadata_directory |
356 | | - |
357 | 354 | return info_dir.name |
358 | 355 |
|
| 356 | + def _find_info_directory(self, metadata_directory: str, suffix: str) -> Path: |
| 357 | + for parent, dirs, _ in os.walk(metadata_directory): |
| 358 | + candidates = [f for f in dirs if f.endswith(suffix)] |
| 359 | + |
| 360 | + if len(candidates) != 0 or len(dirs) != 1: |
| 361 | + assert len(candidates) == 1, f"Multiple {suffix} directories found" |
| 362 | + return Path(parent, candidates[0]) |
| 363 | + |
| 364 | + msg = f"No {suffix} directory found in {metadata_directory}" |
| 365 | + raise errors.InternalError(msg) |
| 366 | + |
359 | 367 | def prepare_metadata_for_build_wheel(self, metadata_directory, |
360 | 368 | config_settings=None): |
361 | 369 | sys.argv = [ |
|
0 commit comments