From 0b7ea5b949f7fa1f61133dae6fcbe6722f7fa938 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 1 Apr 2026 19:02:50 +0000 Subject: [PATCH] Clarify that `exclude-newer` compares against each artifact's upload time MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The docs previously said "distributions published before a specific date" which was ambiguous — users were unsure whether it checked against each artifact's upload time or the package version's release date. Added explicit language clarifying that the date is compared against the upload time of each individual distribution artifact (i.e., when each file was uploaded to the package index). https://claude.ai/code/session_01Pvers6eVL8RNSFYoXEvncz --- crates/uv-cli/src/lib.rs | 24 ++++++++++++++++++++++++ crates/uv-settings/src/settings.rs | 8 ++++++++ docs/concepts/resolution.md | 6 ++++-- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/crates/uv-cli/src/lib.rs b/crates/uv-cli/src/lib.rs index ab86c9e53bb3e..793977eae464d 100644 --- a/crates/uv-cli/src/lib.rs +++ b/crates/uv-cli/src/lib.rs @@ -3232,6 +3232,10 @@ pub struct VenvArgs { /// Limit candidate packages to those that were uploaded prior to the given date. /// + /// The date is compared against the upload time of each individual distribution artifact + /// (i.e., when each file was uploaded to the package index), not the release date of the + /// package version. + /// /// Accepts RFC 3339 timestamps (e.g., `2006-12-02T02:07:43Z`), local dates in the same format /// (e.g., `2006-12-02`) resolved based on your system's configured time zone, a "friendly" /// duration (e.g., `24 hours`, `1 week`, `30 days`), or an ISO 8601 duration (e.g., `PT24H`, @@ -6043,6 +6047,10 @@ pub struct ToolUpgradeArgs { /// Limit candidate packages to those that were uploaded prior to the given date. /// + /// The date is compared against the upload time of each individual distribution artifact + /// (i.e., when each file was uploaded to the package index), not the release date of the + /// package version. + /// /// Accepts RFC 3339 timestamps (e.g., `2006-12-02T02:07:43Z`), local dates in the same format /// (e.g., `2006-12-02`) resolved based on your system's configured time zone, a "friendly" /// duration (e.g., `24 hours`, `1 week`, `30 days`), or an ISO 8601 duration (e.g., `PT24H`, @@ -7098,6 +7106,10 @@ pub struct InstallerArgs { /// Limit candidate packages to those that were uploaded prior to the given date. /// + /// The date is compared against the upload time of each individual distribution artifact + /// (i.e., when each file was uploaded to the package index), not the release date of the + /// package version. + /// /// Accepts RFC 3339 timestamps (e.g., `2006-12-02T02:07:43Z`), local dates in the same format /// (e.g., `2006-12-02`) resolved based on your system's configured time zone, a "friendly" /// duration (e.g., `24 hours`, `1 week`, `30 days`), or an ISO 8601 duration (e.g., `PT24H`, @@ -7336,6 +7348,10 @@ pub struct ResolverArgs { /// Limit candidate packages to those that were uploaded prior to the given date. /// + /// The date is compared against the upload time of each individual distribution artifact + /// (i.e., when each file was uploaded to the package index), not the release date of the + /// package version. + /// /// Accepts RFC 3339 timestamps (e.g., `2006-12-02T02:07:43Z`), local dates in the same format /// (e.g., `2006-12-02`) resolved based on your system's configured time zone, a "friendly" /// duration (e.g., `24 hours`, `1 week`, `30 days`), or an ISO 8601 duration (e.g., `PT24H`, @@ -7572,6 +7588,10 @@ pub struct ResolverInstallerArgs { /// Limit candidate packages to those that were uploaded prior to the given date. /// + /// The date is compared against the upload time of each individual distribution artifact + /// (i.e., when each file was uploaded to the package index), not the release date of the + /// package version. + /// /// Accepts RFC 3339 timestamps (e.g., `2006-12-02T02:07:43Z`), local dates in the same format /// (e.g., `2006-12-02`) resolved based on your system's configured time zone, a "friendly" /// duration (e.g., `24 hours`, `1 week`, `30 days`), or an ISO 8601 duration (e.g., `PT24H`, @@ -7703,6 +7723,10 @@ pub struct FetchArgs { /// Limit candidate packages to those that were uploaded prior to the given date. /// + /// The date is compared against the upload time of each individual distribution artifact + /// (i.e., when each file was uploaded to the package index), not the release date of the + /// package version. + /// /// Accepts RFC 3339 timestamps (e.g., `2006-12-02T02:07:43Z`), local dates in the same format /// (e.g., `2006-12-02`) resolved based on your system's configured time zone, a "friendly" /// duration (e.g., `24 hours`, `1 week`, `30 days`), or an ISO 8601 duration (e.g., `PT24H`, diff --git a/crates/uv-settings/src/settings.rs b/crates/uv-settings/src/settings.rs index 6b9012dfc0f7d..5521cc14efcca 100644 --- a/crates/uv-settings/src/settings.rs +++ b/crates/uv-settings/src/settings.rs @@ -894,6 +894,10 @@ pub struct ResolverInstallerSchema { pub extra_build_variables: Option, /// Limit candidate packages to those that were uploaded prior to the given date. /// + /// The date is compared against the upload time of each individual distribution artifact + /// (i.e., when each file was uploaded to the package index), not the release date of the + /// package version. + /// /// Accepts RFC 3339 timestamps (e.g., `2006-12-02T02:07:43Z`), a "friendly" duration (e.g., /// `24 hours`, `1 week`, `30 days`), or an ISO 8601 duration (e.g., `PT24H`, `P7D`, `P30D`). /// @@ -1702,6 +1706,10 @@ pub struct PipOptions { pub universal: Option, /// Limit candidate packages to those that were uploaded prior to a given point in time. /// + /// The date is compared against the upload time of each individual distribution artifact + /// (i.e., when each file was uploaded to the package index), not the release date of the + /// package version. + /// /// Accepts a superset of [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339.html) (e.g., /// `2006-12-02T02:07:43Z`). A full timestamp is required to ensure that the resolver will /// behave consistently across timezones. diff --git a/docs/concepts/resolution.md b/docs/concepts/resolution.md index 742a66a5ed1c7..e8d2ccd059681 100644 --- a/docs/concepts/resolution.md +++ b/docs/concepts/resolution.md @@ -680,9 +680,11 @@ with an unexpected error. ## Reproducible resolutions -uv supports an `--exclude-newer` option to limit resolution to distributions published before a +uv supports an `--exclude-newer` option to limit resolution to distributions uploaded before a specific date, allowing reproduction of installations regardless of new package releases. The date -may be specified as an [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339.html) timestamp (e.g., +is compared against the upload time of each individual distribution artifact (i.e., when each file +was uploaded to the package index), not the release date of the package version. The date may be +specified as an [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339.html) timestamp (e.g., `2006-12-02T02:07:43Z`) or a local date in the same format (e.g., `2006-12-02`) in your system's configured time zone.