Don't warn when `--output-file` is empty (#9417)

## Summary

Closes https://github.com/astral-sh/uv/issues/9410.
This commit is contained in:
Charlie Marsh 2024-11-25 17:09:18 -05:00 committed by GitHub
parent f0c4865d3f
commit 0158717ae6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 49 additions and 20 deletions

1
Cargo.lock generated
View File

@ -5396,7 +5396,6 @@ dependencies = [
"uv-normalize",
"uv-pep508",
"uv-pypi-types",
"uv-warnings",
]
[[package]]

View File

@ -23,7 +23,6 @@ uv-client = { workspace = true }
uv-fs = { workspace = true }
uv-normalize = { workspace = true }
uv-configuration = { workspace = true }
uv-warnings = { workspace = true }
fs-err = { workspace = true }
regex = { workspace = true }

View File

@ -52,7 +52,6 @@ use uv_distribution_types::{UnresolvedRequirement, UnresolvedRequirementSpecific
use uv_fs::Simplified;
use uv_pep508::{expand_env_vars, Pep508Error, RequirementOrigin, VerbatimUrl};
use uv_pypi_types::{Requirement, VerbatimParsedUrl};
use uv_warnings::warn_user;
use crate::requirement::EditableError;
pub use crate::requirement::RequirementsTxtRequirement;
@ -219,16 +218,6 @@ impl RequirementsTxt {
file: requirements_txt.to_path_buf(),
error: err,
})?;
if data == Self::default() {
if requirements_txt == Path::new("-") {
warn_user!("No dependencies found in stdin");
} else {
warn_user!(
"Requirements file {} does not contain any dependencies",
requirements_txt.user_display()
);
}
}
Ok(data)
}

View File

@ -45,6 +45,7 @@ use uv_pep508::{MarkerTree, UnnamedRequirement, UnnamedRequirementUrl};
use uv_pypi_types::Requirement;
use uv_pypi_types::VerbatimParsedUrl;
use uv_requirements_txt::{RequirementsTxt, RequirementsTxtRequirement};
use uv_warnings::warn_user;
use uv_workspace::pyproject::PyProjectToml;
use crate::RequirementsSource;
@ -113,6 +114,18 @@ impl RequirementsSpecification {
}
let requirements_txt = RequirementsTxt::parse(path, &*CWD, client_builder).await?;
if requirements_txt == RequirementsTxt::default() {
if path == Path::new("-") {
warn_user!("No dependencies found in stdin");
} else {
warn_user!(
"Requirements file `{}` does not contain any dependencies",
path.user_display()
);
}
}
Self {
requirements: requirements_txt
.requirements

View File

@ -132,7 +132,7 @@ fn missing_venv() -> Result<()> {
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
----- stderr -----
warning: Requirements file requirements.in does not contain any dependencies
warning: Requirements file `requirements.in` does not contain any dependencies
Resolved in [TIME]
"###
);
@ -142,6 +142,35 @@ fn missing_venv() -> Result<()> {
Ok(())
}
#[test]
fn empty_output() -> Result<()> {
let context = TestContext::new("3.12");
context
.temp_dir
.child("requirements.in")
.write_str("iniconfig==1.1.1")?;
context.temp_dir.child("requirements.txt").touch()?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--output-file")
.arg("requirements.txt"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --output-file requirements.txt
iniconfig==1.1.1
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
Ok(())
}
/// Resolve a specific version of `anyio` from a `pyproject.toml` file.
#[test]
fn compile_pyproject_toml() -> Result<()> {

View File

@ -50,7 +50,7 @@ fn empty_requirements_txt() -> Result<()> {
----- stdout -----
----- stderr -----
warning: Requirements file requirements.txt does not contain any dependencies
warning: Requirements file `requirements.txt` does not contain any dependencies
Audited in [TIME]
"###
);

View File

@ -360,7 +360,7 @@ fn pip_sync_empty() -> Result<()> {
----- stdout -----
----- stderr -----
warning: Requirements file requirements.txt does not contain any dependencies
warning: Requirements file `requirements.txt` does not contain any dependencies
No requirements found (hint: use `--allow-empty-requirements` to clear the environment)
"###
);
@ -373,7 +373,7 @@ fn pip_sync_empty() -> Result<()> {
----- stdout -----
----- stderr -----
warning: Requirements file requirements.txt does not contain any dependencies
warning: Requirements file `requirements.txt` does not contain any dependencies
Resolved in [TIME]
Audited in [TIME]
"###
@ -397,7 +397,7 @@ fn pip_sync_empty() -> Result<()> {
----- stdout -----
----- stderr -----
warning: Requirements file requirements.txt does not contain any dependencies
warning: Requirements file `requirements.txt` does not contain any dependencies
Resolved in [TIME]
Uninstalled 1 package in [TIME]
- iniconfig==2.0.0

View File

@ -1751,7 +1751,7 @@ fn run_empty_requirements_txt() -> Result<()> {
+ foo==1.0.0 (from file://[TEMP_DIR]/)
+ idna==3.6
+ sniffio==1.3.1
warning: Requirements file requirements.txt does not contain any dependencies
warning: Requirements file `requirements.txt` does not contain any dependencies
"###);
// Then reused in subsequent invocations
@ -1763,7 +1763,7 @@ fn run_empty_requirements_txt() -> Result<()> {
----- stderr -----
Resolved 6 packages in [TIME]
Audited 4 packages in [TIME]
warning: Requirements file requirements.txt does not contain any dependencies
warning: Requirements file `requirements.txt` does not contain any dependencies
"###);
Ok(())