Group resolver options in lockfile (#5853)

There are three options that determine resolver behavior:

* resolution mode
* prerelease mode
* exclude newer

They are different from the other top level options: If they mismatch,
we recreate the resolution. To distinguish them from the rest of the
lockfile, we group them under an `[options]` header.

1/3 for #4893
This commit is contained in:
konsti 2024-08-07 20:11:59 +02:00 committed by GitHub
parent 8c6b667eeb
commit a3569b5b96
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 226 additions and 68 deletions

View file

@ -59,12 +59,8 @@ pub struct Lock {
fork_markers: Option<BTreeSet<MarkerTree>>, fork_markers: Option<BTreeSet<MarkerTree>>,
/// The range of supported Python versions. /// The range of supported Python versions.
requires_python: Option<RequiresPython>, requires_python: Option<RequiresPython>,
/// The [`ResolutionMode`] used to generate this lock. /// We discard the lockfile if these options match.
resolution_mode: ResolutionMode, options: ResolverOptions,
/// The [`PrereleaseMode`] used to generate this lock.
prerelease_mode: PrereleaseMode,
/// The [`ExcludeNewer`] used to generate this lock.
exclude_newer: Option<ExcludeNewer>,
/// The actual locked version and their metadata. /// The actual locked version and their metadata.
distributions: Vec<Distribution>, distributions: Vec<Distribution>,
/// A map from distribution ID to index in `distributions`. /// A map from distribution ID to index in `distributions`.
@ -161,14 +157,16 @@ impl Lock {
let distributions = locked_dists.into_values().collect(); let distributions = locked_dists.into_values().collect();
let requires_python = graph.requires_python.clone(); let requires_python = graph.requires_python.clone();
let options = graph.options; let options = ResolverOptions {
resolution_mode: graph.options.resolution_mode,
prerelease_mode: graph.options.prerelease_mode,
exclude_newer: graph.options.exclude_newer,
};
let lock = Self::new( let lock = Self::new(
VERSION, VERSION,
distributions, distributions,
requires_python, requires_python,
options.resolution_mode, options,
options.prerelease_mode,
options.exclude_newer,
graph.fork_markers.clone(), graph.fork_markers.clone(),
)?; )?;
Ok(lock) Ok(lock)
@ -179,9 +177,7 @@ impl Lock {
version: u32, version: u32,
mut distributions: Vec<Distribution>, mut distributions: Vec<Distribution>,
requires_python: Option<RequiresPython>, requires_python: Option<RequiresPython>,
resolution_mode: ResolutionMode, options: ResolverOptions,
prerelease_mode: PrereleaseMode,
exclude_newer: Option<ExcludeNewer>,
fork_markers: Option<BTreeSet<MarkerTree>>, fork_markers: Option<BTreeSet<MarkerTree>>,
) -> Result<Self, LockError> { ) -> Result<Self, LockError> {
// Put all dependencies for each distribution in a canonical order and // Put all dependencies for each distribution in a canonical order and
@ -338,9 +334,7 @@ impl Lock {
version, version,
fork_markers, fork_markers,
requires_python, requires_python,
resolution_mode, options,
prerelease_mode,
exclude_newer,
distributions, distributions,
by_id, by_id,
}) })
@ -363,17 +357,17 @@ impl Lock {
/// Returns the resolution mode used to generate this lock. /// Returns the resolution mode used to generate this lock.
pub fn resolution_mode(&self) -> ResolutionMode { pub fn resolution_mode(&self) -> ResolutionMode {
self.resolution_mode self.options.resolution_mode
} }
/// Returns the pre-release mode used to generate this lock. /// Returns the pre-release mode used to generate this lock.
pub fn prerelease_mode(&self) -> PrereleaseMode { pub fn prerelease_mode(&self) -> PrereleaseMode {
self.prerelease_mode self.options.prerelease_mode
} }
/// Returns the exclude newer setting used to generate this lock. /// Returns the exclude newer setting used to generate this lock.
pub fn exclude_newer(&self) -> Option<ExcludeNewer> { pub fn exclude_newer(&self) -> Option<ExcludeNewer> {
self.exclude_newer self.options.exclude_newer
} }
/// If this lockfile was built from a forking resolution with non-identical forks, return the /// If this lockfile was built from a forking resolution with non-identical forks, return the
@ -491,14 +485,25 @@ impl Lock {
// Write the settings that were used to generate the resolution. // Write the settings that were used to generate the resolution.
// This enables us to invalidate the lockfile if the user changes // This enables us to invalidate the lockfile if the user changes
// their settings. // their settings.
if self.resolution_mode != ResolutionMode::default() { if self.options != ResolverOptions::default() {
doc.insert("resolution-mode", value(self.resolution_mode.to_string())); let mut options_table = Table::new();
}
if self.prerelease_mode != PrereleaseMode::default() { if self.options.resolution_mode != ResolutionMode::default() {
doc.insert("prerelease-mode", value(self.prerelease_mode.to_string())); options_table.insert(
} "resolution-mode",
if let Some(exclude_newer) = self.exclude_newer { value(self.options.resolution_mode.to_string()),
doc.insert("exclude-newer", value(exclude_newer.to_string())); );
}
if self.options.prerelease_mode != PrereleaseMode::default() {
options_table.insert(
"prerelease-mode",
value(self.options.prerelease_mode.to_string()),
);
}
if let Some(exclude_newer) = self.options.exclude_newer {
options_table.insert("exclude-newer", value(exclude_newer.to_string()));
}
doc.insert("options", Item::Table(options_table));
} }
// Count the number of distributions for each package name. When // Count the number of distributions for each package name. When
@ -603,6 +608,20 @@ impl Lock {
} }
} }
/// We discard the lockfile if these options match.
#[derive(Clone, Debug, Default, serde::Deserialize, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
struct ResolverOptions {
/// The [`ResolutionMode`] used to generate this lock.
#[serde(default)]
resolution_mode: ResolutionMode,
/// The [`PrereleaseMode`] used to generate this lock.
#[serde(default)]
prerelease_mode: PrereleaseMode,
/// The [`ExcludeNewer`] used to generate this lock.
exclude_newer: Option<ExcludeNewer>,
}
#[derive(Clone, Debug, serde::Deserialize)] #[derive(Clone, Debug, serde::Deserialize)]
#[serde(rename_all = "kebab-case")] #[serde(rename_all = "kebab-case")]
struct LockWire { struct LockWire {
@ -613,12 +632,9 @@ struct LockWire {
/// forks in the lockfile so we can recreate them in subsequent resolutions. /// forks in the lockfile so we can recreate them in subsequent resolutions.
#[serde(rename = "environment-markers")] #[serde(rename = "environment-markers")]
fork_markers: Option<BTreeSet<MarkerTree>>, fork_markers: Option<BTreeSet<MarkerTree>>,
/// We discard the lockfile if these options match.
#[serde(default)] #[serde(default)]
resolution_mode: ResolutionMode, options: ResolverOptions,
#[serde(default)]
prerelease_mode: PrereleaseMode,
#[serde(default)]
exclude_newer: Option<ExcludeNewer>,
#[serde(rename = "distribution", default)] #[serde(rename = "distribution", default)]
distributions: Vec<DistributionWire>, distributions: Vec<DistributionWire>,
} }
@ -629,9 +645,7 @@ impl From<Lock> for LockWire {
version: lock.version, version: lock.version,
requires_python: lock.requires_python, requires_python: lock.requires_python,
fork_markers: lock.fork_markers, fork_markers: lock.fork_markers,
resolution_mode: lock.resolution_mode, options: lock.options,
prerelease_mode: lock.prerelease_mode,
exclude_newer: lock.exclude_newer,
distributions: lock distributions: lock
.distributions .distributions
.into_iter() .into_iter()
@ -671,9 +685,7 @@ impl TryFrom<LockWire> for Lock {
wire.version, wire.version,
distributions, distributions,
wire.requires_python, wire.requires_python,
wire.resolution_mode, wire.options,
wire.prerelease_mode,
wire.exclude_newer,
wire.fork_markers, wire.fork_markers,
) )
} }

