Skip to content

Commit

Permalink
Add support for prepare_metadata_for_build_editable hook (#3870)
Browse files Browse the repository at this point in the history
  • Loading branch information
charliermarsh authored May 27, 2024
1 parent 22dbc79 commit 89cfece
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions crates/uv-build/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -677,37 +677,38 @@ impl SourceBuild {
fs::create_dir(&metadata_directory)?;

// Write the hook output to a file so that we can read it back reliably.
let outfile = self
.temp_dir
.path()
.join("prepare_metadata_for_build_wheel.txt");
let outfile = self.temp_dir.path().join(format!(
"prepare_metadata_for_build_{}.txt",
self.build_kind
));

debug!(
"Calling `{}.prepare_metadata_for_build_wheel()`",
pep517_backend.backend
"Calling `{}.prepare_metadata_for_build_{}()`",
pep517_backend.backend, self.build_kind,
);
let script = formatdoc! {
r#"
{}
import json
prepare_metadata_for_build_wheel = getattr(backend, "prepare_metadata_for_build_wheel", None)
if prepare_metadata_for_build_wheel:
dirname = prepare_metadata_for_build_wheel("{}", {})
prepare_metadata_for_build = getattr(backend, "prepare_metadata_for_build_{}", None)
if prepare_metadata_for_build:
dirname = prepare_metadata_for_build("{}", {})
else:
dirname = None
with open("{}", "w") as fp:
fp.write(dirname or "")
"#,
pep517_backend.backend_import(),
self.build_kind,
escape_path_for_python(&metadata_directory),
self.config_settings.escape_for_python(),
outfile.escape_for_python(),
};
let span = info_span!(
"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()
);
let output = self
Expand All @@ -723,7 +724,7 @@ impl SourceBuild {
.await?;
if !output.status.success() {
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,
&self.version_id,
));
Expand Down

0 comments on commit 89cfece

Please sign in to comment.