Update Packse snapshots (#8795)

## Summary

The diff here is challenging because it looks like some tests got
reordered.
This commit is contained in:
Charlie Marsh 2024-11-04 16:17:43 -05:00 committed by GitHub
parent fb1d679f69
commit f8ec7975c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 2805 additions and 3004 deletions

View File

@ -32,7 +32,7 @@ use uv_static::EnvVars;
// Exclude any packages uploaded after this date. // Exclude any packages uploaded after this date.
static EXCLUDE_NEWER: &str = "2024-03-25T00:00:00Z"; static EXCLUDE_NEWER: &str = "2024-03-25T00:00:00Z";
pub const PACKSE_VERSION: &str = "0.3.37"; pub const PACKSE_VERSION: &str = "0.3.39";
/// Using a find links url allows using `--index-url` instead of `--extra-index-url` in tests /// Using a find links url allows using `--index-url` instead of `--extra-index-url` in tests
/// to prevent dependency confusion attacks against our test suite. /// to prevent dependency confusion attacks against our test suite.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
//! DO NOT EDIT //! DO NOT EDIT
//! //!
//! Generated with `./scripts/sync_scenarios.sh` //! Generated with `./scripts/sync_scenarios.sh`
//! Scenarios from <https://github.com/astral-sh/packse/tree/0.3.37/scenarios> //! Scenarios from <https://github.com/astral-sh/packse/tree/0.3.39/scenarios>
//! //!
#![cfg(all(feature = "python", feature = "pypi", unix))] #![cfg(all(feature = "python", feature = "pypi", unix))]
@ -40,59 +40,7 @@ fn command(context: &TestContext, python_versions: &[&str]) -> Command {
command command
} }
/// The user requires a package which requires a Python version greater than the /// The user requires a package which requires a compatible Python version, but they request an incompatible Python version for package resolution.
/// current version, but they use an alternative Python version for package
/// resolution.
///
/// ```text
/// incompatible-python-compatible-override
/// ├── environment
/// │ └── python3.9
/// ├── root
/// │ └── requires a==1.0.0
/// │ └── satisfied by a-1.0.0
/// └── a
/// └── a-1.0.0
/// └── requires python>=3.10 (incompatible with environment)
/// ```
#[test]
fn incompatible_python_compatible_override() -> Result<()> {
let context = TestContext::new("3.9");
let python_versions = &[];
// In addition to the standard filters, swap out package names for shorter messages
let mut filters = context.filters();
filters.push((r"incompatible-python-compatible-override-", "package-"));
let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("incompatible-python-compatible-override-a==1.0.0")?;
let output = uv_snapshot!(filters, command(&context, python_versions)
.arg("--python-version=3.11")
, @r##"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile requirements.in --cache-dir [CACHE_DIR] --python-version=3.11
package-a==1.0.0
# via -r requirements.in
----- stderr -----
warning: The requested Python version 3.11 is not available; 3.9.[X] will be used to build dependencies instead.
Resolved 1 package in [TIME]
"##
);
output.assert().success().stdout(predicate::str::contains(
"incompatible-python-compatible-override-a==1.0.0",
));
Ok(())
}
/// The user requires a package which requires a compatible Python version, but they
/// request an incompatible Python version for package resolution.
/// ///
/// ```text /// ```text
/// compatible-python-incompatible-override /// compatible-python-incompatible-override
@ -119,7 +67,7 @@ fn compatible_python_incompatible_override() -> Result<()> {
let output = uv_snapshot!(filters, command(&context, python_versions) let output = uv_snapshot!(filters, command(&context, python_versions)
.arg("--python-version=3.9") .arg("--python-version=3.9")
, @r#" , @r###"
success: false success: false
exit_code: 1 exit_code: 1
----- stdout ----- ----- stdout -----
@ -131,7 +79,7 @@ fn compatible_python_incompatible_override() -> Result<()> {
And because you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable. And because you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable.
hint: The `--python-version` value (>=3.9.0) 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. hint: The `--python-version` value (>=3.9.0) 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.
"# "###
); );
output.assert().failure(); output.assert().failure();
@ -139,66 +87,7 @@ fn compatible_python_incompatible_override() -> Result<()> {
Ok(()) Ok(())
} }
/// The user requires a package which requires a incompatible Python version, but /// The user requires a package which requires a incompatible Python version, but they request a compatible Python version for package resolution. There are only source distributions available for the package. The user has a compatible Python version installed elsewhere on their system.
/// they request a compatible Python version for package resolution. There are only
/// source distributions available for the package.
///
/// ```text
/// incompatible-python-compatible-override-unavailable-no-wheels
/// ├── environment
/// │ └── python3.9
/// ├── root
/// │ └── requires a==1.0.0
/// │ └── satisfied by a-1.0.0
/// └── a
/// └── a-1.0.0
/// └── requires python>=3.10 (incompatible with environment)
/// ```
#[test]
fn incompatible_python_compatible_override_unavailable_no_wheels() -> Result<()> {
let context = TestContext::new("3.9");
let python_versions = &[];
// In addition to the standard filters, swap out package names for shorter messages
let mut filters = context.filters();
filters.push((
r"incompatible-python-compatible-override-unavailable-no-wheels-",
"package-",
));
let requirements_in = context.temp_dir.child("requirements.in");
requirements_in
.write_str("incompatible-python-compatible-override-unavailable-no-wheels-a==1.0.0")?;
// Since there are no wheels for the package and it is not compatible with the
// local installation, we cannot build the source distribution to determine its
// dependencies.
let output = uv_snapshot!(filters, command(&context, python_versions)
.arg("--python-version=3.11")
, @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile requirements.in --cache-dir [CACHE_DIR] --python-version=3.11
package-a==1.0.0
# via -r requirements.in
----- stderr -----
warning: The requested Python version 3.11 is not available; 3.9.[X] will be used to build dependencies instead.
Resolved 1 package in [TIME]
"###
);
output.assert().success();
Ok(())
}
/// The user requires a package which requires a incompatible Python version, but
/// they request a compatible Python version for package resolution. There are only
/// source distributions available for the package. The user has a compatible Python
/// version installed elsewhere on their system.
/// ///
/// ```text /// ```text
/// incompatible-python-compatible-override-available-no-wheels /// incompatible-python-compatible-override-available-no-wheels
@ -228,11 +117,10 @@ fn incompatible_python_compatible_override_available_no_wheels() -> Result<()> {
requirements_in requirements_in
.write_str("incompatible-python-compatible-override-available-no-wheels-a==1.0.0")?; .write_str("incompatible-python-compatible-override-available-no-wheels-a==1.0.0")?;
// Since there is a compatible Python version available on the system, it should be // Since there is a compatible Python version available on the system, it should be used to build the source distributions.
// used to build the source distributions.
let output = uv_snapshot!(filters, command(&context, python_versions) let output = uv_snapshot!(filters, command(&context, python_versions)
.arg("--python-version=3.11") .arg("--python-version=3.11")
, @r##" , @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -243,7 +131,7 @@ fn incompatible_python_compatible_override_available_no_wheels() -> Result<()> {
----- stderr ----- ----- stderr -----
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
"## "###
); );
output.assert().success().stdout(predicate::str::contains( output.assert().success().stdout(predicate::str::contains(
@ -253,9 +141,7 @@ fn incompatible_python_compatible_override_available_no_wheels() -> Result<()> {
Ok(()) Ok(())
} }
/// The user requires a package which requires a incompatible Python version, but /// The user requires a package which requires a incompatible Python version, but they request a compatible Python version for package resolution. There is a wheel available for the package, but it does not have a compatible tag.
/// they request a compatible Python version for package resolution. There is a
/// wheel available for the package, but it does not have a compatible tag.
/// ///
/// ```text /// ```text
/// incompatible-python-compatible-override-no-compatible-wheels /// incompatible-python-compatible-override-no-compatible-wheels
@ -284,9 +170,7 @@ fn incompatible_python_compatible_override_no_compatible_wheels() -> Result<()>
requirements_in requirements_in
.write_str("incompatible-python-compatible-override-no-compatible-wheels-a==1.0.0")?; .write_str("incompatible-python-compatible-override-no-compatible-wheels-a==1.0.0")?;
// Since there are no compatible wheels for the package and it is not compatible // Since there are no compatible wheels for the package and it is not compatible with the local installation, we cannot build the source distribution to determine its dependencies. However, the source distribution includes static metadata, which we can use to determine dependencies without building the package.
// with the local installation, we cannot build the source distribution to
// determine its dependencies.
let output = uv_snapshot!(filters, command(&context, python_versions) let output = uv_snapshot!(filters, command(&context, python_versions)
.arg("--python-version=3.11") .arg("--python-version=3.11")
, @r###" , @r###"
@ -309,10 +193,7 @@ fn incompatible_python_compatible_override_no_compatible_wheels() -> Result<()>
Ok(()) Ok(())
} }
/// The user requires a package which requires a incompatible Python version, but /// The user requires a package which requires a incompatible Python version, but they request a compatible Python version for package resolution. There are only source distributions available for the compatible version of the package, but there is an incompatible version with a wheel available.
/// they request a compatible Python version for package resolution. There are only
/// source distributions available for the compatible version of the package, but
/// there is an incompatible version with a wheel available.
/// ///
/// ```text /// ```text
/// incompatible-python-compatible-override-other-wheel /// incompatible-python-compatible-override-other-wheel
@ -343,10 +224,7 @@ fn incompatible_python_compatible_override_other_wheel() -> Result<()> {
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("incompatible-python-compatible-override-other-wheel-a")?; requirements_in.write_str("incompatible-python-compatible-override-other-wheel-a")?;
// Since there are no wheels for the version of the package compatible with the // Since there are no wheels for the version of the package compatible with the target and it is not compatible with the local installation, we cannot build the source distribution to determine its dependencies. However, the source distribution includes static metadata, which we can use to determine dependencies without building the package.
// target and it is not compatible with the local installation, we cannot build the
// source distribution to determine its dependencies. The other version has wheels
// available, but is not compatible with the target version and cannot be used.
let output = uv_snapshot!(filters, command(&context, python_versions) let output = uv_snapshot!(filters, command(&context, python_versions)
.arg("--python-version=3.11") .arg("--python-version=3.11")
, @r###" , @r###"
@ -369,8 +247,108 @@ fn incompatible_python_compatible_override_other_wheel() -> Result<()> {
Ok(()) Ok(())
} }
/// The user requires a package which requires a Python version with a patch version /// The user requires a package which requires a incompatible Python version, but they request a compatible Python version for package resolution. There are only source distributions available for the package.
/// and the user provides a target version without a patch version. ///
/// ```text
/// incompatible-python-compatible-override-unavailable-no-wheels
/// ├── environment
/// │ └── python3.9
/// ├── root
/// │ └── requires a==1.0.0
/// │ └── satisfied by a-1.0.0
/// └── a
/// └── a-1.0.0
/// └── requires python>=3.10 (incompatible with environment)
/// ```
#[test]
fn incompatible_python_compatible_override_unavailable_no_wheels() -> Result<()> {
let context = TestContext::new("3.9");
let python_versions = &[];
// In addition to the standard filters, swap out package names for shorter messages
let mut filters = context.filters();
filters.push((
r"incompatible-python-compatible-override-unavailable-no-wheels-",
"package-",
));
let requirements_in = context.temp_dir.child("requirements.in");
requirements_in
.write_str("incompatible-python-compatible-override-unavailable-no-wheels-a==1.0.0")?;
// Since there are no wheels for the package and it is not compatible with the local installation, we cannot build the source distribution to determine its dependencies. However, the source distribution includes static metadata, which we can use to determine dependencies without building the package.
let output = uv_snapshot!(filters, command(&context, python_versions)
.arg("--python-version=3.11")
, @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile requirements.in --cache-dir [CACHE_DIR] --python-version=3.11
package-a==1.0.0
# via -r requirements.in
----- stderr -----
warning: The requested Python version 3.11 is not available; 3.9.[X] will be used to build dependencies instead.
Resolved 1 package in [TIME]
"###
);
output.assert().success();
Ok(())
}
/// The user requires a package which requires a Python version greater than the current version, but they use an alternative Python version for package resolution.
///
/// ```text
/// incompatible-python-compatible-override
/// ├── environment
/// │ └── python3.9
/// ├── root
/// │ └── requires a==1.0.0
/// │ └── satisfied by a-1.0.0
/// └── a
/// └── a-1.0.0
/// └── requires python>=3.10 (incompatible with environment)
/// ```
#[test]
fn incompatible_python_compatible_override() -> Result<()> {
let context = TestContext::new("3.9");
let python_versions = &[];
// In addition to the standard filters, swap out package names for shorter messages
let mut filters = context.filters();
filters.push((r"incompatible-python-compatible-override-", "package-"));
let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("incompatible-python-compatible-override-a==1.0.0")?;
let output = uv_snapshot!(filters, command(&context, python_versions)
.arg("--python-version=3.11")
, @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile requirements.in --cache-dir [CACHE_DIR] --python-version=3.11
package-a==1.0.0
# via -r requirements.in
----- stderr -----
warning: The requested Python version 3.11 is not available; 3.9.[X] will be used to build dependencies instead.
Resolved 1 package in [TIME]
"###
);
output.assert().success().stdout(predicate::str::contains(
"incompatible-python-compatible-override-a==1.0.0",
));
Ok(())
}
/// The user requires a package which requires a Python version with a patch version and the user provides a target version without a patch version.
/// ///
/// ```text /// ```text
/// python-patch-override-no-patch /// python-patch-override-no-patch
@ -396,11 +374,10 @@ fn python_patch_override_no_patch() -> Result<()> {
let requirements_in = context.temp_dir.child("requirements.in"); let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("python-patch-override-no-patch-a==1.0.0")?; requirements_in.write_str("python-patch-override-no-patch-a==1.0.0")?;
// Since the resolver is asked to solve with 3.8, the minimum compatible Python // Since the resolver is asked to solve with 3.8, the minimum compatible Python requirement is treated as 3.8.0.
// requirement is treated as 3.8.0.
let output = uv_snapshot!(filters, command(&context, python_versions) let output = uv_snapshot!(filters, command(&context, python_versions)
.arg("--python-version=3.8") .arg("--python-version=3.8")
, @r#" , @r###"
success: false success: false
exit_code: 1 exit_code: 1
----- stdout ----- ----- stdout -----
@ -411,7 +388,7 @@ fn python_patch_override_no_patch() -> Result<()> {
And because you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable. And because you require package-a==1.0.0, we can conclude that your requirements are unsatisfiable.
hint: The `--python-version` value (>=3.8.0) includes Python versions that are not supported by your dependencies (e.g., package-a==1.0.0 only supports >=3.8.4). Consider using a higher `--python-version` value. hint: The `--python-version` value (>=3.8.0) includes Python versions that are not supported by your dependencies (e.g., package-a==1.0.0 only supports >=3.8.4). Consider using a higher `--python-version` value.
"# "###
); );
output.assert().failure(); output.assert().failure();
@ -419,8 +396,7 @@ fn python_patch_override_no_patch() -> Result<()> {
Ok(()) Ok(())
} }
/// The user requires a package which requires a Python version with a patch version /// The user requires a package which requires a Python version with a patch version and the user provides a target version with a compatible patch version.
/// and the user provides a target version with a compatible patch version.
/// ///
/// ```text /// ```text
/// python-patch-override-patch-compatible /// python-patch-override-patch-compatible
@ -448,7 +424,7 @@ fn python_patch_override_patch_compatible() -> Result<()> {
let output = uv_snapshot!(filters, command(&context, python_versions) let output = uv_snapshot!(filters, command(&context, python_versions)
.arg("--python-version=3.8.0") .arg("--python-version=3.8.0")
, @r##" , @r###"
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
@ -460,7 +436,7 @@ fn python_patch_override_patch_compatible() -> Result<()> {
----- stderr ----- ----- stderr -----
warning: The requested Python version 3.8.0 is not available; 3.8.18 will be used to build dependencies instead. warning: The requested Python version 3.8.0 is not available; 3.8.18 will be used to build dependencies instead.
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
"## "###
); );
output.assert().success().stdout(predicate::str::contains( output.assert().success().stdout(predicate::str::contains(

File diff suppressed because it is too large Load Diff

View File

@ -172,7 +172,6 @@ def main(scenarios: list[Path], snapshot_update: bool = True):
for scenario in data["scenarios"]: for scenario in data["scenarios"]:
resolver_options = scenario["resolver_options"] or {} resolver_options = scenario["resolver_options"] or {}
if resolver_options.get("universal"): if resolver_options.get("universal"):
print(scenario["name"])
lock_scenarios.append(scenario) lock_scenarios.append(scenario)
elif resolver_options.get("python") is not None: elif resolver_options.get("python") is not None:
compile_scenarios.append(scenario) compile_scenarios.append(scenario)

View File

@ -1,2 +1,2 @@
chevron-blue chevron-blue
packse>=0.3.37 packse>=0.3.39

View File

@ -1,90 +1,26 @@
# This file was autogenerated by uv via the following command: # This file was autogenerated by uv via the following command:
# uv pip compile scripts/scenarios/requirements.in -o scripts/scenarios/requirements.txt --refresh-package packse -n # uv pip compile scripts/scenarios/requirements.in -o scripts/scenarios/requirements.txt --refresh-package packse -n
certifi==2024.2.2
# via requests
cffi==1.16.0
# via cryptography
charset-normalizer==3.3.2
# via requests
chevron-blue==0.2.1 chevron-blue==0.2.1
# via # via
# -r scripts/scenarios/requirements.in # -r scripts/scenarios/requirements.in
# packse # packse
cryptography==42.0.7
# via secretstorage
docutils==0.21.2
# via readme-renderer
hatchling==1.24.2 hatchling==1.24.2
# via packse # via packse
idna==3.7
# via requests
importlib-metadata==7.1.0
# via twine
jaraco-classes==3.4.0
# via keyring
jaraco-context==5.3.0
# via keyring
jaraco-functools==4.0.1
# via keyring
jeepney==0.8.0
# via
# keyring
# secretstorage
keyring==25.1.0
# via twine
markdown-it-py==3.0.0
# via rich
mdurl==0.1.2
# via markdown-it-py
more-itertools==10.2.0
# via
# jaraco-classes
# jaraco-functools
msgspec==0.18.6 msgspec==0.18.6
# via packse # via packse
nh3==0.2.17
# via readme-renderer
packaging==24.0 packaging==24.0
# via hatchling # via hatchling
packse==0.3.37 packse==0.3.39
# via -r scripts/scenarios/requirements.in # via -r scripts/scenarios/requirements.in
pathspec==0.12.1 pathspec==0.12.1
# via hatchling # via hatchling
pkginfo==1.10.0
# via twine
pluggy==1.5.0 pluggy==1.5.0
# via hatchling # via hatchling
pycparser==2.22
# via cffi
pygments==2.17.2
# via
# readme-renderer
# rich
pyyaml==6.0.1 pyyaml==6.0.1
# via packse # via packse
readme-renderer==43.0
# via twine
requests==2.31.0
# via
# requests-toolbelt
# twine
requests-toolbelt==1.0.0
# via twine
rfc3986==2.0.0
# via twine
rich==13.7.1
# via twine
secretstorage==3.3.3
# via keyring
setuptools==69.5.1 setuptools==69.5.1
# via packse # via packse
trove-classifiers==2024.4.10 trove-classifiers==2024.4.10
# via hatchling # via hatchling
twine==4.0.2 uv==0.4.29
# via packse # via packse
urllib3==2.2.1
# via
# requests
# twine
zipp==3.18.1
# via importlib-metadata