mirror of https://github.com/astral-sh/uv
Add support for `prepare_metadata_for_build_editable` hook (#3870)
## Summary See: https://peps.python.org/pep-0660/#prepare-metadata-for-build-editable
This commit is contained in:
parent
22dbc79994
commit
89cfecea77
|
|
@ -677,23 +677,23 @@ impl SourceBuild {
|
||||||
fs::create_dir(&metadata_directory)?;
|
fs::create_dir(&metadata_directory)?;
|
||||||
|
|
||||||
// Write the hook output to a file so that we can read it back reliably.
|
// Write the hook output to a file so that we can read it back reliably.
|
||||||
let outfile = self
|
let outfile = self.temp_dir.path().join(format!(
|
||||||
.temp_dir
|
"prepare_metadata_for_build_{}.txt",
|
||||||
.path()
|
self.build_kind
|
||||||
.join("prepare_metadata_for_build_wheel.txt");
|
));
|
||||||
|
|
||||||
debug!(
|
debug!(
|
||||||
"Calling `{}.prepare_metadata_for_build_wheel()`",
|
"Calling `{}.prepare_metadata_for_build_{}()`",
|
||||||
pep517_backend.backend
|
pep517_backend.backend, self.build_kind,
|
||||||
);
|
);
|
||||||
let script = formatdoc! {
|
let script = formatdoc! {
|
||||||
r#"
|
r#"
|
||||||
{}
|
{}
|
||||||
import json
|
import json
|
||||||
|
|
||||||
prepare_metadata_for_build_wheel = getattr(backend, "prepare_metadata_for_build_wheel", None)
|
prepare_metadata_for_build = getattr(backend, "prepare_metadata_for_build_{}", None)
|
||||||
if prepare_metadata_for_build_wheel:
|
if prepare_metadata_for_build:
|
||||||
dirname = prepare_metadata_for_build_wheel("{}", {})
|
dirname = prepare_metadata_for_build("{}", {})
|
||||||
else:
|
else:
|
||||||
dirname = None
|
dirname = None
|
||||||
|
|
||||||
|
|
@ -701,13 +701,14 @@ impl SourceBuild {
|
||||||
fp.write(dirname or "")
|
fp.write(dirname or "")
|
||||||
"#,
|
"#,
|
||||||
pep517_backend.backend_import(),
|
pep517_backend.backend_import(),
|
||||||
|
self.build_kind,
|
||||||
escape_path_for_python(&metadata_directory),
|
escape_path_for_python(&metadata_directory),
|
||||||
self.config_settings.escape_for_python(),
|
self.config_settings.escape_for_python(),
|
||||||
outfile.escape_for_python(),
|
outfile.escape_for_python(),
|
||||||
};
|
};
|
||||||
let span = info_span!(
|
let span = info_span!(
|
||||||
"run_python_script",
|
"run_python_script",
|
||||||
script="prepare_metadata_for_build_wheel",
|
script=format!("prepare_metadata_for_build_{}", self.build_kind),
|
||||||
python_version = %self.venv.interpreter().python_version()
|
python_version = %self.venv.interpreter().python_version()
|
||||||
);
|
);
|
||||||
let output = self
|
let output = self
|
||||||
|
|
@ -723,7 +724,7 @@ impl SourceBuild {
|
||||||
.await?;
|
.await?;
|
||||||
if !output.status.success() {
|
if !output.status.success() {
|
||||||
return Err(Error::from_command_output(
|
return Err(Error::from_command_output(
|
||||||
"Build backend failed to determine metadata through `prepare_metadata_for_build_wheel`".to_string(),
|
format!("Build backend failed to determine metadata through `prepare_metadata_for_build_{}`", self.build_kind),
|
||||||
&output,
|
&output,
|
||||||
&self.version_id,
|
&self.version_id,
|
||||||
));
|
));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue