Remove miette

This commit is contained in:
Zanie Blue 2025-12-12 11:51:24 -06:00
parent 6de869cc88
commit 633cf847fb
30 changed files with 2503 additions and 2501 deletions

34
Cargo.lock generated
View File

@ -2300,12 +2300,6 @@ dependencies = [
"once_cell",
]
[[package]]
name = "is_ci"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45"
[[package]]
name = "is_terminal_polyfill"
version = "1.70.1"
@ -2623,12 +2617,6 @@ checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7"
dependencies = [
"cfg-if",
"miette-derive",
"owo-colors",
"supports-color",
"supports-hyperlinks",
"supports-unicode",
"terminal_size",
"textwrap",
"unicode-width 0.1.14",
]
@ -4469,27 +4457,6 @@ version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "supports-color"
version = "3.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6"
dependencies = [
"is_ci",
]
[[package]]
name = "supports-hyperlinks"
version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "804f44ed3c63152de6a9f90acbea1a110441de43006ea51bcce8f436196a288b"
[[package]]
name = "supports-unicode"
version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2"
[[package]]
name = "svg"
version = "0.18.0"
@ -5437,7 +5404,6 @@ dependencies = [
"indoc",
"insta",
"itertools 0.14.0",
"miette",
"nix",
"open",
"owo-colors",

View File

@ -132,7 +132,6 @@ junction = { version = "1.2.0" }
mailparse = { version = "0.16.0" }
md-5 = { version = "0.10.6" }
memchr = { version = "2.7.4" }
miette = { version = "7.2.0", features = ["fancy-no-backtrace"] }
nanoid = { version = "0.4.0" }
nix = { version = "0.30.0", features = ["signal"] }
open = { version = "5.3.2" }

View File

@ -88,12 +88,23 @@ pub fn write_error_chain(
err.to_string().trim()
)?;
for source in iter::successors(err.source(), |&err| err.source()) {
let msg = source.to_string();
let mut lines = msg.lines();
if let Some(first) = lines.next() {
let padding = " ";
let cause = "Caused by";
let child_padding = " ".repeat(padding.len() + cause.len() + 2);
writeln!(
&mut stream,
" {}: {}",
"Caused by".color(color).bold(),
source.to_string().trim()
"{}{}: {}",
padding,
cause.color(color).bold(),
first.trim()
)?;
for line in lines {
writeln!(&mut stream, "{}{}", child_padding, line.trim_end())?;
}
}
}
Ok(())
}

View File

@ -87,7 +87,6 @@ indicatif = { workspace = true }
indoc = { workspace = true }
itertools = { workspace = true }
h2 = { workspace = true }
miette = { workspace = true, features = ["fancy-no-backtrace"] }
open = { workspace = true }
owo-colors = { workspace = true }
petgraph = { workspace = true }

View File