View file

@ -7,9 +7,11 @@ Ok(
version: 1, version: 1,
fork_markers: None, fork_markers: None,
requires_python: None, requires_python: None,
resolution_mode: Highest, options: ResolverOptions {
prerelease_mode: IfNecessaryOrExplicit, resolution_mode: Highest,
exclude_newer: None, prerelease_mode: IfNecessaryOrExplicit,
exclude_newer: None,
},
distributions: [ distributions: [
Distribution { Distribution {
id: DistributionId { id: DistributionId {

View file

@ -7,9 +7,11 @@ Ok(
version: 1, version: 1,
fork_markers: None, fork_markers: None,
requires_python: None, requires_python: None,
resolution_mode: Highest, options: ResolverOptions {
prerelease_mode: IfNecessaryOrExplicit, resolution_mode: Highest,
exclude_newer: None, prerelease_mode: IfNecessaryOrExplicit,
exclude_newer: None,
},
distributions: [ distributions: [
Distribution { Distribution {
id: DistributionId { id: DistributionId {

View file

@ -7,9 +7,11 @@ Ok(
version: 1, version: 1,
fork_markers: None, fork_markers: None,
requires_python: None, requires_python: None,
resolution_mode: Highest, options: ResolverOptions {
prerelease_mode: IfNecessaryOrExplicit, resolution_mode: Highest,
exclude_newer: None, prerelease_mode: IfNecessaryOrExplicit,
exclude_newer: None,
},
distributions: [ distributions: [
Distribution { Distribution {
id: DistributionId { id: DistributionId {

View file

@ -7,9 +7,11 @@ Ok(
version: 1, version: 1,
fork_markers: None, fork_markers: None,
requires_python: None, requires_python: None,
resolution_mode: Highest, options: ResolverOptions {
prerelease_mode: IfNecessaryOrExplicit, resolution_mode: Highest,
exclude_newer: None, prerelease_mode: IfNecessaryOrExplicit,
exclude_newer: None,
},
distributions: [ distributions: [
Distribution { Distribution {
id: DistributionId { id: DistributionId {

View file

@ -7,9 +7,11 @@ Ok(
version: 1, version: 1,
fork_markers: None, fork_markers: None,
requires_python: None, requires_python: None,
resolution_mode: Highest, options: ResolverOptions {
prerelease_mode: IfNecessaryOrExplicit, resolution_mode: Highest,
exclude_newer: None, prerelease_mode: IfNecessaryOrExplicit,
exclude_newer: None,
},
distributions: [ distributions: [
Distribution { Distribution {
id: DistributionId { id: DistributionId {

View file

@ -7,9 +7,11 @@ Ok(
version: 1, version: 1,
fork_markers: None, fork_markers: None,
requires_python: None, requires_python: None,
resolution_mode: Highest, options: ResolverOptions {
prerelease_mode: IfNecessaryOrExplicit, resolution_mode: Highest,
exclude_newer: None, prerelease_mode: IfNecessaryOrExplicit,
exclude_newer: None,
},
distributions: [ distributions: [
Distribution { Distribution {
id: DistributionId { id: DistributionId {

View file

@ -7,9 +7,11 @@ Ok(
version: 1, version: 1,
fork_markers: None, fork_markers: None,
requires_python: None, requires_python: None,
resolution_mode: Highest, options: ResolverOptions {
prerelease_mode: IfNecessaryOrExplicit, resolution_mode: Highest,
exclude_newer: None, prerelease_mode: IfNecessaryOrExplicit,
exclude_newer: None,
},
distributions: [ distributions: [
Distribution { Distribution {
id: DistributionId { id: DistributionId {

View file

@ -7,9 +7,11 @@ Ok(
version: 1, version: 1,
fork_markers: None, fork_markers: None,
requires_python: None, requires_python: None,
resolution_mode: Highest, options: ResolverOptions {
prerelease_mode: IfNecessaryOrExplicit, resolution_mode: Highest,
exclude_newer: None, prerelease_mode: IfNecessaryOrExplicit,
exclude_newer: None,
},
distributions: [ distributions: [
Distribution { Distribution {
id: DistributionId { id: DistributionId {

View file

@ -7,9 +7,11 @@ Ok(
version: 1, version: 1,
fork_markers: None, fork_markers: None,
requires_python: None, requires_python: None,
resolution_mode: Highest, options: ResolverOptions {
prerelease_mode: IfNecessaryOrExplicit, resolution_mode: Highest,
exclude_newer: None, prerelease_mode: IfNecessaryOrExplicit,
exclude_newer: None,
},
distributions: [ distributions: [
Distribution { Distribution {
id: DistributionId { id: DistributionId {

View file

@ -7,9 +7,11 @@ Ok(
version: 1, version: 1,
fork_markers: None, fork_markers: None,
requires_python: None, requires_python: None,
resolution_mode: Highest, options: ResolverOptions {
prerelease_mode: IfNecessaryOrExplicit, resolution_mode: Highest,
exclude_newer: None, prerelease_mode: IfNecessaryOrExplicit,
exclude_newer: None,
},
distributions: [ distributions: [
Distribution { Distribution {
id: DistributionId { id: DistributionId {

View file

@ -212,6 +212,8 @@ fn root_package_splits_transitive_too() -> Result<()> {
"python_version < '3.12'", "python_version < '3.12'",
"python_version >= '3.12'", "python_version >= '3.12'",
] ]
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -386,6 +388,8 @@ fn root_package_splits_other_dependencies_too() -> Result<()> {
"python_version < '3.12'", "python_version < '3.12'",
"python_version >= '3.12'", "python_version >= '3.12'",
] ]
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -531,6 +535,8 @@ fn branching_between_registry_and_direct_url() -> Result<()> {
"python_version < '3.12'", "python_version < '3.12'",
"python_version >= '3.12'", "python_version >= '3.12'",
] ]
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -608,6 +614,8 @@ fn branching_urls_of_different_sources_disjoint() -> Result<()> {
"python_version < '3.12'", "python_version < '3.12'",
"python_version >= '3.12'", "python_version >= '3.12'",
] ]
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -723,6 +731,8 @@ fn dont_pre_visit_url_packages() -> Result<()> {
assert_snapshot!(fs_err::read_to_string(context.temp_dir.join("uv.lock"))?, @r###" assert_snapshot!(fs_err::read_to_string(context.temp_dir.join("uv.lock"))?, @r###"
version = 1 version = 1
requires-python = ">=3.11, <3.13" requires-python = ">=3.11, <3.13"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]

View file

@ -69,6 +69,8 @@ fn add_registry() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -222,6 +224,8 @@ fn add_git() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -427,6 +431,8 @@ fn add_git_raw() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -639,6 +645,8 @@ fn add_unnamed() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -732,6 +740,8 @@ fn add_remove_dev() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -848,6 +858,8 @@ fn add_remove_dev() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -933,6 +945,8 @@ fn add_remove_optional() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1050,6 +1064,8 @@ fn add_remove_optional() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1174,6 +1190,8 @@ fn add_remove_workspace() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1247,6 +1265,8 @@ fn add_remove_workspace() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1356,6 +1376,8 @@ fn add_workspace_editable() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1551,6 +1573,8 @@ fn update() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1818,6 +1842,8 @@ fn add_no_clean() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1950,6 +1976,8 @@ fn remove_registry() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2569,6 +2597,8 @@ fn add_lower_bound_optional() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2774,6 +2804,8 @@ fn add_virtual() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]

View file

@ -66,6 +66,8 @@ fn lock_wheel_registry() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -264,6 +266,8 @@ fn lock_sdist_git() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -747,6 +751,8 @@ fn lock_wheel_url() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -857,6 +863,8 @@ fn lock_sdist_url() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -968,6 +976,8 @@ fn lock_project_extra() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1194,6 +1204,8 @@ fn lock_dependency_extra() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1392,6 +1404,8 @@ fn lock_conditional_dependency_extra() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.7" requires-python = ">=3.7"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1665,6 +1679,8 @@ fn lock_dependency_non_existent_extra() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1847,6 +1863,8 @@ fn lock_upgrade_log() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -1923,6 +1941,8 @@ fn lock_upgrade_log() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2008,6 +2028,8 @@ fn lock_upgrade_log_multi_version() -> Result<()> {
"sys_platform == 'win32'", "sys_platform == 'win32'",
"sys_platform != 'win32'", "sys_platform != 'win32'",
] ]
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2088,6 +2110,8 @@ fn lock_upgrade_log_multi_version() -> Result<()> {
"sys_platform == 'win32'", "sys_platform == 'win32'",
"sys_platform != 'win32'", "sys_platform != 'win32'",
] ]
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2158,6 +2182,8 @@ fn lock_preference() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2214,6 +2240,8 @@ fn lock_preference() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2256,6 +2284,8 @@ fn lock_preference() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2318,6 +2348,8 @@ fn lock_git_sha() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2375,6 +2407,8 @@ fn lock_git_sha() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2416,6 +2450,8 @@ fn lock_git_sha() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2515,6 +2551,8 @@ fn lock_requires_python() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.7" requires-python = ">=3.7"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2664,6 +2702,8 @@ fn lock_requires_python() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.7.9" requires-python = ">=3.7.9"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2803,6 +2843,8 @@ fn lock_requires_python() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -2944,6 +2986,8 @@ fn lock_requires_python_wheels() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12, <3.13" requires-python = ">=3.12, <3.13"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -3014,6 +3058,8 @@ fn lock_requires_python_wheels() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.11, <3.12" requires-python = ">=3.11, <3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -3109,6 +3155,8 @@ fn lock_requires_python_star() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.11, <3.12" requires-python = ">=3.11, <3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -3219,6 +3267,8 @@ fn lock_requires_python_pre() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.11" requires-python = ">=3.11"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -3328,6 +3378,8 @@ fn lock_requires_python_unbounded() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = "<=3.12" requires-python = "<=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -3415,6 +3467,8 @@ fn lock_python_version_marker_complement() -> Result<()> {
"python_full_version > '3.10' and python_version < '3.10' and python_version > '3.10'", "python_full_version > '3.10' and python_version < '3.10' and python_version > '3.10'",
"python_full_version > '3.10' and python_version > '3.10'", "python_full_version > '3.10' and python_version > '3.10'",
] ]
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -3500,6 +3554,8 @@ fn lock_dev() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -3601,6 +3657,8 @@ fn lock_conditional_unconditional() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -3663,6 +3721,8 @@ fn lock_multiple_markers() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -3765,6 +3825,8 @@ fn relative_and_absolute_paths() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.11, <3.13" requires-python = ">=3.11, <3.13"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -3829,6 +3891,8 @@ fn lock_cycles() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -4028,6 +4092,8 @@ fn lock_new_extras() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -4138,6 +4204,8 @@ fn lock_new_extras() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -4366,6 +4434,8 @@ fn lock_resolution_mode() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -4443,6 +4513,8 @@ fn lock_resolution_mode() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
resolution-mode = "lowest-direct" resolution-mode = "lowest-direct"
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
@ -4594,6 +4666,8 @@ fn lock_same_version_multiple_urls() -> Result<()> {
"sys_platform == 'darwin'", "sys_platform == 'darwin'",
"sys_platform != 'darwin'", "sys_platform != 'darwin'",
] ]
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -4775,6 +4849,8 @@ fn lock_exclusion() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -4878,6 +4954,8 @@ fn lock_dev_transitive() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -4965,6 +5043,8 @@ fn lock_redact() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -5083,6 +5163,8 @@ fn lock_no_sources() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]
@ -5137,6 +5219,8 @@ fn lock_no_sources() -> Result<()> {
lock, @r###" lock, @r###"
version = 1 version = 1
requires-python = ">=3.12" requires-python = ">=3.12"
[options]
exclude-newer = "2024-03-25 00:00:00 UTC" exclude-newer = "2024-03-25 00:00:00 UTC"
[[distribution]] [[distribution]]