summaryrefslogtreecommitdiff
path: root/src/pip/_internal/operations/build/metadata.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/pip/_internal/operations/build/metadata.py')
-rw-r--r--src/pip/_internal/operations/build/metadata.py22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/pip/_internal/operations/build/metadata.py b/src/pip/_internal/operations/build/metadata.py
index 1c826835b..e2b7b4445 100644
--- a/src/pip/_internal/operations/build/metadata.py
+++ b/src/pip/_internal/operations/build/metadata.py
@@ -6,19 +6,22 @@ import os
from pip._vendor.pep517.wrappers import Pep517HookCaller
from pip._internal.build_env import BuildEnvironment
+from pip._internal.exceptions import (
+ InstallationSubprocessError,
+ MetadataGenerationFailed,
+)
from pip._internal.utils.subprocess import runner_with_spinner_message
from pip._internal.utils.temp_dir import TempDirectory
-def generate_metadata(build_env, backend):
- # type: (BuildEnvironment, Pep517HookCaller) -> str
+def generate_metadata(
+ build_env: BuildEnvironment, backend: Pep517HookCaller, details: str
+) -> str:
"""Generate metadata using mechanisms described in PEP 517.
Returns the generated metadata directory.
"""
- metadata_tmpdir = TempDirectory(
- kind="modern-metadata", globally_managed=True
- )
+ metadata_tmpdir = TempDirectory(kind="modern-metadata", globally_managed=True)
metadata_dir = metadata_tmpdir.path
@@ -26,10 +29,11 @@ def generate_metadata(build_env, backend):
# Note that Pep517HookCaller implements a fallback for
# prepare_metadata_for_build_wheel, so we don't have to
# consider the possibility that this hook doesn't exist.
- runner = runner_with_spinner_message("Preparing wheel metadata")
+ runner = runner_with_spinner_message("Preparing metadata (pyproject.toml)")
with backend.subprocess_runner(runner):
- distinfo_dir = backend.prepare_metadata_for_build_wheel(
- metadata_dir
- )
+ try:
+ distinfo_dir = backend.prepare_metadata_for_build_wheel(metadata_dir)
+ except InstallationSubprocessError as error:
+ raise MetadataGenerationFailed(package_details=details) from error
return os.path.join(metadata_dir, distinfo_dir)