@ -48,7 +48,7 @@ use crate::commands::ExitStatus;
use crate::commands::pip::operations;
use crate::commands::project::{ProjectError, find_requires_python};
use crate::commands::reporters::PythonDownloadReporter;
use crate::printer::Printer;
use crate::printer::{Printer, Stderr};
use crate::settings::ResolverSettings;
#[derive(Debug, Error)]
@ -385,15 +385,12 @@ async fn build_impl(
}
}
Err(err) => {
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[error("Failed to build `{source}`", source = source.cyan())]
#[diagnostic()]
#[derive(Debug, Error)]
#[error("Failed to build `{source}`")]
struct Diagnostic {
source: String,
#[source]
cause: anyhow::Error,
#[help]
help: Option<String>,
}
let help = if let Error::Extract(uv_extract::Error::Tar(err)) = &err {
@ -421,12 +418,19 @@ async fn build_impl(
None
};
let report = miette::Report::new(Diagnostic {
let diagnostic = Diagnostic {
source: source.to_string(),
cause: err.into(),
help,
});
anstream::eprint!("{report:?}");
};
let _ = uv_warnings::write_error_chain(
&diagnostic,
Stderr::Enabled,
"error",
owo_colors::AnsiColors::Red,
);
if let Some(help) = help {
let _ = writeln!(Stderr::Enabled, "\n{}: {help}", "hint".bold().cyan());
}
success = false;
}

View File

@ -1,8 +1,10 @@
use std::fmt::Write;
use std::str::FromStr;
use std::sync::{Arc, LazyLock};
use owo_colors::OwoColorize;
use rustc_hash::FxHashMap;
use thiserror::Error;
use version_ranges::Ranges;
use uv_distribution_types::{
@ -11,8 +13,10 @@ use uv_distribution_types::{
use uv_normalize::PackageName;
use uv_pep440::Version;
use uv_resolver::SentinelRange;
use uv_warnings::write_error_chain;
use crate::commands::pip;
use crate::printer::Stderr;
static SUGGESTIONS: LazyLock<FxHashMap<PackageName, PackageName>> = LazyLock::new(|| {
let suggestions: Vec<(String, String)> =
@ -77,7 +81,7 @@ impl OperationDiagnostic {
if let Some(context) = self.context {
no_solution_context(&err, context);
} else if let Some(hint) = self.hint {
no_solution_hint(err, hint);
no_solution_hint(err, &hint);
} else {
no_solution(&err);
}
@ -122,9 +126,14 @@ impl OperationDiagnostic {
}
pip::operations::Error::Requirements(err) => {
if let Some(context) = self.context {
let err = miette::Report::msg(format!("{err}"))
let err = anyhow::Error::from(err)
.context(format!("Failed to resolve {context} requirement"));
anstream::eprint!("{err:?}");
let _ = write_error_chain(
err.as_ref(),
Stderr::Enabled,
"error",
owo_colors::AnsiColors::Red,
);
None
} else {
Some(pip::operations::Error::Requirements(err))
@ -133,7 +142,7 @@ impl OperationDiagnostic {
pip::operations::Error::Resolve(uv_resolver::ResolveError::Client(err))
if !self.native_tls && err.is_ssl() =>
{
native_tls_hint(err);
native_tls_hint(&err);
None
}
pip::operations::Error::OutdatedEnvironment => {
@ -145,6 +154,14 @@ impl OperationDiagnostic {
}
}
/// Display an error with an optional help message.
pub(crate) fn show_error(err: &dyn std::error::Error, help: Option<&str>) {
let _ = write_error_chain(err, Stderr::Enabled, "error", owo_colors::AnsiColors::Red);
if let Some(help) = help {
let _ = writeln!(Stderr::Enabled, "\n{}: {help}", "hint".bold().cyan());
}
}
/// Render a distribution failure (read, download or build) with a help message.
pub(crate) fn dist_error(
kind: DistErrorKind,
@ -153,16 +170,13 @@ pub(crate) fn dist_error(
cause: Arc<uv_distribution::Error>,
help: Option<String>,
) {
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[derive(Debug, Error)]
#[error("{kind} `{dist}`")]
#[diagnostic()]
struct Diagnostic {
kind: DistErrorKind,
dist: Box<Dist>,
#[source]
cause: Arc<uv_distribution::Error>,
#[help]
help: Option<String>,
}
let help = help.or_else(|| {
@ -184,13 +198,8 @@ pub(crate) fn dist_error(
}
})
});
let report = miette::Report::new(Diagnostic {
kind,
dist,
cause,
help,
});
anstream::eprint!("{report:?}");
let err = Diagnostic { kind, dist, cause };
show_error(&err, help.as_deref());
}
/// Render a requested distribution failure (read, download or build) with a help message.
@ -201,16 +210,13 @@ pub(crate) fn requested_dist_error(
cause: Arc<uv_distribution::Error>,
help: Option<String>,
) {
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[derive(Debug, Error)]
#[error("{kind} `{dist}`")]
#[diagnostic()]
struct Diagnostic {
kind: DistErrorKind,
dist: Box<RequestedDist>,
#[source]
cause: Arc<uv_distribution::Error>,
#[help]
help: Option<String>,
}
let help = help.or_else(|| {
@ -232,13 +238,8 @@ pub(crate) fn requested_dist_error(
}
})
});
let report = miette::Report::new(Diagnostic {
kind,
dist,
cause,
help,
});
anstream::eprint!("{report:?}");
let err = Diagnostic { kind, dist, cause };
show_error(&err, help.as_deref());
}
/// Render an error in fetching a package's dependencies.
@ -249,16 +250,13 @@ pub(crate) fn dependencies_error(
chain: &DerivationChain,
help: Option<String>,
) {
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
#[error("Failed to resolve dependencies for `{}` ({})", name.cyan(), format!("v{version}").cyan())]
#[diagnostic()]
#[derive(Debug, Error)]
#[error("Failed to resolve dependencies for `{name}` (v{version})")]
struct Diagnostic {
name: PackageName,
version: Version,
#[source]
cause: Box<uv_resolver::ResolveError>,
#[help]
help: Option<String>,
}
let help = help.or_else(|| {
@ -280,83 +278,62 @@ pub(crate) fn dependencies_error(
}
})
});
let report = miette::Report::new(Diagnostic {
let err = Diagnostic {
name: name.clone(),
version: version.clone(),
cause: error,
help,
});
anstream::eprint!("{report:?}");
};
show_error(&err, help.as_deref());
}
/// Render a [`uv_resolver::NoSolutionError`].
pub(crate) fn no_solution(err: &uv_resolver::NoSolutionError) {
let report = miette::Report::msg(format!("{err}")).context(err.header());
anstream::eprint!("{report:?}");
let err = anyhow::Error::msg(format!("{err}")).context(err.header().to_string());
let _ = write_error_chain(
err.as_ref(),
Stderr::Enabled,
"error",
owo_colors::AnsiColors::Red,
);
}
/// Render a [`uv_resolver::NoSolutionError`] with dedicated context.
pub(crate) fn no_solution_context(err: &uv_resolver::NoSolutionError, context: &'static str) {
let report = miette::Report::msg(format!("{err}")).context(err.header().with_context(context));
anstream::eprint!("{report:?}");
let err = anyhow::Error::msg(format!("{err}"))
.context(err.header().with_context(context).to_string());
let _ = write_error_chain(
err.as_ref(),
Stderr::Enabled,
"error",
owo_colors::AnsiColors::Red,
);
}
/// Render a [`uv_resolver::NoSolutionError`] with a help message.
pub(crate) fn no_solution_hint(err: Box<uv_resolver::NoSolutionError>, help: String) {
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
pub(crate) fn no_solution_hint(err: Box<uv_resolver::NoSolutionError>, help: &str) {
#[derive(Debug, Error)]
#[error("{header}")]
#[diagnostic()]
struct Error {
struct HeaderError {
/// The header to render in the error message.
header: uv_resolver::NoSolutionHeader,
/// The underlying error.
#[source]
err: Box<uv_resolver::NoSolutionError>,
/// The help message to display.
#[help]
help: String,
}
let header = err.header();
let report = miette::Report::new(Error { header, err, help });
anstream::eprint!("{report:?}");
let err = HeaderError { header, err };
show_error(&err, Some(help));
}
/// Render a [`uv_resolver::NoSolutionError`] with a help message.
pub(crate) fn native_tls_hint(err: uv_client::Error) {
#[derive(Debug, miette::Diagnostic)]
#[diagnostic()]
struct Error {
/// The underlying error.
err: uv_client::Error,
/// The help message to display.
#[help]
help: String,
}
impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.err)
}
}
impl std::error::Error for Error {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
self.err.source()
}
}
let report = miette::Report::new(Error {
err,
help: format!(
/// Render an SSL error with a hint about native TLS.
pub(crate) fn native_tls_hint(err: &uv_client::Error) {
let hint = format!(
"Consider enabling use of system TLS certificates with the `{}` command-line flag",
"--native-tls".green()
),
});
anstream::eprint!("{report:?}");
);
show_error(err, Some(&hint));
}
/// Format a [`DerivationChain`] as a human-readable error message.

View File

@ -4,7 +4,6 @@ use std::path::Path;
use std::path::PathBuf;
use std::str::FromStr;
use anstream::eprint;
use anyhow::{Context, bail};
use console::Term;
use itertools::Itertools;
@ -58,7 +57,7 @@ use crate::commands::reporters::PythonDownloadReporter;
use crate::commands::tool::common::{matching_packages, refine_interpreter};
use crate::commands::tool::{Target, ToolRequest};
use crate::commands::{diagnostics, project::environment::CachedEnvironment};
use crate::printer::Printer;
use crate::printer::{Printer, Stderr};
use crate::settings::ResolverInstallerSettings;
use crate::settings::ResolverSettings;
@ -342,9 +341,13 @@ pub(crate) async fn run(
}
Err(ProjectError::Requirements(err)) => {
let err = miette::Report::msg(format!("{err}"))
.context("Failed to resolve `--with` requirement");
eprint!("{err:?}");
let err = anyhow::Error::from(err).context("Failed to resolve `--with` requirement");
let _ = uv_warnings::write_error_chain(
err.as_ref(),
Stderr::Enabled,
"error",
owo_colors::AnsiColors::Red,
);
return Ok(ExitStatus::Failure);
}
Err(err) => return Err(err.into()),

View File

@ -421,21 +421,6 @@ async fn run(mut cli: Cli) -> Result<ExitStatus> {
anstream::ColorChoice::write_global(globals.color.into());
miette::set_hook(Box::new(|_| {
Box::new(
miette::MietteHandlerOpts::new()
.break_words(false)
.word_separator(textwrap::WordSeparator::AsciiSpace)
.word_splitter(textwrap::WordSplitter::NoHyphenation)
.wrap_lines(
std::env::var(EnvVars::UV_NO_WRAP)
.map(|_| false)
.unwrap_or(true),
)
.build(),
)
}))?;
// Don't initialize the rayon threadpool yet, this is too costly when we're doing a noop sync.
uv_configuration::RAYON_PARALLELISM.store(globals.concurrency.installs, Ordering::Relaxed);

View File

@ -148,8 +148,8 @@ fn add_package_native_auth() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
hint: An index URL (https://pypi-proxy.fly.dev/basic-auth/simple) could not be queried due to a lack of valid authentication credentials (401 Unauthorized).
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.

View File

@ -67,8 +67,8 @@ fn branching_urls_overlapping() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to resolve dependencies for `a` (v0.1.0)
Requirements contain conflicting URLs for package `iniconfig` in split `python_full_version == '3.11.*'`:
error: Failed to resolve dependencies for `a` (v0.1.0)
Caused by: Requirements contain conflicting URLs for package `iniconfig` in split `python_full_version == '3.11.*'`:
- https://files.pythonhosted.org/packages/9b/dd/b3c12c6d707058fa947864b67f0c4e0c39ef8610988d7baea9578f3c48f3/iniconfig-1.1.1-py2.py3-none-any.whl
- https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl
"
@ -135,11 +135,12 @@ fn root_package_splits_but_transitive_conflict() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to resolve dependencies for `b2` (v0.1.0)
Requirements contain conflicting URLs for package `iniconfig` in split `python_full_version >= '3.12'`:
error: Failed to resolve dependencies for `b2` (v0.1.0)
Caused by: Requirements contain conflicting URLs for package `iniconfig` in split `python_full_version >= '3.12'`:
- https://files.pythonhosted.org/packages/9b/dd/b3c12c6d707058fa947864b67f0c4e0c39ef8610988d7baea9578f3c48f3/iniconfig-1.1.1-py2.py3-none-any.whl
- https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl
help: `b2` (v0.1.0) was included because `a` (v0.1.0) depends on `b` (v0.1.0) which depends on `b2`
hint: `b2` (v0.1.0) was included because `a` (v0.1.0) depends on `b` (v0.1.0) which depends on `b2`
"
);
@ -736,8 +737,8 @@ fn branching_urls_of_different_sources_conflict() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to resolve dependencies for `a` (v0.1.0)
Requirements contain conflicting URLs for package `iniconfig` in split `python_full_version == '3.11.*'`:
error: Failed to resolve dependencies for `a` (v0.1.0)
Caused by: Requirements contain conflicting URLs for package `iniconfig` in split `python_full_version == '3.11.*'`:
- git+https://github.com/pytest-dev/iniconfig@93f5930e668c0d1ddf4597e38dd0dea4e2665e7a
- https://files.pythonhosted.org/packages/9b/dd/b3c12c6d707058fa947864b67f0c4e0c39ef8610988d7baea9578f3c48f3/iniconfig-1.1.1-py2.py3-none-any.whl
"

View File

@ -92,16 +92,16 @@ fn build_basic() -> Result<()> {
fs_err::remove_dir_all(project.child("dist"))?;
// Error if there's nothing to build.
uv_snapshot!(&filters, context.build(), @r###"
uv_snapshot!(&filters, context.build(), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
Building source distribution...
× Failed to build `[TEMP_DIR]/`
[TEMP_DIR]/ does not appear to be a Python project, as neither `pyproject.toml` nor `setup.py` are present in the directory
"###);
error: Failed to build `[TEMP_DIR]/`
Caused by: [TEMP_DIR]/ does not appear to be a Python project, as neither `pyproject.toml` nor `setup.py` are present in the directory
");
// Build to a specified path.
uv_snapshot!(&filters, context.build().arg("--out-dir").arg("out").current_dir(project.path()), @r###"
@ -352,26 +352,26 @@ fn build_wheel_from_sdist() -> Result<()> {
.assert(predicate::path::missing());
// Error if `--wheel` is not specified.
uv_snapshot!(&filters, context.build().arg("./dist/project-0.1.0.tar.gz").current_dir(&project), @r###"
uv_snapshot!(&filters, context.build().arg("./dist/project-0.1.0.tar.gz").current_dir(&project), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
× Failed to build `[TEMP_DIR]/project/dist/project-0.1.0.tar.gz`
Pass `--wheel` explicitly to build a wheel from a source distribution
"###);
error: Failed to build `[TEMP_DIR]/project/dist/project-0.1.0.tar.gz`
Caused by: Pass `--wheel` explicitly to build a wheel from a source distribution
");
// Error if `--sdist` is specified.
uv_snapshot!(&filters, context.build().arg("./dist/project-0.1.0.tar.gz").arg("--sdist").current_dir(&project), @r###"
uv_snapshot!(&filters, context.build().arg("./dist/project-0.1.0.tar.gz").arg("--sdist").current_dir(&project), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
× Failed to build `[TEMP_DIR]/project/dist/project-0.1.0.tar.gz`
Building an `--sdist` from a source distribution is not supported
"###);
error: Failed to build `[TEMP_DIR]/project/dist/project-0.1.0.tar.gz`
Caused by: Building an `--sdist` from a source distribution is not supported
");
// Build the wheel from the sdist.
uv_snapshot!(&filters, context.build().arg("./dist/project-0.1.0.tar.gz").arg("--wheel").current_dir(&project), @r###"
@ -394,15 +394,15 @@ fn build_wheel_from_sdist() -> Result<()> {
.assert(predicate::path::is_file());
// Passing a wheel is an error.
uv_snapshot!(&filters, context.build().arg("./dist/project-0.1.0-py3-none-any.whl").arg("--wheel").current_dir(&project), @r###"
uv_snapshot!(&filters, context.build().arg("./dist/project-0.1.0-py3-none-any.whl").arg("--wheel").current_dir(&project), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
× Failed to build `[TEMP_DIR]/project/dist/project-0.1.0-py3-none-any.whl`
`dist/project-0.1.0-py3-none-any.whl` is not a valid build source. Expected to receive a source directory, or a source distribution ending in one of: `.tar.gz`, `.zip`, `.tar.bz2`, `.tar.lz`, `.tar.lzma`, `.tar.xz`, `.tar.zst`, `.tar`, `.tbz`, `.tgz`, `.tlz`, or `.txz`.
"###);
error: Failed to build `[TEMP_DIR]/project/dist/project-0.1.0-py3-none-any.whl`
Caused by: `dist/project-0.1.0-py3-none-any.whl` is not a valid build source. Expected to receive a source directory, or a source distribution ending in one of: `.tar.gz`, `.zip`, `.tar.bz2`, `.tar.lz`, `.tar.lzma`, `.tar.xz`, `.tar.zst`, `.tar`, `.tbz`, `.tgz`, `.tlz`, or `.txz`.
");
Ok(())
}
@ -454,7 +454,7 @@ fn build_fail() -> Result<()> {
)?;
// Build the specified path.
uv_snapshot!(&filters, context.build().arg("project"), @r###"
uv_snapshot!(&filters, context.build().arg("project"), @r#"
success: false
exit_code: 2
----- stdout -----
@ -473,11 +473,11 @@ fn build_fail() -> Result<()> {
File "<string>", line 2
from setuptools import setup
IndentationError: unexpected indent
× Failed to build `[TEMP_DIR]/project`
The build backend returned an error
Call to `setuptools.build_meta.build_sdist` failed (exit status: 1)
error: Failed to build `[TEMP_DIR]/project`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta.build_sdist` failed (exit status: 1)
hint: This usually indicates a problem with the package or the build environment.
"###);
"#);
Ok(())
}
@ -790,7 +790,7 @@ fn build_all_with_failure() -> Result<()> {
)?;
// Build all the packages
uv_snapshot!(&filters, context.build().arg("--all").arg("--no-build-logs").current_dir(&project), @r###"
uv_snapshot!(&filters, context.build().arg("--all").arg("--no-build-logs").current_dir(&project), @r"
success: false
exit_code: 2
----- stdout -----
@ -803,13 +803,13 @@ fn build_all_with_failure() -> Result<()> {
[PKG] Building wheel from source distribution...
Successfully built dist/member_a-0.1.0.tar.gz
Successfully built dist/member_a-0.1.0-py3-none-any.whl
× Failed to build `member-b @ [TEMP_DIR]/project/packages/member_b`
The build backend returned an error
Call to `setuptools.build_meta.build_sdist` failed (exit status: 1)
error: Failed to build `member-b @ [TEMP_DIR]/project/packages/member_b`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta.build_sdist` failed (exit status: 1)
hint: This usually indicates a problem with the package or the build environment.
Successfully built dist/project-0.1.0.tar.gz
Successfully built dist/project-0.1.0-py3-none-any.whl
"###);
");
// project and member_a should be built, regardless of member_b build failure
project
@ -869,18 +869,18 @@ fn build_constraints() -> Result<()> {
.touch()?;
project.child("README").touch()?;
uv_snapshot!(&filters, context.build().arg("--build-constraint").arg("constraints.txt").current_dir(&project), @r###"
uv_snapshot!(&filters, context.build().arg("--build-constraint").arg("constraints.txt").current_dir(&project), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
Building source distribution...
× Failed to build `[TEMP_DIR]/project`
Failed to resolve requirements from `build-system.requires`
No solution found when resolving: `hatchling>=1.0`
Because you require hatchling>=1.0 and hatchling==0.1.0, we can conclude that your requirements are unsatisfiable.
"###);
error: Failed to build `[TEMP_DIR]/project`
Caused by: Failed to resolve requirements from `build-system.requires`
Caused by: No solution found when resolving: `hatchling>=1.0`
Caused by: Because you require hatchling>=1.0 and hatchling==0.1.0, we can conclude that your requirements are unsatisfiable.
");
project
.child("dist")
@ -955,17 +955,17 @@ fn build_sha() -> Result<()> {
# via hatchling
"})?;
uv_snapshot!(&filters, context.build().arg("--build-constraint").arg("constraints.txt").current_dir(&project), @r###"
uv_snapshot!(&filters, context.build().arg("--build-constraint").arg("constraints.txt").current_dir(&project), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
Building source distribution...
× Failed to build `[TEMP_DIR]/project`
Failed to install requirements from `build-system.requires`
Failed to download `hatchling==1.22.4`
Hash mismatch for `hatchling==1.22.4`
error: Failed to build `[TEMP_DIR]/project`
Caused by: Failed to install requirements from `build-system.requires`
Caused by: Failed to download `hatchling==1.22.4`
Caused by: Hash mismatch for `hatchling==1.22.4`
Expected:
sha256:a248cb506794bececcddeddb1678bc722f9cfcacf02f98f7c0af6b9ed893caf2
@ -973,7 +973,7 @@ fn build_sha() -> Result<()> {
Computed:
sha256:f56da5bfc396af7b29daa3164851dd04991c994083f56cb054b5003675caecdc
"###);
");
project
.child("dist")
@ -987,17 +987,17 @@ fn build_sha() -> Result<()> {
fs_err::remove_dir_all(project.child("dist"))?;
// Reject a missing hash with `--requires-hashes`.
uv_snapshot!(&filters, context.build().arg("--build-constraint").arg("constraints.txt").arg("--require-hashes").current_dir(&project), @r###"
uv_snapshot!(&filters, context.build().arg("--build-constraint").arg("constraints.txt").arg("--require-hashes").current_dir(&project), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
Building source distribution...
× Failed to build `[TEMP_DIR]/project`
Failed to install requirements from `build-system.requires`
Failed to download `hatchling==1.22.4`
Hash mismatch for `hatchling==1.22.4`
error: Failed to build `[TEMP_DIR]/project`
Caused by: Failed to install requirements from `build-system.requires`
Caused by: Failed to download `hatchling==1.22.4`
Caused by: Hash mismatch for `hatchling==1.22.4`
Expected:
sha256:a248cb506794bececcddeddb1678bc722f9cfcacf02f98f7c0af6b9ed893caf2
@ -1005,7 +1005,7 @@ fn build_sha() -> Result<()> {
Computed:
sha256:f56da5bfc396af7b29daa3164851dd04991c994083f56cb054b5003675caecdc
"###);
");
project
.child("dist")
@ -1022,18 +1022,18 @@ fn build_sha() -> Result<()> {
let constraints = project.child("constraints.txt");
constraints.write_str("hatchling==1.22.4")?;
uv_snapshot!(&filters, context.build().arg("--build-constraint").arg("constraints.txt").arg("--require-hashes").current_dir(&project), @r###"
uv_snapshot!(&filters, context.build().arg("--build-constraint").arg("constraints.txt").arg("--require-hashes").current_dir(&project), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
Building source distribution...
× Failed to build `[TEMP_DIR]/project`
Failed to resolve requirements from `build-system.requires`
No solution found when resolving: `hatchling`
In `--require-hashes` mode, all requirements must be pinned upfront with `==`, but found: `hatchling`
"###);
error: Failed to build `[TEMP_DIR]/project`
Caused by: Failed to resolve requirements from `build-system.requires`
Caused by: No solution found when resolving: `hatchling`
Caused by: In `--require-hashes` mode, all requirements must be pinned upfront with `==`, but found: `hatchling`
");
project
.child("dist")
@ -1260,18 +1260,18 @@ fn build_hide_build_output_on_failure() -> Result<()> {
"#})?;
// With `UV_HIDE_BUILD_OUTPUT`, the output is hidden even on failure.
uv_snapshot!(&filters, context.build().arg("project").env(EnvVars::UV_HIDE_BUILD_OUTPUT, "1").env("FOO", "bar"), @r###"
uv_snapshot!(&filters, context.build().arg("project").env(EnvVars::UV_HIDE_BUILD_OUTPUT, "1").env("FOO", "bar"), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
Building source distribution...
× Failed to build `[TEMP_DIR]/project`
The build backend returned an error
Call to `setuptools.build_meta.build_sdist` failed (exit status: 1)
error: Failed to build `[TEMP_DIR]/project`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta.build_sdist` failed (exit status: 1)
hint: This usually indicates a problem with the package or the build environment.
"###);
");
Ok(())
}
@ -1787,15 +1787,15 @@ fn build_list_files_errors() -> Result<()> {
.arg(&anyio_local)
.arg("--out-dir")
.arg(context.temp_dir.join("output2"))
.arg("--list"), @r###"
.arg("--list"), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
× Failed to build `[WORKSPACE]/test/packages/anyio_local`
Can only use `--list` with the uv backend
"###);
error: Failed to build `[WORKSPACE]/test/packages/anyio_local`
Caused by: Can only use `--list` with the uv backend
");
Ok(())
}
@ -1820,16 +1820,16 @@ fn build_version_mismatch() -> Result<()> {
.arg(wrong_source_dist.path())
.arg("--wheel")
.arg("--out-dir")
.arg(context.temp_dir.path()), @r###"
.arg(context.temp_dir.path()), @r"
success: false
exit_code: 2
----- stdout -----
----- stderr -----
Building wheel from source distribution...
× Failed to build `[TEMP_DIR]/anyio-1.2.3.tar.gz`
The source distribution declares version 1.2.3, but the wheel declares version 4.3.0+foo
"###);
error: Failed to build `[TEMP_DIR]/anyio-1.2.3.tar.gz`
Caused by: The source distribution declares version 1.2.3, but the wheel declares version 4.3.0+foo
");
Ok(())
}
@ -2101,8 +2101,8 @@ fn force_pep517() -> Result<()> {
----- stderr -----
Building source distribution (uv build backend)...
× Failed to build `[TEMP_DIR]/`
Expected a Python module at: src/does_not_exist/__init__.py
error: Failed to build `[TEMP_DIR]/`
Caused by: Expected a Python module at: src/does_not_exist/__init__.py
");
uv_snapshot!(context.filters(), context.build().arg("--force-pep517").env(EnvVars::RUST_BACKTRACE, "0"), @r"
@ -2113,9 +2113,9 @@ fn force_pep517() -> Result<()> {
----- stderr -----
Building source distribution...
Error: Missing source directory at: `src`
× Failed to build `[TEMP_DIR]/`
The build backend returned an error
Call to `uv_build.build_sdist` failed (exit status: 1)
error: Failed to build `[TEMP_DIR]/`
Caused by: The build backend returned an error
Caused by: Call to `uv_build.build_sdist` failed (exit status: 1)
hint: This usually indicates a problem with the package or the build environment.
");
@ -2171,11 +2171,12 @@ fn venv_included_in_sdist() -> Result<()> {
----- stderr -----
Building source distribution...
× Failed to build `[TEMP_DIR]/`
Invalid tar file
failed to unpack `[CACHE_DIR]/sdists-v9/[TMP]/python`
symlink path `[PYTHON-3.12]` is absolute, but external symlinks are not allowed
help: This file seems to be part of a virtual environment. Virtual environments must be excluded from source distributions.
error: Failed to build `[TEMP_DIR]/`
Caused by: Invalid tar file
Caused by: failed to unpack `[CACHE_DIR]/sdists-v9/[TMP]/python`
Caused by: symlink path `[PYTHON-3.12]` is absolute, but external symlinks are not allowed
hint: This file seems to be part of a virtual environment. Virtual environments must be excluded from source distributions.
");
Ok(())

View File

@ -1003,8 +1003,8 @@ fn error_on_relative_module_root_outside_project_root() -> Result<()> {
----- stderr -----
Building source distribution (uv build backend)...
× Failed to build `[TEMP_DIR]/`
Module root must be inside the project: ..
error: Failed to build `[TEMP_DIR]/`
Caused by: Module root must be inside the project: ..
");
uv_snapshot!(context.filters(), context.build().arg("--wheel"), @r"
@ -1014,8 +1014,8 @@ fn error_on_relative_module_root_outside_project_root() -> Result<()> {
----- stderr -----
Building wheel (uv build backend)...
× Failed to build `[TEMP_DIR]/`
Module root must be inside the project: ..
error: Failed to build `[TEMP_DIR]/`
Caused by: Module root must be inside the project: ..
");
Ok(())
@ -1058,8 +1058,8 @@ fn error_on_relative_data_dir_outside_project_root() -> Result<()> {
----- stderr -----
Building source distribution (uv build backend)...
× Failed to build `[TEMP_DIR]/project`
The path for the data directory headers must be inside the project: ../header
error: Failed to build `[TEMP_DIR]/project`
Caused by: The path for the data directory headers must be inside the project: ../header
");
uv_snapshot!(context.filters(), context.build().arg("project").arg("--wheel"), @r"
@ -1069,8 +1069,8 @@ fn error_on_relative_data_dir_outside_project_root() -> Result<()> {
----- stderr -----
Building wheel (uv build backend)...
× Failed to build `[TEMP_DIR]/project`
The path for the data directory headers must be inside the project: ../header
error: Failed to build `[TEMP_DIR]/project`
Caused by: The path for the data directory headers must be inside the project: ../header
");
Ok(())
@ -1102,8 +1102,8 @@ fn venv_in_source_tree() {
----- stderr -----
Building source distribution (uv build backend)...
× Failed to build `[TEMP_DIR]/`
Virtual environments must not be added to source distributions or wheels, remove the directory or exclude it from the build: src/foo/.venv
error: Failed to build `[TEMP_DIR]/`
Caused by: Virtual environments must not be added to source distributions or wheels, remove the directory or exclude it from the build: src/foo/.venv
");
uv_snapshot!(context.filters(), context.build().arg("--wheel"), @r"
@ -1113,8 +1113,8 @@ fn venv_in_source_tree() {
----- stderr -----
Building wheel (uv build backend)...
× Failed to build `[TEMP_DIR]/`
Virtual environments must not be added to source distributions or wheels, remove the directory or exclude it from the build: src/foo/.venv
error: Failed to build `[TEMP_DIR]/`
Caused by: Virtual environments must not be added to source distributions or wheels, remove the directory or exclude it from the build: src/foo/.venv
");
}
@ -1211,9 +1211,9 @@ fn invalid_pyproject_toml() -> Result<()> {
----- stderr -----
Building source distribution (uv build backend)...
× Failed to build `[TEMP_DIR]/child`
Invalid metadata format in: child/pyproject.toml
TOML parse error at line 2, column 8
error: Failed to build `[TEMP_DIR]/child`
Caused by: Invalid metadata format in: child/pyproject.toml
Caused by: TOML parse error at line 2, column 8
|
2 | name = 1
| ^

View File

@ -317,8 +317,8 @@ fn prune_unzipped() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because all versions of iniconfig need to be downloaded from a registry and you require iniconfig, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because all versions of iniconfig need to be downloaded from a registry and you require iniconfig, we can conclude that your requirements are unsatisfiable.
hint: Pre-releases are available for `iniconfig` in the requested range (e.g., 0.2.dev0), but pre-releases weren't enabled (try: `--prerelease=allow`)

View File

@ -4473,16 +4473,17 @@ fn add_error() -> Result<()> {
dependencies = []
"#})?;
uv_snapshot!(context.filters(), context.add().arg("xyz"), @r###"
uv_snapshot!(context.filters(), context.add().arg("xyz"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there are no versions of xyz and your project depends on xyz, we can conclude that your project's requirements are unsatisfiable.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"###);
error: No solution found when resolving dependencies:
Caused by: Because there are no versions of xyz and your project depends on xyz, we can conclude that your project's requirements are unsatisfiable.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
");
uv_snapshot!(context.filters(), context.add().arg("xyz").arg("--frozen"), @r###"
success: true
@ -8570,9 +8571,9 @@ fn fail_to_add_revert_project() -> Result<()> {
----- stderr -----
Resolved 3 packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `setuptools.build_meta.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -8588,7 +8589,8 @@ fn fail_to_add_revert_project() -> Result<()> {
ZeroDivisionError: division by zero
hint: This usually indicates a problem with the package or the build environment.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"#);
let pyproject_toml = fs_err::read_to_string(context.temp_dir.join("pyproject.toml"))?;
@ -8672,9 +8674,9 @@ fn fail_to_edit_revert_project() -> Result<()> {
----- stderr -----
Resolved 3 packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `setuptools.build_meta.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -8690,7 +8692,8 @@ fn fail_to_edit_revert_project() -> Result<()> {
ZeroDivisionError: division by zero
hint: This usually indicates a problem with the package or the build environment.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"#);
let pyproject_toml = fs_err::read_to_string(context.temp_dir.join("pyproject.toml"))?;
@ -8782,9 +8785,9 @@ fn fail_to_add_revert_workspace_root() -> Result<()> {
----- stderr -----
Added `broken` to workspace members
Resolved 3 packages in [TIME]
× Failed to build `broken @ file://[TEMP_DIR]/broken`
The build backend returned an error
Call to `setuptools.build_meta.build_editable` failed (exit status: 1)
error: Failed to build `broken @ file://[TEMP_DIR]/broken`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta.build_editable` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -8803,7 +8806,8 @@ fn fail_to_add_revert_workspace_root() -> Result<()> {
ZeroDivisionError: division by zero
hint: This usually indicates a problem with the package or the build environment.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"#);
let pyproject_toml = fs_err::read_to_string(context.temp_dir.join("pyproject.toml"))?;
@ -8897,9 +8901,9 @@ fn fail_to_add_revert_workspace_member() -> Result<()> {
----- stderr -----
Added `broken` to workspace members
Resolved 4 packages in [TIME]
× Failed to build `broken @ file://[TEMP_DIR]/broken`
The build backend returned an error
Call to `setuptools.build_meta.build_editable` failed (exit status: 1)
error: Failed to build `broken @ file://[TEMP_DIR]/broken`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta.build_editable` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -8918,7 +8922,8 @@ fn fail_to_add_revert_workspace_member() -> Result<()> {
ZeroDivisionError: division by zero
hint: This usually indicates a problem with the package or the build environment.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"#);
let pyproject_toml = fs_err::read_to_string(context.temp_dir.join("pyproject.toml"))?;
@ -9622,18 +9627,19 @@ fn add_shadowed_name() -> Result<()> {
"#})?;
// Pinned constrained, check for a direct dependency loop.
uv_snapshot!(context.filters(), context.add().arg("dagster-webserver==1.6.13"), @r###"
uv_snapshot!(context.filters(), context.add().arg("dagster-webserver==1.6.13"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because dagster-webserver==1.6.13 depends on your project and your project depends on dagster-webserver==1.6.13, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because dagster-webserver==1.6.13 depends on your project and your project depends on dagster-webserver==1.6.13, we can conclude that your project's requirements are unsatisfiable.
hint: The package `dagster-webserver` depends on the package `dagster` but the name is shadowed by your project. Consider changing the name of the project.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"###);
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
");
// Constraint with several available versions, check for an indirect dependency loop.
uv_snapshot!(context.filters(), context.add().arg("dagster-webserver>=1.6.11,<1.7.0"), @r"
@ -9642,8 +9648,8 @@ fn add_shadowed_name() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only the following versions of dagster-webserver are available:
error: No solution found when resolving dependencies:
Caused by: Because only the following versions of dagster-webserver are available:
dagster-webserver<=1.6.11
dagster-webserver==1.6.12
dagster-webserver==1.6.13
@ -9652,7 +9658,8 @@ fn add_shadowed_name() -> Result<()> {
And because dagster-webserver==1.6.13 depends on your project and your project depends on dagster-webserver>=1.6.11, we can conclude that your project's requirements are unsatisfiable.
hint: The package `dagster-webserver` depends on the package `dagster` but the name is shadowed by your project. Consider changing the name of the project.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
");
Ok(())
@ -9747,11 +9754,12 @@ fn add_warn_index_url() -> Result<()> {
----- stderr -----
warning: Indexes specified via `--extra-index-url` will not be persisted to the `pyproject.toml` file; use `--index` instead.
× No solution found when resolving dependencies:
Because only idna==2.7 is available and your project depends on idna>=3.6, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only idna==2.7 is available and your project depends on idna>=3.6, we can conclude that your project's requirements are unsatisfiable.
hint: `idna` was found on https://test.pypi.org/simple, but not at the requested version (idna>=3.6). A compatible version may be available on a subsequent index (e.g., https://pypi.org/simple). By default, uv will only consider versions that are published on the first index that contains a given package, to avoid dependency confusion attacks. If all indexes are equally trusted, use `--index-strategy unsafe-best-match` to consider all versions from all indexes, regardless of the order in which they were defined.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
");
Ok(())
@ -12951,18 +12959,19 @@ fn add_with_build_constraints() -> Result<()> {
build-constraint-dependencies = ["setuptools==1"]
"#})?;
uv_snapshot!(context.filters(), context.add().arg("requests==1.2"), @r###"
uv_snapshot!(context.filters(), context.add().arg("requests==1.2"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"###);
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
");
let pyproject_toml = context.temp_dir.child("pyproject.toml");
pyproject_toml.write_str(indoc! {r#"
@ -13115,11 +13124,12 @@ fn add_full_url_in_keyring() -> Result<()> {
----- stderr -----
Keyring request for public@https://pypi-proxy.fly.dev/basic-auth/simple
Keyring request for public@pypi-proxy.fly.dev
× No solution found when resolving dependencies:
Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
hint: An index URL (https://pypi-proxy.fly.dev/basic-auth/simple) could not be queried due to a lack of valid authentication credentials (401 Unauthorized).
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"
);
Ok(())
@ -13150,11 +13160,12 @@ fn add_stop_index_search_early_on_auth_failure() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
hint: An index URL (https://pypi-proxy.fly.dev/basic-auth/simple) could not be queried due to a lack of valid authentication credentials (401 Unauthorized).
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"
);
Ok(())
@ -13231,11 +13242,12 @@ fn add_empty_ignore_error_codes() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because flask was not found in the package registry and your project depends on flask, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because flask was not found in the package registry and your project depends on flask, we can conclude that your project's requirements are unsatisfiable.
hint: An index URL (https://download.pytorch.org/whl/cpu) returned a 403 Forbidden error. This could indicate lack of valid authentication credentials, or the package may not exist on this index.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"
);
Ok(())
@ -13270,9 +13282,10 @@ fn add_missing_package_on_pytorch() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because fakepkg was not found in the package registry and your project depends on fakepkg, we can conclude that your project's requirements are unsatisfiable.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
error: No solution found when resolving dependencies:
Caused by: Because fakepkg was not found in the package registry and your project depends on fakepkg, we can conclude that your project's requirements are unsatisfiable.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"
);
Ok(())
@ -13585,11 +13598,12 @@ fn add_auth_policy_never_with_env_var_credentials() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
hint: An index URL (https://pypi-proxy.fly.dev/basic-auth/simple) could not be queried due to a lack of valid authentication credentials (401 Unauthorized).
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"
);
@ -13679,11 +13693,12 @@ async fn add_redirect_cross_origin() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
hint: An index URL (http://[LOCALHOST]/) could not be queried due to a lack of valid authentication credentials (401 Unauthorized).
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"
);
@ -13808,11 +13823,12 @@ async fn add_redirect_with_keyring_cross_origin() -> Result<()> {
----- stderr -----
Keyring request for public@http://[LOCALHOST]/
Keyring request for public@[LOCALHOST]
× No solution found when resolving dependencies:
Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
hint: An index URL (http://[LOCALHOST]/) could not be queried due to a lack of valid authentication credentials (401 Unauthorized).
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
hint: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
"
);

View File

@ -969,16 +969,16 @@ fn requirements_txt_frozen() -> Result<()> {
// Remove the child `pyproject.toml`.
fs_err::remove_dir_all(child.path())?;
uv_snapshot!(context.filters(), context.export().arg("--all-packages"), @r###"
uv_snapshot!(context.filters(), context.export().arg("--all-packages"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `project @ file://[TEMP_DIR]/`
Failed to parse entry: `child`
`child` references a workspace in `tool.uv.sources` (e.g., `child = { workspace = true }`), but is not a workspace member
"###);
error: Failed to build `project @ file://[TEMP_DIR]/`
Caused by: Failed to parse entry: `child`
Caused by: `child` references a workspace in `tool.uv.sources` (e.g., `child = { workspace = true }`), but is not a workspace member
");
uv_snapshot!(context.filters(), context.export().arg("--all-packages").arg("--frozen"), @r###"
success: true
@ -1355,11 +1355,11 @@ fn requirements_txt_ssh_git_username() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to download and build `uv-private-pypackage @ git+ssh://git@github.com/astral-test/uv-private-pypackage.git@d780faf0ac91257d4d5a4f0c5a0e4509608c0071`
Git operation failed
failed to clone into: [PATH]
failed to fetch branch, tag, or commit `d780faf0ac91257d4d5a4f0c5a0e4509608c0071`
process didn't exit successfully: [GIT_COMMAND_ERROR]
error: Failed to download and build `uv-private-pypackage @ git+ssh://git@github.com/astral-test/uv-private-pypackage.git@d780faf0ac91257d4d5a4f0c5a0e4509608c0071`
Caused by: Git operation failed
Caused by: failed to clone into: [PATH]
Caused by: failed to fetch branch, tag, or commit `d780faf0ac91257d4d5a4f0c5a0e4509608c0071`
Caused by: process didn't exit successfully: [GIT_COMMAND_ERROR]
--- stderr
Load key "[TEMP_DIR]/fake_deploy_key": [ERROR]
git@github.com: Permission denied (publickey).
@ -5970,16 +5970,16 @@ fn cyclonedx_export_workspace_frozen() -> Result<()> {
// Remove the child `pyproject.toml`.
fs_err::remove_dir_all(child.path())?;
uv_snapshot!(context.filters(), context.export().arg("--format").arg("cyclonedx1.5").arg("--all-packages"), @r###"
uv_snapshot!(context.filters(), context.export().arg("--format").arg("cyclonedx1.5").arg("--all-packages"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `project @ file://[TEMP_DIR]/`
Failed to parse entry: `child`
`child` references a workspace in `tool.uv.sources` (e.g., `child = { workspace = true }`), but is not a workspace member
"###);
error: Failed to build `project @ file://[TEMP_DIR]/`
Caused by: Failed to parse entry: `child`
Caused by: `child` references a workspace in `tool.uv.sources` (e.g., `child = { workspace = true }`), but is not a workspace member
");
uv_snapshot!(context.filters(), context.export().arg("--format").arg("cyclonedx1.5").arg("--all-packages").arg("--frozen"), @r#"
success: true

View File

@ -2158,11 +2158,12 @@ fn lock_project_with_build_constraints() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
help: `requests` (v1.2.0) was included because `project` (v0.1.0) depends on `requests==1.2`
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
hint: `requests` (v1.2.0) was included because `project` (v0.1.0) depends on `requests==1.2`
");
Ok(())
@ -2935,8 +2936,8 @@ fn lock_conflicting_project_basic1() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because your project depends on sortedcontainers==2.3.0 and project:foo depends on sortedcontainers==2.4.0, we can conclude that your project and project:foo are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because your project depends on sortedcontainers==2.3.0 and project:foo depends on sortedcontainers==2.4.0, we can conclude that your project and project:foo are incompatible.
And because your project requires your project and project:foo, we can conclude that your project's requirements are unsatisfiable.
");
@ -3338,8 +3339,8 @@ fn lock_conflicting_workspace_members_depends_direct() -> Result<()> {
----- stderr -----
warning: Declaring conflicts for packages (`package = ...`) is experimental and may change without warning. Pass `--preview-features package-conflicts` to disable this warning.
× No solution found when resolving dependencies for split (included: example; excluded: subexample):
Because subexample depends on sortedcontainers==2.4.0 and example depends on sortedcontainers==2.3.0, we can conclude that example and subexample are incompatible.
error: No solution found when resolving dependencies for split (included: example; excluded: subexample):
Caused by: Because subexample depends on sortedcontainers==2.4.0 and example depends on sortedcontainers==2.3.0, we can conclude that example and subexample are incompatible.
And because example depends on subexample and your workspace requires example, we can conclude that your workspace's requirements are unsatisfiable.
");
@ -3635,8 +3636,8 @@ fn lock_conflicting_workspace_members_depends_transitive() -> Result<()> {
----- stderr -----
warning: Declaring conflicts for packages (`package = ...`) is experimental and may change without warning. Pass `--preview-features package-conflicts` to disable this warning.
× No solution found when resolving dependencies for split (included: example; excluded: subexample):
Because subexample depends on sortedcontainers==2.4.0 and indirection depends on subexample, we can conclude that indirection depends on sortedcontainers==2.4.0.
error: No solution found when resolving dependencies for split (included: example; excluded: subexample):
Caused by: Because subexample depends on sortedcontainers==2.4.0 and indirection depends on subexample, we can conclude that indirection depends on sortedcontainers==2.4.0.
And because example depends on sortedcontainers==2.3.0, we can conclude that example and indirection are incompatible.
And because your workspace requires example and indirection, we can conclude that your workspace's requirements are unsatisfiable.
");
@ -4081,8 +4082,8 @@ fn lock_conflicting_mixed() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project:project1 depends on sortedcontainers==2.3.0 and project[project2] depends on sortedcontainers==2.4.0, we can conclude that project:project1 and project[project2] are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because project:project1 depends on sortedcontainers==2.3.0 and project[project2] depends on sortedcontainers==2.4.0, we can conclude that project:project1 and project[project2] are incompatible.
And because your project requires project[project2] and project:project1, we can conclude that your project's requirements are unsatisfiable.
");
@ -5217,8 +5218,8 @@ fn lock_requires_python() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (markers: python_full_version >= '3.7' and python_full_version < '3.7.9'):
Because the requested Python version (>=3.7) does not satisfy Python>=3.7.9 and pygls>=1.1.0,<=1.2.1 depends on Python>=3.7.9,<4, we can conclude that pygls>=1.1.0,<=1.2.1 cannot be used.
error: No solution found when resolving dependencies for split (markers: python_full_version >= '3.7' and python_full_version < '3.7.9'):
Caused by: Because the requested Python version (>=3.7) does not satisfy Python>=3.7.9 and pygls>=1.1.0,<=1.2.1 depends on Python>=3.7.9,<4, we can conclude that pygls>=1.1.0,<=1.2.1 cannot be used.
And because only the following versions of pygls are available:
pygls<=1.1.0
pygls==1.1.1
@ -8227,8 +8228,8 @@ fn lock_invalid_hash() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to download `idna==3.6`
Hash mismatch for `idna==3.6`
error: Failed to download `idna==3.6`
Caused by: Hash mismatch for `idna==3.6`
Expected:
sha256:aecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca
@ -8236,7 +8237,8 @@ fn lock_invalid_hash() -> Result<()> {
Computed:
sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
help: `idna` (v3.6) was included because `project` (v0.1.0) depends on `anyio` (v3.7.0) which depends on `idna`
hint: `idna` (v3.6) was included because `project` (v0.1.0) depends on `anyio` (v3.7.0) which depends on `idna`
");
Ok(())
@ -8438,17 +8440,17 @@ fn lock_requires_python_no_wheels() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because dearpygui==1.9.1 has no wheels with a matching Python version tag (e.g., `cp312`) and your project depends on dearpygui==1.9.1, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because dearpygui==1.9.1 has no wheels with a matching Python version tag (e.g., `cp312`) and your project depends on dearpygui==1.9.1, we can conclude that your project's requirements are unsatisfiable.
hint: Wheels are available for `dearpygui` (v1.9.1) with the following Python ABI tags: `cp37m`, `cp38`, `cp39`, `cp310`, `cp311`
"###);
");
Ok(())
}
@ -8920,16 +8922,16 @@ fn lock_non_workspace_source() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock().current_dir(&child), @r###"
uv_snapshot!(context.filters(), context.lock().current_dir(&child), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `project @ file://[TEMP_DIR]/`
Failed to parse entry: `child`
`child` is included as a workspace member, but references a path in `tool.uv.sources`. Workspace members must be declared as workspace sources (e.g., `child = { workspace = true }`).
"###);
error: Failed to build `project @ file://[TEMP_DIR]/`
Caused by: Failed to parse entry: `child`
Caused by: `child` is included as a workspace member, but references a path in `tool.uv.sources`. Workspace members must be declared as workspace sources (e.g., `child = { workspace = true }`).
");
Ok(())
}
@ -8971,16 +8973,16 @@ fn lock_no_workspace_source() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock().current_dir(&child), @r###"
uv_snapshot!(context.filters(), context.lock().current_dir(&child), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `project @ file://[TEMP_DIR]/`
Failed to parse entry: `child`
`child` is included as a workspace member, but is missing an entry in `tool.uv.sources` (e.g., `child = { workspace = true }`)
"###);
error: Failed to build `project @ file://[TEMP_DIR]/`
Caused by: Failed to parse entry: `child`
Caused by: `child` is included as a workspace member, but is missing an entry in `tool.uv.sources` (e.g., `child = { workspace = true }`)
");
Ok(())
}
@ -9145,8 +9147,8 @@ fn lock_index_workspace_member() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because iniconfig was not found in the package registry and child depends on iniconfig>=2, we can conclude that child's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because iniconfig was not found in the package registry and child depends on iniconfig>=2, we can conclude that child's requirements are unsatisfiable.
And because your workspace requires child, we can conclude that your workspace's requirements are unsatisfiable.
");
@ -9493,30 +9495,32 @@ fn lock_redact_https() -> Result<()> {
// Installing from the lockfile should fail without credentials. Omit the root, so that we fail
// when installing `iniconfig`, rather than when building `foo`.
uv_snapshot!(context.filters(), context.sync().arg("--frozen").arg("--index-url").arg("https://pypi-proxy.fly.dev/basic-auth/simple").arg("--no-install-project"), @r###"
uv_snapshot!(context.filters(), context.sync().arg("--frozen").arg("--index-url").arg("https://pypi-proxy.fly.dev/basic-auth/simple").arg("--no-install-project"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download `iniconfig==2.0.0`
Failed to fetch: `https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl`
HTTP status client error (401 Unauthorized) for url (https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl)
help: `iniconfig` (v2.0.0) was included because `foo` (v0.1.0) depends on `iniconfig`
"###);
error: Failed to download `iniconfig==2.0.0`
Caused by: Failed to fetch: `https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl`
Caused by: HTTP status client error (401 Unauthorized) for url (https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl)
hint: `iniconfig` (v2.0.0) was included because `foo` (v0.1.0) depends on `iniconfig`
");
// Installing from the lockfile should fail without an index.
uv_snapshot!(context.filters(), context.sync().arg("--frozen").arg("--no-install-project"), @r###"
uv_snapshot!(context.filters(), context.sync().arg("--frozen").arg("--no-install-project"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download `iniconfig==2.0.0`
Failed to fetch: `https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl`
HTTP status client error (401 Unauthorized) for url (https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl)
help: `iniconfig` (v2.0.0) was included because `foo` (v0.1.0) depends on `iniconfig`
"###);
error: Failed to download `iniconfig==2.0.0`
Caused by: Failed to fetch: `https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl`
Caused by: HTTP status client error (401 Unauthorized) for url (https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl)
hint: `iniconfig` (v2.0.0) was included because `foo` (v0.1.0) depends on `iniconfig`
");
// Installing from the lockfile should succeed when credentials are included on the command-line.
uv_snapshot!(context.filters(), context.sync().arg("--frozen").arg("--index-url").arg("https://public:heron@pypi-proxy.fly.dev/basic-auth/simple"), @r###"
@ -9544,17 +9548,18 @@ fn lock_redact_https() -> Result<()> {
"###);
// Installing without credentials will fail without a cache.
uv_snapshot!(context.filters(), context.sync().arg("--frozen").arg("--reinstall").arg("--no-cache").arg("--no-install-project"), @r###"
uv_snapshot!(context.filters(), context.sync().arg("--frozen").arg("--reinstall").arg("--no-cache").arg("--no-install-project"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download `iniconfig==2.0.0`
Failed to fetch: `https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl`
HTTP status client error (401 Unauthorized) for url (https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl)
help: `iniconfig` (v2.0.0) was included because `foo` (v0.1.0) depends on `iniconfig`
"###);
error: Failed to download `iniconfig==2.0.0`
Caused by: Failed to fetch: `https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl`
Caused by: HTTP status client error (401 Unauthorized) for url (https://pypi-proxy.fly.dev/basic-auth/files/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl)
hint: `iniconfig` (v2.0.0) was included because `foo` (v0.1.0) depends on `iniconfig`
");
// Installing with credentials from with `UV_INDEX_URL` should succeed.
uv_snapshot!(context.filters(), context.sync().arg("--frozen").arg("--reinstall").arg("--no-cache").env(EnvVars::UV_INDEX_URL, "https://public:heron@pypi-proxy.fly.dev/basic-auth/simple"), @r###"
@ -10062,8 +10067,8 @@ fn lock_env_credentials() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because iniconfig was not found in the package registry and your project depends on iniconfig, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because iniconfig was not found in the package registry and your project depends on iniconfig, we can conclude that your project's requirements are unsatisfiable.
hint: An index URL (https://pypi-proxy.fly.dev/basic-auth/simple) could not be queried due to a lack of valid authentication credentials (401 Unauthorized).
");
@ -12663,8 +12668,8 @@ fn lock_editable() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to resolve dependencies for `workspace` (v0.1.0)
Requirements contain conflicting URLs for package `library` in all marker environments:
error: Failed to resolve dependencies for `workspace` (v0.1.0)
Caused by: Requirements contain conflicting URLs for package `library` in all marker environments:
- file://[TEMP_DIR]/library
- file://[TEMP_DIR]/library (editable)
");
@ -13309,8 +13314,8 @@ fn unconditional_overlapping_marker_disjoint_version_constraints() -> Result<()>
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because your project depends on datasets<2.19 and datasets>=2.19, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because your project depends on datasets<2.19 and datasets>=2.19, we can conclude that your project's requirements are unsatisfiable.
");
Ok(())
@ -14081,18 +14086,18 @@ fn lock_add_member_with_build_system() -> Result<()> {
");
// Re-run with `--offline`. This should also fail, during the resolve phase.
uv_snapshot!(context.filters(), context.lock().arg("--locked").arg("--offline").arg("--no-cache"), @r###"
uv_snapshot!(context.filters(), context.lock().arg("--locked").arg("--offline").arg("--no-cache"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because anyio was not found in the cache and leaf depends on anyio>3, we can conclude that leaf's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because anyio was not found in the cache and leaf depends on anyio>3, we can conclude that leaf's requirements are unsatisfiable.
And because your workspace requires leaf, we can conclude that your workspace's requirements are unsatisfiable.
hint: Packages were unavailable because the network was disabled. When the network is disabled, registry packages may only be read from the cache.
"###);
");
// Re-run without `--locked`.
uv_snapshot!(context.filters(), context.lock(), @r"
@ -14289,18 +14294,18 @@ fn lock_add_member_without_build_system() -> Result<()> {
");
// Re-run with `--offline`. This should also fail, during the resolve phase.
uv_snapshot!(context.filters(), context.lock().arg("--locked").arg("--offline").arg("--no-cache"), @r###"
uv_snapshot!(context.filters(), context.lock().arg("--locked").arg("--offline").arg("--no-cache"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because anyio was not found in the cache and leaf depends on anyio>3, we can conclude that leaf's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because anyio was not found in the cache and leaf depends on anyio>3, we can conclude that leaf's requirements are unsatisfiable.
And because your workspace requires leaf, we can conclude that your workspace's requirements are unsatisfiable.
hint: Packages were unavailable because the network was disabled. When the network is disabled, registry packages may only be read from the cache.
"###);
");
// Re-run without `--locked`.
uv_snapshot!(context.filters(), context.lock(), @r"
@ -17999,8 +18004,8 @@ fn lock_explicit_default_index() -> Result<()> {
DEBUG Recording unit propagation conflict of anyio from incompatibility of (project)
DEBUG Searching for a compatible version of project @ file://[TEMP_DIR]/ (<0.1.0 | >0.1.0)
DEBUG No compatible version found for: project
× No solution found when resolving dependencies:
Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because anyio was not found in the package registry and your project depends on anyio, we can conclude that your project's requirements are unsatisfiable.
DEBUG Released lock at `[CACHE_DIR]/.lock`
"#);
@ -18203,15 +18208,15 @@ fn lock_default_index() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because iniconfig was not found in the package registry and your project depends on iniconfig, we can conclude that your project's requirements are unsatisfiable.
"###);
error: No solution found when resolving dependencies:
Caused by: Because iniconfig was not found in the package registry and your project depends on iniconfig, we can conclude that your project's requirements are unsatisfiable.
");
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock")).unwrap();
@ -18272,16 +18277,16 @@ fn lock_named_index_cli() -> Result<()> {
)?;
// The package references a non-existent index.
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `project @ file://[TEMP_DIR]/`
Failed to parse entry: `jinja2`
Package `jinja2` references an undeclared index: `pytorch`
"###);
error: Failed to build `project @ file://[TEMP_DIR]/`
Caused by: Failed to parse entry: `jinja2`
Caused by: Package `jinja2` references an undeclared index: `pytorch`
");
// But it's fine if it comes from the CLI.
uv_snapshot!(context.filters(), context.lock().arg("--index").arg("pytorch=https://astral-sh.github.io/pytorch-mirror/whl/cu121"), @r###"
@ -20641,21 +20646,21 @@ fn lock_invalid_project_table() -> Result<()> {
",
)?;
uv_snapshot!(context.filters(), context.lock().current_dir(context.temp_dir.join("a")), @r###"
uv_snapshot!(context.filters(), context.lock().current_dir(context.temp_dir.join("a")), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
× Failed to build `b @ file://[TEMP_DIR]/b`
Failed to parse metadata from built wheel
TOML parse error at line 2, column 10
error: Failed to build `b @ file://[TEMP_DIR]/b`
Caused by: Failed to parse metadata from built wheel
Caused by: TOML parse error at line 2, column 10
|
2 | [project.urls]
| ^^^^^^^
`pyproject.toml` is using the `[project]` table, but the required `project.name` field is not set
"###);
");
Ok(())
}
@ -21196,8 +21201,8 @@ fn lock_keyring_explicit_always() -> Result<()> {
----- stderr -----
Keyring request for https://pypi-proxy.fly.dev/basic-auth/simple
Keyring request for pypi-proxy.fly.dev
× No solution found when resolving dependencies:
Because iniconfig was not found in the package registry and your project depends on iniconfig, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because iniconfig was not found in the package registry and your project depends on iniconfig, we can conclude that your project's requirements are unsatisfiable.
hint: An index URL (https://pypi-proxy.fly.dev/basic-auth/simple) could not be queried due to a lack of valid authentication credentials (401 Unauthorized).
");
@ -22392,8 +22397,8 @@ fn lock_multiple_sources_index_overlapping_extras() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to resolve dependencies for `project` (v0.1.0)
Requirements contain conflicting indexes for package `jinja2` in all marker environments:
error: Failed to resolve dependencies for `project` (v0.1.0)
Caused by: Requirements contain conflicting indexes for package `jinja2` in all marker environments:
- https://astral-sh.github.io/pytorch-mirror/whl/cu118
- https://astral-sh.github.io/pytorch-mirror/whl/cu124
");
@ -22427,15 +22432,15 @@ fn lock_multiple_index_with_missing_extra() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r#"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `project @ file://[TEMP_DIR]/`
Source entry for `jinja2` only applies to extra `cu118`, but the `cu118` extra does not exist. When an extra is present on a source (e.g., `extra = "cu118"`), the relevant package must be included in the `project.optional-dependencies` section for that extra (e.g., `project.optional-dependencies = { "cu118" = ["jinja2"] }`).
"###);
error: Failed to build `project @ file://[TEMP_DIR]/`
Caused by: Source entry for `jinja2` only applies to extra `cu118`, but the `cu118` extra does not exist. When an extra is present on a source (e.g., `extra = "cu118"`), the relevant package must be included in the `project.optional-dependencies` section for that extra (e.g., `project.optional-dependencies = { "cu118" = ["jinja2"] }`).
"#);
Ok(())
}
@ -22470,15 +22475,15 @@ fn lock_multiple_index_with_absent_extra() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r#"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `project @ file://[TEMP_DIR]/`
Source entry for `jinja2` only applies to extra `cu118`, but `jinja2` was not found under the `project.optional-dependencies` section for that extra. When an extra is present on a source (e.g., `extra = "cu118"`), the relevant package must be included in the `project.optional-dependencies` section for that extra (e.g., `project.optional-dependencies = { "cu118" = ["jinja2"] }`).
"###);
error: Failed to build `project @ file://[TEMP_DIR]/`
Caused by: Source entry for `jinja2` only applies to extra `cu118`, but `jinja2` was not found under the `project.optional-dependencies` section for that extra. When an extra is present on a source (e.g., `extra = "cu118"`), the relevant package must be included in the `project.optional-dependencies` section for that extra (e.g., `project.optional-dependencies = { "cu118" = ["jinja2"] }`).
"#);
Ok(())
}
@ -22509,15 +22514,15 @@ fn lock_multiple_index_with_missing_group() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r#"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `project @ file://[TEMP_DIR]/`
Source entry for `jinja2` only applies to dependency group `cu118`, but the `cu118` group does not exist. When a group is present on a source (e.g., `group = "cu118"`), the relevant package must be included in the `dependency-groups` section for that extra (e.g., `dependency-groups = { "cu118" = ["jinja2"] }`).
"###);
error: Failed to build `project @ file://[TEMP_DIR]/`
Caused by: Source entry for `jinja2` only applies to dependency group `cu118`, but the `cu118` group does not exist. When a group is present on a source (e.g., `group = "cu118"`), the relevant package must be included in the `dependency-groups` section for that extra (e.g., `dependency-groups = { "cu118" = ["jinja2"] }`).
"#);
Ok(())
}
@ -22552,15 +22557,15 @@ fn lock_multiple_index_with_absent_group() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r#"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `project @ file://[TEMP_DIR]/`
Source entry for `jinja2` only applies to dependency group `cu118`, but `jinja2` was not found under the `dependency-groups` section for that group. When a group is present on a source (e.g., `group = "cu118"`), the relevant package must be included in the `dependency-groups` section for that extra (e.g., `dependency-groups = { "cu118" = ["jinja2"] }`).
"###);
error: Failed to build `project @ file://[TEMP_DIR]/`
Caused by: Source entry for `jinja2` only applies to dependency group `cu118`, but `jinja2` was not found under the `dependency-groups` section for that group. When a group is present on a source (e.g., `group = "cu118"`), the relevant package must be included in the `dependency-groups` section for that extra (e.g., `dependency-groups = { "cu118" = ["jinja2"] }`).
"#);
Ok(())
}
@ -25781,9 +25786,9 @@ fn lock_derivation_chain_prod() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to build `wsgiref==0.1.2`
The build backend returned an error
Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
error: Failed to build `wsgiref==0.1.2`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -25804,7 +25809,8 @@ fn lock_derivation_chain_prod() -> Result<()> {
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
hint: This usually indicates a problem with the package or the build environment.
help: `wsgiref` (v0.1.2) was included because `project` (v0.1.0) depends on `wsgiref==0.1.2`
hint: `wsgiref` (v0.1.2) was included because `project` (v0.1.0) depends on `wsgiref==0.1.2`
"#);
Ok(())
@ -25838,9 +25844,9 @@ fn lock_derivation_chain_extra() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to build `wsgiref==0.1.2`
The build backend returned an error
Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
error: Failed to build `wsgiref==0.1.2`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -25861,7 +25867,8 @@ fn lock_derivation_chain_extra() -> Result<()> {
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
hint: This usually indicates a problem with the package or the build environment.
help: `wsgiref` (v0.1.2) was included because `project[wsgi]` (v0.1.0) depends on `wsgiref>=0.1`
hint: `wsgiref` (v0.1.2) was included because `project[wsgi]` (v0.1.0) depends on `wsgiref>=0.1`
"#);
Ok(())
@ -25897,9 +25904,9 @@ fn lock_derivation_chain_group() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to build `wsgiref==0.1.2`
The build backend returned an error
Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
error: Failed to build `wsgiref==0.1.2`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -25920,7 +25927,8 @@ fn lock_derivation_chain_group() -> Result<()> {
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
hint: This usually indicates a problem with the package or the build environment.
help: `wsgiref` (v0.1.2) was included because `project:wsgi` (v0.1.0) depends on `wsgiref`
hint: `wsgiref` (v0.1.2) was included because `project:wsgi` (v0.1.0) depends on `wsgiref`
"#);
Ok(())
@ -25967,9 +25975,9 @@ fn lock_derivation_chain_extended() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to build `wsgiref==0.1.2`
The build backend returned an error
Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
error: Failed to build `wsgiref==0.1.2`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -25990,7 +25998,8 @@ fn lock_derivation_chain_extended() -> Result<()> {
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
hint: This usually indicates a problem with the package or the build environment.
help: `wsgiref` (v0.1.2) was included because `project` (v0.1.0) depends on `child` (v0.1.0) which depends on `wsgiref>=0.1, <0.2`
hint: `wsgiref` (v0.1.2) was included because `project` (v0.1.0) depends on `child` (v0.1.0) which depends on `wsgiref>=0.1, <0.2`
"#);
Ok(())
@ -26017,17 +26026,18 @@ fn mismatched_name_self_editable() -> Result<()> {
)?;
// Running `uv sync` should generate a lockfile.
uv_snapshot!(context.filters(), context.sync(), @r###"
uv_snapshot!(context.filters(), context.sync(), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 2 packages in [TIME]
× Failed to build `foo @ file://[TEMP_DIR]/`
Package metadata name `project` does not match given name `foo`
help: `foo` was included because `project` (v0.1.0) depends on `foo`
"###);
error: Failed to build `foo @ file://[TEMP_DIR]/`
Caused by: Package metadata name `project` does not match given name `foo`
hint: `foo` was included because `project` (v0.1.0) depends on `foo`
");
Ok(())
}
@ -26392,15 +26402,15 @@ fn lock_no_build_dynamic_metadata() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock().arg("--no-build"), @r###"
uv_snapshot!(context.filters(), context.lock().arg("--no-build"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `dummy @ file://[TEMP_DIR]/`
Building source distributions for `dummy` is disabled
"###);
error: Failed to build `dummy @ file://[TEMP_DIR]/`
Caused by: Building source distributions for `dummy` is disabled
");
Ok(())
}
@ -26626,8 +26636,8 @@ fn lock_self_incompatible() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because your project depends on itself at an incompatible version (project==0.2.0), we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because your project depends on itself at an incompatible version (project==0.2.0), we can conclude that your project's requirements are unsatisfiable.
hint: The project `project` depends on itself at an incompatible version. This is likely a mistake. If you intended to depend on a third-party package named `project`, consider renaming the project `project` to avoid creating a conflict.
");
@ -26763,8 +26773,8 @@ fn lock_self_extra_to_same_extra_incompatible() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project[foo] depends on itself at an incompatible version (project==0.2.0) and your project requires project[foo], we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because project[foo] depends on itself at an incompatible version (project==0.2.0) and your project requires project[foo], we can conclude that your project's requirements are unsatisfiable.
hint: The project `project` depends on itself at an incompatible version. This is likely a mistake. If you intended to depend on a third-party package named `project`, consider renaming the project `project` to avoid creating a conflict.
");
@ -26797,8 +26807,8 @@ fn lock_self_extra_to_other_extra_incompatible() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project[foo] depends on itself at an incompatible version (project==0.2.0) and your project requires project[foo], we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because project[foo] depends on itself at an incompatible version (project==0.2.0) and your project requires project[foo], we can conclude that your project's requirements are unsatisfiable.
hint: The project `project` depends on itself at an incompatible version. This is likely a mistake. If you intended to depend on a third-party package named `project`, consider renaming the project `project` to avoid creating a conflict.
");
@ -26934,8 +26944,8 @@ fn lock_self_extra_incompatible() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project[foo] depends on itself at an incompatible version (project==0.2.0) and your project requires project[foo], we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because project[foo] depends on itself at an incompatible version (project==0.2.0) and your project requires project[foo], we can conclude that your project's requirements are unsatisfiable.
hint: The project `project` depends on itself at an incompatible version. This is likely a mistake. If you intended to depend on a third-party package named `project`, consider renaming the project `project` to avoid creating a conflict.
");
@ -27064,8 +27074,8 @@ fn lock_self_marker_incompatible() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because your project depends on itself at an incompatible version (project{sys_platform == 'win32'}>0.1), we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because your project depends on itself at an incompatible version (project{sys_platform == 'win32'}>0.1), we can conclude that your project's requirements are unsatisfiable.
hint: The project `project` depends on itself at an incompatible version. This is likely a mistake. If you intended to depend on a third-party package named `project`, consider renaming the project `project` to avoid creating a conflict.
");
@ -27185,16 +27195,16 @@ fn lock_missing_git_prefix() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r#"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `project @ file://[TEMP_DIR]/`
Failed to parse entry: `workspace-in-root-test`
`workspace-in-root-test` is associated with a URL source, but references a Git repository. Consider using a Git source instead (e.g., `workspace-in-root-test = { git = "https://github.com/astral-sh/workspace-in-root-test" }`)
"###);
error: Failed to build `project @ file://[TEMP_DIR]/`
Caused by: Failed to parse entry: `workspace-in-root-test`
Caused by: `workspace-in-root-test` is associated with a URL source, but references a Git repository. Consider using a Git source instead (e.g., `workspace-in-root-test = { git = "https://github.com/astral-sh/workspace-in-root-test" }`)
"#);
Ok(())
}
@ -30236,8 +30246,8 @@ fn lock_conflict_for_disjoint_python_version() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (markers: python_full_version >= '3.11'):
Because pandas==1.5.3 depends on numpy{python_full_version >= '3.10'}>=1.21.0 and your project depends on numpy==1.20.3, we can conclude that your project and pandas==1.5.3 are incompatible.
error: No solution found when resolving dependencies for split (markers: python_full_version >= '3.11'):
Caused by: Because pandas==1.5.3 depends on numpy{python_full_version >= '3.10'}>=1.21.0 and your project depends on numpy==1.20.3, we can conclude that your project and pandas==1.5.3 are incompatible.
And because your project depends on pandas==1.5.3, we can conclude that your project's requirements are unsatisfiable.
hint: While the active Python version is 3.9, the resolution failed for other Python versions supported by your project. Consider limiting your project's supported Python versions using `requires-python`.
@ -30458,8 +30468,8 @@ fn lock_conflict_for_disjoint_platform() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (markers: sys_platform == 'exotic'):
Because your project depends on numpy{sys_platform == 'exotic'}>=1.24,<1.26 and numpy>=1.26, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies for split (markers: sys_platform == 'exotic'):
Caused by: Because your project depends on numpy{sys_platform == 'exotic'}>=1.24,<1.26 and numpy>=1.26, we can conclude that your project's requirements are unsatisfiable.
hint: The resolution failed for an environment that is not the current one, consider limiting the environments with `tool.uv.environments`.
");
@ -31063,8 +31073,8 @@ fn lock_prefix_match() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only anyio<=4.3.0 is available and your project depends on anyio==5.4.*, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only anyio<=4.3.0 is available and your project depends on anyio==5.4.*, we can conclude that your project's requirements are unsatisfiable.
");
Ok(())
@ -32181,8 +32191,8 @@ fn collapsed_error_with_marker_packages() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (markers: python_full_version < '3.14' and sys_platform == 'other'):
Because your project depends on anyio{sys_platform == 'other'} and anyio{python_full_version < '3.14'}>=4.4.0, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies for split (markers: python_full_version < '3.14' and sys_platform == 'other'):
Caused by: Because your project depends on anyio{sys_platform == 'other'} and anyio{python_full_version < '3.14'}>=4.4.0, we can conclude that your project's requirements are unsatisfiable.
hint: The resolution failed for an environment that is not the current one, consider limiting the environments with `tool.uv.environments`.
");
@ -32242,8 +32252,8 @@ fn lock_unsupported_wheel_url_requires_python() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only numpy==2.3.5 is available and numpy==2.3.5 has no wheels with a matching Python version tag (e.g., `cp312`), we can conclude that all versions of numpy cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only numpy==2.3.5 is available and numpy==2.3.5 has no wheels with a matching Python version tag (e.g., `cp312`), we can conclude that all versions of numpy cannot be used.
And because your project depends on numpy, we can conclude that your project's requirements are unsatisfiable.
");
@ -32274,8 +32284,8 @@ fn lock_unsupported_wheel_url_required_platform() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only numpy==2.3.5 is available and numpy==2.3.5 has no Windows-compatible wheels, we can conclude that all versions of numpy cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only numpy==2.3.5 is available and numpy==2.3.5 has no Windows-compatible wheels, we can conclude that all versions of numpy cannot be used.
And because your project depends on numpy, we can conclude that your project's requirements are unsatisfiable.
");

View File

@ -38,16 +38,16 @@ fn extra_basic() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project[extra2] depends on sortedcontainers==2.4.0 and project[extra1] depends on sortedcontainers==2.3.0, we can conclude that project[extra1] and project[extra2] are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because project[extra2] depends on sortedcontainers==2.4.0 and project[extra1] depends on sortedcontainers==2.3.0, we can conclude that project[extra1] and project[extra2] are incompatible.
And because your project requires project[extra1] and project[extra2], we can conclude that your project's requirements are unsatisfiable.
"###);
");
// And now with the same extra configuration, we tell uv about
// the conflicting extras, which forces it to resolve each in
@ -230,16 +230,16 @@ fn extra_basic_three_extras() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project[extra2] depends on sortedcontainers==2.3.0 and project[extra1] depends on sortedcontainers==2.2.0, we can conclude that project[extra1] and project[extra2] are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because project[extra2] depends on sortedcontainers==2.3.0 and project[extra1] depends on sortedcontainers==2.2.0, we can conclude that project[extra1] and project[extra2] are incompatible.
And because your project requires project[extra1] and project[extra2], we can conclude that your project's requirements are unsatisfiable.
"###);
");
// And now with the same extra configuration, we tell uv about
// the conflicting extras, which forces it to resolve each in
@ -506,16 +506,16 @@ fn extra_multiple_not_conflicting2() -> Result<()> {
)?;
// Fails, as expected.
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project[extra2] depends on sortedcontainers==2.4.0 and project[extra1] depends on sortedcontainers==2.3.0, we can conclude that project[extra1] and project[extra2] are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because project[extra2] depends on sortedcontainers==2.4.0 and project[extra1] depends on sortedcontainers==2.3.0, we can conclude that project[extra1] and project[extra2] are incompatible.
And because your project requires project[extra1] and project[extra2], we can conclude that your project's requirements are unsatisfiable.
"###);
");
// If we define extra1/extra2 as conflicting and project3/project4
// as conflicting, that still isn't enough! That's because extra1
@ -552,8 +552,8 @@ fn extra_multiple_not_conflicting2() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (included: project[extra2], project[project3]; excluded: project[extra1], project[project4]):
Because project[project3] depends on sortedcontainers==2.3.0 and project[extra2] depends on sortedcontainers==2.4.0, we can conclude that project[extra2] and project[project3] are incompatible.
error: No solution found when resolving dependencies for split (included: project[extra2], project[project3]; excluded: project[extra1], project[project4]):
Caused by: Because project[project3] depends on sortedcontainers==2.3.0 and project[extra2] depends on sortedcontainers==2.4.0, we can conclude that project[extra2] and project[project3] are incompatible.
And because your project requires project[extra2] and project[project3], we can conclude that your project's requirements are unsatisfiable.
");
@ -667,16 +667,16 @@ fn extra_multiple_independent() -> Result<()> {
project4 = ["anyio==4.2.0"]
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project[extra2] depends on sortedcontainers==2.4.0 and project[extra1] depends on sortedcontainers==2.3.0, we can conclude that project[extra1] and project[extra2] are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because project[extra2] depends on sortedcontainers==2.4.0 and project[extra1] depends on sortedcontainers==2.3.0, we can conclude that project[extra1] and project[extra2] are incompatible.
And because your project requires project[extra1] and project[extra2], we can conclude that your project's requirements are unsatisfiable.
"###);
");
// OK, responding to the error, we declare our anyio extras
// as conflicting. But now we should see sortedcontainers as
@ -709,8 +709,8 @@ fn extra_multiple_independent() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (included: project[project4]; excluded: project[project3]):
Because project[extra2] depends on sortedcontainers==2.4.0 and project[extra1] depends on sortedcontainers==2.3.0, we can conclude that project[extra1] and project[extra2] are incompatible.
error: No solution found when resolving dependencies for split (included: project[project4]; excluded: project[project3]):
Caused by: Because project[extra2] depends on sortedcontainers==2.4.0 and project[extra1] depends on sortedcontainers==2.3.0, we can conclude that project[extra1] and project[extra2] are incompatible.
And because your project requires project[extra1] and project[extra2], we can conclude that your project's requirements are unsatisfiable.
");
@ -987,16 +987,16 @@ fn extra_config_change_ignore_lockfile() -> Result<()> {
)?;
// Re-run with `--locked`, which should now fail because of
// the conflicting group config removal.
uv_snapshot!(context.filters(), context.lock().arg("--locked"), @r###"
uv_snapshot!(context.filters(), context.lock().arg("--locked"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project[extra2] depends on sortedcontainers==2.4.0 and project[extra1] depends on sortedcontainers==2.3.0, we can conclude that project[extra1] and project[extra2] are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because project[extra2] depends on sortedcontainers==2.4.0 and project[extra1] depends on sortedcontainers==2.3.0, we can conclude that project[extra1] and project[extra2] are incompatible.
And because your project requires project[extra1] and project[extra2], we can conclude that your project's requirements are unsatisfiable.
"###);
");
Ok(())
}
@ -1557,8 +1557,8 @@ fn extra_nested_across_workspace() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (included: dummy[extra2], dummysub[extra1]; excluded: dummy[extra1], dummysub[extra2]):
Because dummy[extra2] depends on proxy1[extra2] and only proxy1[extra2]==0.1.0 is available, we can conclude that dummy[extra2] depends on proxy1[extra2]==0.1.0. (1)
error: No solution found when resolving dependencies for split (included: dummy[extra2], dummysub[extra1]; excluded: dummy[extra1], dummysub[extra2]):
Caused by: Because dummy[extra2] depends on proxy1[extra2] and only proxy1[extra2]==0.1.0 is available, we can conclude that dummy[extra2] depends on proxy1[extra2]==0.1.0. (1)
Because proxy1[extra1]==0.1.0 depends on anyio==4.1.0 and proxy1[extra2]==0.1.0 depends on anyio==4.2.0, we can conclude that proxy1[extra1]==0.1.0 and proxy1[extra2]==0.1.0 are incompatible.
And because we know from (1) that dummy[extra2] depends on proxy1[extra2]==0.1.0, we can conclude that dummy[extra2] and proxy1[extra1]==0.1.0 are incompatible.
@ -1696,8 +1696,8 @@ fn extra_depends_on_conflicting_extra() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (included: example[foo]; excluded: example[bar]):
Because example[foo] depends on sortedcontainers==2.3.0 and sortedcontainers==2.4.0, we can conclude that example[foo]'s requirements are unsatisfiable.
error: No solution found when resolving dependencies for split (included: example[foo]; excluded: example[bar]):
Caused by: Because example[foo] depends on sortedcontainers==2.3.0 and sortedcontainers==2.4.0, we can conclude that example[foo]'s requirements are unsatisfiable.
And because your project requires example[foo], we can conclude that your project's requirements are unsatisfiable.
");
@ -1918,16 +1918,16 @@ fn group_basic() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project:group2 depends on sortedcontainers==2.4.0 and project:group1 depends on sortedcontainers==2.3.0, we can conclude that project:group1 and project:group2 are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because project:group2 depends on sortedcontainers==2.4.0 and project:group1 depends on sortedcontainers==2.3.0, we can conclude that project:group1 and project:group2 are incompatible.
And because your project requires project:group1 and project:group2, we can conclude that your project's requirements are unsatisfiable.
"###);
");
// And now with the same group configuration, we tell uv about
// the conflicting groups, which forces it to resolve each in
@ -2283,16 +2283,16 @@ fn mixed() -> Result<()> {
"#,
)?;
uv_snapshot!(context.filters(), context.lock(), @r###"
uv_snapshot!(context.filters(), context.lock(), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because project:group1 depends on sortedcontainers==2.3.0 and project[extra1] depends on sortedcontainers==2.4.0, we can conclude that project:group1 and project[extra1] are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because project:group1 depends on sortedcontainers==2.3.0 and project[extra1] depends on sortedcontainers==2.4.0, we can conclude that project:group1 and project[extra1] are incompatible.
And because your project requires project[extra1] and project:group1, we can conclude that your project's requirements are unsatisfiable.
"###);
");
// And now with the same extra/group configuration, we tell uv
// about the conflicting groups, which forces it to resolve each in

View File

@ -1012,8 +1012,8 @@ fn lock_exclude_newer_relative_values() -> Result<()> {
----- stderr -----
Ignoring existing lockfile due to removal of exclude newer span
× No solution found when resolving dependencies:
Because there are no versions of iniconfig and your project depends on iniconfig, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because there are no versions of iniconfig and your project depends on iniconfig, we can conclude that your project's requirements are unsatisfiable.
");
uv_snapshot!(context.filters(), context

View File

@ -777,8 +777,8 @@ fn conflict_in_fork() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (markers: sys_platform == 'os2'):
Because only package-b==1.0.0 is available and package-b==1.0.0 depends on package-d==1, we can conclude that all versions of package-b depend on package-d==1.
error: No solution found when resolving dependencies for split (markers: sys_platform == 'os2'):
Caused by: Because only package-b==1.0.0 is available and package-b==1.0.0 depends on package-d==1, we can conclude that all versions of package-b depend on package-d==1.
And because package-c==1.0.0 depends on package-d==2 and only package-c==1.0.0 is available, we can conclude that all versions of package-b and all versions of package-c are incompatible.
And because package-a==1.0.0 depends on package-b and package-c, we can conclude that package-a==1.0.0 cannot be used.
And because only the following versions of package-a{sys_platform == 'os2'} are available:
@ -847,8 +847,8 @@ fn fork_conflict_unsatisfiable() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because your project depends on package-a>=2 and package-a<2, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because your project depends on package-a>=2 and package-a<2, we can conclude that your project's requirements are unsatisfiable.
"
);
@ -1518,8 +1518,8 @@ fn fork_marker_disjoint() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because your project depends on package-a{sys_platform == 'linux'}>=2 and package-a{sys_platform == 'linux'}<2, we can conclude that your project's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because your project depends on package-a{sys_platform == 'linux'}>=2 and package-a{sys_platform == 'linux'}<2, we can conclude that your project's requirements are unsatisfiable.
"
);
@ -3147,8 +3147,8 @@ fn fork_non_local_fork_marker_direct() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because package-a==1.0.0 depends on package-c<2.0.0 and package-b==1.0.0 depends on package-c>=2.0.0, we can conclude that package-b==1.0.0 and package-a{sys_platform == 'linux'}==1.0.0 are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because package-a==1.0.0 depends on package-c<2.0.0 and package-b==1.0.0 depends on package-c>=2.0.0, we can conclude that package-b==1.0.0 and package-a{sys_platform == 'linux'}==1.0.0 are incompatible.
And because your project depends on package-a{sys_platform == 'linux'}==1.0.0 and package-b{sys_platform == 'darwin'}==1.0.0, we can conclude that your project's requirements are unsatisfiable.
"
);
@ -3219,8 +3219,8 @@ fn fork_non_local_fork_marker_transitive() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because package-a==1.0.0 depends on package-c{sys_platform == 'linux'}<2.0.0 and package-b==1.0.0 depends on package-c{sys_platform == 'darwin'}>=2.0.0, we can conclude that package-a==1.0.0 and package-b==1.0.0 are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because package-a==1.0.0 depends on package-c{sys_platform == 'linux'}<2.0.0 and package-b==1.0.0 depends on package-c{sys_platform == 'darwin'}>=2.0.0, we can conclude that package-a==1.0.0 and package-b==1.0.0 are incompatible.
And because your project depends on package-a==1.0.0 and package-b==1.0.0, we can conclude that your project's requirements are unsatisfiable.
"
);

View File

@ -171,10 +171,10 @@ async fn direct_url_http_500() {
----- stdout -----
----- stderr -----
× Failed to download `tqdm @ [SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl`
Request failed after 3 retries
Failed to fetch: `[SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl`
HTTP status server error (500 Internal Server Error) for url ([SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl)
error: Failed to download `tqdm @ [SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl`
Caused by: Request failed after 3 retries
Caused by: Failed to fetch: `[SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl`
Caused by: HTTP status server error (500 Internal Server Error) for url ([SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl)
");
}
@ -199,12 +199,12 @@ async fn direct_url_io_error() {
----- stdout -----
----- stderr -----
× Failed to download `tqdm @ [SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl`
Failed to fetch: `[SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl`
Request failed after 3 retries
error sending request for url ([SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl)
client error (SendRequest)
connection closed before message completed
error: Failed to download `tqdm @ [SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl`
Caused by: Failed to fetch: `[SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl`
Caused by: Request failed after 3 retries
Caused by: error sending request for url ([SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl)
Caused by: client error (SendRequest)
Caused by: connection closed before message completed
");
}
@ -415,9 +415,9 @@ async fn rfc9457_problem_details_license_violation() {
----- stdout -----
----- stderr -----
× Failed to download `tqdm @ [SERVER]/packages/tqdm-4.67.1-py3-none-any.whl`
Failed to fetch: `[SERVER]/packages/tqdm-4.67.1-py3-none-any.whl`
Server message: License Compliance Issue, This package version has a license that violates organizational policy.
HTTP status client error (403 Forbidden) for url ([SERVER]/packages/tqdm-4.67.1-py3-none-any.whl)
error: Failed to download `tqdm @ [SERVER]/packages/tqdm-4.67.1-py3-none-any.whl`
Caused by: Failed to fetch: `[SERVER]/packages/tqdm-4.67.1-py3-none-any.whl`
Caused by: Server message: License Compliance Issue, This package version has a license that violates organizational policy.
Caused by: HTTP status client error (403 Forbidden) for url ([SERVER]/packages/tqdm-4.67.1-py3-none-any.whl)
");
}

View File

@ -1970,18 +1970,18 @@ fn compile_python_37() -> Result<()> {
uv_snapshot!(filters, context.pip_compile()
.arg("requirements.in")
.arg("--python-version")
.arg("3.7"), @r###"
.arg("3.7"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the requested Python version (>=3.7) does not satisfy Python>=3.8 and black==23.10.1 depends on Python>=3.8, we can conclude that black==23.10.1 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the requested Python version (>=3.7) does not satisfy Python>=3.8 and black==23.10.1 depends on Python>=3.8, we can conclude that black==23.10.1 cannot be used.
And because you require black==23.10.1, we can conclude that your requirements are unsatisfiable.
hint: The `--python-version` value (>=3.7) includes Python versions that are not supported by your dependencies (e.g., black==23.10.1 only supports >=3.8). Consider using a higher `--python-version` value.
"###);
");
Ok(())
}
@ -2509,15 +2509,15 @@ fn compile_git_mismatched_name() -> Result<()> {
.write_str("flask @ git+https://github.com/pallets/flask.git@2.0.0\ndask @ git+https://github.com/pallets/flask.git@3.0.0")?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `dask @ git+https://github.com/pallets/flask.git@3.0.0`
Package metadata name `flask` does not match given name `dask`
"###
error: Failed to download and build `dask @ git+https://github.com/pallets/flask.git@3.0.0`
Caused by: Package metadata name `flask` does not match given name `dask`
"
);
Ok(())
@ -2602,15 +2602,15 @@ fn conflicting_direct_url_dependency() -> Result<()> {
requirements_in.write_str("werkzeug==3.0.0\nwerkzeug @ https://files.pythonhosted.org/packages/ff/1d/960bb4017c68674a1cb099534840f18d3def3ce44aed12b5ed8b78e0153e/Werkzeug-2.0.0-py3-none-any.whl")?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of werkzeug==3.0.0 and you require werkzeug==3.0.0, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because there is no version of werkzeug==3.0.0 and you require werkzeug==3.0.0, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -2728,16 +2728,16 @@ fn conflicting_transitive_url_dependency() -> Result<()> {
requirements_in.write_str("flask==3.0.0\nwerkzeug @ https://files.pythonhosted.org/packages/ff/1d/960bb4017c68674a1cb099534840f18d3def3ce44aed12b5ed8b78e0153e/Werkzeug-2.0.0-py3-none-any.whl")?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only werkzeug<3.0.0 is available and flask==3.0.0 depends on werkzeug>=3.0.0, we can conclude that flask==3.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only werkzeug<3.0.0 is available and flask==3.0.0 depends on werkzeug>=3.0.0, we can conclude that flask==3.0.0 cannot be used.
And because you require flask==3.0.0, we can conclude that your requirements are unsatisfiable.
"###
"
);
Ok(())
@ -3080,15 +3080,15 @@ fn requirement_constraint_override_url() -> Result<()> {
.arg("--constraint")
.arg("constraints.txt")
.arg("--override")
.arg("overrides.txt"), @r###"
.arg("overrides.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of anyio==3.7.0 and you require anyio==3.7.0, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because there is no version of anyio==3.7.0 and you require anyio==3.7.0, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -3302,15 +3302,15 @@ dependencies = ["anyio==3.7.0", "anyio==4.0.0"]
)?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("pyproject.toml"), @r###"
.arg("pyproject.toml"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because my-project depends on anyio==3.7.0 and anyio==4.0.0, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because my-project depends on anyio==3.7.0 and anyio==4.0.0, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -3334,15 +3334,15 @@ dependencies = ["anyio==300.1.4"]
)?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("pyproject.toml"), @r###"
.arg("pyproject.toml"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of anyio==300.1.4 and my-project depends on anyio==300.1.4, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because there is no version of anyio==300.1.4 and my-project depends on anyio==300.1.4, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -3958,8 +3958,8 @@ fn compile_yanked_version_indirect() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only the following versions of attrs are available:
error: No solution found when resolving dependencies:
Caused by: Because only the following versions of attrs are available:
attrs<=20.3.0
attrs==21.1.0
attrs>=21.2.0
@ -6668,17 +6668,17 @@ fn no_index_requirements_txt() -> Result<()> {
requirements_in.write_str("--no-index\ntqdm")?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because tqdm was not found in the provided package locations and you require tqdm, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because tqdm was not found in the provided package locations and you require tqdm, we can conclude that your requirements are unsatisfiable.
hint: Packages were unavailable because index lookups were disabled and no additional package locations were provided (try: `--find-links <uri>`)
"###
"
);
Ok(())
@ -6777,17 +6777,17 @@ fn offline_registry() -> Result<()> {
// Resolve with `--offline` with an empty cache.
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--offline"), @r###"
.arg("--offline"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because black was not found in the cache and you require black==23.10.1, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because black was not found in the cache and you require black==23.10.1, we can conclude that your requirements are unsatisfiable.
hint: Packages were unavailable because the network was disabled. When the network is disabled, registry packages may only be read from the cache.
"###
"
);
// Populate the cache.
@ -6908,17 +6908,17 @@ fn offline_find_links() -> Result<()> {
.arg("requirements.in")
.arg("--find-links")
.arg("https://astral-sh.github.io/pytorch-mirror/whl/torch_stable.html")
.arg("--offline"), @r###"
.arg("--offline"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because tqdm was not found in the cache and you require tqdm, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because tqdm was not found in the cache and you require tqdm, we can conclude that your requirements are unsatisfiable.
hint: Packages were unavailable because the network was disabled. When the network is disabled, registry packages may only be read from the cache.
"###
"
);
// Resolve with `--offline`, `--find-links`, and `--no-index`.
@ -6927,17 +6927,17 @@ fn offline_find_links() -> Result<()> {
.arg("--find-links")
.arg("https://astral-sh.github.io/pytorch-mirror/whl/torch_stable.html")
.arg("--no-index")
.arg("--offline"), @r###"
.arg("--offline"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because tqdm was not found in the cache and you require tqdm, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because tqdm was not found in the cache and you require tqdm, we can conclude that your requirements are unsatisfiable.
hint: Packages were unavailable because the network was disabled. When the network is disabled, registry packages may only be read from the cache.
"###
"
);
Ok(())
@ -6953,15 +6953,15 @@ fn offline_direct_url() -> Result<()> {
// Resolve with `--offline` with an empty cache.
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--offline"), @r###"
.arg("--offline"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl`
Network connectivity is disabled, but the requested data wasn't found in the cache for: `https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl`
"###
error: Failed to download `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl`
Caused by: Network connectivity is disabled, but the requested data wasn't found in the cache for: `https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl`
"
);
// Populate the cache.
@ -7013,20 +7013,20 @@ fn invalid_metadata_requires_python() -> Result<()> {
.arg("requirements.in")
.arg("--no-index")
.arg("--find-links")
.arg(context.workspace_root.join("test").join("links")), @r###"
.arg(context.workspace_root.join("test").join("links")), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because validation==2.0.0 has invalid metadata and you require validation==2.0.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because validation==2.0.0 has invalid metadata and you require validation==2.0.0, we can conclude that your requirements are unsatisfiable.
hint: Metadata for `validation` (v2.0.0) could not be parsed:
Failed to parse version: Unexpected end of version specifier, expected operator. Did you mean `==12`?:
12
^^
"###
"
);
Ok(())
@ -7044,18 +7044,18 @@ fn invalid_metadata_multiple_dist_info() -> Result<()> {
.arg("requirements.in")
.arg("--no-index")
.arg("--find-links")
.arg(context.workspace_root.join("test").join("links")), @r###"
.arg(context.workspace_root.join("test").join("links")), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because validation==3.0.0 has an invalid package format and you require validation==3.0.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because validation==3.0.0 has an invalid package format and you require validation==3.0.0, we can conclude that your requirements are unsatisfiable.
hint: The structure of `validation` (v3.0.0) was invalid:
Multiple .dist-info directories found: validation-2.0.0, validation-3.0.0
"###
"
);
Ok(())
@ -7313,15 +7313,15 @@ fn compile_constraints_incompatible_url() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--constraint")
.arg("constraints.txt"), @r###"
.arg("constraints.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only anyio>=4 is available and you require anyio<4, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because only anyio>=4 is available and you require anyio<4, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -7337,15 +7337,15 @@ fn index_url_in_requirements() -> Result<()> {
.write_str("--index-url https://astral-sh.github.io/pytorch-mirror/whl\nanyio<4")?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because anyio was not found in the package registry and you require anyio<4, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because anyio was not found in the package registry and you require anyio<4, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -10087,15 +10087,15 @@ fn compile_constraints_incompatible_version() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--constraint")
.arg("constraints.txt"), @r###"
.arg("constraints.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because you require filelock==1.0.0 and filelock==3.8.0, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because you require filelock==1.0.0 and filelock==3.8.0, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -10115,15 +10115,15 @@ fn conflicting_url_markers() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--constraint")
.arg("constraints.txt"), @r###"
.arg("constraints.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because you require filelock==1.0.0 and filelock==3.8.0, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because you require filelock==1.0.0 and filelock==3.8.0, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -10269,15 +10269,15 @@ fn override_with_incompatible_constraint() -> Result<()> {
.arg("--constraint")
.arg("constraints.txt")
.arg("--override")
.arg("overrides.txt"), @r###"
.arg("overrides.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because you require anyio>=3.0.0 and anyio<3.0.0, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because you require anyio>=3.0.0 and anyio<3.0.0, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -10926,16 +10926,16 @@ requires-python = ">=3.13"
requirements_in.write_str(&format!("-e {}", editable_dir.path().display()))?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the current Python version (3.12.[X]) does not satisfy Python>=3.13 and example==0.0.0 depends on Python>=3.13, we can conclude that example==0.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the current Python version (3.12.[X]) does not satisfy Python>=3.13 and example==0.0.0 depends on Python>=3.13, we can conclude that example==0.0.0 cannot be used.
And because only example==0.0.0 is available and you require example, we can conclude that your requirements are unsatisfiable.
"###
"
);
Ok(())
@ -10978,16 +10978,16 @@ requires-python = ">=3.13"
uv_snapshot!(filters, context.pip_compile()
.arg("requirements.in")
.arg("--python-version=3.11"), @r###"
.arg("--python-version=3.11"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the current Python version (3.12.[X]) does not satisfy Python>=3.13 and example==0.0.0 depends on Python>=3.13, we can conclude that example==0.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the current Python version (3.12.[X]) does not satisfy Python>=3.13 and example==0.0.0 depends on Python>=3.13, we can conclude that example==0.0.0 cannot be used.
And because only example==0.0.0 is available and you require example, we can conclude that your requirements are unsatisfiable.
"###
"
);
Ok(())
@ -11126,16 +11126,16 @@ fn not_found_direct_url() -> Result<()> {
requirements_in.write_str("iniconfig @ https://files.pythonhosted.org/packages/ef/a6/fake/iniconfig-2.0.0-py3-none-any.whl")?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/fake/iniconfig-2.0.0-py3-none-any.whl`
Failed to fetch: `https://files.pythonhosted.org/packages/ef/a6/fake/iniconfig-2.0.0-py3-none-any.whl`
HTTP status client error (404 Not Found) for url (https://files.pythonhosted.org/packages/ef/a6/fake/iniconfig-2.0.0-py3-none-any.whl)
"###
error: Failed to download `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/fake/iniconfig-2.0.0-py3-none-any.whl`
Caused by: Failed to fetch: `https://files.pythonhosted.org/packages/ef/a6/fake/iniconfig-2.0.0-py3-none-any.whl`
Caused by: HTTP status client error (404 Not Found) for url (https://files.pythonhosted.org/packages/ef/a6/fake/iniconfig-2.0.0-py3-none-any.whl)
"
);
Ok(())
@ -11166,16 +11166,16 @@ requires-python = ">=3.13"
requirements_in.write_str(&format!("example @ {}", editable_dir.path().display()))?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the current Python version (3.12.[X]) does not satisfy Python>=3.13 and example==0.0.0 depends on Python>=3.13, we can conclude that example==0.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the current Python version (3.12.[X]) does not satisfy Python>=3.13 and example==0.0.0 depends on Python>=3.13, we can conclude that example==0.0.0 cannot be used.
And because only example==0.0.0 is available and you require example, we can conclude that your requirements are unsatisfiable.
"###
"
);
Ok(())
@ -12287,17 +12287,17 @@ requires-python = ">3.8"
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--override")
.arg("overrides.txt"), @r###"
.arg("overrides.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of anyio==0.0.0 and lib==0.0.0 depends on anyio==0.0.0, we can conclude that lib==0.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because there is no version of anyio==0.0.0 and lib==0.0.0 depends on anyio==0.0.0, we can conclude that lib==0.0.0 cannot be used.
And because only lib==0.0.0 is available and example==0.0.0 depends on lib, we can conclude that example==0.0.0 cannot be used.
And because only example==0.0.0 is available and you require example, we can conclude that your requirements are unsatisfiable.
"###
"
);
// Now constrain `anyio` to the local version.
@ -12460,17 +12460,17 @@ fn compile_index_url_first_match_base() -> Result<()> {
.arg("--extra-index-url")
.arg("https://astral-sh.github.io/pytorch-mirror/whl/cpu")
.arg("requirements.in")
.arg("--no-deps"), @r###"
.arg("--no-deps"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of jinja2==3.1.0 and you require jinja2==3.1.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because there is no version of jinja2==3.1.0 and you require jinja2==3.1.0, we can conclude that your requirements are unsatisfiable.
hint: `jinja2` was found on https://astral-sh.github.io/pytorch-mirror/whl/cpu, but not at the requested version (jinja2==3.1.0). A compatible version may be available on a subsequent index (e.g., https://pypi.org/simple). By default, uv will only consider versions that are published on the first index that contains a given package, to avoid dependency confusion attacks. If all indexes are equally trusted, use `--index-strategy unsafe-best-match` to consider all versions from all indexes, regardless of the order in which they were defined.
"###
"
);
Ok(())
@ -12494,17 +12494,17 @@ fn compile_index_url_first_match_marker() -> Result<()> {
.arg("--extra-index-url")
.arg("https://astral-sh.github.io/pytorch-mirror/whl/cpu")
.arg("requirements.in")
.arg("--no-deps"), @r###"
.arg("--no-deps"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of jinja2{sys_platform == 'linux'}==3.1.0 and you require jinja2{sys_platform == 'linux'}==3.1.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because there is no version of jinja2{sys_platform == 'linux'}==3.1.0 and you require jinja2{sys_platform == 'linux'}==3.1.0, we can conclude that your requirements are unsatisfiable.
hint: `jinja2` was found on https://astral-sh.github.io/pytorch-mirror/whl/cpu, but not at the requested version (jinja2==3.1.0). A compatible version may be available on a subsequent index (e.g., https://pypi.org/simple). By default, uv will only consider versions that are published on the first index that contains a given package, to avoid dependency confusion attacks. If all indexes are equally trusted, use `--index-strategy unsafe-best-match` to consider all versions from all indexes, regardless of the order in which they were defined.
"###
"
);
Ok(())
@ -12527,15 +12527,15 @@ fn compile_index_url_first_match_all_versions() -> Result<()> {
.arg("--extra-index-url")
.arg("https://test.pypi.org/simple")
.arg("requirements.in")
.arg("--no-deps"), @r###"
.arg("--no-deps"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there are no versions of pandas and you require pandas, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because there are no versions of pandas and you require pandas, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -12912,15 +12912,15 @@ fn no_version_for_direct_dependency() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
// Must error before we make any network requests
.arg("--offline"), @r###"
.arg("--offline"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
you require pypyp
"###
error: No solution found when resolving dependencies:
Caused by: you require pypyp
"
);
Ok(())
@ -13243,20 +13243,20 @@ fn git_source_missing_tag() -> Result<()> {
"#})?;
uv_snapshot!(filters, context.pip_compile()
.arg("pyproject.toml"), @r###"
.arg("pyproject.toml"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@missing`
Git operation failed
failed to clone into: [CACHE_DIR]/git-v0/db/8dab139913c4b566
failed to fetch tag `missing`
process didn't exit successfully: `git fetch --force --update-head-ok 'https://github.com/astral-test/uv-public-pypackage' '+refs/tags/missing:refs/remotes/origin/tags/missing'` (exit status: 128)
error: Failed to download and build `uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@missing`
Caused by: Git operation failed
Caused by: failed to clone into: [CACHE_DIR]/git-v0/db/8dab139913c4b566
Caused by: failed to fetch tag `missing`
Caused by: process didn't exit successfully: `git fetch --force --update-head-ok 'https://github.com/astral-test/uv-public-pypackage' '+refs/tags/missing:refs/remotes/origin/tags/missing'` (exit status: 128)
--- stderr
fatal: couldn't find remote ref refs/tags/missing
"###);
");
Ok(())
}
@ -13548,18 +13548,18 @@ fn no_binary_only_binary() -> Result<()> {
.pip_compile()
.arg("requirements.in")
.arg("--only-binary")
.arg(":all:"), @r###"
.arg(":all:"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only source-distribution>=0.0.1 is available and source-distribution==0.0.1 has no usable wheels, we can conclude that source-distribution<=0.0.1 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only source-distribution>=0.0.1 is available and source-distribution==0.0.1 has no usable wheels, we can conclude that source-distribution<=0.0.1 cannot be used.
And because you require source-distribution<=0.0.1, we can conclude that your requirements are unsatisfiable.
hint: Wheels are required for `source-distribution` because building from source is disabled for all packages (i.e., with `--no-build`)
"###
"
);
uv_snapshot!(context
@ -13633,17 +13633,17 @@ fn incompatible_build_constraint() -> Result<()> {
uv_snapshot!(context.pip_compile()
.arg("requirements.txt")
.arg("--build-constraint")
.arg("build_constraints.txt"), @r###"
.arg("build_constraints.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
"###
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -13703,17 +13703,17 @@ build-constraint-dependencies = [
)?;
uv_snapshot!(context.pip_compile()
.arg("pyproject.toml"), @r###"
.arg("pyproject.toml"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
"###
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -13791,17 +13791,17 @@ build-constraint-dependencies = [
uv_snapshot!(context.pip_compile()
.arg("pyproject.toml")
.arg("--build-constraint")
.arg("build_constraints.txt"), @r###"
.arg("build_constraints.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40 and setuptools==1, we can conclude that your requirements are unsatisfiable.
"###
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40 and setuptools==1, we can conclude that your requirements are unsatisfiable.
"
);
// compatible setuptools version in pyproject.toml, incompatible in build_constraints.txt
@ -13830,17 +13830,17 @@ build-constraint-dependencies = [
uv_snapshot!(context.pip_compile()
.arg("pyproject.toml")
.arg("--build-constraint")
.arg("build_constraints.txt"), @r###"
.arg("build_constraints.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools==1 and setuptools>=40, we can conclude that your requirements are unsatisfiable.
"###
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools==1 and setuptools>=40, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -14122,8 +14122,8 @@ fn compile_enumerate_no_versions() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the current Python version (3.10.[X]) does not satisfy Python>=3.11,<4.0 and all versions of rooster-blue depend on Python>=3.11,<4.0, we can conclude that all versions of rooster-blue cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the current Python version (3.10.[X]) does not satisfy Python>=3.11,<4.0 and all versions of rooster-blue depend on Python>=3.11,<4.0, we can conclude that all versions of rooster-blue cannot be used.
And because you require rooster-blue, we can conclude that your requirements are unsatisfiable.
");
@ -14569,8 +14569,8 @@ fn unsupported_requires_python_dynamic_metadata() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (markers: python_full_version >= '3.10'):
Because source-distribution==0.0.3 requires Python >=3.10 and you require source-distribution{python_full_version >= '3.10'}==0.0.3, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies for split (markers: python_full_version >= '3.10'):
Caused by: Because source-distribution==0.0.3 requires Python >=3.10 and you require source-distribution{python_full_version >= '3.10'}==0.0.3, we can conclude that your requirements are unsatisfiable.
hint: The source distribution for `source-distribution` (v0.0.3) does not include static metadata. Generating metadata for this package requires Python >=3.10, but Python 3.8.[X] is installed.
@ -14834,15 +14834,15 @@ fn compile_derivation_chain() -> Result<()> {
.chain([(r"/.*/src", "/[TMP]/src")])
.collect::<Vec<_>>();
uv_snapshot!(filters, context.pip_compile().arg("pyproject.toml"), @r###"
uv_snapshot!(filters, context.pip_compile().arg("pyproject.toml"), @r#"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `wsgiref==0.1.2`
The build backend returned an error
Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
error: Failed to build `wsgiref==0.1.2`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -14863,8 +14863,9 @@ fn compile_derivation_chain() -> Result<()> {
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
hint: This usually indicates a problem with the package or the build environment.
help: `wsgiref` (v0.1.2) was included because `child` (v0.1.0) depends on `wsgiref`
"###
hint: `wsgiref` (v0.1.2) was included because `child` (v0.1.0) depends on `wsgiref`
"#
);
Ok(())
@ -14887,8 +14888,8 @@ fn invalid_platform() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only the following versions of open3d are available:
error: No solution found when resolving dependencies:
Caused by: Because only the following versions of open3d are available:
open3d==0.8.0.0
open3d==0.9.0.0
open3d==0.10.0.0
@ -15018,8 +15019,8 @@ fn universal_conflicting_override_urls() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to resolve dependencies for `anyio` (v4.3.0)
Requirements contain conflicting URLs for package `sniffio` in split `sys_platform == 'win32'`:
error: Failed to resolve dependencies for `anyio` (v4.3.0)
Caused by: Requirements contain conflicting URLs for package `sniffio` in split `sys_platform == 'win32'`:
- https://files.pythonhosted.org/packages/c3/a0/5dba8ed157b0136607c7f2151db695885606968d1fae123dc3391e0cfdbf/sniffio-1.3.0-py3-none-any.whl
- https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
"
@ -17606,8 +17607,8 @@ fn incompatible_cuda() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because torchvision==0.16.0+cu121 depends on system:cuda==12.1 and torch==2.6.0+cu126 depends on system:cuda==12.6, we can conclude that torch==2.6.0+cu126 and torchvision==0.16.0+cu121 are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because torchvision==0.16.0+cu121 depends on system:cuda==12.1 and torch==2.6.0+cu126 depends on system:cuda==12.6, we can conclude that torch==2.6.0+cu126 and torchvision==0.16.0+cu121 are incompatible.
And because you require torch==2.6.0+cu126 and torchvision==0.16.0+cu121, we can conclude that your requirements are unsatisfiable.
");
@ -17865,8 +17866,8 @@ fn credentials_from_subdirectory() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because iniconfig was not found in the package registry and foo depends on iniconfig, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because iniconfig was not found in the package registry and foo depends on iniconfig, we can conclude that your requirements are unsatisfiable.
");
uv_snapshot!(context.filters(), context

View File

@ -74,8 +74,8 @@ fn compatible_python_incompatible_override() -> Result<()> {
----- stderr -----
warning: The requested Python version 3.9 is not available; 3.11.[X] will be used to build dependencies instead.
× No solution found when resolving dependencies:
Because the requested Python version (>=3.9) does not satisfy Python>=3.10 and package-a==1.0.0 depends on Python>=3.10, we can conclude that package-a==1.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the requested Python version (>=3.9) does not satisfy Python>=3.10 and package-a==1.0.0 depends on Python>=3.10, we can conclude that package-a==1.0.0 cannot be used.
And because you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable.
hint: The `--python-version` value (>=3.9) includes Python versions that are not supported by your dependencies (e.g., package-a==1.0.0 only supports >=3.10). Consider using a higher `--python-version` value.
@ -383,8 +383,8 @@ fn python_patch_override_no_patch() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the requested Python version (>=3.9) does not satisfy Python>=3.9.4 and package-a==1.0.0 depends on Python>=3.9.4, we can conclude that package-a==1.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the requested Python version (>=3.9) does not satisfy Python>=3.9.4 and package-a==1.0.0 depends on Python>=3.9.4, we can conclude that package-a==1.0.0 cannot be used.
And because you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable.
hint: The `--python-version` value (>=3.9) includes Python versions that are not supported by your dependencies (e.g., package-a==1.0.0 only supports >=3.9.4). Consider using a higher `--python-version` value.

File diff suppressed because it is too large Load Diff

View File

@ -51,8 +51,8 @@ fn requires_exact_version_does_not_exist() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of package-a==2.0.0 and you require package-a==2.0.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because there is no version of package-a==2.0.0 and you require package-a==2.0.0, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("requires_exact_version_does_not_exist_a");
@ -87,8 +87,8 @@ fn requires_greater_version_does_not_exist() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a<=1.0.0 is available and you require package-a>1.0.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a<=1.0.0 is available and you require package-a>1.0.0, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("requires_greater_version_does_not_exist_a");
@ -124,8 +124,8 @@ fn requires_less_version_does_not_exist() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a>=2.0.0 is available and you require package-a<2.0.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a>=2.0.0 is available and you require package-a<2.0.0, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("requires_less_version_does_not_exist_a");
@ -157,8 +157,8 @@ fn requires_package_does_not_exist() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because package-a was not found in the package registry and you require package-a, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because package-a was not found in the package registry and you require package-a, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("requires_package_does_not_exist_a");
@ -194,8 +194,8 @@ fn transitive_requires_package_does_not_exist() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because package-b was not found in the package registry and package-a==1.0.0 depends on package-b, we can conclude that package-a==1.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because package-b was not found in the package registry and package-a==1.0.0 depends on package-b, we can conclude that package-a==1.0.0 cannot be used.
And because only package-a==1.0.0 is available and you require package-a, we can conclude that your requirements are unsatisfiable.
");
@ -281,8 +281,8 @@ fn dependency_excludes_non_contiguous_range_of_compatible_versions() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because package-a==1.0.0 depends on package-b==1.0.0 and only the following versions of package-a are available:
error: No solution found when resolving dependencies:
Caused by: Because package-a==1.0.0 depends on package-b==1.0.0 and only the following versions of package-a are available:
package-a==1.0.0
package-a>=2.0.0
we can conclude that package-a<2.0.0 depends on package-b==1.0.0.
@ -384,8 +384,8 @@ fn dependency_excludes_range_of_compatible_versions() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because package-a==1.0.0 depends on package-b==1.0.0 and only the following versions of package-a are available:
error: No solution found when resolving dependencies:
Caused by: Because package-a==1.0.0 depends on package-b==1.0.0 and only the following versions of package-a are available:
package-a==1.0.0
package-a>=2.0.0
we can conclude that package-a<2.0.0 depends on package-b==1.0.0.
@ -457,8 +457,8 @@ fn excluded_only_compatible_version() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only the following versions of package-a are available:
error: No solution found when resolving dependencies:
Caused by: Because only the following versions of package-a are available:
package-a==1.0.0
package-a==2.0.0
package-a==3.0.0
@ -509,8 +509,8 @@ fn excluded_only_version() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and you require one of:
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and you require one of:
package-a<1.0.0
package-a>1.0.0
we can conclude that your requirements are unsatisfiable.
@ -724,8 +724,8 @@ fn extra_incompatible_with_extra() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a[extra-b]==1.0.0 is available and package-a[extra-b]==1.0.0 depends on package-b==1.0.0, we can conclude that all versions of package-a[extra-b] depend on package-b==1.0.0.
error: No solution found when resolving dependencies:
Caused by: Because only package-a[extra-b]==1.0.0 is available and package-a[extra-b]==1.0.0 depends on package-b==1.0.0, we can conclude that all versions of package-a[extra-b] depend on package-b==1.0.0.
And because package-a[extra-c]==1.0.0 depends on package-b==2.0.0 and only package-a[extra-c]==1.0.0 is available, we can conclude that all versions of package-a[extra-b] and all versions of package-a[extra-c] are incompatible.
And because you require package-a[extra-b] and package-a[extra-c], we can conclude that your requirements are unsatisfiable.
");
@ -772,8 +772,8 @@ fn extra_incompatible_with_root() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a[extra]==1.0.0 is available and package-a[extra]==1.0.0 depends on package-b==1.0.0, we can conclude that all versions of package-a[extra] depend on package-b==1.0.0.
error: No solution found when resolving dependencies:
Caused by: Because only package-a[extra]==1.0.0 is available and package-a[extra]==1.0.0 depends on package-b==1.0.0, we can conclude that all versions of package-a[extra] depend on package-b==1.0.0.
And because you require package-a[extra] and package-b==2.0.0, we can conclude that your requirements are unsatisfiable.
");
@ -951,8 +951,8 @@ fn direct_incompatible_versions() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because you require package-a==1.0.0 and package-a==2.0.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because you require package-a==1.0.0 and package-a==2.0.0, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("direct_incompatible_versions_a");
@ -991,8 +991,8 @@ fn transitive_incompatible_versions() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because package-a==1.0.0 depends on package-b==1.0.0 and package-b==2.0.0, we can conclude that package-a==1.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because package-a==1.0.0 depends on package-b==1.0.0 and package-b==2.0.0, we can conclude that package-a==1.0.0 cannot be used.
And because you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable.
");
@ -1035,8 +1035,8 @@ fn transitive_incompatible_with_root_version() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-b==2.0.0, we can conclude that all versions of package-a depend on package-b==2.0.0.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-b==2.0.0, we can conclude that all versions of package-a depend on package-b==2.0.0.
And because you require package-a and package-b==1.0.0, we can conclude that your requirements are unsatisfiable.
");
@ -1084,8 +1084,8 @@ fn transitive_incompatible_with_transitive() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-c==1.0.0, we can conclude that all versions of package-a depend on package-c==1.0.0.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-c==1.0.0, we can conclude that all versions of package-a depend on package-c==1.0.0.
And because package-b==1.0.0 depends on package-c==2.0.0 and only package-b==1.0.0 is available, we can conclude that all versions of package-a and all versions of package-b are incompatible.
And because you require package-a and package-b, we can conclude that your requirements are unsatisfiable.
");
@ -1162,8 +1162,8 @@ fn local_greater_than() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.2.3+foo is available and you require package-a>1.2.3, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.2.3+foo is available and you require package-a>1.2.3, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("local_greater_than_a");
@ -1237,8 +1237,8 @@ fn local_less_than() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.2.3+foo is available and you require package-a<1.2.3, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.2.3+foo is available and you require package-a<1.2.3, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("local_less_than_a");
@ -1454,8 +1454,8 @@ fn local_transitive_conflicting() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-b==2.0.0+bar, we can conclude that all versions of package-a depend on package-b==2.0.0+bar.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-b==2.0.0+bar, we can conclude that all versions of package-a depend on package-b==2.0.0+bar.
And because you require package-a and package-b==2.0.0+foo, we can conclude that your requirements are unsatisfiable.
");
@ -1596,8 +1596,8 @@ fn local_transitive_greater_than() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-b>2.0.0, we can conclude that all versions of package-a depend on package-b>2.0.0.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-b>2.0.0, we can conclude that all versions of package-a depend on package-b>2.0.0.
And because you require package-a and package-b==2.0.0+foo, we can conclude that your requirements are unsatisfiable.
");
@ -1690,8 +1690,8 @@ fn local_transitive_less_than() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-b<2.0.0, we can conclude that all versions of package-a depend on package-b<2.0.0.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-b<2.0.0, we can conclude that all versions of package-a depend on package-b<2.0.0.
And because you require package-a and package-b==2.0.0+foo, we can conclude that your requirements are unsatisfiable.
");
@ -1856,8 +1856,8 @@ fn post_equal_not_available() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of package-a==1.2.3.post0 and you require package-a==1.2.3.post0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because there is no version of package-a==1.2.3.post0 and you require package-a==1.2.3.post0, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("post_equal_not_available_a");
@ -1971,8 +1971,8 @@ fn post_greater_than_post_not_available() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a<=1.2.3.post1 is available and you require package-a>=1.2.3.post3, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a<=1.2.3.post1 is available and you require package-a>=1.2.3.post3, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("post_greater_than_post_not_available_a");
@ -2045,8 +2045,8 @@ fn post_greater_than() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.2.3.post1 is available and you require package-a>1.2.3, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.2.3.post1 is available and you require package-a>1.2.3, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("post_greater_than_a");
@ -2080,8 +2080,8 @@ fn post_less_than_or_equal() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.2.3.post1 is available and you require package-a<=1.2.3, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.2.3.post1 is available and you require package-a<=1.2.3, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("post_less_than_or_equal_a");
@ -2115,8 +2115,8 @@ fn post_less_than() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.2.3.post1 is available and you require package-a<1.2.3, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.2.3.post1 is available and you require package-a<1.2.3, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("post_less_than_a");
@ -2151,8 +2151,8 @@ fn post_local_greater_than_post() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a<=1.2.3.post1+local is available and you require package-a>=1.2.3.post2, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a<=1.2.3.post1+local is available and you require package-a>=1.2.3.post2, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("post_local_greater_than_post_a");
@ -2187,8 +2187,8 @@ fn post_local_greater_than() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a<=1.2.3.post1+local is available and you require package-a>1.2.3, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a<=1.2.3.post1+local is available and you require package-a>1.2.3, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("post_local_greater_than_a");
@ -2222,8 +2222,8 @@ fn post_simple() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of package-a==1.2.3 and you require package-a==1.2.3, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because there is no version of package-a==1.2.3 and you require package-a==1.2.3, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("post_simple_a");
@ -2382,8 +2382,8 @@ fn package_only_prereleases_in_range() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a<=0.1.0 is available and you require package-a>0.1.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only package-a<=0.1.0 is available and you require package-a>0.1.0, we can conclude that your requirements are unsatisfiable.
hint: Pre-releases are available for `package-a` in the requested range (e.g., 1.0.0a1), but pre-releases weren't enabled (try: `--prerelease=allow`)
");
@ -2871,8 +2871,8 @@ fn transitive_package_only_prereleases_in_range() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-b<=0.1 is available and package-a==0.1.0 depends on package-b>0.1, we can conclude that package-a==0.1.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only package-b<=0.1 is available and package-a==0.1.0 depends on package-b>0.1, we can conclude that package-a==0.1.0 cannot be used.
And because only package-a==0.1.0 is available and you require package-a, we can conclude that your requirements are unsatisfiable.
hint: Pre-releases are available for `package-b` in the requested range (e.g., 1.0.0a1), but pre-releases weren't enabled (try: `--prerelease=allow`)
@ -2994,8 +2994,8 @@ fn transitive_prerelease_and_stable_dependency_many_versions_holes() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only the following versions of package-c are available:
error: No solution found when resolving dependencies:
Caused by: Because only the following versions of package-c are available:
package-c<=1.0.0
package-c>=2.0.0a5,<=2.0.0a7
package-c==2.0.0b1
@ -3089,8 +3089,8 @@ fn transitive_prerelease_and_stable_dependency_many_versions() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-c>=2.0.0b1, we can conclude that all versions of package-a depend on package-c>=2.0.0b1.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 depends on package-c>=2.0.0b1, we can conclude that all versions of package-a depend on package-c>=2.0.0b1.
And because only package-c<2.0.0b1 is available, we can conclude that all versions of package-a depend on package-c>3.0.0.
And because package-b==1.0.0 depends on package-c and only package-b==1.0.0 is available, we can conclude that all versions of package-a and all versions of package-b are incompatible.
And because you require package-a and package-b, we can conclude that your requirements are unsatisfiable.
@ -3213,8 +3213,8 @@ fn transitive_prerelease_and_stable_dependency() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of package-c==2.0.0b1 and package-a==1.0.0 depends on package-c==2.0.0b1, we can conclude that package-a==1.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because there is no version of package-c==2.0.0b1 and package-a==1.0.0 depends on package-c==2.0.0b1, we can conclude that package-a==1.0.0 cannot be used.
And because only package-a==1.0.0 is available and you require package-a, we can conclude that your requirements are unsatisfiable.
hint: `package-c` was requested with a pre-release marker (e.g., package-c==2.0.0b1), but pre-releases weren't enabled (try: `--prerelease=allow`)
@ -3307,8 +3307,8 @@ fn python_greater_than_current_excluded() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the current Python version (3.9.[X]) does not satisfy Python>=3.10 and package-a==2.0.0 depends on Python>=3.10, we can conclude that package-a==2.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the current Python version (3.9.[X]) does not satisfy Python>=3.10 and package-a==2.0.0 depends on Python>=3.10, we can conclude that package-a==2.0.0 cannot be used.
And because only the following versions of package-a are available:
package-a<=2.0.0
package-a==3.0.0
@ -3377,8 +3377,8 @@ fn python_greater_than_current_many() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because there is no version of package-a==1.0.0 and you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because there is no version of package-a==1.0.0 and you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable.
");
context.assert_not_installed("python_greater_than_current_many_a");
@ -3414,8 +3414,8 @@ fn python_greater_than_current_patch() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the current Python version (3.13) does not satisfy Python>=3.13.2 and package-a==1.0.0 depends on Python>=3.13.2, we can conclude that package-a==1.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the current Python version (3.13) does not satisfy Python>=3.13.2 and package-a==1.0.0 depends on Python>=3.13.2, we can conclude that package-a==1.0.0 cannot be used.
And because you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable.
");
@ -3451,8 +3451,8 @@ fn python_greater_than_current() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the current Python version (3.9.[X]) does not satisfy Python>=3.10 and package-a==1.0.0 depends on Python>=3.10, we can conclude that package-a==1.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the current Python version (3.9.[X]) does not satisfy Python>=3.10 and package-a==1.0.0 depends on Python>=3.10, we can conclude that package-a==1.0.0 cannot be used.
And because you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable.
");
@ -3526,8 +3526,8 @@ fn python_version_does_not_exist() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the current Python version (3.12.[X]) does not satisfy Python>=3.30 and package-a==1.0.0 depends on Python>=3.30, we can conclude that package-a==1.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the current Python version (3.12.[X]) does not satisfy Python>=3.30 and package-a==1.0.0 depends on Python>=3.30, we can conclude that package-a==1.0.0 cannot be used.
And because you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable.
");
@ -3641,8 +3641,8 @@ fn no_sdist_no_wheels_with_matching_abi() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 has no wheels with a matching Python ABI tag (e.g., `cp312`), we can conclude that all versions of package-a cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 has no wheels with a matching Python ABI tag (e.g., `cp312`), we can conclude that all versions of package-a cannot be used.
And because you require package-a, we can conclude that your requirements are unsatisfiable.
hint: You require CPython 3.12 (`cp312`), but we only found wheels for `package-a` (v1.0.0) with the following Python ABI tag: `graalpy240_310_native`
@ -3680,8 +3680,8 @@ fn no_sdist_no_wheels_with_matching_platform() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 has no wheels with a matching platform tag (e.g., `manylinux_2_17_x86_64`), we can conclude that all versions of package-a cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 has no wheels with a matching platform tag (e.g., `manylinux_2_17_x86_64`), we can conclude that all versions of package-a cannot be used.
And because you require package-a, we can conclude that your requirements are unsatisfiable.
hint: Wheels are available for `package-a` (v1.0.0) on the following platform: `macosx_10_0_ppc64`
@ -3719,8 +3719,8 @@ fn no_sdist_no_wheels_with_matching_python() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 has no wheels with a matching Python implementation tag (e.g., `cp312`), we can conclude that all versions of package-a cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 has no wheels with a matching Python implementation tag (e.g., `cp312`), we can conclude that all versions of package-a cannot be used.
And because you require package-a, we can conclude that your requirements are unsatisfiable.
hint: You require CPython 3.12 (`cp312`), but we only found wheels for `package-a` (v1.0.0) with the following Python implementation tag: `graalpy310`
@ -3759,8 +3759,8 @@ fn no_wheels_no_build() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 has no usable wheels, we can conclude that all versions of package-a cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 has no usable wheels, we can conclude that all versions of package-a cannot be used.
And because you require package-a, we can conclude that your requirements are unsatisfiable.
hint: Wheels are required for `package-a` because building from source is disabled for `package-a` (i.e., with `--no-build-package package-a`)
@ -3869,8 +3869,8 @@ fn only_wheels_no_binary() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 has no source distribution, we can conclude that all versions of package-a cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 has no source distribution, we can conclude that all versions of package-a cannot be used.
And because you require package-a, we can conclude that your requirements are unsatisfiable.
hint: A source distribution is required for `package-a` because using pre-built wheels is disabled for `package-a` (i.e., with `--no-binary-package package-a`)
@ -3978,8 +3978,8 @@ fn package_only_yanked_in_range() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only the following versions of package-a are available:
error: No solution found when resolving dependencies:
Caused by: Because only the following versions of package-a are available:
package-a<=0.1.0
package-a==1.0.0
and package-a==1.0.0 was yanked (reason: Yanked for testing), we can conclude that package-a>0.1.0 cannot be used.
@ -4018,8 +4018,8 @@ fn package_only_yanked() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-a==1.0.0 is available and package-a==1.0.0 was yanked (reason: Yanked for testing), we can conclude that all versions of package-a cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only package-a==1.0.0 is available and package-a==1.0.0 was yanked (reason: Yanked for testing), we can conclude that all versions of package-a cannot be used.
And because you require package-a, we can conclude that your requirements are unsatisfiable.
");
@ -4193,8 +4193,8 @@ fn transitive_package_only_yanked_in_range() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only the following versions of package-b are available:
error: No solution found when resolving dependencies:
Caused by: Because only the following versions of package-b are available:
package-b<=0.1
package-b==1.0.0
and package-b==1.0.0 was yanked (reason: Yanked for testing), we can conclude that package-b>0.1 cannot be used.
@ -4238,8 +4238,8 @@ fn transitive_package_only_yanked() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because only package-b==1.0.0 is available and package-b==1.0.0 was yanked (reason: Yanked for testing), we can conclude that all versions of package-b cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because only package-b==1.0.0 is available and package-b==1.0.0 was yanked (reason: Yanked for testing), we can conclude that all versions of package-b cannot be used.
And because package-a==0.1.0 depends on package-b, we can conclude that package-a==0.1.0 cannot be used.
And because only package-a==0.1.0 is available and you require package-a, we can conclude that your requirements are unsatisfiable.
");
@ -4358,8 +4358,8 @@ fn transitive_yanked_and_unyanked_dependency() {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because package-c==2.0.0 was yanked (reason: Yanked for testing) and package-a==1.0.0 depends on package-c==2.0.0, we can conclude that package-a==1.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because package-c==2.0.0 was yanked (reason: Yanked for testing) and package-a==1.0.0 depends on package-c==2.0.0, we can conclude that package-a==1.0.0 cannot be used.
And because only package-a==1.0.0 is available and you require package-a, we can conclude that your requirements are unsatisfiable.
");

View File

@ -951,17 +951,17 @@ fn install_no_index() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--no-index")
.arg("--strict"), @r###"
.arg("--strict"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because iniconfig was not found in the provided package locations and you require iniconfig==2.0.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because iniconfig was not found in the provided package locations and you require iniconfig==2.0.0, we can conclude that your requirements are unsatisfiable.
hint: Packages were unavailable because index lookups were disabled and no additional package locations were provided (try: `--find-links <uri>`)
"###
"
);
context.assert_command("import iniconfig").failure();
@ -1000,17 +1000,17 @@ fn install_no_index_cached() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--no-index")
.arg("--strict"), @r###"
.arg("--strict"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because iniconfig was not found in the provided package locations and you require iniconfig==2.0.0, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because iniconfig was not found in the provided package locations and you require iniconfig==2.0.0, we can conclude that your requirements are unsatisfiable.
hint: Packages were unavailable because index lookups were disabled and no additional package locations were provided (try: `--find-links <uri>`)
"###
"
);
context.assert_command("import iniconfig").failure();
@ -1290,8 +1290,8 @@ fn mismatched_name() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because foo has an invalid package format and you require foo, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because foo has an invalid package format and you require foo, we can conclude that your requirements are unsatisfiable.
hint: The structure of `foo` was invalid
Caused by: The .dist-info directory tomli-2.0.1 does not start with the normalized package name: foo
@ -1947,15 +1947,15 @@ fn duplicate_package_overlap() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--strict"), @r###"
.arg("--strict"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because you require markupsafe==2.1.3 and markupsafe==2.1.2, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because you require markupsafe==2.1.3 and markupsafe==2.1.2, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -2628,8 +2628,8 @@ fn incompatible_wheel() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because foo has an invalid package format and you require foo, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because foo has an invalid package format and you require foo, we can conclude that your requirements are unsatisfiable.
hint: The structure of `foo` was invalid
Caused by: Failed to read from zip file
@ -2775,17 +2775,17 @@ fn find_links_offline_no_match() -> Result<()> {
.arg("requirements.txt")
.arg("--offline")
.arg("--find-links")
.arg(context.workspace_root.join("test/links/")), @r###"
.arg(context.workspace_root.join("test/links/")), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because numpy was not found in the cache and you require numpy, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because numpy was not found in the cache and you require numpy, we can conclude that your requirements are unsatisfiable.
hint: Packages were unavailable because the network was disabled. When the network is disabled, registry packages may only be read from the cache.
"###
"
);
Ok(())
@ -2900,17 +2900,17 @@ fn offline() -> Result<()> {
// Install with `--offline` with an empty cache.
uv_snapshot!(context.pip_sync()
.arg("requirements.in")
.arg("--offline"), @r###"
.arg("--offline"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because black was not found in the cache and you require black==23.10.1, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because black was not found in the cache and you require black==23.10.1, we can conclude that your requirements are unsatisfiable.
hint: Packages were unavailable because the network was disabled. When the network is disabled, registry packages may only be read from the cache.
"###
"
);
// Populate the cache.
@ -2991,15 +2991,15 @@ fn incompatible_constraint() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--constraint")
.arg("constraints.txt"), @r###"
.arg("constraints.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because you require anyio==3.7.0 and anyio==3.6.0, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because you require anyio==3.7.0 and anyio==3.6.0, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -3088,15 +3088,15 @@ fn repeat_requirement_incompatible() -> Result<()> {
requirements_in.write_str("anyio<4.0.0\nanyio==4.0.0")?;
uv_snapshot!(context.pip_sync()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because you require anyio<4.0.0 and anyio==4.0.0, we can conclude that your requirements are unsatisfiable.
"###);
error: No solution found when resolving dependencies:
Caused by: Because you require anyio<4.0.0 and anyio==4.0.0, we can conclude that your requirements are unsatisfiable.
");
Ok(())
}
@ -3386,16 +3386,16 @@ requires-python = ">=3.13"
requirements_in.write_str(&format!("-e {}", editable_dir.path().display()))?;
uv_snapshot!(context.filters(), context.pip_sync()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the current Python version (3.12.[X]) does not satisfy Python>=3.13 and example==0.0.0 depends on Python>=3.13, we can conclude that example==0.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the current Python version (3.12.[X]) does not satisfy Python>=3.13 and example==0.0.0 depends on Python>=3.13, we can conclude that example==0.0.0 cannot be used.
And because only example==0.0.0 is available and you require example, we can conclude that your requirements are unsatisfiable.
"###
"
);
Ok(())
@ -3426,16 +3426,16 @@ requires-python = ">=3.13"
requirements_in.write_str(&format!("example @ {}", editable_dir.path().display()))?;
uv_snapshot!(context.filters(), context.pip_sync()
.arg("requirements.in"), @r###"
.arg("requirements.in"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because the current Python version (3.12.[X]) does not satisfy Python>=3.13 and example==0.0.0 depends on Python>=3.13, we can conclude that example==0.0.0 cannot be used.
error: No solution found when resolving dependencies:
Caused by: Because the current Python version (3.12.[X]) does not satisfy Python>=3.13 and example==0.0.0 depends on Python>=3.13, we can conclude that example==0.0.0 cannot be used.
And because only example==0.0.0 is available and you require example, we can conclude that your requirements are unsatisfiable.
"###
"
);
Ok(())
@ -3600,22 +3600,22 @@ fn require_hashes_wheel_no_binary() -> Result<()> {
.arg("requirements.txt")
.arg("--no-binary")
.arg(":all:")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download and build `anyio==4.0.0`
Hash mismatch for `anyio==4.0.0`
error: Failed to download and build `anyio==4.0.0`
Caused by: Hash mismatch for `anyio==4.0.0`
Expected:
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
Computed:
sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
"###
"
);
Ok(())
@ -3692,22 +3692,22 @@ fn require_hashes_source_only_binary() -> Result<()> {
.arg("requirements.txt")
.arg("--only-binary")
.arg(":all:")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `anyio==4.0.0`
Hash mismatch for `anyio==4.0.0`
error: Failed to download `anyio==4.0.0`
Caused by: Hash mismatch for `anyio==4.0.0`
Expected:
sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
Computed:
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
"###
"
);
Ok(())
@ -3724,22 +3724,22 @@ fn require_hashes_wrong_digest() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `anyio==4.0.0`
Hash mismatch for `anyio==4.0.0`
error: Failed to download `anyio==4.0.0`
Caused by: Hash mismatch for `anyio==4.0.0`
Expected:
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
Computed:
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
"###
"
);
Ok(())
@ -3756,22 +3756,22 @@ fn require_hashes_wrong_algorithm() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `anyio==4.0.0`
Hash mismatch for `anyio==4.0.0`
error: Failed to download `anyio==4.0.0`
Caused by: Hash mismatch for `anyio==4.0.0`
Expected:
sha512:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
Computed:
sha512:f30761c1e8725b49c498273b90dba4b05c0fd157811994c806183062cb6647e773364ce45f0e1ff0b10e32fe6d0232ea5ad39476ccf37109d6b49603a09c11c2
"###
"
);
Ok(())
@ -3827,21 +3827,21 @@ fn require_hashes_source_url() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--reinstall")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
Hash mismatch for `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
error: Failed to download and build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
Caused by: Hash mismatch for `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
Expected:
sha256:a7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
Computed:
sha256:1f83ed7498336c7f2ab9b002cf22583d91115ebc624053dc4eb3a45694490106
"###
"
);
Ok(())
@ -3858,21 +3858,21 @@ fn require_hashes_source_url_mismatch() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
Hash mismatch for `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
error: Failed to download and build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
Caused by: Hash mismatch for `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
Expected:
sha256:a7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
Computed:
sha256:1f83ed7498336c7f2ab9b002cf22583d91115ebc624053dc4eb3a45694490106
"###
"
);
Ok(())
@ -3928,22 +3928,22 @@ fn require_hashes_wheel_url() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--reinstall")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
Hash mismatch for `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
error: Failed to download `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
Caused by: Hash mismatch for `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
Expected:
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
Computed:
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
"###
"
);
// Sync a new dependency and include the wrong hash for anyio. Verify that we reuse anyio
@ -3982,22 +3982,22 @@ fn require_hashes_wheel_url_mismatch() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
Hash mismatch for `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
error: Failed to download `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
Caused by: Hash mismatch for `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
Expected:
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
Computed:
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
"###
"
);
Ok(())
@ -4015,15 +4015,15 @@ fn require_hashes_git() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `anyio @ git+https://github.com/agronholm/anyio@4a23745badf5bf5ef7928f1e346e9986bd696d82`
Hash-checking is not supported for Git repositories: `anyio @ git+https://github.com/agronholm/anyio@4a23745badf5bf5ef7928f1e346e9986bd696d82`
"###
error: Failed to download and build `anyio @ git+https://github.com/agronholm/anyio@4a23745badf5bf5ef7928f1e346e9986bd696d82`
Caused by: Hash-checking is not supported for Git repositories: `anyio @ git+https://github.com/agronholm/anyio@4a23745badf5bf5ef7928f1e346e9986bd696d82`
"
);
Ok(())
@ -4045,15 +4045,15 @@ fn require_hashes_source_tree() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `black @ file://[WORKSPACE]/test/packages/black_editable`
Hash-checking is not supported for local directories: `black @ file://[WORKSPACE]/test/packages/black_editable`
"###
error: Failed to build `black @ file://[WORKSPACE]/test/packages/black_editable`
Caused by: Hash-checking is not supported for local directories: `black @ file://[WORKSPACE]/test/packages/black_editable`
"
);
Ok(())
@ -4090,22 +4090,22 @@ fn require_hashes_re_download() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--reinstall")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `anyio==4.0.0`
Hash mismatch for `anyio==4.0.0`
error: Failed to download `anyio==4.0.0`
Caused by: Hash mismatch for `anyio==4.0.0`
Expected:
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
Computed:
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
"###
"
);
// Reinstall with `--require-hashes`, and the right hash.
@ -4181,22 +4181,22 @@ fn require_hashes_wheel_path_mismatch() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to read `tqdm @ file://[WORKSPACE]/test/links/tqdm-1000.0.0-py3-none-any.whl`
Hash mismatch for `tqdm @ file://[WORKSPACE]/test/links/tqdm-1000.0.0-py3-none-any.whl`
error: Failed to read `tqdm @ file://[WORKSPACE]/test/links/tqdm-1000.0.0-py3-none-any.whl`
Caused by: Hash mismatch for `tqdm @ file://[WORKSPACE]/test/links/tqdm-1000.0.0-py3-none-any.whl`
Expected:
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
Computed:
sha256:a34996d4bd5abb2336e14ff0a2d22b92cfd0f0ed344e6883041ce01953276a13
"###
"
);
Ok(())
@ -4250,21 +4250,21 @@ fn require_hashes_source_path_mismatch() -> Result<()> {
uv_snapshot!(context.filters(), context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to build `tqdm @ file://[WORKSPACE]/test/links/tqdm-999.0.0.tar.gz`
Hash mismatch for `tqdm @ file://[WORKSPACE]/test/links/tqdm-999.0.0.tar.gz`
error: Failed to build `tqdm @ file://[WORKSPACE]/test/links/tqdm-999.0.0.tar.gz`
Caused by: Hash mismatch for `tqdm @ file://[WORKSPACE]/test/links/tqdm-999.0.0.tar.gz`
Expected:
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
Computed:
sha256:89fa05cffa7f457658373b85de302d24d0c205ceda2819a8739e324b75e9430b
"###
"
);
Ok(())
@ -4457,22 +4457,22 @@ fn require_hashes_repeated_hash() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes")
.arg("--reinstall"), @r###"
.arg("--reinstall"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
Hash mismatch for `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
error: Failed to download `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
Caused by: Hash mismatch for `anyio @ https://files.pythonhosted.org/packages/36/55/ad4de788d84a630656ece71059665e01ca793c04294c463fd84132f40fe6/anyio-4.0.0-py3-none-any.whl`
Expected:
md5:520d85e19168705cdf0223621b18831a
Computed:
md5:420d85e19168705cdf0223621b18831a
"###
"
);
Ok(())
@ -4588,22 +4588,22 @@ fn require_hashes_find_links_no_hash() -> Result<()> {
.arg("--reinstall")
.arg("--require-hashes")
.arg("--find-links")
.arg("https://raw.githubusercontent.com/astral-test/astral-test-hash/main/no-hash/simple-html/example-a-961b4c22/index.html"), @r###"
.arg("https://raw.githubusercontent.com/astral-test/astral-test-hash/main/no-hash/simple-html/example-a-961b4c22/index.html"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `example-a-961b4c22==1.0.0`
Hash mismatch for `example-a-961b4c22==1.0.0`
error: Failed to download `example-a-961b4c22==1.0.0`
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
Expected:
sha256:123
Computed:
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
"###
"
);
// Third, use the hash from the source distribution. This will actually fail, when it _could_
@ -4617,22 +4617,22 @@ fn require_hashes_find_links_no_hash() -> Result<()> {
.arg("--reinstall")
.arg("--require-hashes")
.arg("--find-links")
.arg("https://raw.githubusercontent.com/astral-test/astral-test-hash/main/no-hash/simple-html/example-a-961b4c22/index.html"), @r###"
.arg("https://raw.githubusercontent.com/astral-test/astral-test-hash/main/no-hash/simple-html/example-a-961b4c22/index.html"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `example-a-961b4c22==1.0.0`
Hash mismatch for `example-a-961b4c22==1.0.0`
error: Failed to download `example-a-961b4c22==1.0.0`
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
Expected:
sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3
Computed:
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
"###
"
);
// Fourth, use the hash from the source distribution, and disable wheels. This should succeed.
@ -4707,22 +4707,22 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> {
.arg("--reinstall")
.arg("--require-hashes")
.arg("--find-links")
.arg("https://raw.githubusercontent.com/astral-test/astral-test-hash/main/invalid-hash/simple-html/example-a-961b4c22/index.html"), @r###"
.arg("https://raw.githubusercontent.com/astral-test/astral-test-hash/main/invalid-hash/simple-html/example-a-961b4c22/index.html"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `example-a-961b4c22==1.0.0`
Hash mismatch for `example-a-961b4c22==1.0.0`
error: Failed to download `example-a-961b4c22==1.0.0`
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
Expected:
sha256:123
Computed:
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
"###
"
);
// Second, request the invalid hash, that the registry _thinks_ is correct. We should reject it.
@ -4735,22 +4735,22 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> {
.arg("--reinstall")
.arg("--require-hashes")
.arg("--find-links")
.arg("https://raw.githubusercontent.com/astral-test/astral-test-hash/main/invalid-hash/simple-html/example-a-961b4c22/index.html"), @r###"
.arg("https://raw.githubusercontent.com/astral-test/astral-test-hash/main/invalid-hash/simple-html/example-a-961b4c22/index.html"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `example-a-961b4c22==1.0.0`
Hash mismatch for `example-a-961b4c22==1.0.0`
error: Failed to download `example-a-961b4c22==1.0.0`
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
Expected:
sha256:8838f9d005ff0432b258ba648d9cabb1cbdf06ac29d14f788b02edae544032ea
Computed:
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
"###
"
);
// Third, request the correct hash, that the registry _thinks_ is correct. We should accept
@ -4815,15 +4815,15 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> {
.arg("--reinstall")
.arg("--require-hashes")
.arg("--find-links")
.arg("https://raw.githubusercontent.com/astral-test/astral-test-hash/main/invalid-hash/simple-html/example-a-961b4c22/index.html"), @r###"
.arg("https://raw.githubusercontent.com/astral-test/astral-test-hash/main/invalid-hash/simple-html/example-a-961b4c22/index.html"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download and build `example-a-961b4c22==1.0.0`
Hash mismatch for `example-a-961b4c22==1.0.0`
error: Failed to download and build `example-a-961b4c22==1.0.0`
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
Expected:
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
@ -4831,7 +4831,7 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> {
Computed:
sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3
"###
"
);
Ok(())
@ -4881,15 +4881,15 @@ fn require_hashes_registry_valid_hash() -> Result<()> {
.arg("requirements.txt")
.arg("--require-hashes")
.arg("--find-links")
.arg("https://astral-test.github.io/astral-test-hash/valid-hash/simple-html/"), @r###"
.arg("https://astral-test.github.io/astral-test-hash/valid-hash/simple-html/"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because example-a-961b4c22 was not found in the package registry and you require example-a-961b4c22==1.0.0, we can conclude that your requirements are unsatisfiable.
"###
error: No solution found when resolving dependencies:
Caused by: Because example-a-961b4c22 was not found in the package registry and you require example-a-961b4c22==1.0.0, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())
@ -4910,22 +4910,22 @@ fn require_hashes_registry_invalid_hash() -> Result<()> {
.arg("--reinstall")
.arg("--require-hashes")
.arg("--index-url")
.arg("https://astral-test.github.io/astral-test-hash/invalid-hash/simple-html/"), @r###"
.arg("https://astral-test.github.io/astral-test-hash/invalid-hash/simple-html/"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `example-a-961b4c22==1.0.0`
Hash mismatch for `example-a-961b4c22==1.0.0`
error: Failed to download `example-a-961b4c22==1.0.0`
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
Expected:
sha256:123
Computed:
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
"###
"
);
// Second, request the invalid hash, that the registry _thinks_ is correct. We should reject it.
@ -4939,22 +4939,22 @@ fn require_hashes_registry_invalid_hash() -> Result<()> {
.arg("--reinstall")
.arg("--require-hashes")
.arg("--index-url")
.arg("https://astral-test.github.io/astral-test-hash/invalid-hash/simple-html/"), @r###"
.arg("https://astral-test.github.io/astral-test-hash/invalid-hash/simple-html/"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `example-a-961b4c22==1.0.0`
Hash mismatch for `example-a-961b4c22==1.0.0`
error: Failed to download `example-a-961b4c22==1.0.0`
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
Expected:
sha256:8838f9d005ff0432b258ba648d9cabb1cbdf06ac29d14f788b02edae544032ea
Computed:
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
"###
"
);
// Third, request the correct hash, that the registry _thinks_ is correct. We should accept
@ -5022,15 +5022,15 @@ fn require_hashes_registry_invalid_hash() -> Result<()> {
.arg("--reinstall")
.arg("--require-hashes")
.arg("--index-url")
.arg("https://astral-test.github.io/astral-test-hash/invalid-hash/simple-html/"), @r###"
.arg("https://astral-test.github.io/astral-test-hash/invalid-hash/simple-html/"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download and build `example-a-961b4c22==1.0.0`
Hash mismatch for `example-a-961b4c22==1.0.0`
error: Failed to download and build `example-a-961b4c22==1.0.0`
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
Expected:
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
@ -5038,7 +5038,7 @@ fn require_hashes_registry_invalid_hash() -> Result<()> {
Computed:
sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3
"###
"
);
Ok(())
@ -5106,22 +5106,22 @@ fn require_hashes_url_invalid() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl#sha256=c6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374`
Hash mismatch for `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl#sha256=c6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374`
error: Failed to download `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl#sha256=c6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374`
Caused by: Hash mismatch for `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl#sha256=c6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374`
Expected:
sha256:c6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
Computed:
sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
"###
"
);
Ok(())
@ -5138,22 +5138,22 @@ fn require_hashes_url_ignore() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--require-hashes"), @r###"
.arg("--require-hashes"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl#sha256=b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374`
Hash mismatch for `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl#sha256=b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374`
error: Failed to download `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl#sha256=b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374`
Caused by: Hash mismatch for `iniconfig @ https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl#sha256=b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374`
Expected:
sha256:c6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
Computed:
sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
"###
"
);
Ok(())
@ -5549,18 +5549,18 @@ fn incompatible_build_constraint() -> Result<()> {
uv_snapshot!(context.pip_sync()
.arg("requirements.txt")
.arg("--build-constraint")
.arg("build_constraints.txt"), @r###"
.arg("build_constraints.txt"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Resolved 1 package in [TIME]
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
"###
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
"
);
Ok(())

View File

@ -414,15 +414,15 @@ fn run_pep723_script() -> Result<()> {
})?;
// Running a script with `--group` should warn.
uv_snapshot!(context.filters(), context.run().arg("--group").arg("foo").arg("main.py"), @r###"
uv_snapshot!(context.filters(), context.run().arg("--group").arg("foo").arg("main.py"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving script dependencies:
Because there are no versions of add and you require add, we can conclude that your requirements are unsatisfiable.
"###);
error: No solution found when resolving script dependencies:
Caused by: Because there are no versions of add and you require add, we can conclude that your requirements are unsatisfiable.
");
// If the script can't be resolved, we should reference the script.
let test_script = context.temp_dir.child("main.py");
@ -436,15 +436,15 @@ fn run_pep723_script() -> Result<()> {
"#
})?;
uv_snapshot!(context.filters(), context.run().arg("--no-project").arg("main.py"), @r###"
uv_snapshot!(context.filters(), context.run().arg("--no-project").arg("main.py"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving script dependencies:
Because there are no versions of add and you require add, we can conclude that your requirements are unsatisfiable.
"###);
error: No solution found when resolving script dependencies:
Caused by: Because there are no versions of add and you require add, we can conclude that your requirements are unsatisfiable.
");
// If the script contains an unclosed PEP 723 tag, we should error.
let test_script = context.temp_dir.child("main.py");
@ -786,17 +786,17 @@ fn run_pep723_script_build_constraints() -> Result<()> {
"#
})?;
uv_snapshot!(context.filters(), context.run().arg("main.py"), @r###"
uv_snapshot!(context.filters(), context.run().arg("main.py"), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
"###);
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
");
// Compatible build constraints.
test_script.write_str(indoc! { r#"
@ -1256,7 +1256,7 @@ fn run_with() -> Result<()> {
");
// If the dependencies can't be resolved, we should reference `--with`.
uv_snapshot!(context.filters(), context.run().arg("--with").arg("add").arg("main.py"), @r###"
uv_snapshot!(context.filters(), context.run().arg("--with").arg("add").arg("main.py"), @r"
success: false
exit_code: 1
----- stdout -----
@ -1264,9 +1264,9 @@ fn run_with() -> Result<()> {
----- stderr -----
Resolved 2 packages in [TIME]
Audited 2 packages in [TIME]
× No solution found when resolving `--with` dependencies:
Because there are no versions of add and you require add, we can conclude that your requirements are unsatisfiable.
"###);
error: No solution found when resolving `--with` dependencies:
Caused by: Because there are no versions of add and you require add, we can conclude that your requirements are unsatisfiable.
");
Ok(())
}
@ -1608,10 +1608,10 @@ fn run_with_build_constraints() -> Result<()> {
+ idna==3.6
+ sniffio==1.3.1
+ typing-extensions==4.10.0
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
");
// Change the build constraint to be compatible with `requests==1.2`.
@ -1940,7 +1940,7 @@ fn run_with_editable() -> Result<()> {
"###);
// If invalid, we should reference `--with-editable`.
uv_snapshot!(context.filters(), context.run().arg("--with-editable").arg("./foo").arg("main.py"), @r###"
uv_snapshot!(context.filters(), context.run().arg("--with-editable").arg("./foo").arg("main.py"), @r"
success: false
exit_code: 1
----- stdout -----
@ -1948,9 +1948,9 @@ fn run_with_editable() -> Result<()> {
----- stderr -----
Resolved 3 packages in [TIME]
Audited 3 packages in [TIME]
× Failed to resolve `--with` requirement
Distribution not found at: file://[TEMP_DIR]/foo
"###);
error: Failed to resolve `--with` requirement
Caused by: Distribution not found at: file://[TEMP_DIR]/foo
");
Ok(())
}

View File

@ -775,8 +775,8 @@ fn group_requires_python_useful_defaults() -> Result<()> {
----- stderr -----
Using CPython 3.8.[X] interpreter at: [PYTHON-3.8]
Creating virtual environment at: .venv
× No solution found when resolving dependencies for split (markers: python_full_version == '3.8.*'):
Because the requested Python version (>=3.8) does not satisfy Python>=3.9 and sphinx==7.2.6 depends on Python>=3.9, we can conclude that sphinx==7.2.6 cannot be used.
error: No solution found when resolving dependencies for split (markers: python_full_version == '3.8.*'):
Caused by: Because the requested Python version (>=3.8) does not satisfy Python>=3.9 and sphinx==7.2.6 depends on Python>=3.9, we can conclude that sphinx==7.2.6 cannot be used.
And because only sphinx<=7.2.6 is available, we can conclude that sphinx>=7.2.6 cannot be used.
And because pharaohs-tomp:dev depends on sphinx>=7.2.6 and your project requires pharaohs-tomp:dev, we can conclude that your project's requirements are unsatisfiable.
@ -790,8 +790,8 @@ fn group_requires_python_useful_defaults() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (markers: python_full_version == '3.8.*'):
Because the requested Python version (>=3.8) does not satisfy Python>=3.9 and sphinx==7.2.6 depends on Python>=3.9, we can conclude that sphinx==7.2.6 cannot be used.
error: No solution found when resolving dependencies for split (markers: python_full_version == '3.8.*'):
Caused by: Because the requested Python version (>=3.8) does not satisfy Python>=3.9 and sphinx==7.2.6 depends on Python>=3.9, we can conclude that sphinx==7.2.6 cannot be used.
And because only sphinx<=7.2.6 is available, we can conclude that sphinx>=7.2.6 cannot be used.
And because pharaohs-tomp:dev depends on sphinx>=7.2.6 and your project requires pharaohs-tomp:dev, we can conclude that your project's requirements are unsatisfiable.
@ -919,8 +919,8 @@ fn group_requires_python_useful_non_defaults() -> Result<()> {
----- stderr -----
Using CPython 3.8.[X] interpreter at: [PYTHON-3.8]
Creating virtual environment at: .venv
× No solution found when resolving dependencies for split (markers: python_full_version == '3.8.*'):
Because the requested Python version (>=3.8) does not satisfy Python>=3.9 and sphinx==7.2.6 depends on Python>=3.9, we can conclude that sphinx==7.2.6 cannot be used.
error: No solution found when resolving dependencies for split (markers: python_full_version == '3.8.*'):
Caused by: Because the requested Python version (>=3.8) does not satisfy Python>=3.9 and sphinx==7.2.6 depends on Python>=3.9, we can conclude that sphinx==7.2.6 cannot be used.
And because only sphinx<=7.2.6 is available, we can conclude that sphinx>=7.2.6 cannot be used.
And because pharaohs-tomp:mygroup depends on sphinx>=7.2.6 and your project requires pharaohs-tomp:mygroup, we can conclude that your project's requirements are unsatisfiable.
@ -935,8 +935,8 @@ fn group_requires_python_useful_non_defaults() -> Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies for split (markers: python_full_version == '3.8.*'):
Because the requested Python version (>=3.8) does not satisfy Python>=3.9 and sphinx==7.2.6 depends on Python>=3.9, we can conclude that sphinx==7.2.6 cannot be used.
error: No solution found when resolving dependencies for split (markers: python_full_version == '3.8.*'):
Caused by: Because the requested Python version (>=3.8) does not satisfy Python>=3.9 and sphinx==7.2.6 depends on Python>=3.9, we can conclude that sphinx==7.2.6 cannot be used.
And because only sphinx<=7.2.6 is available, we can conclude that sphinx>=7.2.6 cannot be used.
And because pharaohs-tomp:mygroup depends on sphinx>=7.2.6 and your project requires pharaohs-tomp:mygroup, we can conclude that your project's requirements are unsatisfiable.
@ -1509,9 +1509,9 @@ fn sync_build_isolation_package() -> Result<()> {
----- stderr -----
Resolved 2 packages in [TIME]
× Failed to build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
The build backend returned an error
Call to `hatchling.build.build_wheel` failed (exit status: 1)
error: Failed to build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
Caused by: The build backend returned an error
Caused by: Call to `hatchling.build.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -1524,7 +1524,8 @@ fn sync_build_isolation_package() -> Result<()> {
source-distribution = ["hatchling"]
or `uv pip install hatchling` into the environment and re-run with `--no-build-isolation`.
help: `source-distribution` was included because `project` (v0.1.0) depends on `source-distribution`
hint: `source-distribution` was included because `project` (v0.1.0) depends on `source-distribution`
"#);
// Install `hatchling` for `source-distribution`.
@ -1597,9 +1598,9 @@ fn sync_build_isolation_package_order() -> Result<()> {
----- stderr -----
Resolved 2 packages in [TIME]
× Failed to build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
The build backend returned an error
Call to `hatchling.build.build_wheel` failed (exit status: 1)
error: Failed to build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
Caused by: The build backend returned an error
Caused by: Call to `hatchling.build.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -1612,7 +1613,8 @@ fn sync_build_isolation_package_order() -> Result<()> {
source-distribution = ["hatchling"]
or `uv pip install hatchling` into the environment and re-run with `--no-build-isolation`.
help: `source-distribution` was included because `project` (v0.1.0) depends on `source-distribution`
hint: `source-distribution` was included because `project` (v0.1.0) depends on `source-distribution`
"#);
// Add `hatchling`.
@ -1767,9 +1769,9 @@ fn sync_build_isolation_extra() -> Result<()> {
Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME]
Installed [N] packages in [TIME]
× Failed to build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
The build backend returned an error
Call to `hatchling.build.build_wheel` failed (exit status: 1)
error: Failed to build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
Caused by: The build backend returned an error
Caused by: Call to `hatchling.build.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -1782,7 +1784,8 @@ fn sync_build_isolation_extra() -> Result<()> {
source-distribution = ["hatchling"]
or `uv pip install hatchling` into the environment and re-run with `--no-build-isolation`.
help: `source-distribution` was included because `project[compile]` (v0.1.0) depends on `source-distribution`
hint: `source-distribution` was included because `project[compile]` (v0.1.0) depends on `source-distribution`
"#);
// Running `uv sync` with `--all-extras` should succeed, because we install the build dependencies
@ -1909,15 +1912,16 @@ fn sync_extra_build_dependencies() -> Result<()> {
----- stderr -----
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Missing `anyio` module
hint: This usually indicates a problem with the package or the build environment.
help: `child` was included because `parent` (v0.1.0) depends on `child`
hint: `child` was included because `parent` (v0.1.0) depends on `child`
");
// Adding `extra-build-dependencies` should solve the issue
@ -1987,15 +1991,16 @@ fn sync_extra_build_dependencies() -> Result<()> {
----- stderr -----
warning: The `extra-build-dependencies` option is experimental and may change without warning. Pass `--preview-features extra-build-dependencies` to disable this warning.
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Missing `anyio` module
hint: This usually indicates a problem with the package or the build environment.
help: `child` was included because `parent` (v0.1.0) depends on `child`
hint: `child` was included because `parent` (v0.1.0) depends on `child`
");
// Write a test package that arbitrarily bans `anyio` at build time
@ -2056,15 +2061,16 @@ fn sync_extra_build_dependencies() -> Result<()> {
----- stderr -----
warning: The `extra-build-dependencies` option is experimental and may change without warning. Pass `--preview-features extra-build-dependencies` to disable this warning.
Resolved [N] packages in [TIME]
× Failed to build `bad-child @ file://[TEMP_DIR]/bad_child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `bad-child @ file://[TEMP_DIR]/bad_child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Found `anyio` module
hint: This usually indicates a problem with the package or the build environment.
help: `bad-child` was included because `parent` (v0.1.0) depends on `bad-child`
hint: `bad-child` was included because `parent` (v0.1.0) depends on `bad-child`
");
// But `anyio` is not provided to `bad_child` if scoped to `child`
@ -2151,9 +2157,9 @@ fn sync_extra_build_dependencies_setuptools_legacy() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stderr]
Missing `anyio` module
@ -2257,15 +2263,16 @@ fn sync_extra_build_dependencies_setuptools() -> Result<()> {
----- stderr -----
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `setuptools.build_meta.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta.build_wheel` failed (exit status: 1)
[stderr]
Missing `anyio` module
hint: This usually indicates a problem with the package or the build environment.
help: `child` was included because `parent` (v0.1.0) depends on `child`
hint: `child` was included because `parent` (v0.1.0) depends on `child`
");
// Adding `extra-build-dependencies` should solve the issue
@ -2448,15 +2455,16 @@ fn sync_extra_build_dependencies_index() -> Result<()> {
----- stderr -----
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Expected `anyio` version 3.0 but got 4.3.0
hint: This usually indicates a problem with the package or the build environment.
help: `child` was included because `parent` (v0.1.0) depends on `child`
hint: `child` was included because `parent` (v0.1.0) depends on `child`
");
// Ensure that we're resolving to `4.3.0`, the "latest" on PyPI.
@ -2503,15 +2511,16 @@ fn sync_extra_build_dependencies_index() -> Result<()> {
----- stderr -----
warning: The `extra-build-dependencies` option is experimental and may change without warning. Pass `--preview-features extra-build-dependencies` to disable this warning.
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Expected `anyio` version 4.3 but got 3.5.0
hint: This usually indicates a problem with the package or the build environment.
help: `child` was included because `parent` (v0.1.0) depends on `child`
hint: `child` was included because `parent` (v0.1.0) depends on `child`
");
uv_snapshot!(context.filters(), context.sync()
@ -2601,15 +2610,16 @@ fn sync_extra_build_dependencies_sources_from_child() -> Result<()> {
----- stderr -----
warning: The `extra-build-dependencies` option is experimental and may change without warning. Pass `--preview-features extra-build-dependencies` to disable this warning.
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Found system anyio instead of local anyio
hint: This usually indicates a problem with the package or the build environment.
help: `child` was included because `project` (v0.1.0) depends on `child`
hint: `child` was included because `project` (v0.1.0) depends on `child`
");
Ok(())
@ -2665,9 +2675,9 @@ fn sync_build_dependencies_module_error_hints() -> Result<()> {
----- stderr -----
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -2682,7 +2692,8 @@ fn sync_build_dependencies_module_error_hints() -> Result<()> {
child = ["anyio"]
or `uv pip install anyio` into the environment and re-run with `--no-build-isolation`.
help: `child` was included because `parent` (v0.1.0) depends on `child`
hint: `child` was included because `parent` (v0.1.0) depends on `child`
"#);
// Adding `extra-build-dependencies` should solve the issue
@ -2733,9 +2744,9 @@ fn sync_build_dependencies_module_error_hints() -> Result<()> {
----- stderr -----
warning: The `extra-build-dependencies` option is experimental and may change without warning. Pass `--preview-features extra-build-dependencies` to disable this warning.
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -2750,7 +2761,8 @@ fn sync_build_dependencies_module_error_hints() -> Result<()> {
child = ["scikit-learn"]
or `uv pip install scikit-learn` into the environment and re-run with `--no-build-isolation`.
help: `child` was included because `parent` (v0.1.0) depends on `child`
hint: `child` was included because `parent` (v0.1.0) depends on `child`
"#);
// Adding `extra-build-dependencies` should solve the issue
@ -5811,9 +5823,9 @@ fn sync_extra_build_dependencies_script() -> Result<()> {
----- stderr -----
Creating script environment at: [CACHE_DIR]/environments-v2/script-[HASH]
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Missing `anyio` module
@ -9507,9 +9519,9 @@ fn sync_derivation_chain() -> Result<()> {
----- stderr -----
Resolved 2 packages in [TIME]
× Failed to build `wsgiref==0.1.2`
The build backend returned an error
Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
error: Failed to build `wsgiref==0.1.2`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -9530,7 +9542,8 @@ fn sync_derivation_chain() -> Result<()> {
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
hint: This usually indicates a problem with the package or the build environment.
help: `wsgiref` (v0.1.2) was included because `project` (v0.1.0) depends on `wsgiref`
hint: `wsgiref` (v0.1.2) was included because `project` (v0.1.0) depends on `wsgiref`
"#);
Ok(())
@ -9570,9 +9583,9 @@ fn sync_derivation_chain_extra() -> Result<()> {
----- stderr -----
Resolved 2 packages in [TIME]
× Failed to build `wsgiref==0.1.2`
The build backend returned an error
Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
error: Failed to build `wsgiref==0.1.2`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -9593,7 +9606,8 @@ fn sync_derivation_chain_extra() -> Result<()> {
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
hint: This usually indicates a problem with the package or the build environment.
help: `wsgiref` (v0.1.2) was included because `project[wsgi]` (v0.1.0) depends on `wsgiref`
hint: `wsgiref` (v0.1.2) was included because `project[wsgi]` (v0.1.0) depends on `wsgiref`
"#);
Ok(())
@ -9635,9 +9649,9 @@ fn sync_derivation_chain_group() -> Result<()> {
----- stderr -----
Resolved 2 packages in [TIME]
× Failed to build `wsgiref==0.1.2`
The build backend returned an error
Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
error: Failed to build `wsgiref==0.1.2`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stderr]
Traceback (most recent call last):
@ -9658,7 +9672,8 @@ fn sync_derivation_chain_group() -> Result<()> {
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
hint: This usually indicates a problem with the package or the build environment.
help: `wsgiref` (v0.1.2) was included because `project:wsgi` (v0.1.0) depends on `wsgiref`
hint: `wsgiref` (v0.1.2) was included because `project:wsgi` (v0.1.0) depends on `wsgiref`
"#);
Ok(())
@ -10103,9 +10118,10 @@ fn mismatched_name_self_editable() -> Result<()> {
----- stderr -----
Resolved 2 packages in [TIME]
× Failed to build `foo @ file://[TEMP_DIR]/`
Package metadata name `project` does not match given name `foo`
help: `foo` was included because `project` (v0.1.0) depends on `foo`
error: Failed to build `foo @ file://[TEMP_DIR]/`
Caused by: Package metadata name `project` does not match given name `foo`
hint: `foo` was included because `project` (v0.1.0) depends on `foo`
");
Ok(())
@ -10156,8 +10172,8 @@ fn mismatched_name_cached_wheel() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to download and build `foo @ https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz`
Package metadata name `iniconfig` does not match given name `foo`
error: Failed to download and build `foo @ https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz`
Caused by: Package metadata name `iniconfig` does not match given name `foo`
");
Ok(())
@ -10429,15 +10445,16 @@ fn url_hash_mismatch() -> Result<()> {
----- stderr -----
Resolved 2 packages in [TIME]
× Failed to download and build `iniconfig @ https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz`
Hash mismatch for `iniconfig @ https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz`
error: Failed to download and build `iniconfig @ https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz`
Caused by: Hash mismatch for `iniconfig @ https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz`
Expected:
sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b4
Computed:
sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3
help: `iniconfig` was included because `project` (v0.1.0) depends on `iniconfig`
hint: `iniconfig` was included because `project` (v0.1.0) depends on `iniconfig`
");
Ok(())
@ -10502,15 +10519,16 @@ fn path_hash_mismatch() -> Result<()> {
----- stderr -----
Resolved 2 packages in [TIME]
× Failed to build `iniconfig @ file://[TEMP_DIR]/iniconfig-2.0.0.tar.gz`
Hash mismatch for `iniconfig @ file://[TEMP_DIR]/iniconfig-2.0.0.tar.gz`
error: Failed to build `iniconfig @ file://[TEMP_DIR]/iniconfig-2.0.0.tar.gz`
Caused by: Hash mismatch for `iniconfig @ file://[TEMP_DIR]/iniconfig-2.0.0.tar.gz`
Expected:
sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b4
Computed:
sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3
help: `iniconfig` was included because `project` (v0.1.0) depends on `iniconfig`
hint: `iniconfig` was included because `project` (v0.1.0) depends on `iniconfig`
");
Ok(())
@ -11263,10 +11281,10 @@ fn sync_script_with_incompatible_build_constraints() -> Result<()> {
----- stderr -----
Creating script environment at: [CACHE_DIR]/environments-v2/script-[HASH]
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40.8.0 and setuptools==1, we can conclude that your requirements are unsatisfiable.
");
Ok(())
@ -11298,9 +11316,9 @@ fn unsupported_git_scheme() -> Result<()> {
----- stderr -----
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
Creating virtual environment at: .venv
× Failed to build `foo @ file://[TEMP_DIR]/`
Failed to parse entry: `foo`
Unsupported Git URL scheme `c:` in `c:/home/ferris/projects/foo` (expected one of `https:`, `ssh:`, or `file:`)
error: Failed to build `foo @ file://[TEMP_DIR]/`
Caused by: Failed to parse entry: `foo`
Caused by: Unsupported Git URL scheme `c:` in `c:/home/ferris/projects/foo` (expected one of `https:`, `ssh:`, or `file:`)
");
Ok(())
}
@ -13474,15 +13492,16 @@ fn sync_build_dependencies_respect_locked_versions() -> Result<()> {
----- stderr -----
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Expected `anyio` version 3.0 but got 4.3.0
hint: This usually indicates a problem with the package or the build environment.
help: `child` was included because `parent` (v0.1.0) depends on `child`
hint: `child` was included because `parent` (v0.1.0) depends on `child`
");
// Now constrain the `anyio` build dependency to match the runtime
@ -13542,15 +13561,16 @@ fn sync_build_dependencies_respect_locked_versions() -> Result<()> {
----- stderr -----
warning: The `extra-build-dependencies` option is experimental and may change without warning. Pass `--preview-features extra-build-dependencies` to disable this warning.
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
Expected `anyio` version 4.0 but got 3.7.1
hint: This usually indicates a problem with the package or the build environment.
help: `child` was included because `parent` (v0.1.0) depends on `child`
hint: `child` was included because `parent` (v0.1.0) depends on `child`
");
uv_snapshot!(context.filters(), context.sync()
@ -13625,11 +13645,12 @@ fn sync_build_dependencies_respect_locked_versions() -> Result<()> {
----- stderr -----
warning: The `extra-build-dependencies` option is experimental and may change without warning. Pass `--preview-features extra-build-dependencies` to disable this warning.
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
Failed to resolve requirements from `build-system.requires` and `extra-build-dependencies`
No solution found when resolving: `hatchling`, `anyio>3.8, <4.2`, `anyio==3.7.1 (index: https://pypi.org/simple)`
Because you require anyio>3.8,<4.2 and anyio==3.7.1, we can conclude that your requirements are unsatisfiable.
help: `child` was included because `parent` (v0.1.0) depends on `child`
error: Failed to build `child @ file://[TEMP_DIR]/child`
Caused by: Failed to resolve requirements from `build-system.requires` and `extra-build-dependencies`
Caused by: No solution found when resolving: `hatchling`, `anyio>3.8, <4.2`, `anyio==3.7.1 (index: https://pypi.org/simple)`
Caused by: Because you require anyio>3.8,<4.2 and anyio==3.7.1, we can conclude that your requirements are unsatisfiable.
hint: `child` was included because `parent` (v0.1.0) depends on `child`
");
// Adding a version specifier should also fail
@ -13725,9 +13746,9 @@ fn sync_extra_build_variables() -> Result<()> {
----- stderr -----
Resolved [N] packages in [TIME]
× Failed to build `parent @ file://[TEMP_DIR]/`
The build backend returned an error
Call to `build_backend.build_editable` failed (exit status: 1)
error: Failed to build `parent @ file://[TEMP_DIR]/`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_editable` failed (exit status: 1)
[stderr]
Expected `anyio` version 3.0 but got 4.3.0
@ -13758,9 +13779,9 @@ fn sync_extra_build_variables() -> Result<()> {
----- stderr -----
Resolved [N] packages in [TIME]
× Failed to build `parent @ file://[TEMP_DIR]/`
The build backend returned an error
Call to `build_backend.build_editable` failed (exit status: 1)
error: Failed to build `parent @ file://[TEMP_DIR]/`
Caused by: The build backend returned an error
Caused by: Call to `build_backend.build_editable` failed (exit status: 1)
[stderr]
Expected `anyio` version 3.0 but got 4.3.0
@ -13824,9 +13845,10 @@ fn reject_unmatched_runtime() -> Result<()> {
----- stderr -----
warning: The `extra-build-dependencies` option is experimental and may change without warning. Pass `--preview-features extra-build-dependencies` to disable this warning.
× Failed to download and build `source-distribution==0.0.3`
Extra build requirement `iniconfig` was declared with `match-runtime = true`, but `source-distribution` does not declare static metadata, making runtime-matching impossible
help: `source-distribution` (v0.0.3) was included because `foo` (v0.1.0) depends on `source-distribution`
error: Failed to download and build `source-distribution==0.0.3`
Caused by: Extra build requirement `iniconfig` was declared with `match-runtime = true`, but `source-distribution` does not declare static metadata, making runtime-matching impossible
hint: `source-distribution` (v0.0.3) was included because `foo` (v0.1.0) depends on `source-distribution`
");
Ok(())

View File

@ -421,10 +421,10 @@ fn tool_install_with_incompatible_build_constraints() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40.8.0 and setuptools==2, we can conclude that your requirements are unsatisfiable.
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40.8.0 and setuptools==2, we can conclude that your requirements are unsatisfiable.
");
tool_dir
@ -1702,9 +1702,9 @@ fn tool_install_uninstallable() {
----- stderr -----
Resolved 1 package in [TIME]
× Failed to build `pyenv==0.0.1`
The build backend returned an error
Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
error: Failed to build `pyenv==0.0.1`
Caused by: The build backend returned an error
Caused by: Call to `setuptools.build_meta:__legacy__.build_wheel` failed (exit status: 1)
[stdout]
running bdist_wheel
@ -3099,16 +3099,16 @@ fn tool_install_preserve_environment() {
.arg("packaging==0.0.1")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str())
.env(EnvVars::PATH, bin_dir.as_os_str()), @r###"
.env(EnvVars::PATH, bin_dir.as_os_str()), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because black==24.1.1 depends on packaging>=22.0 and you require black==24.1.1, we can conclude that you require packaging>=22.0.
error: No solution found when resolving dependencies:
Caused by: Because black==24.1.1 depends on packaging>=22.0 and you require black==24.1.1, we can conclude that you require packaging>=22.0.
And because you require packaging==0.0.1, we can conclude that your requirements are unsatisfiable.
"###);
");
// Install `black`. The tool should already be installed, since we didn't remove the environment.
uv_snapshot!(context.filters(), context.tool_install()
@ -4487,8 +4487,8 @@ fn tool_install_find_links() {
----- stdout -----
----- stderr -----
× No solution found when resolving tool dependencies:
Because only basic-app==0.1 is available and basic-app==0.1 needs to be downloaded from a registry, we can conclude that all versions of basic-app cannot be used.
error: No solution found when resolving tool dependencies:
Caused by: Because only basic-app==0.1 is available and basic-app==0.1 needs to be downloaded from a registry, we can conclude that all versions of basic-app cannot be used.
And because you require basic-app, we can conclude that your requirements are unsatisfiable.
hint: Packages were unavailable because the network was disabled. When the network is disabled, registry packages may only be read from the cache.

View File

@ -109,15 +109,15 @@ fn tool_run_at_version() {
.arg("pytest@invalid")
.arg("--version")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r###"
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to resolve tool requirement
Distribution not found at: file://[TEMP_DIR]/invalid
"###);
error: Failed to resolve tool requirement
Caused by: Distribution not found at: file://[TEMP_DIR]/invalid
");
let filters = context
.filters()
@ -1809,15 +1809,15 @@ fn tool_run_with_editable() -> anyhow::Result<()> {
.arg("flask")
.arg("--version")
.env(EnvVars::UV_TOOL_DIR, tool_dir
.as_os_str()).env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r###"
.as_os_str()).env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× Failed to resolve `--with` requirement
Distribution not found at: file://[TEMP_DIR]/foo
"###);
error: Failed to resolve `--with` requirement
Caused by: Distribution not found at: file://[TEMP_DIR]/foo
");
Ok(())
}
@ -1914,15 +1914,15 @@ fn tool_run_resolution_error() {
uv_snapshot!(context.filters(), context.tool_run()
.arg("add")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r###"
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving tool dependencies:
Because there are no versions of add and you require add, we can conclude that your requirements are unsatisfiable.
"###);
error: No solution found when resolving tool dependencies:
Caused by: Because there are no versions of add and you require add, we can conclude that your requirements are unsatisfiable.
");
}
#[test]
@ -2238,8 +2238,8 @@ fn tool_run_python_at_version() {
----- stdout -----
----- stderr -----
× No solution found when resolving tool dependencies:
Because cp311 was not found in the package registry and you require cp311, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving tool dependencies:
Caused by: Because cp311 was not found in the package registry and you require cp311, we can conclude that your requirements are unsatisfiable.
");
// Bare versions don't work either. Again we interpret them as package names.
@ -2251,8 +2251,8 @@ fn tool_run_python_at_version() {
----- stdout -----
----- stderr -----
× No solution found when resolving tool dependencies:
Because 311 was not found in the package registry and you require 311, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving tool dependencies:
Caused by: Because 311 was not found in the package registry and you require 311, we can conclude that your requirements are unsatisfiable.
");
// Request a version via `-p`
@ -2833,48 +2833,51 @@ fn tool_run_verbose_hint() {
.arg("nonexistent-package-foo")
.arg("--verbose")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r###"
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because nonexistent-package-foo was not found in the package registry and you require nonexistent-package-foo, we can conclude that your requirements are unsatisfiable.
help: You provided `--verbose` to `nonexistent-package-foo`. Did you mean to provide it to `uv tool run`? e.g., `uv tool run --verbose nonexistent-package-foo`
"###);
error: No solution found when resolving dependencies:
Caused by: Because nonexistent-package-foo was not found in the package registry and you require nonexistent-package-foo, we can conclude that your requirements are unsatisfiable.
hint: You provided `--verbose` to `nonexistent-package-foo`. Did you mean to provide it to `uv tool run`? e.g., `uv tool run --verbose nonexistent-package-foo`
");
// Test with -v flag
uv_snapshot!(context.filters(), context.tool_run()
.arg("nonexistent-package-bar")
.arg("-v")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r###"
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because nonexistent-package-bar was not found in the package registry and you require nonexistent-package-bar, we can conclude that your requirements are unsatisfiable.
help: You provided `-v` to `nonexistent-package-bar`. Did you mean to provide it to `uv tool run`? e.g., `uv tool run -v nonexistent-package-bar`
"###);
error: No solution found when resolving dependencies:
Caused by: Because nonexistent-package-bar was not found in the package registry and you require nonexistent-package-bar, we can conclude that your requirements are unsatisfiable.
hint: You provided `-v` to `nonexistent-package-bar`. Did you mean to provide it to `uv tool run`? e.g., `uv tool run -v nonexistent-package-bar`
");
// Test with -vv flag
uv_snapshot!(context.filters(), context.tool_run()
.arg("nonexistent-package-baz")
.arg("-vv")
.env(EnvVars::UV_TOOL_DIR, tool_dir.as_os_str())
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r###"
.env(EnvVars::XDG_BIN_HOME, bin_dir.as_os_str()), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
× No solution found when resolving dependencies:
Because nonexistent-package-baz was not found in the package registry and you require nonexistent-package-baz, we can conclude that your requirements are unsatisfiable.
help: You provided `-vv` to `nonexistent-package-baz`. Did you mean to provide it to `uv tool run`? e.g., `uv tool run -vv nonexistent-package-baz`
"###);
error: No solution found when resolving dependencies:
Caused by: Because nonexistent-package-baz was not found in the package registry and you require nonexistent-package-baz, we can conclude that your requirements are unsatisfiable.
hint: You provided `-vv` to `nonexistent-package-baz`. Did you mean to provide it to `uv tool run`? e.g., `uv tool run -vv nonexistent-package-baz`
");
// Test for false positives
uv_snapshot!(context.filters(), context.tool_run()
@ -2887,8 +2890,8 @@ fn tool_run_verbose_hint() {
----- stdout -----
----- stderr -----
× No solution found when resolving tool dependencies:
Because nonexistent-package-quux was not found in the package registry and you require nonexistent-package-quux, we can conclude that your requirements are unsatisfiable.
error: No solution found when resolving tool dependencies:
Caused by: Because nonexistent-package-quux was not found in the package registry and you require nonexistent-package-quux, we can conclude that your requirements are unsatisfiable.
");
}
@ -2956,10 +2959,10 @@ fn tool_run_with_incompatible_build_constraints() -> Result<()> {
----- stdout -----
----- stderr -----
× Failed to download and build `requests==1.2.0`
Failed to resolve requirements from `setup.py` build
No solution found when resolving: `setuptools>=40.8.0`
Because you require setuptools>=40.8.0 and setuptools==2, we can conclude that your requirements are unsatisfiable.
error: Failed to download and build `requests==1.2.0`
Caused by: Failed to resolve requirements from `setup.py` build
Caused by: No solution found when resolving: `setuptools>=40.8.0`
Caused by: Because you require setuptools>=40.8.0 and setuptools==2, we can conclude that your requirements are unsatisfiable.
");
Ok(())
@ -3442,8 +3445,8 @@ fn tool_run_reresolve_python() -> anyhow::Result<()> {
----- stdout -----
----- stderr -----
× No solution found when resolving tool dependencies:
Because the current Python version (3.11.[X]) does not satisfy Python>=3.12 and foo==1.0.0 depends on Python>=3.12, we can conclude that foo==1.0.0 cannot be used.
error: No solution found when resolving tool dependencies:
Caused by: Because the current Python version (3.11.[X]) does not satisfy Python>=3.12 and foo==1.0.0 depends on Python>=3.12, we can conclude that foo==1.0.0 cannot be used.
And because only foo==1.0.0 is available and you require foo, we can conclude that your requirements are unsatisfiable.
");

View File

@ -1131,19 +1131,19 @@ fn workspace_inherit_sources() -> Result<()> {
library.child("src/__init__.py").touch()?;
// As-is, resolving should fail.
uv_snapshot!(context.filters(), context.lock().arg("--offline").current_dir(&workspace), @r###"
uv_snapshot!(context.filters(), context.lock().arg("--offline").current_dir(&workspace), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
× No solution found when resolving dependencies:
Because library was not found in the cache and leaf depends on library, we can conclude that leaf's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because library was not found in the cache and leaf depends on library, we can conclude that leaf's requirements are unsatisfiable.
And because your workspace requires leaf, we can conclude that your workspace's requirements are unsatisfiable.
hint: Packages were unavailable because the network was disabled. When the network is disabled, registry packages may only be read from the cache.
"###
"
);
// Update the leaf to include the source.
@ -1358,8 +1358,8 @@ fn workspace_unsatisfiable_member_dependencies() -> Result<()> {
----- stderr -----
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
× No solution found when resolving dependencies:
Because only httpx<=0.27.0 is available and leaf depends on httpx>9999, we can conclude that leaf's requirements are unsatisfiable.
error: No solution found when resolving dependencies:
Caused by: Because only httpx<=0.27.0 is available and leaf depends on httpx>9999, we can conclude that leaf's requirements are unsatisfiable.
And because your workspace requires leaf, we can conclude that your workspace's requirements are unsatisfiable.
"
);
@ -1419,17 +1419,17 @@ fn workspace_unsatisfiable_member_dependencies_conflicting() -> Result<()> {
bar.child("src/__init__.py").touch()?;
// Resolving should fail.
uv_snapshot!(context.filters(), context.lock().current_dir(&workspace), @r###"
uv_snapshot!(context.filters(), context.lock().current_dir(&workspace), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
× No solution found when resolving dependencies:
Because bar depends on anyio==4.2.0 and foo depends on anyio==4.1.0, we can conclude that bar and foo are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because bar depends on anyio==4.2.0 and foo depends on anyio==4.1.0, we can conclude that bar and foo are incompatible.
And because your workspace requires bar and foo, we can conclude that your workspace's requirements are unsatisfiable.
"###
"
);
Ok(())
@ -1502,17 +1502,17 @@ fn workspace_unsatisfiable_member_dependencies_conflicting_threeway() -> Result<
bird.child("src/__init__.py").touch()?;
// Resolving should fail.
uv_snapshot!(context.filters(), context.lock().current_dir(&workspace), @r###"
uv_snapshot!(context.filters(), context.lock().current_dir(&workspace), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
× No solution found when resolving dependencies:
Because bird depends on anyio==4.3.0 and knot depends on anyio==4.2.0, we can conclude that bird and knot are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because bird depends on anyio==4.3.0 and knot depends on anyio==4.2.0, we can conclude that bird and knot are incompatible.
And because your workspace requires bird and knot, we can conclude that your workspace's requirements are unsatisfiable.
"###
"
);
Ok(())
@ -1572,17 +1572,17 @@ fn workspace_unsatisfiable_member_dependencies_conflicting_extra() -> Result<()>
bar.child("src/__init__.py").touch()?;
// Resolving should fail.
uv_snapshot!(context.filters(), context.lock().current_dir(&workspace), @r###"
uv_snapshot!(context.filters(), context.lock().current_dir(&workspace), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
× No solution found when resolving dependencies:
Because bar[some-extra] depends on anyio==4.2.0 and foo depends on anyio==4.1.0, we can conclude that foo and bar[some-extra] are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because bar[some-extra] depends on anyio==4.2.0 and foo depends on anyio==4.1.0, we can conclude that foo and bar[some-extra] are incompatible.
And because your workspace requires bar[some-extra] and foo, we can conclude that your workspace's requirements are unsatisfiable.
"###
"
);
Ok(())
@ -1650,8 +1650,8 @@ fn workspace_unsatisfiable_member_dependencies_conflicting_dev() -> Result<()> {
----- stderr -----
warning: The `tool.uv.dev-dependencies` field (used in `packages/bar/pyproject.toml`) is deprecated and will be removed in a future release; use `dependency-groups.dev` instead
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
× No solution found when resolving dependencies:
Because bar:dev depends on anyio==4.2.0 and foo depends on anyio==4.1.0, we can conclude that foo and bar:dev are incompatible.
error: No solution found when resolving dependencies:
Caused by: Because bar:dev depends on anyio==4.2.0 and foo depends on anyio==4.1.0, we can conclude that foo and bar:dev are incompatible.
And because your workspace requires bar:dev and foo, we can conclude that your workspace's requirements are unsatisfiable.
"
);
@ -1714,17 +1714,17 @@ fn workspace_member_name_shadows_dependencies() -> Result<()> {
// We should fail
// TODO(zanieb): This error message is bad?
uv_snapshot!(context.filters(), context.lock().current_dir(&workspace), @r###"
uv_snapshot!(context.filters(), context.lock().current_dir(&workspace), @r"
success: false
exit_code: 1
----- stdout -----
----- stderr -----
Using CPython 3.12.[X] interpreter at: [PYTHON-3.12]
× Failed to build `foo @ file://[TEMP_DIR]/workspace/packages/foo`
Failed to parse entry: `anyio`
`anyio` is included as a workspace member, but is missing an entry in `tool.uv.sources` (e.g., `anyio = { workspace = true }`)
"###
error: Failed to build `foo @ file://[TEMP_DIR]/workspace/packages/foo`
Caused by: Failed to parse entry: `anyio`
Caused by: `anyio` is included as a workspace member, but is missing an entry in `tool.uv.sources` (e.g., `anyio = { workspace = true }`)
"
);
Ok(())