Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions docs/reference/pixi_manifest.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ The value may be specified in the following formats:

* As an [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339.html) timestamp (e.g. `2023-10-01T00:00:00Z`)
* As a date in `YYYY-MM-DD` format (e.g. `2026-03-30`). This is interpreted as the start of the following day in UTC, so `2026-03-30` means `2026-03-31T00:00:00Z`.
* As a relative duration (e.g. `7days`, `1h30m`, `30m`). The duration is relative to the current time at solve time.
* As a relative duration (e.g. `7d`, `1h30m`, `30m`). Relative durations support everything [`humantime`](https://docs.rs/humantime/latest/humantime/fn.parse_duration.html) accepts. The duration is relative to the current time at solve time.

When using a relative duration, the lock file will be re-solved when a package is not included in the cutoff date.

Expand All @@ -315,6 +315,16 @@ For PyPI packages, the workspace-level cutoff can be overridden per package in t
This is especially useful when a package is pinned to a separate `channel` or `index` and needs a
different cutoff than the rest of the workspace.

!!! note "Satisfiability checks with `exclude-newer`"
For conda packages, pixi stores the package timestamp in `pixi.lock` and can use it during
lock-file satisfiability checks. That means changing `exclude-newer` can trigger a re-solve
when a locked conda package is newer than the configured cutoff.

For PyPI packages, pixi does not currently store upload timestamps in `pixi.lock`. As a
result, changes to `exclude-newer` or `[pypi-exclude-newer]` do not trigger the same
lock-file satisfiability check for already locked PyPI packages. Run `pixi update` to
re-resolve PyPI packages and ensure the lock file respects the configured cutoff.

```toml
[workspace]
exclude-newer = "2025-01-01"
Expand All @@ -323,14 +333,14 @@ exclude-newer = "2025-01-01"
pytorch-cpu = { version = ">=2.10.0", channel = "pytorch" }

[exclude-newer]
pytorch-cpu = "0 days"
openssl = "0 days"
pytorch-cpu = "0d"
openssl = "0d"

[pypi-dependencies]
torch = { version = ">=2.10.0", index = "https://download.pytorch.org/whl/cu124" }

[pypi-exclude-newer]
torch = "0 days"
torch = "0d"
```

!!! note
Expand Down
4 changes: 2 additions & 2 deletions docs/switching_from/uv.md
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ Unlike uv, Pixi can also override `exclude-newer` on a per-channel level:

```toml
[workspace]
exclude-newer = "7 days"
exclude-newer = "7d"
channels = [
{ channel = "my-internal-channel", exclude-newer = "0d" },
"conda-forge",
Expand All @@ -369,7 +369,7 @@ Unlike uv, Pixi can also override `exclude-newer` on a per-channel level:

```toml
[tool.pixi.workspace]
exclude-newer = "7 days"
exclude-newer = "7d"
channels = [
{ channel = "my-internal-channel", exclude-newer = "0d" },
"conda-forge",
Expand Down