importloggingimportosfromtypingimportOptionalfrompip._vendor.pep517.wrappersimportPep517HookCallerfrompip._internal.utils.subprocessimportrunner_with_spinner_messagelogger=logging.getLogger(__name__)defbuild_wheel_pep517(name,# type: strbackend,# type: Pep517HookCallermetadata_directory,# type: strtempd,# type: str):# type: (...) -> Optional[str]"""Build one InstallRequirement using the PEP 517 build process. Returns path to wheel if successfully built. Otherwise, returns None. """assertmetadata_directoryisnotNonetry:logger.debug('Destination directory: %s',tempd)runner=runner_with_spinner_message(f'Building wheel for {name} (PEP 517)')withbackend.subprocess_runner(runner):wheel_name=backend.build_wheel(tempd,metadata_directory=metadata_directory,)exceptException:logger.error('Failed building wheel for %s',name)returnNonereturnos.path.join(tempd,wheel_name)