mirror of
https://github.com/astral-sh/uv.git
synced 2025-09-26 12:09:12 +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 {
|
||||
return match level {
|
||||
BuildOutput::Stderr => Self::MissingHeader {
|
||||
BuildOutput::Stderr | BuildOutput::Quiet => Self::MissingHeader {
|
||||
message,
|
||||
exit_code: output.status,
|
||||
missing_header_cause: MissingHeaderCause {
|
||||
|
@ -265,7 +265,7 @@ impl Error {
|
|||
}
|
||||
|
||||
match level {
|
||||
BuildOutput::Stderr => Self::BuildBackend {
|
||||
BuildOutput::Stderr | BuildOutput::Quiet => Self::BuildBackend {
|
||||
message,
|
||||
exit_code: output.status,
|
||||
},
|
||||
|
|
|
@ -988,6 +988,8 @@ pub enum Printer {
|
|||
Stderr,
|
||||
/// Send the build backend output to `tracing`.
|
||||
Debug,
|
||||
/// Hide the build backend output.
|
||||
Quiet,
|
||||
}
|
||||
|
||||
impl From<BuildOutput> for Printer {
|
||||
|
@ -995,6 +997,7 @@ impl From<BuildOutput> for Printer {
|
|||
match output {
|
||||
BuildOutput::Stderr => Self::Stderr,
|
||||
BuildOutput::Debug => Self::Debug,
|
||||
BuildOutput::Quiet => Self::Quiet,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1008,6 +1011,7 @@ impl Write for Printer {
|
|||
Self::Debug => {
|
||||
debug!("{s}");
|
||||
}
|
||||
Self::Quiet => {}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -31,6 +31,8 @@ pub enum BuildOutput {
|
|||
Stderr,
|
||||
/// Send the build backend output to `tracing`.
|
||||
Debug,
|
||||
/// Do not display the build backend output.
|
||||
Quiet,
|
||||
}
|
||||
|
||||
#[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::fmt::Write;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
use crate::commands::pip::operations;
|
||||
use anyhow::Result;
|
||||
use distribution_filename::SourceDistExtension;
|
||||
use owo_colors::OwoColorize;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
use uv_auth::store_credentials_from_url;
|
||||
use uv_cache::Cache;
|
||||
use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder};
|
||||
|
@ -26,6 +22,13 @@ use uv_resolver::{FlatIndex, RequiresPython};
|
|||
use uv_types::{BuildContext, BuildIsolation, HashStrategy};
|
||||
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.
|
||||
#[allow(clippy::fn_params_excessive_bools)]
|
||||
pub(crate) async fn build(
|
||||
|
@ -72,17 +75,26 @@ pub(crate) async fn build(
|
|||
|
||||
match assets {
|
||||
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) => {
|
||||
anstream::eprintln!("Successfully built {}", sdist.user_display().bold().cyan());
|
||||
writeln!(
|
||||
printer.stderr(),
|
||||
"Successfully built {}",
|
||||
sdist.user_display().bold().cyan()
|
||||
)?;
|
||||
}
|
||||
BuiltDistributions::Both(sdist, wheel) => {
|
||||
anstream::eprintln!(
|
||||
writeln!(
|
||||
printer.stderr(),
|
||||
"Successfully built {} and {}",
|
||||
sdist.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 dist = None;
|
||||
|
||||
let build_output = match printer {
|
||||
Printer::Default | Printer::NoProgress | Printer::Verbose => BuildOutput::Stderr,
|
||||
Printer::Quiet => BuildOutput::Quiet,
|
||||
};
|
||||
|
||||
let assets = match plan {
|
||||
BuildPlan::SdistToWheel => {
|
||||
anstream::eprintln!("{}", "Building source distribution...".bold());
|
||||
writeln!(
|
||||
printer.stderr(),
|
||||
"{}",
|
||||
"Building source distribution...".bold()
|
||||
)?;
|
||||
|
||||
// Build the sdist.
|
||||
let builder = build_dispatch
|
||||
|
@ -368,7 +389,7 @@ async fn build_impl(
|
|||
version_id.map(ToString::to_string),
|
||||
dist,
|
||||
BuildKind::Sdist,
|
||||
BuildOutput::Stderr,
|
||||
build_output,
|
||||
)
|
||||
.await?;
|
||||
let sdist = builder.build(&output_dir).await?;
|
||||
|
@ -389,7 +410,11 @@ async fn build_impl(
|
|||
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.
|
||||
let builder = build_dispatch
|
||||
|
@ -399,7 +424,7 @@ async fn build_impl(
|
|||
version_id.map(ToString::to_string),
|
||||
dist,
|
||||
BuildKind::Wheel,
|
||||
BuildOutput::Stderr,
|
||||
build_output,
|
||||
)
|
||||
.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))
|
||||
}
|
||||
BuildPlan::Sdist => {
|
||||
anstream::eprintln!("{}", "Building source distribution...".bold());
|
||||
writeln!(
|
||||
printer.stderr(),
|
||||
"{}",
|
||||
"Building source distribution...".bold()
|
||||
)?;
|
||||
|
||||
let builder = build_dispatch
|
||||
.setup_build(
|
||||
|
@ -416,7 +445,7 @@ async fn build_impl(
|
|||
version_id.map(ToString::to_string),
|
||||
dist,
|
||||
BuildKind::Sdist,
|
||||
BuildOutput::Stderr,
|
||||
build_output,
|
||||
)
|
||||
.await?;
|
||||
let sdist = builder.build(&output_dir).await?;
|
||||
|
@ -424,7 +453,7 @@ async fn build_impl(
|
|||
BuiltDistributions::Sdist(output_dir.join(sdist))
|
||||
}
|
||||
BuildPlan::Wheel => {
|
||||
anstream::eprintln!("{}", "Building wheel...".bold());
|
||||
writeln!(printer.stderr(), "{}", "Building wheel...".bold())?;
|
||||
|
||||
let builder = build_dispatch
|
||||
.setup_build(
|
||||
|
@ -433,7 +462,7 @@ async fn build_impl(
|
|||
version_id.map(ToString::to_string),
|
||||
dist,
|
||||
BuildKind::Wheel,
|
||||
BuildOutput::Stderr,
|
||||
build_output,
|
||||
)
|
||||
.await?;
|
||||
let wheel = builder.build(&output_dir).await?;
|
||||
|
@ -441,7 +470,11 @@ async fn build_impl(
|
|||
BuiltDistributions::Wheel(output_dir.join(wheel))
|
||||
}
|
||||
BuildPlan::SdistAndWheel => {
|
||||
anstream::eprintln!("{}", "Building source distribution...".bold());
|
||||
writeln!(
|
||||
printer.stderr(),
|
||||
"{}",
|
||||
"Building source distribution...".bold()
|
||||
)?;
|
||||
let builder = build_dispatch
|
||||
.setup_build(
|
||||
src.path(),
|
||||
|
@ -449,12 +482,12 @@ async fn build_impl(
|
|||
version_id.map(ToString::to_string),
|
||||
dist,
|
||||
BuildKind::Sdist,
|
||||
BuildOutput::Stderr,
|
||||
build_output,
|
||||
)
|
||||
.await?;
|
||||
let sdist = builder.build(&output_dir).await?;
|
||||
|
||||
anstream::eprintln!("{}", "Building wheel...".bold());
|
||||
writeln!(printer.stderr(), "{}", "Building wheel...".bold())?;
|
||||
let builder = build_dispatch
|
||||
.setup_build(
|
||||
src.path(),
|
||||
|
@ -462,7 +495,7 @@ async fn build_impl(
|
|||
version_id.map(ToString::to_string),
|
||||
dist,
|
||||
BuildKind::Wheel,
|
||||
BuildOutput::Stderr,
|
||||
build_output,
|
||||
)
|
||||
.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))
|
||||
}
|
||||
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.
|
||||
let reader = fs_err::tokio::File::open(src.path()).await?;
|
||||
|
@ -495,7 +532,7 @@ async fn build_impl(
|
|||
version_id.map(ToString::to_string),
|
||||
dist,
|
||||
BuildKind::Wheel,
|
||||
BuildOutput::Stderr,
|
||||
build_output,
|
||||
)
|
||||
.await?;
|
||||
let wheel = builder.build(&output_dir).await?;
|
||||
|
|
|
@ -1486,3 +1486,38 @@ fn sha() -> Result<()> {
|
|||
|
||||
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