"""Metadata generation logic for source distributions."""importosfrompip._vendor.pep517.wrappersimportPep517HookCallerfrompip._internal.build_envimportBuildEnvironmentfrompip._internal.utils.subprocessimportrunner_with_spinner_messagefrompip._internal.utils.temp_dirimportTempDirectorydefgenerate_metadata(build_env,backend):# type: (BuildEnvironment, Pep517HookCaller) -> str"""Generate metadata using mechanisms described in PEP 517. Returns the generated metadata directory. """metadata_tmpdir=TempDirectory(kind="modern-metadata",globally_managed=True)metadata_dir=metadata_tmpdir.pathwithbuild_env:# 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")withbackend.subprocess_runner(runner):distinfo_dir=backend.prepare_metadata_for_build_wheel(metadata_dir)returnos.path.join(metadata_dir,distinfo_dir)