Commit Graph

629 Commits

Author SHA1 Message Date
Zanie Blue
41c96d43c9 Reduce the number of CI checks run on pull requests (#17471)
We're hitting GitHub concurrency limits (organization wide limit of 60
jobs), and while we could move to paid runners with high concurrency
limits, I'd prefer to stay on the free runners and some of these jobs,
e.g., `test-system`, require GitHub runners.

This moves a bunch of our extended testing behind a label, e.g.,
`test:extended` or `test:system`, and only runs them on `main` by
default.
2026-01-14 13:12:11 -06:00
Zanie Blue
b1668eb2d8 Add timeouts to Docker build jobs (#17473)
These are hitting OIDC failures on Depot and run for 30m consuming a lot
of CI concurrency.

These timeouts are based on historical data retrieved by Claude.
2026-01-14 18:55:57 +00:00
Zanie Blue
a4327c21b4 Use a Depot runner for plan jobs (#17472)
This job is in the hot path for all other CI jobs, let's avoid letting
it be blocked by GitHub concurrency limits and such.
2026-01-14 18:14:43 +00:00
Zanie Blue
5a5bb69d2c Skip benchmarks when Rust code is unchanged (#17454)
Ignore that the file matching is a little redundant with other checks,
I'll consolidate those in a subsequent pull request.

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-14 15:44:55 +00:00
Zanie Blue
10c93553e0 Update the binary build workflow names to just show targets (#17453)
I found these really noisy with the default names which show the whole
matrix entry.
2026-01-14 07:36:09 -06:00
Zanie Blue
e8f020754a Only save Rust cache on main or when cache-relevant files change (#17452)
The goal here is to reduce cache consumption and contention by avoiding
cache saves on pull requests unless the pull request makes a change that
requires a new cache entry.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 07:35:45 -06:00
Zanie Blue
6efa51134d Reduce cache contention due to RUST_BACKTRACE environment variable (#17451)
This is included in the Rust cache key hash because it is prefixed with
`RUST_` but has no affect on compilation. This invalidates caches that
could be shared across jobs.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 07:35:25 -06:00
Zanie Blue
9ab2b5fe5f Use ubuntu-slim for a subset of jobs (#17450)
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-13 17:16:31 -06:00
Zanie Blue
11d46df064 Update "Sync Python downloads" job to use Rust cache (#17446)
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-13 21:56:09 +00:00
Zanie Blue
3c72e56d92 Use constants for latest Python versions in tests (#17444)
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-13 21:36:45 +00:00
Zanie Blue
c43fb6103b Speedup walltime benchmarks by splitting build and run jobs (#17393)
Copies astral-sh/ruff#22126

We can use a larger _and_ less expensive runner for the build step.

Total runtime went from 18m -> 15m and most of that time is no longer on
the benchmark runner.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-13 09:49:07 -06:00
Zanie Blue
f9ee1c2bf4 Add nextest partitioning to Windows tests (#17421)
Yet another attempt at #5714 to see if it improves CI times now that
Windows test times have increased

I think this is worth it now

```
main   (1 shard):  13m 46s
branch (2 shards): 10m 31s
branch (3 shards):  7m 34s
```

total time (a.k.a., cost increase)

```
main   (1 shard):  13m 46s
branch (2 shards): 20m 18s
branch (3 shards): 21m 32s
```

As in #875, we could explore moving the build step before the sharded
test runs. The build is 3m of the runtime, but I think artifact transfer
and runner startup time was too expensive last time and I don't expect
it to be faster. It might save a bit on CI cost, but I'm not super
worried about that.

I chose three shards due to a reasonable reduction in per-shard runtime
without a big increase in total runtime (compared to two shards). I
think since half of the shard runtime is fixed build time (vs reducable
test time), going up to more shards would be wasteful.

We use a hash-based strategy for test splitting, which means adding
tests will never move tests across shards.

I moved _off_ of the Depot runner because the "checkout" setup is taking
_way_ too long, about 120s more than the GitHub one which, once we split
over multiple shards, overcomes the speed benefits of the Depot runners.

The downsides here are:

1. Increased total CI time and therefore increased cost
2. GitHub runners are more expensive than Depot runners
3. Failing tests can be split across multiple shards, requiring more
GitHub UI navigation

(1) The runtime is unacceptably slow and I think the cost increase is
fairly marginal
(2) We can move back to Depot runners once they resolve the specific
performance issue
(3) Failing tests on Windows without failing tests on Linux are fairly
rare and should often be isolated to a single shard

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-13 09:20:06 -06:00
Zanie Blue
e9755bceb3 Report failing jobs when "all required jobs check" fails (#17433)
You can tell this by looking at the JSON input but that's not quite
friendly enough for me.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-13 01:09:18 +00:00
Zanie Blue
824706ca87 Move Windows registry test from test-system to test-integration (#17432)
The Windows registry test (PEP 514 integration) tests Python
installation registration functionality rather than system Python
detection like the other tests in test-system, so it fits better in
test-integration.

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-13 00:49:45 +00:00
Zanie Blue
7fa30ab278 Move release plan checks to a separate workflow (#17422)
We get a bunch of redundant skipped `Release / Build binary ...` jobs in
CI otherwise, and I would rather the release workflow didn't have a pull
request trigger at all.

Follows #17388
2026-01-12 14:49:40 -06:00
Zanie Blue
903dd292b3 Split up ci.yml (#17388)
This file is too big for an LLM context window and several contributors
have complained about it being too scary to touch.

This also gets us collapsible sections in the UI.

I renamed some jobs for clarity in the meantime. And added a meta-job
for required checks passing so we can avoid churn in our "Settings" when
we change job names.

Note this was entirely refactored by Claude.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 12:34:30 -06:00
Zanie Blue
0da6f263a9 Only run trampoline checks in CI when trampolines change (#17386)
I'm trying to avoid wasting CI time.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-12 09:17:05 -06:00
renovate[bot]
ae1933f20f Update dependency astral-sh/uv to v0.9.24 (#17409)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [astral-sh/uv](https://redirect.github.com/astral-sh/uv) | uses-with |
patch | `0.9.21` → `0.9.24` |

---

### Release Notes

<details>
<summary>astral-sh/uv (astral-sh/uv)</summary>

###
[`v0.9.24`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0924)

[Compare
Source](https://redirect.github.com/astral-sh/uv/compare/0.9.23...0.9.24)

Released on 2026-01-09.

##### Bug fixes

- Fix handling of `UV_NO_SYNC=1 uv run ...`
([#&#8203;17391](https://redirect.github.com/astral-sh/uv/pull/17391))
- Rebuild dynamic distribution when version changes with `--no-cache`
([#&#8203;17387](https://redirect.github.com/astral-sh/uv/pull/17387))

##### Documentation

- Add Rust language classifier
([#&#8203;17389](https://redirect.github.com/astral-sh/uv/pull/17389))

###
[`v0.9.23`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0923)

[Compare
Source](https://redirect.github.com/astral-sh/uv/compare/0.9.22...0.9.23)

Released on 2026-01-09.

##### Enhancements

- Only write portable paths in `RECORD` files
([#&#8203;17339](https://redirect.github.com/astral-sh/uv/pull/17339))
- Support relative paths in `UV_PYTHON_BIN_DIR` and `UV_TOOL_BIN_DIR`
([#&#8203;17367](https://redirect.github.com/astral-sh/uv/pull/17367))

##### Preview features

- Enable uploads to S3 via pre-signed URLs
([#&#8203;17349](https://redirect.github.com/astral-sh/uv/pull/17349))

##### Configuration

- Allow setting proxy variables via global / user configuration
([#&#8203;16918](https://redirect.github.com/astral-sh/uv/pull/16918))
- Manually parse and reconcile Boolean environment variables
([#&#8203;17321](https://redirect.github.com/astral-sh/uv/pull/17321))

##### Bug fixes

- Avoid broken build artifacts on build failure
([#&#8203;17276](https://redirect.github.com/astral-sh/uv/pull/17276))
- Fix missing dependencies on synthetic root in SBOM export
([#&#8203;17363](https://redirect.github.com/astral-sh/uv/pull/17363))
- Recognize `armv8l` as an alias for `armv7l` in platform tag parsing
([#&#8203;17384](https://redirect.github.com/astral-sh/uv/pull/17384))
- Fix redaction of a URL in a middleware trace log
([#&#8203;17346](https://redirect.github.com/astral-sh/uv/pull/17346))

##### Documentation

- Add `index.md` suggestion to `llms.txt`
([#&#8203;17362](https://redirect.github.com/astral-sh/uv/pull/17362))
- Clarify that `uv run` uses inexact syncing by default
([#&#8203;17366](https://redirect.github.com/astral-sh/uv/pull/17366))

###
[`v0.9.22`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0922)

[Compare
Source](https://redirect.github.com/astral-sh/uv/compare/0.9.21...0.9.22)

Released on 2026-01-06.

##### Enhancements

- Use a dedicated error message when lockfile can't be found
([#&#8203;17318](https://redirect.github.com/astral-sh/uv/pull/17318))

##### Bug fixes

- Filter unusable wheels from the lockfile for more architectures
([#&#8203;17317](https://redirect.github.com/astral-sh/uv/pull/17317))
- Correctly count retries originating from early middleware errors
([#&#8203;17274](https://redirect.github.com/astral-sh/uv/pull/17274))

##### Documentation

- Clarify requirements file format in docs
([#&#8203;17284](https://redirect.github.com/astral-sh/uv/pull/17284))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule
defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/uv).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-12 11:00:34 +01:00
renovate[bot]
cfaf1430a2 Update peter-evans/create-pull-request action to v8 (#17392)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[peter-evans/create-pull-request](https://redirect.github.com/peter-evans/create-pull-request)
| action | major | `v7.0.8` → `v8.0.0` |

---

### Release Notes

<details>
<summary>peter-evans/create-pull-request
(peter-evans/create-pull-request)</summary>

###
[`v8.0.0`](https://redirect.github.com/peter-evans/create-pull-request/releases/tag/v8.0.0):
Create Pull Request v8.0.0

[Compare
Source](https://redirect.github.com/peter-evans/create-pull-request/compare/v7.0.11...v8.0.0)

##### What's new in v8

- Requires [Actions Runner
v2.327.1](https://redirect.github.com/actions/runner/releases/tag/v2.327.1)
or later if you are using a self-hosted runner for Node 24 support.

##### What's Changed

- chore: Update checkout action version to v6 by
[@&#8203;yonas](https://redirect.github.com/yonas) in
[#&#8203;4258](https://redirect.github.com/peter-evans/create-pull-request/pull/4258)
- Update actions/checkout references to
[@&#8203;v6](https://redirect.github.com/v6) in docs by
[@&#8203;Copilot](https://redirect.github.com/Copilot) in
[#&#8203;4259](https://redirect.github.com/peter-evans/create-pull-request/pull/4259)
- feat: v8 by
[@&#8203;peter-evans](https://redirect.github.com/peter-evans) in
[#&#8203;4260](https://redirect.github.com/peter-evans/create-pull-request/pull/4260)

##### New Contributors

- [@&#8203;yonas](https://redirect.github.com/yonas) made their first
contribution in
[#&#8203;4258](https://redirect.github.com/peter-evans/create-pull-request/pull/4258)
- [@&#8203;Copilot](https://redirect.github.com/Copilot) made their
first contribution in
[#&#8203;4259](https://redirect.github.com/peter-evans/create-pull-request/pull/4259)

**Full Changelog**:
<https://github.com/peter-evans/create-pull-request/compare/v7.0.11...v8.0.0>

###
[`v7.0.11`](https://redirect.github.com/peter-evans/create-pull-request/releases/tag/v7.0.11):
Create Pull Request v7.0.11

[Compare
Source](https://redirect.github.com/peter-evans/create-pull-request/compare/v7.0.10...v7.0.11)

##### What's Changed

- fix: restrict remote prune to self-hosted runners by
[@&#8203;peter-evans](https://redirect.github.com/peter-evans) in
[#&#8203;4250](https://redirect.github.com/peter-evans/create-pull-request/pull/4250)

**Full Changelog**:
<https://github.com/peter-evans/create-pull-request/compare/v7.0.10...v7.0.11>

###
[`v7.0.10`](https://redirect.github.com/peter-evans/create-pull-request/releases/tag/v7.0.10):
Create Pull Request v7.0.10

[Compare
Source](https://redirect.github.com/peter-evans/create-pull-request/compare/v7.0.9...v7.0.10)

⚙️ Fixes an issue where updating a pull request failed when targeting a
forked repository with the same owner as its parent.

##### What's Changed

- build(deps): bump the github-actions group with 2 updates by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;4235](https://redirect.github.com/peter-evans/create-pull-request/pull/4235)
- build(deps-dev): bump prettier from 3.6.2 to 3.7.3 in the npm group by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;4240](https://redirect.github.com/peter-evans/create-pull-request/pull/4240)
- fix: provider list pulls fallback for multi fork same owner by
[@&#8203;peter-evans](https://redirect.github.com/peter-evans) in
[#&#8203;4245](https://redirect.github.com/peter-evans/create-pull-request/pull/4245)

##### New Contributors

- [@&#8203;obnyis](https://redirect.github.com/obnyis) made their first
contribution in
[#&#8203;4064](https://redirect.github.com/peter-evans/create-pull-request/pull/4064)

**Full Changelog**:
<https://github.com/peter-evans/create-pull-request/compare/v7.0.9...v7.0.10>

###
[`v7.0.9`](https://redirect.github.com/peter-evans/create-pull-request/releases/tag/v7.0.9):
Create Pull Request v7.0.9

[Compare
Source](https://redirect.github.com/peter-evans/create-pull-request/compare/v7.0.8...v7.0.9)

⚙️ Fixes an
[incompatibility](https://redirect.github.com/peter-evans/create-pull-request/issues/4228)
with the recently released `actions/checkout@v6`.

#### What's Changed

- \~70 dependency updates by
[@&#8203;dependabot](https://redirect.github.com/dependabot)
- docs: fix workaround description about `ready_for_review` by
[@&#8203;ybiquitous](https://redirect.github.com/ybiquitous) in
[#&#8203;3939](https://redirect.github.com/peter-evans/create-pull-request/pull/3939)
- Docs: `add-paths` default behavior by
[@&#8203;joeflack4](https://redirect.github.com/joeflack4) in
[#&#8203;3928](https://redirect.github.com/peter-evans/create-pull-request/pull/3928)
- docs: update to create-github-app-token v2 by
[@&#8203;Goooler](https://redirect.github.com/Goooler) in
[#&#8203;4063](https://redirect.github.com/peter-evans/create-pull-request/pull/4063)
- Fix compatibility with actions/checkout\@&#8203;v6 by
[@&#8203;ericsciple](https://redirect.github.com/ericsciple) in
[#&#8203;4230](https://redirect.github.com/peter-evans/create-pull-request/pull/4230)

#### New Contributors

- [@&#8203;joeflack4](https://redirect.github.com/joeflack4) made their
first contribution in
[#&#8203;3928](https://redirect.github.com/peter-evans/create-pull-request/pull/3928)
- [@&#8203;Goooler](https://redirect.github.com/Goooler) made their
first contribution in
[#&#8203;4063](https://redirect.github.com/peter-evans/create-pull-request/pull/4063)
- [@&#8203;ericsciple](https://redirect.github.com/ericsciple) made
their first contribution in
[#&#8203;4230](https://redirect.github.com/peter-evans/create-pull-request/pull/4230)

**Full Changelog**:
<https://github.com/peter-evans/create-pull-request/compare/v7.0.8...v7.0.9>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule
defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/uv).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuNzQuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-12 10:52:09 +01:00
Zanie Blue
c71ba13b6d Avoid checking formatting of all files during windows trampoline checks (#17348)
I've noticed this escapes the trampoline crates so these fail whenever
there's bad formatting in the workspace.

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-07 13:14:47 -06:00
Jo
29c44c71c2 Use ty to type-check Python files (#17229)
I added mypy type‑checking in https://github.com/astral-sh/uv/pull/5332,
so I think it's a good time to switch to ty now :)
2026-01-07 12:25:15 -06:00
William Woodruff
6f9fced6c6 Replace deprecated benchmarking mode (#17222)
## Summary

Minor, noticed this with #17221. CodSpeed has deprecated
`instrumentation` and replaced it with `simulation`, which has the same
meaning:

https://codspeed.io/docs/instruments/cpu/overview#legacy-terminology

## Test Plan

No functional changes.

---------

Signed-off-by: William Woodruff <william@astral.sh>
2026-01-05 19:52:29 +01:00
renovate[bot]
1b66f24b4c Update docker/metadata-action action to v5.10.0 (#17301)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:05:27 -05:00
renovate[bot]
0f53c48dd9 Update actions/setup-python action to v6 (#17299)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 12:51:49 -05:00
renovate[bot]
9ea4d1afa7 Update docker/login-action action to v3.6.0 (#17300)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 17:46:33 +00:00
renovate[bot]
8e8881e2fa Update EmbarkStudios/cargo-deny-action action to v2.0.14 (#16898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 12:40:56 -05:00
renovate[bot]
1a1eab6ad5 Update actions/checkout action to v6 (#17295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 17:01:41 +00:00
renovate[bot]
2d71e39a8b Update actions/attest-build-provenance action to v3 (#17294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 16:55:47 +00:00
renovate[bot]
0fafde3f6e Update astral-sh/setup-uv action to v7 (#17291)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 16:21:18 +00:00
renovate[bot]
34b04fa97f Update zizmorcore/zizmor-action action to v0.3.0 (#17290)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 16:20:14 +00:00
renovate[bot]
e54056f71a Update dependency astral-sh/uv to v0.9.21 (#17289)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 16:14:52 +00:00
renovate[bot]
805e327f75 Update dependency astral-sh/uv to v0.9.18 (#17286) 2026-01-02 15:43:29 +00:00
renovate[bot]
edafa2c020 Update actions/checkout digest to 8e8c483 (#13905)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-29 17:14:09 -05:00
renovate[bot]
3d745d2261 Update actions/attest-build-provenance digest to 00014ed (#16556)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: William Woodruff <william@astral.sh>
2025-12-29 16:15:40 -05:00
Tomasz Kramkowski
c19e22fb0b Use nextest profiles to configure CI (#17220)
This centralises the configuration and allows certain overrides to be CI
specific.
2025-12-29 13:13:43 +00:00
Arthur Pastel
137edcf239 Bump CodSpeed action to v4.4.1 (#17198)
## Summary

This fixes the report generation issues caused by large profile data now
properly handled by this newer version

## Test Plan

Reports should be generated on this PR
2025-12-20 10:28:04 -06:00
Zanie Blue
e006a69fe8 Configure prettier prose-wrap in .prettierrc instead of the CLI (#17184)
This also removes the file-specific targets from prettier execution
which means we're including `.json`, `.css`, and `.html` files, which
seems like an improvement.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-18 18:54:23 -06:00
konsti
af95677b9b Update cargo shear (#17106)
Requires a companion PR that updates the GitHub Action.
2025-12-15 18:46:35 +01:00
Zanie Blue
5a55bbe883 Include Docker images with the alpine version, e.g., python3.x-alpine3.23 (#17100)
Closes https://github.com/astral-sh/uv/issues/17095

This also stabilizes the Alpine version for users that do not choose to
pin it. We could add this to the build matrix separately to avoid that,
but I think that's okay?
2025-12-12 14:17:15 +00:00
konsti
ebdffaf728 CI Perf: fast-build (#16780)
Co-authored-by: Zanie Blue <contact@zanie.dev>
2025-12-11 13:51:37 +00:00
Zanie Blue
b931c6687c Increase the size of binary build runners (#17016)
Summary from asking Claude to compare the runtime

```
  | Job                       | Before | After | Saved | Reduction |
  |---------------------------|--------|-------|-------|-----------|
  | macos-aarch64             | 19.1m  | 9.8m  | 9.2m  | 48%       |
  | macos-x86_64              | 15.1m  | 9.2m  | 5.9m  | 39%       |
  | linux-arm (aarch64)       | 18.6m  | 12.2m | 6.4m  | 34%       |
  | linux-arm (armv7)         | 17.4m  | 11.5m | 5.9m  | 34%       |
  | musllinux-cross (aarch64) | 19.3m  | 13.2m | 6.1m  | 32%       |
  | linux-arm (arm)           | 16.6m  | 11.4m | 5.2m  | 31%       |
  | musllinux-cross (armv7)   | 16.4m  | 10.8m | 5.6m  | 34%       |
```
The longest-running affected job went from 19.3m → 13.2m (saved 6.1
minutes, 32% faster).
2025-12-09 16:04:43 -06:00
William Woodruff
69910b4aab Publish PyPI releases before crates.io artifacts (#16989)
## Summary

Closes #16987.

## Test Plan

We need a good way to dry-run this...

---------

Signed-off-by: William Woodruff <william@astral.sh>
2025-12-09 15:20:21 -06:00
Zanie Blue
a70ee58ae1 Move test support files out of scripts/ into test/
(#17032)

It's been bothering me that we have a bunch of stub packages and such in
a `scripts` directory.
2025-12-09 10:06:05 -06:00
Zanie Blue
5a6f2ea319 Generate reference documentation at publish-time and the JSON schema at release-time (#16969)
It'd be nice to avoid churn for contributors. This is a pretty frequent
cause of CI failures and I don't think we really need to have the
reference documentation committed.
2025-12-08 12:31:38 +00:00
renovate[bot]
1d8252599a Update Swatinem/rust-cache action to v2.8.2 (#16128)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [Swatinem/rust-cache](https://redirect.github.com/Swatinem/rust-cache)
| action | patch | `v2.8.0` -> `v2.8.2` |

---

### Release Notes

<details>
<summary>Swatinem/rust-cache (Swatinem/rust-cache)</summary>

###
[`v2.8.2`](https://redirect.github.com/Swatinem/rust-cache/releases/tag/v2.8.2)

[Compare
Source](https://redirect.github.com/Swatinem/rust-cache/compare/v2.8.1...v2.8.2)

##### What's Changed

- ci: address lint findings, add zizmor workflow by
[@&#8203;woodruffw](https://redirect.github.com/woodruffw) in
[#&#8203;262](https://redirect.github.com/Swatinem/rust-cache/pull/262)
- feat: Implement ability to disable adding job ID + rust environment
hashes to cache names by
[@&#8203;Ryan-Brice](https://redirect.github.com/Ryan-Brice) in
[#&#8203;279](https://redirect.github.com/Swatinem/rust-cache/pull/279)
- Don't overwrite env for cargo-metadata call by
[@&#8203;MaeIsBad](https://redirect.github.com/MaeIsBad) in
[#&#8203;285](https://redirect.github.com/Swatinem/rust-cache/pull/285)

##### New Contributors

- [@&#8203;woodruffw](https://redirect.github.com/woodruffw) made their
first contribution in
[#&#8203;262](https://redirect.github.com/Swatinem/rust-cache/pull/262)
- [@&#8203;Ryan-Brice](https://redirect.github.com/Ryan-Brice) made
their first contribution in
[#&#8203;279](https://redirect.github.com/Swatinem/rust-cache/pull/279)
- [@&#8203;MaeIsBad](https://redirect.github.com/MaeIsBad) made their
first contribution in
[#&#8203;285](https://redirect.github.com/Swatinem/rust-cache/pull/285)

**Full Changelog**:
<https://github.com/Swatinem/rust-cache/compare/v2.8.1...v2.8.2>

###
[`v2.8.1`](https://redirect.github.com/Swatinem/rust-cache/releases/tag/v2.8.1)

[Compare
Source](https://redirect.github.com/Swatinem/rust-cache/compare/v2.8.0...v2.8.1)

##### What's Changed

- Set empty `CARGO_ENCODED_RUSTFLAGS` in workspace metadata retrieval by
[@&#8203;ark0f](https://redirect.github.com/ark0f) in
[#&#8203;249](https://redirect.github.com/Swatinem/rust-cache/pull/249)
- chore(deps): update dependencies by
[@&#8203;reneleonhardt](https://redirect.github.com/reneleonhardt) in
[#&#8203;251](https://redirect.github.com/Swatinem/rust-cache/pull/251)
- chore: fix dependabot groups by
[@&#8203;reneleonhardt](https://redirect.github.com/reneleonhardt) in
[#&#8203;253](https://redirect.github.com/Swatinem/rust-cache/pull/253)
- Bump the prd-patch group with 2 updates by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;254](https://redirect.github.com/Swatinem/rust-cache/pull/254)
- chore(dependabot): regenerate and commit dist/ by
[@&#8203;reneleonhardt](https://redirect.github.com/reneleonhardt) in
[#&#8203;257](https://redirect.github.com/Swatinem/rust-cache/pull/257)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
22.16.3 to 24.2.1 in the dev-major group by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;255](https://redirect.github.com/Swatinem/rust-cache/pull/255)
- Bump typescript from 5.8.3 to 5.9.2 in the dev-minor group by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;256](https://redirect.github.com/Swatinem/rust-cache/pull/256)
- Bump actions/setup-node from 4 to 5 in the actions group by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;259](https://redirect.github.com/Swatinem/rust-cache/pull/259)
- Update README.md by
[@&#8203;Propfend](https://redirect.github.com/Propfend) in
[#&#8203;234](https://redirect.github.com/Swatinem/rust-cache/pull/234)
- Bump [@&#8203;types/node](https://redirect.github.com/types/node) from
24.2.1 to 24.3.0 in the dev-minor group by
[@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in
[#&#8203;258](https://redirect.github.com/Swatinem/rust-cache/pull/258)

##### New Contributors

- [@&#8203;ark0f](https://redirect.github.com/ark0f) made their first
contribution in
[#&#8203;249](https://redirect.github.com/Swatinem/rust-cache/pull/249)
- [@&#8203;reneleonhardt](https://redirect.github.com/reneleonhardt)
made their first contribution in
[#&#8203;251](https://redirect.github.com/Swatinem/rust-cache/pull/251)
- [@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot]
made their first contribution in
[#&#8203;254](https://redirect.github.com/Swatinem/rust-cache/pull/254)
- [@&#8203;Propfend](https://redirect.github.com/Propfend) made their
first contribution in
[#&#8203;234](https://redirect.github.com/Swatinem/rust-cache/pull/234)

**Full Changelog**:
<https://github.com/Swatinem/rust-cache/compare/v2...v2.8.1>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule
defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/astral-sh/uv).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzEuOSIsInVwZGF0ZWRJblZlciI6IjQyLjE5LjkiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImludGVybmFsIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-03 15:10:44 +01:00
Zanie Blue
7954b34989 Revert "Temporarily drop crates-publish from the release for 0.9.15 re-run (#16945)" (#16947)
This reverts commit 89c411f0ae /
https://github.com/astral-sh/uv/pull/16945 restoring crates publish.
2025-12-02 19:46:55 -06:00
Zanie Blue
89c411f0ae Temporarily drop crates-publish from the release for 0.9.15 re-run (#16945)
See https://github.com/astral-sh/uv/pull/16944

The `crates.io` publish succeeded and is not idempotent (i.e., it'll
fail on another publish attempt) so we will skip it for a re-run of the
release workflow.
2025-12-02 18:57:47 -06:00
William Woodruff
18a36528ea Disable PEP 740 attestations for PyPI publishing (#16944)
## Summary

This broke the release and I haven't figured out why yet.

## Test Plan

Blame my past self.

Signed-off-by: William Woodruff <william@astral.sh>
2025-12-02 18:50:20 -06:00
Zanie Blue
e4d193a5f8 Fix uv-trampoline-builder builds from crates.io by moving bundled executables (#16922)
Closes https://github.com/astral-sh/uv/issues/16836
2025-12-02 07:50:39 -06:00
samypr100
fee7f9d093 Support Git LFS with opt-in (#16143)
## Summary

Follow up to https://github.com/astral-sh/uv/pull/15563
Closes https://github.com/astral-sh/uv/issues/13485

This is a first-pass at adding support for conditional support for Git
LFS between git sources, initial feedback welcome.

e.g.
```
[tool.uv.sources]
test-lfs-repo = { git = "https://github.com/zanieb/test-lfs-repo.git", lfs = true }
```

For context previously a user had to set `UV_GIT_LFS` to have uv fetch
lfs objects on git sources. This env var was all or nothing, meaning you
must always have it set to get consistent behavior and it applied to all
git sources. If you fetched lfs objects at a revision and then turned
off lfs (or vice versa), the git db, corresponding checkout lfs
artifacts would not be updated properly. Similarly, when git source
distributions were built, there would be no distinction between sources
with lfs and without lfs. Hence, it could corrupt the git, sdist, and
archive caches.

In order to support some sources being LFS enabled and other not, this
PR adds a stateful layer roughly similar to how `subdirectory` works but
for `lfs` since the git database, the checkouts and the corresponding
caching layers needed to be LFS aware (requested vs installed). The
caches also had to isolated and treated entirely separate when handling
LFS sources.

Summary
* Adds `lfs = true` or `lfs = false` to git sources in pyproject.toml
* Added `lfs=true` query param / fragments to most relevant url structs
(not parsed as user input)
  * In the case of uv add / uv tool, `--lfs` is supported instead
* `UV_GIT_LFS` environment variable support is still functional for
non-project entrypoints (e.g. uv pip)
* `direct-url.json` now has an custom `git_lfs` entry under VcsInfo
(note, this is not in the spec currently -- see caveats).
* git database and checkouts have an different cache key as the sources
should be treated effectively different for the same rev.
* sdists cache also differ in the cache key of a built distribution if
it was built using LFS enabled revisions to distinguish between non-LFS
same revisions. This ensures the strong assumption for archive-v0 that
an unpacked revision "doesn't change sources" stays valid.

Caveats
* `pylock.toml` import support has not been added via git_lfs=true,
going through the spec it wasn't clear to me it's something we'd support
outside of the env var (for now).
* direct-url struct was modified by adding a non-standard `git_lfs`
field under VcsInfo which may be undersirable although the PEP 610 does
say `Additional fields that would be necessary to support such VCS
SHOULD be prefixed with the VCS command name` which could be interpret
this change as ok.
* There will be a slight lockfile and cache churn for users that use
`UV_GIT_LFS` as all git lockfile entries will get a `lfs=true` fragment.
The cache version does not need an update, but LFS sources will get
their own namespace under git-v0 and sdist-v9/git hence a cache-miss
will occur once but this can be sufficient to label this as breaking for
workflows always setting `UV_GIT_LFS`.

## Test Plan

Some initial tests were added. More tests likely to follow as we reach
consensus on a final approach.

For IT test, we may want to move to use a repo under astral namespace in
order to test lfs functionality.

Manual testing was done for common pathological cases like killing LFS
fetch mid-way, uninstalling LFS after installing an sdist with it and
reinstalling, fetching LFS artifacts in different commits, etc.

PSA: Please ignore the docker build failures as its related to depot
OIDC issues.

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
Co-authored-by: konstin <konstin@mailbox.org>
2025-12-02 12:23:51 +00:00