mirror of
https://github.com/astral-sh/uv.git
synced 2025-09-26 20:19:08 +00:00
Respect --quiet
flag in uv build
(#7674)
I noticed this was not respected, seems like an oversight.
This commit is contained in:
parent
84e5f6e871
commit
12ab7d1ab7
5 changed files with 105 additions and 27 deletions
|
@ -239,7 +239,7 @@ impl Error {
|
||||||
|
|
||||||
if let Some(missing_library) = missing_library {
|
if let Some(missing_library) = missing_library {
|
||||||
return match level {
|
return match level {
|
||||||
BuildOutput::Stderr => Self::MissingHeader {
|
BuildOutput::Stderr | BuildOutput::Quiet => Self::MissingHeader {
|
||||||
message,
|
message,
|
||||||
exit_code: output.status,
|
exit_code: output.status,
|
||||||
missing_header_cause: MissingHeaderCause {
|
missing_header_cause: MissingHeaderCause {
|
||||||
|
@ -265,7 +265,7 @@ impl Error {
|
||||||
}
|
}
|
||||||
|
|
||||||
match level {
|
match level {
|
||||||
BuildOutput::Stderr => Self::BuildBackend {
|
BuildOutput::Stderr | BuildOutput::Quiet => Self::BuildBackend {
|
||||||
message,
|
message,
|
||||||
exit_code: output.status,
|
exit_code: output.status,
|
||||||
},
|
},
|
||||||
|
|
|
@ -988,6 +988,8 @@ pub enum Printer {
|
||||||
Stderr,
|
Stderr,
|
||||||
/// Send the build backend output to `tracing`.
|
/// Send the build backend output to `tracing`.
|
||||||
Debug,
|
Debug,
|
||||||
|
/// Hide the build backend output.
|
||||||
|
Quiet,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<BuildOutput> for Printer {
|
impl From<BuildOutput> for Printer {
|
||||||
|
@ -995,6 +997,7 @@ impl From<BuildOutput> for Printer {
|
||||||
match output {
|
match output {
|
||||||
BuildOutput::Stderr => Self::Stderr,
|
BuildOutput::Stderr => Self::Stderr,
|
||||||
BuildOutput::Debug => Self::Debug,
|
BuildOutput::Debug => Self::Debug,
|
||||||
|
BuildOutput::Quiet => Self::Quiet,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1008,6 +1011,7 @@ impl Write for Printer {
|
||||||
Self::Debug => {
|
Self::Debug => {
|
||||||
debug!("{s}");
|
debug!("{s}");
|
||||||
}
|
}
|
||||||
|
Self::Quiet => {}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,8 @@ pub enum BuildOutput {
|
||||||
Stderr,
|
Stderr,
|
||||||
/// Send the build backend output to `tracing`.
|
/// Send the build backend output to `tracing`.
|
||||||
Debug,
|
Debug,
|
||||||
|
/// Do not display the build backend output.
|
||||||
|
Quiet,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Default, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
#[derive(Debug, Default, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
||||||
|
|
|
@ -1,15 +1,11 @@
|
||||||
use crate::commands::project::find_requires_python;
|
|
||||||
use crate::commands::reporters::PythonDownloadReporter;
|
|
||||||
use crate::commands::{ExitStatus, SharedState};
|
|
||||||
use crate::printer::Printer;
|
|
||||||
use crate::settings::{ResolverSettings, ResolverSettingsRef};
|
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
use std::fmt::Write;
|
||||||
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
use crate::commands::pip::operations;
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use distribution_filename::SourceDistExtension;
|
use distribution_filename::SourceDistExtension;
|
||||||
use owo_colors::OwoColorize;
|
use owo_colors::OwoColorize;
|
||||||
use std::path::{Path, PathBuf};
|
|
||||||
use uv_auth::store_credentials_from_url;
|
use uv_auth::store_credentials_from_url;
|
||||||
use uv_cache::Cache;
|
use uv_cache::Cache;
|
||||||
use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder};
|
use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder};
|
||||||
|
@ -26,6 +22,13 @@ use uv_resolver::{FlatIndex, RequiresPython};
|
||||||
use uv_types::{BuildContext, BuildIsolation, HashStrategy};
|
use uv_types::{BuildContext, BuildIsolation, HashStrategy};
|
||||||
use uv_workspace::{DiscoveryOptions, Workspace};
|
use uv_workspace::{DiscoveryOptions, Workspace};
|
||||||
|
|
||||||
|
use crate::commands::pip::operations;
|
||||||
|
use crate::commands::project::find_requires_python;
|
||||||
|
use crate::commands::reporters::PythonDownloadReporter;
|
||||||
|
use crate::commands::{ExitStatus, SharedState};
|
||||||
|
use crate::printer::Printer;
|
||||||
|
use crate::settings::{ResolverSettings, ResolverSettingsRef};
|
||||||
|
|
||||||
/// Build source distributions and wheels.
|
/// Build source distributions and wheels.
|
||||||
#[allow(clippy::fn_params_excessive_bools)]
|
#[allow(clippy::fn_params_excessive_bools)]
|
||||||
pub(crate) async fn build(
|
pub(crate) async fn build(
|
||||||
|
@ -72,17 +75,26 @@ pub(crate) async fn build(
|
||||||
|
|
||||||
match assets {
|
match assets {
|
||||||
BuiltDistributions::Wheel(wheel) => {
|
BuiltDistributions::Wheel(wheel) => {
|
||||||
anstream::eprintln!("Successfully built {}", wheel.user_display().bold().cyan());
|
writeln!(
|
||||||
|
printer.stderr(),
|
||||||
|
"Successfully built {}",
|
||||||
|
wheel.user_display().bold().cyan()
|
||||||
|
)?;
|
||||||
}
|
}
|
||||||
BuiltDistributions::Sdist(sdist) => {
|
BuiltDistributions::Sdist(sdist) => {
|
||||||
anstream::eprintln!("Successfully built {}", sdist.user_display().bold().cyan());
|
writeln!(
|
||||||
|
printer.stderr(),
|
||||||
|
"Successfully built {}",
|
||||||
|
sdist.user_display().bold().cyan()
|
||||||
|
)?;
|
||||||
}
|
}
|
||||||
BuiltDistributions::Both(sdist, wheel) => {
|
BuiltDistributions::Both(sdist, wheel) => {
|
||||||
anstream::eprintln!(
|
writeln!(
|
||||||
|
printer.stderr(),
|
||||||
"Successfully built {} and {}",
|
"Successfully built {} and {}",
|
||||||
sdist.user_display().bold().cyan(),
|
sdist.user_display().bold().cyan(),
|
||||||
wheel.user_display().bold().cyan()
|
wheel.user_display().bold().cyan()
|
||||||
);
|
)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -356,9 +368,18 @@ async fn build_impl(
|
||||||
let version_id = src.path().file_name().and_then(|name| name.to_str());
|
let version_id = src.path().file_name().and_then(|name| name.to_str());
|
||||||
let dist = None;
|
let dist = None;
|
||||||
|
|
||||||
|
let build_output = match printer {
|
||||||
|
Printer::Default | Printer::NoProgress | Printer::Verbose => BuildOutput::Stderr,
|
||||||
|
Printer::Quiet => BuildOutput::Quiet,
|
||||||
|
};
|
||||||
|
|
||||||
let assets = match plan {
|
let assets = match plan {
|
||||||
BuildPlan::SdistToWheel => {
|
BuildPlan::SdistToWheel => {
|
||||||
anstream::eprintln!("{}", "Building source distribution...".bold());
|
writeln!(
|
||||||
|
printer.stderr(),
|
||||||
|
"{}",
|
||||||
|
"Building source distribution...".bold()
|
||||||
|
)?;
|
||||||
|
|
||||||
// Build the sdist.
|
// Build the sdist.
|
||||||
let builder = build_dispatch
|
let builder = build_dispatch
|
||||||
|
@ -368,7 +389,7 @@ async fn build_impl(
|
||||||
version_id.map(ToString::to_string),
|
version_id.map(ToString::to_string),
|
||||||
dist,
|
dist,
|
||||||
BuildKind::Sdist,
|
BuildKind::Sdist,
|
||||||
BuildOutput::Stderr,
|
build_output,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let sdist = builder.build(&output_dir).await?;
|
let sdist = builder.build(&output_dir).await?;
|
||||||
|
@ -389,7 +410,11 @@ async fn build_impl(
|
||||||
Err(err) => return Err(err.into()),
|
Err(err) => return Err(err.into()),
|
||||||
};
|
};
|
||||||
|
|
||||||
anstream::eprintln!("{}", "Building wheel from source distribution...".bold());
|
writeln!(
|
||||||
|
printer.stderr(),
|
||||||
|
"{}",
|
||||||
|
"Building wheel from source distribution...".bold()
|
||||||
|
)?;
|
||||||
|
|
||||||
// Build a wheel from the source distribution.
|
// Build a wheel from the source distribution.
|
||||||
let builder = build_dispatch
|
let builder = build_dispatch
|
||||||
|
@ -399,7 +424,7 @@ async fn build_impl(
|
||||||
version_id.map(ToString::to_string),
|
version_id.map(ToString::to_string),
|
||||||
dist,
|
dist,
|
||||||
BuildKind::Wheel,
|
BuildKind::Wheel,
|
||||||
BuildOutput::Stderr,
|
build_output,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let wheel = builder.build(&output_dir).await?;
|
let wheel = builder.build(&output_dir).await?;
|
||||||
|
@ -407,7 +432,11 @@ async fn build_impl(
|
||||||
BuiltDistributions::Both(output_dir.join(sdist), output_dir.join(wheel))
|
BuiltDistributions::Both(output_dir.join(sdist), output_dir.join(wheel))
|
||||||
}
|
}
|
||||||
BuildPlan::Sdist => {
|
BuildPlan::Sdist => {
|
||||||
anstream::eprintln!("{}", "Building source distribution...".bold());
|
writeln!(
|
||||||
|
printer.stderr(),
|
||||||
|
"{}",
|
||||||
|
"Building source distribution...".bold()
|
||||||
|
)?;
|
||||||
|
|
||||||
let builder = build_dispatch
|
let builder = build_dispatch
|
||||||
.setup_build(
|
.setup_build(
|
||||||
|
@ -416,7 +445,7 @@ async fn build_impl(
|
||||||
version_id.map(ToString::to_string),
|
version_id.map(ToString::to_string),
|
||||||
dist,
|
dist,
|
||||||
BuildKind::Sdist,
|
BuildKind::Sdist,
|
||||||
BuildOutput::Stderr,
|
build_output,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let sdist = builder.build(&output_dir).await?;
|
let sdist = builder.build(&output_dir).await?;
|
||||||
|
@ -424,7 +453,7 @@ async fn build_impl(
|
||||||
BuiltDistributions::Sdist(output_dir.join(sdist))
|
BuiltDistributions::Sdist(output_dir.join(sdist))
|
||||||
}
|
}
|
||||||
BuildPlan::Wheel => {
|
BuildPlan::Wheel => {
|
||||||
anstream::eprintln!("{}", "Building wheel...".bold());
|
writeln!(printer.stderr(), "{}", "Building wheel...".bold())?;
|
||||||
|
|
||||||
let builder = build_dispatch
|
let builder = build_dispatch
|
||||||
.setup_build(
|
.setup_build(
|
||||||
|
@ -433,7 +462,7 @@ async fn build_impl(
|
||||||
version_id.map(ToString::to_string),
|
version_id.map(ToString::to_string),
|
||||||
dist,
|
dist,
|
||||||
BuildKind::Wheel,
|
BuildKind::Wheel,
|
||||||
BuildOutput::Stderr,
|
build_output,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let wheel = builder.build(&output_dir).await?;
|
let wheel = builder.build(&output_dir).await?;
|
||||||
|
@ -441,7 +470,11 @@ async fn build_impl(
|
||||||
BuiltDistributions::Wheel(output_dir.join(wheel))
|
BuiltDistributions::Wheel(output_dir.join(wheel))
|
||||||
}
|
}
|
||||||
BuildPlan::SdistAndWheel => {
|
BuildPlan::SdistAndWheel => {
|
||||||
anstream::eprintln!("{}", "Building source distribution...".bold());
|
writeln!(
|
||||||
|
printer.stderr(),
|
||||||
|
"{}",
|
||||||
|
"Building source distribution...".bold()
|
||||||
|
)?;
|
||||||
let builder = build_dispatch
|
let builder = build_dispatch
|
||||||
.setup_build(
|
.setup_build(
|
||||||
src.path(),
|
src.path(),
|
||||||
|
@ -449,12 +482,12 @@ async fn build_impl(
|
||||||
version_id.map(ToString::to_string),
|
version_id.map(ToString::to_string),
|
||||||
dist,
|
dist,
|
||||||
BuildKind::Sdist,
|
BuildKind::Sdist,
|
||||||
BuildOutput::Stderr,
|
build_output,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let sdist = builder.build(&output_dir).await?;
|
let sdist = builder.build(&output_dir).await?;
|
||||||
|
|
||||||
anstream::eprintln!("{}", "Building wheel...".bold());
|
writeln!(printer.stderr(), "{}", "Building wheel...".bold())?;
|
||||||
let builder = build_dispatch
|
let builder = build_dispatch
|
||||||
.setup_build(
|
.setup_build(
|
||||||
src.path(),
|
src.path(),
|
||||||
|
@ -462,7 +495,7 @@ async fn build_impl(
|
||||||
version_id.map(ToString::to_string),
|
version_id.map(ToString::to_string),
|
||||||
dist,
|
dist,
|
||||||
BuildKind::Wheel,
|
BuildKind::Wheel,
|
||||||
BuildOutput::Stderr,
|
build_output,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let wheel = builder.build(&output_dir).await?;
|
let wheel = builder.build(&output_dir).await?;
|
||||||
|
@ -470,7 +503,11 @@ async fn build_impl(
|
||||||
BuiltDistributions::Both(output_dir.join(&sdist), output_dir.join(&wheel))
|
BuiltDistributions::Both(output_dir.join(&sdist), output_dir.join(&wheel))
|
||||||
}
|
}
|
||||||
BuildPlan::WheelFromSdist => {
|
BuildPlan::WheelFromSdist => {
|
||||||
anstream::eprintln!("{}", "Building wheel from source distribution...".bold());
|
writeln!(
|
||||||
|
printer.stderr(),
|
||||||
|
"{}",
|
||||||
|
"Building wheel from source distribution...".bold()
|
||||||
|
)?;
|
||||||
|
|
||||||
// Extract the source distribution into a temporary directory.
|
// Extract the source distribution into a temporary directory.
|
||||||
let reader = fs_err::tokio::File::open(src.path()).await?;
|
let reader = fs_err::tokio::File::open(src.path()).await?;
|
||||||
|
@ -495,7 +532,7 @@ async fn build_impl(
|
||||||
version_id.map(ToString::to_string),
|
version_id.map(ToString::to_string),
|
||||||
dist,
|
dist,
|
||||||
BuildKind::Wheel,
|
BuildKind::Wheel,
|
||||||
BuildOutput::Stderr,
|
build_output,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let wheel = builder.build(&output_dir).await?;
|
let wheel = builder.build(&output_dir).await?;
|
||||||
|
|
|
@ -1486,3 +1486,38 @@ fn sha() -> Result<()> {
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn build_quiet() -> Result<()> {
|
||||||
|
let context = TestContext::new("3.12");
|
||||||
|
|
||||||
|
let project = context.temp_dir.child("project");
|
||||||
|
|
||||||
|
let pyproject_toml = project.child("pyproject.toml");
|
||||||
|
pyproject_toml.write_str(
|
||||||
|
r#"
|
||||||
|
[project]
|
||||||
|
name = "project"
|
||||||
|
version = "0.1.0"
|
||||||
|
requires-python = ">=3.12"
|
||||||
|
dependencies = ["anyio==3.7.0"]
|
||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["setuptools>=42"]
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
"#,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
project.child("src").child("__init__.py").touch()?;
|
||||||
|
project.child("README").touch()?;
|
||||||
|
|
||||||
|
uv_snapshot!(&context.filters(), context.build().arg("project").arg("-q"), @r###"
|
||||||
|
success: true
|
||||||
|
exit_code: 0
|
||||||
|
----- stdout -----
|
||||||
|
|
||||||
|
----- stderr -----
|
||||||
|
"###);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue