mirror of https://github.com/astral-sh/uv
Use rich diagnostic formatting for install failures (#9043)
## Summary Shows similar diagnostics for failures that happen at install time, rather than resolve time. This will ultimately feed into https://github.com/astral-sh/uv/issues/8962 since we'll now have consolidated handling for these kinds of failures.
This commit is contained in:
parent
00bf69be28
commit
c5caf92edf
|
|
@ -275,10 +275,7 @@ impl<'a> BuildContext for BuildDispatch<'a> {
|
|||
remote.iter().map(ToString::to_string).join(", ")
|
||||
);
|
||||
|
||||
preparer
|
||||
.prepare(remote, self.in_flight)
|
||||
.await
|
||||
.context("Failed to prepare distributions")?
|
||||
preparer.prepare(remote, self.in_flight).await?
|
||||
};
|
||||
|
||||
// Remove any unnecessary packages.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
pub use compile::{compile_tree, CompileError};
|
||||
pub use installer::{Installer, Reporter as InstallReporter};
|
||||
pub use plan::{Plan, Planner};
|
||||
pub use preparer::{Preparer, Reporter as PrepareReporter};
|
||||
pub use preparer::{Error as PrepareError, Preparer, Reporter as PrepareReporter};
|
||||
pub use site_packages::{SatisfiesResult, SitePackages, SitePackagesDiagnostic};
|
||||
pub use uninstall::{uninstall, UninstallError};
|
||||
|
||||
|
|
|
|||
|
|
@ -23,11 +23,11 @@ pub enum Error {
|
|||
#[error("Using pre-built wheels is disabled, but attempted to use `{0}`")]
|
||||
NoBinary(PackageName),
|
||||
#[error("Failed to download `{0}`")]
|
||||
Download(Box<BuiltDist>, #[source] Box<uv_distribution::Error>),
|
||||
Download(Box<BuiltDist>, #[source] uv_distribution::Error),
|
||||
#[error("Failed to download and build `{0}`")]
|
||||
DownloadAndBuild(Box<SourceDist>, #[source] Box<uv_distribution::Error>),
|
||||
DownloadAndBuild(Box<SourceDist>, #[source] uv_distribution::Error),
|
||||
#[error("Failed to build `{0}`")]
|
||||
Build(Box<SourceDist>, #[source] Box<uv_distribution::Error>),
|
||||
Build(Box<SourceDist>, #[source] uv_distribution::Error),
|
||||
#[error("Unzip failed in another thread: {0}")]
|
||||
Thread(String),
|
||||
}
|
||||
|
|
@ -146,12 +146,12 @@ impl<'a, Context: BuildContext> Preparer<'a, Context> {
|
|||
.get_or_build_wheel(&dist, self.tags, policy)
|
||||
.boxed_local()
|
||||
.map_err(|err| match dist.clone() {
|
||||
Dist::Built(dist) => Error::Download(Box::new(dist), Box::new(err)),
|
||||
Dist::Built(dist) => Error::Download(Box::new(dist), err),
|
||||
Dist::Source(dist) => {
|
||||
if dist.is_local() {
|
||||
Error::Build(Box::new(dist), Box::new(err))
|
||||
Error::Build(Box::new(dist), err)
|
||||
} else {
|
||||
Error::DownloadAndBuild(Box::new(dist), Box::new(err))
|
||||
Error::DownloadAndBuild(Box::new(dist), err)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
@ -166,12 +166,12 @@ impl<'a, Context: BuildContext> Preparer<'a, Context> {
|
|||
wheel.hashes(),
|
||||
);
|
||||
Err(match dist {
|
||||
Dist::Built(dist) => Error::Download(Box::new(dist), Box::new(err)),
|
||||
Dist::Built(dist) => Error::Download(Box::new(dist), err),
|
||||
Dist::Source(dist) => {
|
||||
if dist.is_local() {
|
||||
Error::Build(Box::new(dist), Box::new(err))
|
||||
Error::Build(Box::new(dist), err)
|
||||
} else {
|
||||
Error::DownloadAndBuild(Box::new(dist), Box::new(err))
|
||||
Error::DownloadAndBuild(Box::new(dist), err)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ use owo_colors::OwoColorize;
|
|||
use rustc_hash::FxHashMap;
|
||||
use std::str::FromStr;
|
||||
use std::sync::LazyLock;
|
||||
use uv_distribution_types::{Name, SourceDist};
|
||||
use uv_distribution_types::{BuiltDist, Name, SourceDist};
|
||||
use uv_normalize::PackageName;
|
||||
|
||||
/// Static map of common package name typos or misconfigurations to their correct package names.
|
||||
|
|
@ -48,6 +48,34 @@ pub(crate) fn download_and_build(sdist: Box<SourceDist>, cause: uv_distribution:
|
|||
anstream::eprint!("{report:?}");
|
||||
}
|
||||
|
||||
/// Render a remote binary distribution download failure with a help message.
|
||||
pub(crate) fn download(sdist: Box<BuiltDist>, cause: uv_distribution::Error) {
|
||||
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
|
||||
#[error("Failed to download `{sdist}`")]
|
||||
#[diagnostic()]
|
||||
struct Error {
|
||||
sdist: Box<BuiltDist>,
|
||||
#[source]
|
||||
cause: uv_distribution::Error,
|
||||
#[help]
|
||||
help: Option<String>,
|
||||
}
|
||||
|
||||
let report = miette::Report::new(Error {
|
||||
help: SUGGESTIONS.get(sdist.name()).map(|suggestion| {
|
||||
format!(
|
||||
"`{}` is often confused for `{}` Did you mean to install `{}` instead?",
|
||||
sdist.name().cyan(),
|
||||
suggestion.cyan(),
|
||||
suggestion.cyan(),
|
||||
)
|
||||
}),
|
||||
sdist,
|
||||
cause,
|
||||
});
|
||||
anstream::eprint!("{report:?}");
|
||||
}
|
||||
|
||||
/// Render a local source distribution build failure with a help message.
|
||||
pub(crate) fn build(sdist: Box<SourceDist>, cause: uv_distribution::Error) {
|
||||
#[derive(Debug, miette::Diagnostic, thiserror::Error)]
|
||||
|
|
|
|||
|
|
@ -439,7 +439,7 @@ pub(crate) async fn pip_install(
|
|||
};
|
||||
|
||||
// Sync the environment.
|
||||
operations::install(
|
||||
match operations::install(
|
||||
&resolution,
|
||||
site_packages,
|
||||
modifications,
|
||||
|
|
@ -461,7 +461,26 @@ pub(crate) async fn pip_install(
|
|||
dry_run,
|
||||
printer,
|
||||
)
|
||||
.await?;
|
||||
.await
|
||||
{
|
||||
Ok(_) => {}
|
||||
Err(operations::Error::Prepare(uv_installer::PrepareError::Build(dist, err))) => {
|
||||
diagnostics::build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(operations::Error::Prepare(uv_installer::PrepareError::DownloadAndBuild(
|
||||
dist,
|
||||
err,
|
||||
))) => {
|
||||
diagnostics::download_and_build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(operations::Error::Prepare(uv_installer::PrepareError::Download(dist, err))) => {
|
||||
diagnostics::download(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(err) => return Err(err.into()),
|
||||
}
|
||||
|
||||
// Notify the user of any resolution diagnostics.
|
||||
operations::diagnose_resolution(resolution.diagnostics(), printer)?;
|
||||
|
|
|
|||
|
|
@ -457,10 +457,7 @@ pub(crate) async fn install(
|
|||
)
|
||||
.with_reporter(PrepareReporter::from(printer).with_length(remote.len() as u64));
|
||||
|
||||
let wheels = preparer
|
||||
.prepare(remote.clone(), in_flight)
|
||||
.await
|
||||
.context("Failed to prepare distributions")?;
|
||||
let wheels = preparer.prepare(remote.clone(), in_flight).await?;
|
||||
|
||||
logger.on_prepare(wheels.len(), start, printer)?;
|
||||
|
||||
|
|
@ -751,6 +748,9 @@ pub(crate) fn diagnose_environment(
|
|||
|
||||
#[derive(thiserror::Error, Debug)]
|
||||
pub(crate) enum Error {
|
||||
#[error("Failed to prepare distributions")]
|
||||
Prepare(#[from] uv_installer::PrepareError),
|
||||
|
||||
#[error(transparent)]
|
||||
Resolve(#[from] uv_resolver::ResolveError),
|
||||
|
||||
|
|
|
|||
|
|
@ -383,7 +383,7 @@ pub(crate) async fn pip_sync(
|
|||
};
|
||||
|
||||
// Sync the environment.
|
||||
operations::install(
|
||||
match operations::install(
|
||||
&resolution,
|
||||
site_packages,
|
||||
Modifications::Exact,
|
||||
|
|
@ -405,7 +405,26 @@ pub(crate) async fn pip_sync(
|
|||
dry_run,
|
||||
printer,
|
||||
)
|
||||
.await?;
|
||||
.await
|
||||
{
|
||||
Ok(_) => {}
|
||||
Err(operations::Error::Prepare(uv_installer::PrepareError::Build(dist, err))) => {
|
||||
diagnostics::build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(operations::Error::Prepare(uv_installer::PrepareError::DownloadAndBuild(
|
||||
dist,
|
||||
err,
|
||||
))) => {
|
||||
diagnostics::download_and_build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(operations::Error::Prepare(uv_installer::PrepareError::Download(dist, err))) => {
|
||||
diagnostics::download(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(err) => return Err(err.into()),
|
||||
}
|
||||
|
||||
// Notify the user of any resolution diagnostics.
|
||||
operations::diagnose_resolution(resolution.diagnostics(), printer)?;
|
||||
|
|
|
|||
|
|
@ -716,6 +716,24 @@ pub(crate) async fn add(
|
|||
diagnostics::build(dist, err);
|
||||
Ok(ExitStatus::Failure)
|
||||
}
|
||||
ProjectError::Operation(pip::operations::Error::Prepare(
|
||||
uv_installer::PrepareError::Build(dist, err),
|
||||
)) => {
|
||||
diagnostics::build(dist, err);
|
||||
Ok(ExitStatus::Failure)
|
||||
}
|
||||
ProjectError::Operation(pip::operations::Error::Prepare(
|
||||
uv_installer::PrepareError::DownloadAndBuild(dist, err),
|
||||
)) => {
|
||||
diagnostics::download_and_build(dist, err);
|
||||
Ok(ExitStatus::Failure)
|
||||
}
|
||||
ProjectError::Operation(pip::operations::Error::Prepare(
|
||||
uv_installer::PrepareError::Download(dist, err),
|
||||
)) => {
|
||||
diagnostics::download(dist, err);
|
||||
Ok(ExitStatus::Failure)
|
||||
}
|
||||
err => Err(err.into()),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,10 +21,11 @@ use uv_workspace::pyproject_mut::{DependencyTarget, PyProjectTomlMut};
|
|||
use uv_workspace::{DiscoveryOptions, VirtualProject, Workspace};
|
||||
|
||||
use crate::commands::pip::loggers::{DefaultInstallLogger, DefaultResolveLogger};
|
||||
use crate::commands::pip::operations;
|
||||
use crate::commands::pip::operations::Modifications;
|
||||
use crate::commands::project::default_dependency_groups;
|
||||
use crate::commands::project::lock::LockMode;
|
||||
use crate::commands::{project, ExitStatus, SharedState};
|
||||
use crate::commands::project::{default_dependency_groups, ProjectError};
|
||||
use crate::commands::{diagnostics, project, ExitStatus, SharedState};
|
||||
use crate::printer::Printer;
|
||||
use crate::settings::ResolverInstallerSettings;
|
||||
|
||||
|
|
@ -213,7 +214,7 @@ pub(crate) async fn remove(
|
|||
let state = SharedState::default();
|
||||
|
||||
// Lock and sync the environment, if necessary.
|
||||
let lock = project::lock::do_safe_lock(
|
||||
let lock = match project::lock::do_safe_lock(
|
||||
mode,
|
||||
project.workspace(),
|
||||
settings.as_ref().into(),
|
||||
|
|
@ -227,8 +228,41 @@ pub(crate) async fn remove(
|
|||
cache,
|
||||
printer,
|
||||
)
|
||||
.await?
|
||||
.into_lock();
|
||||
.await
|
||||
{
|
||||
Ok(result) => result.into_lock(),
|
||||
Err(ProjectError::Operation(operations::Error::Resolve(
|
||||
uv_resolver::ResolveError::NoSolution(err),
|
||||
))) => {
|
||||
diagnostics::no_solution(&err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(ProjectError::Operation(operations::Error::Resolve(
|
||||
uv_resolver::ResolveError::DownloadAndBuild(dist, err),
|
||||
))) => {
|
||||
diagnostics::download_and_build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(ProjectError::Operation(operations::Error::Resolve(
|
||||
uv_resolver::ResolveError::Build(dist, err),
|
||||
))) => {
|
||||
diagnostics::build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(ProjectError::Operation(operations::Error::Requirements(
|
||||
uv_requirements::Error::DownloadAndBuild(dist, err),
|
||||
))) => {
|
||||
diagnostics::download_and_build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(ProjectError::Operation(operations::Error::Requirements(
|
||||
uv_requirements::Error::Build(dist, err),
|
||||
))) => {
|
||||
diagnostics::build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(err) => return Err(err.into()),
|
||||
};
|
||||
|
||||
if no_sync {
|
||||
return Ok(ExitStatus::Success);
|
||||
|
|
@ -255,7 +289,7 @@ pub(crate) async fn remove(
|
|||
},
|
||||
};
|
||||
|
||||
project::sync::do_sync(
|
||||
match project::sync::do_sync(
|
||||
target,
|
||||
&venv,
|
||||
&extras,
|
||||
|
|
@ -272,7 +306,29 @@ pub(crate) async fn remove(
|
|||
cache,
|
||||
printer,
|
||||
)
|
||||
.await?;
|
||||
.await
|
||||
{
|
||||
Ok(()) => {}
|
||||
Err(ProjectError::Operation(operations::Error::Prepare(
|
||||
uv_installer::PrepareError::Build(dist, err),
|
||||
))) => {
|
||||
diagnostics::build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(ProjectError::Operation(operations::Error::Prepare(
|
||||
uv_installer::PrepareError::DownloadAndBuild(dist, err),
|
||||
))) => {
|
||||
diagnostics::download_and_build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(ProjectError::Operation(operations::Error::Prepare(
|
||||
uv_installer::PrepareError::Download(dist, err),
|
||||
))) => {
|
||||
diagnostics::download(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(err) => return Err(err.into()),
|
||||
}
|
||||
|
||||
Ok(ExitStatus::Success)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -697,7 +697,7 @@ pub(crate) async fn run(
|
|||
|
||||
let install_options = InstallOptions::default();
|
||||
|
||||
project::sync::do_sync(
|
||||
match project::sync::do_sync(
|
||||
target,
|
||||
&venv,
|
||||
&extras,
|
||||
|
|
@ -718,7 +718,29 @@ pub(crate) async fn run(
|
|||
cache,
|
||||
printer,
|
||||
)
|
||||
.await?;
|
||||
.await
|
||||
{
|
||||
Ok(()) => {}
|
||||
Err(ProjectError::Operation(operations::Error::Prepare(
|
||||
uv_installer::PrepareError::Build(dist, err),
|
||||
))) => {
|
||||
diagnostics::build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(ProjectError::Operation(operations::Error::Prepare(
|
||||
uv_installer::PrepareError::DownloadAndBuild(dist, err),
|
||||
))) => {
|
||||
diagnostics::download_and_build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(ProjectError::Operation(operations::Error::Prepare(
|
||||
uv_installer::PrepareError::Download(dist, err),
|
||||
))) => {
|
||||
diagnostics::download(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(err) => return Err(err.into()),
|
||||
}
|
||||
|
||||
lock = Some(result.into_lock());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ pub(crate) async fn sync(
|
|||
};
|
||||
|
||||
// Perform the sync operation.
|
||||
do_sync(
|
||||
match do_sync(
|
||||
target,
|
||||
&venv,
|
||||
&extras,
|
||||
|
|
@ -230,7 +230,29 @@ pub(crate) async fn sync(
|
|||
cache,
|
||||
printer,
|
||||
)
|
||||
.await?;
|
||||
.await
|
||||
{
|
||||
Ok(()) => {}
|
||||
Err(ProjectError::Operation(operations::Error::Prepare(
|
||||
uv_installer::PrepareError::Build(dist, err),
|
||||
))) => {
|
||||
diagnostics::build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(ProjectError::Operation(operations::Error::Prepare(
|
||||
uv_installer::PrepareError::DownloadAndBuild(dist, err),
|
||||
))) => {
|
||||
diagnostics::download_and_build(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(ProjectError::Operation(operations::Error::Prepare(
|
||||
uv_installer::PrepareError::Download(dist, err),
|
||||
))) => {
|
||||
diagnostics::download(dist, err);
|
||||
return Ok(ExitStatus::Failure);
|
||||
}
|
||||
Err(err) => return Err(err.into()),
|
||||
}
|
||||
|
||||
Ok(ExitStatus::Success)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1552,7 +1552,6 @@ fn sha() -> Result<()> {
|
|||
----- stderr -----
|
||||
Building source distribution...
|
||||
error: Failed to install requirements from `build-system.requires`
|
||||
Caused by: Failed to prepare distributions
|
||||
Caused by: Failed to download `setuptools==68.2.2`
|
||||
Caused by: Hash mismatch for `setuptools==68.2.2`
|
||||
|
||||
|
|
|
|||
|
|
@ -5553,27 +5553,26 @@ fn fail_to_add_revert_project() -> Result<()> {
|
|||
.collect::<Vec<_>>();
|
||||
uv_snapshot!(filters, context.add().arg("./child"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 3 packages in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to build `child @ file://[TEMP_DIR]/child`
|
||||
Caused by: Build backend failed to determine requirements with `build_wheel()` (exit status: 1)
|
||||
× Failed to build `child @ file://[TEMP_DIR]/child`
|
||||
╰─▶ Build backend failed to determine requirements with `build_wheel()` (exit status: 1)
|
||||
|
||||
[stderr]
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 14, in <module>
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 325, in get_requires_for_build_wheel
|
||||
return self._get_build_requires(config_settings, requirements=['wheel'])
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 295, in _get_build_requires
|
||||
self.run_setup()
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 311, in run_setup
|
||||
exec(code, locals())
|
||||
File "<string>", line 1, in <module>
|
||||
ZeroDivisionError: division by zero
|
||||
[stderr]
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 14, in <module>
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 325, in get_requires_for_build_wheel
|
||||
return self._get_build_requires(config_settings, requirements=['wheel'])
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 295, in _get_build_requires
|
||||
self.run_setup()
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 311, in run_setup
|
||||
exec(code, locals())
|
||||
File "<string>", line 1, in <module>
|
||||
ZeroDivisionError: division by zero
|
||||
"###);
|
||||
|
||||
let pyproject_toml = fs_err::read_to_string(context.temp_dir.join("pyproject.toml"))?;
|
||||
|
|
@ -5661,27 +5660,26 @@ fn fail_to_edit_revert_project() -> Result<()> {
|
|||
.collect::<Vec<_>>();
|
||||
uv_snapshot!(filters, context.add().arg("./child"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 3 packages in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to build `child @ file://[TEMP_DIR]/child`
|
||||
Caused by: Build backend failed to determine requirements with `build_wheel()` (exit status: 1)
|
||||
× Failed to build `child @ file://[TEMP_DIR]/child`
|
||||
╰─▶ Build backend failed to determine requirements with `build_wheel()` (exit status: 1)
|
||||
|
||||
[stderr]
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 14, in <module>
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 325, in get_requires_for_build_wheel
|
||||
return self._get_build_requires(config_settings, requirements=['wheel'])
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 295, in _get_build_requires
|
||||
self.run_setup()
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 311, in run_setup
|
||||
exec(code, locals())
|
||||
File "<string>", line 1, in <module>
|
||||
ZeroDivisionError: division by zero
|
||||
[stderr]
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 14, in <module>
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 325, in get_requires_for_build_wheel
|
||||
return self._get_build_requires(config_settings, requirements=['wheel'])
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 295, in _get_build_requires
|
||||
self.run_setup()
|
||||
File "[CACHE_DIR]/builds-v0/[TMP]/build_meta.py", line 311, in run_setup
|
||||
exec(code, locals())
|
||||
File "<string>", line 1, in <module>
|
||||
ZeroDivisionError: division by zero
|
||||
"###);
|
||||
|
||||
let pyproject_toml = fs_err::read_to_string(context.temp_dir.join("pyproject.toml"))?;
|
||||
|
|
|
|||
|
|
@ -5549,20 +5549,19 @@ fn lock_invalid_hash() -> Result<()> {
|
|||
// Install from the lockfile.
|
||||
uv_snapshot!(context.filters(), context.sync().arg("--frozen").env_remove(EnvVars::UV_EXCLUDE_NEWER), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `idna==3.6`
|
||||
Caused by: Hash mismatch for `idna==3.6`
|
||||
× Failed to download `idna==3.6`
|
||||
╰─▶ Hash mismatch for `idna==3.6`
|
||||
|
||||
Expected:
|
||||
sha256:aecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca
|
||||
sha256:d05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
|
||||
Expected:
|
||||
sha256:aecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca
|
||||
sha256:d05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
|
||||
|
||||
Computed:
|
||||
sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
|
||||
Computed:
|
||||
sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
|
||||
"###);
|
||||
|
||||
Ok(())
|
||||
|
|
@ -6394,27 +6393,25 @@ fn lock_redact_https() -> Result<()> {
|
|||
// 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###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
error: Failed to prepare distributions
|
||||
Caused by: 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)
|
||||
× 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)
|
||||
"###);
|
||||
|
||||
// Installing from the lockfile should fail without an index.
|
||||
uv_snapshot!(context.filters(), context.sync().arg("--frozen").arg("--no-install-project"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
error: Failed to prepare distributions
|
||||
Caused by: 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)
|
||||
× 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)
|
||||
"###);
|
||||
|
||||
// Installing from the lockfile should succeed when credentials are included on the command-line.
|
||||
|
|
@ -6447,14 +6444,13 @@ 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###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
error: Failed to prepare distributions
|
||||
Caused by: 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)
|
||||
× 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)
|
||||
"###);
|
||||
|
||||
// Installing with credentials from with `UV_INDEX_URL` should succeed.
|
||||
|
|
|
|||
|
|
@ -2347,16 +2347,15 @@ fn no_prerelease_hint_source_builds() -> Result<()> {
|
|||
|
||||
uv_snapshot!(context.filters(), context.pip_install().arg(".").env(EnvVars::UV_EXCLUDE_NEWER, "2018-10-08"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to build `project @ file://[TEMP_DIR]/`
|
||||
Caused by: Failed to resolve requirements from `setup.py` build
|
||||
Caused by: No solution found when resolving: `setuptools>=40.8.0`
|
||||
Caused by: Because only setuptools<40.8.0 is available and you require setuptools>=40.8.0, we can conclude that your requirements are unsatisfiable.
|
||||
× Failed to build `project @ file://[TEMP_DIR]/`
|
||||
├─▶ Failed to resolve requirements from `setup.py` build
|
||||
├─▶ No solution found when resolving: `setuptools>=40.8.0`
|
||||
╰─▶ Because only setuptools<40.8.0 is available and you require setuptools>=40.8.0, we can conclude that your requirements are unsatisfiable.
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -5741,21 +5740,20 @@ fn require_hashes_mismatch() -> Result<()> {
|
|||
.arg("requirements.txt")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 3 packages in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `anyio==4.0.0`
|
||||
Caused by: Hash mismatch for `anyio==4.0.0`
|
||||
× Failed to download `anyio==4.0.0`
|
||||
╰─▶ Hash mismatch for `anyio==4.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
sha256:a7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
sha256:a7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
|
||||
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -6226,21 +6224,20 @@ fn verify_hashes_mismatch() -> Result<()> {
|
|||
.arg("requirements.txt")
|
||||
.arg("--verify-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 3 packages in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `anyio==4.0.0`
|
||||
Caused by: Hash mismatch for `anyio==4.0.0`
|
||||
× Failed to download `anyio==4.0.0`
|
||||
╰─▶ Hash mismatch for `anyio==4.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
sha256:a7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
sha256:a7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
|
||||
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -3565,20 +3565,19 @@ fn require_hashes_wheel_no_binary() -> Result<()> {
|
|||
.arg(":all:")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download and build `anyio==4.0.0`
|
||||
Caused by: Hash mismatch for `anyio==4.0.0`
|
||||
× Failed to download and build `anyio==4.0.0`
|
||||
╰─▶ Hash mismatch for `anyio==4.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Expected:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
|
||||
Computed:
|
||||
sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
|
||||
Computed:
|
||||
sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -3659,20 +3658,19 @@ fn require_hashes_source_only_binary() -> Result<()> {
|
|||
.arg(":all:")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `anyio==4.0.0`
|
||||
Caused by: Hash mismatch for `anyio==4.0.0`
|
||||
× Failed to download `anyio==4.0.0`
|
||||
╰─▶ Hash mismatch for `anyio==4.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
|
||||
Expected:
|
||||
sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a
|
||||
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -3692,20 +3690,19 @@ fn require_hashes_wrong_digest() -> Result<()> {
|
|||
.arg("requirements.txt")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `anyio==4.0.0`
|
||||
Caused by: Hash mismatch for `anyio==4.0.0`
|
||||
× Failed to download `anyio==4.0.0`
|
||||
╰─▶ Hash mismatch for `anyio==4.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -3725,20 +3722,19 @@ fn require_hashes_wrong_algorithm() -> Result<()> {
|
|||
.arg("requirements.txt")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `anyio==4.0.0`
|
||||
Caused by: Hash mismatch for `anyio==4.0.0`
|
||||
× Failed to download `anyio==4.0.0`
|
||||
╰─▶ Hash mismatch for `anyio==4.0.0`
|
||||
|
||||
Expected:
|
||||
sha512:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Expected:
|
||||
sha512:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
|
||||
Computed:
|
||||
sha512:f30761c1e8725b49c498273b90dba4b05c0fd157811994c806183062cb6647e773364ce45f0e1ff0b10e32fe6d0232ea5ad39476ccf37109d6b49603a09c11c2
|
||||
Computed:
|
||||
sha512:f30761c1e8725b49c498273b90dba4b05c0fd157811994c806183062cb6647e773364ce45f0e1ff0b10e32fe6d0232ea5ad39476ccf37109d6b49603a09c11c2
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -3898,20 +3894,19 @@ fn require_hashes_wheel_url() -> Result<()> {
|
|||
.arg("--reinstall")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: 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`
|
||||
× 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`
|
||||
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -3953,20 +3948,19 @@ fn require_hashes_wheel_url_mismatch() -> Result<()> {
|
|||
.arg("requirements.txt")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: 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`
|
||||
× 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`
|
||||
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -4062,20 +4056,19 @@ fn require_hashes_re_download() -> Result<()> {
|
|||
.arg("--reinstall")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `anyio==4.0.0`
|
||||
Caused by: Hash mismatch for `anyio==4.0.0`
|
||||
× Failed to download `anyio==4.0.0`
|
||||
╰─▶ Hash mismatch for `anyio==4.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Expected:
|
||||
sha256:afdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Computed:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -4154,20 +4147,19 @@ fn require_hashes_wheel_path_mismatch() -> Result<()> {
|
|||
.arg("requirements.txt")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `tqdm @ file://[WORKSPACE]/scripts/links/tqdm-1000.0.0-py3-none-any.whl`
|
||||
Caused by: Hash mismatch for `tqdm @ file://[WORKSPACE]/scripts/links/tqdm-1000.0.0-py3-none-any.whl`
|
||||
× Failed to download `tqdm @ file://[WORKSPACE]/scripts/links/tqdm-1000.0.0-py3-none-any.whl`
|
||||
╰─▶ Hash mismatch for `tqdm @ file://[WORKSPACE]/scripts/links/tqdm-1000.0.0-py3-none-any.whl`
|
||||
|
||||
Expected:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
Expected:
|
||||
sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f
|
||||
|
||||
Computed:
|
||||
sha256:a34996d4bd5abb2336e14ff0a2d22b92cfd0f0ed344e6883041ce01953276a13
|
||||
Computed:
|
||||
sha256:a34996d4bd5abb2336e14ff0a2d22b92cfd0f0ed344e6883041ce01953276a13
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -4431,20 +4423,19 @@ fn require_hashes_repeated_hash() -> Result<()> {
|
|||
.arg("--require-hashes")
|
||||
.arg("--reinstall"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: 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`
|
||||
× 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`
|
||||
|
||||
Expected:
|
||||
md5:520d85e19168705cdf0223621b18831a
|
||||
Expected:
|
||||
md5:520d85e19168705cdf0223621b18831a
|
||||
|
||||
Computed:
|
||||
md5:420d85e19168705cdf0223621b18831a
|
||||
Computed:
|
||||
md5:420d85e19168705cdf0223621b18831a
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -4563,20 +4554,19 @@ fn require_hashes_find_links_no_hash() -> Result<()> {
|
|||
.arg("--find-links")
|
||||
.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: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `example-a-961b4c22==1.0.0`
|
||||
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
× Failed to download `example-a-961b4c22==1.0.0`
|
||||
╰─▶ Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:123
|
||||
Expected:
|
||||
sha256:123
|
||||
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -4593,20 +4583,19 @@ fn require_hashes_find_links_no_hash() -> Result<()> {
|
|||
.arg("--find-links")
|
||||
.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: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `example-a-961b4c22==1.0.0`
|
||||
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
× Failed to download `example-a-961b4c22==1.0.0`
|
||||
╰─▶ Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3
|
||||
Expected:
|
||||
sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3
|
||||
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -4684,20 +4673,19 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> {
|
|||
.arg("--find-links")
|
||||
.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: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `example-a-961b4c22==1.0.0`
|
||||
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
× Failed to download `example-a-961b4c22==1.0.0`
|
||||
╰─▶ Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:123
|
||||
Expected:
|
||||
sha256:123
|
||||
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -4713,20 +4701,19 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> {
|
|||
.arg("--find-links")
|
||||
.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: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `example-a-961b4c22==1.0.0`
|
||||
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
× Failed to download `example-a-961b4c22==1.0.0`
|
||||
╰─▶ Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:8838f9d005ff0432b258ba648d9cabb1cbdf06ac29d14f788b02edae544032ea
|
||||
Expected:
|
||||
sha256:8838f9d005ff0432b258ba648d9cabb1cbdf06ac29d14f788b02edae544032ea
|
||||
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -4794,21 +4781,20 @@ fn require_hashes_find_links_invalid_hash() -> Result<()> {
|
|||
.arg("--find-links")
|
||||
.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: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download and build `example-a-961b4c22==1.0.0`
|
||||
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
× Failed to download and build `example-a-961b4c22==1.0.0`
|
||||
╰─▶ Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
sha256:a3cf07a05aac526131a2e8b6e4375ee6c6eaac8add05b88035e960ac6cd999ee
|
||||
Expected:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
sha256:a3cf07a05aac526131a2e8b6e4375ee6c6eaac8add05b88035e960ac6cd999ee
|
||||
|
||||
Computed:
|
||||
sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3
|
||||
Computed:
|
||||
sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -4890,20 +4876,19 @@ fn require_hashes_registry_invalid_hash() -> Result<()> {
|
|||
.arg("--index-url")
|
||||
.arg("https://astral-test.github.io/astral-test-hash/invalid-hash/simple-html/"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `example-a-961b4c22==1.0.0`
|
||||
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
× Failed to download `example-a-961b4c22==1.0.0`
|
||||
╰─▶ Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:123
|
||||
Expected:
|
||||
sha256:123
|
||||
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -4920,20 +4905,19 @@ fn require_hashes_registry_invalid_hash() -> Result<()> {
|
|||
.arg("--index-url")
|
||||
.arg("https://astral-test.github.io/astral-test-hash/invalid-hash/simple-html/"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download `example-a-961b4c22==1.0.0`
|
||||
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
× Failed to download `example-a-961b4c22==1.0.0`
|
||||
╰─▶ Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:8838f9d005ff0432b258ba648d9cabb1cbdf06ac29d14f788b02edae544032ea
|
||||
Expected:
|
||||
sha256:8838f9d005ff0432b258ba648d9cabb1cbdf06ac29d14f788b02edae544032ea
|
||||
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
Computed:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -5004,21 +4988,20 @@ fn require_hashes_registry_invalid_hash() -> Result<()> {
|
|||
.arg("--index-url")
|
||||
.arg("https://astral-test.github.io/astral-test-hash/invalid-hash/simple-html/"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download and build `example-a-961b4c22==1.0.0`
|
||||
Caused by: Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
× Failed to download and build `example-a-961b4c22==1.0.0`
|
||||
╰─▶ Hash mismatch for `example-a-961b4c22==1.0.0`
|
||||
|
||||
Expected:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
sha256:a3cf07a05aac526131a2e8b6e4375ee6c6eaac8add05b88035e960ac6cd999ee
|
||||
Expected:
|
||||
sha256:5d69f0b590514103234f0c3526563856f04d044d8d0ea1073a843ae429b3187e
|
||||
sha256:a3cf07a05aac526131a2e8b6e4375ee6c6eaac8add05b88035e960ac6cd999ee
|
||||
|
||||
Computed:
|
||||
sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3
|
||||
Computed:
|
||||
sha256:294e788dbe500fdc39e8b88e82652ab67409a1dc9dd06543d0fe0ae31b713eb3
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -5092,20 +5075,19 @@ fn require_hashes_url_invalid() -> Result<()> {
|
|||
.arg("requirements.txt")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: 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`
|
||||
× 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`
|
||||
|
||||
Expected:
|
||||
sha256:c6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
|
||||
Expected:
|
||||
sha256:c6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
|
||||
|
||||
Computed:
|
||||
sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
|
||||
Computed:
|
||||
sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -5126,20 +5108,19 @@ fn require_hashes_url_ignore() -> Result<()> {
|
|||
.arg("requirements.txt")
|
||||
.arg("--require-hashes"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: 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`
|
||||
× 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`
|
||||
|
||||
Expected:
|
||||
sha256:c6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
|
||||
Expected:
|
||||
sha256:c6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
|
||||
|
||||
Computed:
|
||||
sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
|
||||
Computed:
|
||||
sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
@ -5487,16 +5468,15 @@ fn incompatible_build_constraint() -> Result<()> {
|
|||
.arg("--build-constraint")
|
||||
.arg("build_constraints.txt"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 1 package in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: 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.
|
||||
× 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.
|
||||
"###
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -688,20 +688,18 @@ fn sync_build_isolation_package() -> Result<()> {
|
|||
.collect::<Vec<_>>();
|
||||
uv_snapshot!(filters, context.sync().arg("--no-build-isolation-package").arg("source-distribution"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved 2 packages in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download and build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
|
||||
Caused by: Build backend failed to build wheel through `build_wheel` (exit status: 1)
|
||||
|
||||
[stderr]
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 8, in <module>
|
||||
ModuleNotFoundError: No module named 'hatchling'
|
||||
× Failed to download and build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
|
||||
╰─▶ Build backend failed to build wheel through `build_wheel` (exit status: 1)
|
||||
|
||||
[stderr]
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 8, in <module>
|
||||
ModuleNotFoundError: No module named 'hatchling'
|
||||
"###);
|
||||
|
||||
// Install `hatchling` for `source-distribution`.
|
||||
|
|
@ -779,39 +777,35 @@ fn sync_build_isolation_extra() -> Result<()> {
|
|||
.collect::<Vec<_>>();
|
||||
uv_snapshot!(&filters, context.sync().arg("--extra").arg("compile"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved [N] packages in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download and build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
|
||||
Caused by: Build backend failed to build wheel through `build_wheel` (exit status: 1)
|
||||
|
||||
[stderr]
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 8, in <module>
|
||||
ModuleNotFoundError: No module named 'hatchling'
|
||||
× Failed to download and build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
|
||||
╰─▶ Build backend failed to build wheel through `build_wheel` (exit status: 1)
|
||||
|
||||
[stderr]
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 8, in <module>
|
||||
ModuleNotFoundError: No module named 'hatchling'
|
||||
"###);
|
||||
|
||||
// Running `uv sync` with `--all-extras` should also fail.
|
||||
uv_snapshot!(&filters, context.sync().arg("--all-extras"), @r###"
|
||||
success: false
|
||||
exit_code: 2
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
|
||||
----- stderr -----
|
||||
Resolved [N] packages in [TIME]
|
||||
error: Failed to prepare distributions
|
||||
Caused by: Failed to download and build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
|
||||
Caused by: Build backend failed to build wheel through `build_wheel` (exit status: 1)
|
||||
|
||||
[stderr]
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 8, in <module>
|
||||
ModuleNotFoundError: No module named 'hatchling'
|
||||
× Failed to download and build `source-distribution @ https://files.pythonhosted.org/packages/10/1f/57aa4cce1b1abf6b433106676e15f9fa2c92ed2bd4cf77c3b50a9e9ac773/source_distribution-0.0.1.tar.gz`
|
||||
╰─▶ Build backend failed to build wheel through `build_wheel` (exit status: 1)
|
||||
|
||||
[stderr]
|
||||
Traceback (most recent call last):
|
||||
File "<string>", line 8, in <module>
|
||||
ModuleNotFoundError: No module named 'hatchling'
|
||||
"###);
|
||||
|
||||
// Install the build dependencies.
|
||||
|
|
|
|||
Loading…
Reference in New Issue