Skip to content

Releases: astral-sh/setup-uv

v8.1.0 🌈 New input `no-project`

16 Apr 22:01
Immutable release. Only release title and notes can be modified.
0880764

Choose a tag to compare

Changes

This add the a new boolean input no-project.
It only makes sense to use in combination with activate-environment: true and will append --no project to the uv venv call. This is for example useful if you have a pyproject.toml file with parts unparseable by uv

🚀 Enhancements

  • Add input no-project in combination with activate-environment @eifinger (#856)

🧰 Maintenance

📚 Documentation

⬆️ Dependency updates

  • chore(deps): bump release-drafter/release-drafter from 7.1.1 to 7.2.0 @dependabot[bot] (#855)

v8.0.0 🌈 Immutable releases and secure tags

29 Mar 17:30
Immutable release. Only release title and notes can be modified.
cec2083

Choose a tag to compare

This is the first immutable release of setup-uv 🥳

All future releases are also immutable, if you want to know more about what this means checkout the docs.

This release also has two breaking changes

New format for manifest-file

The previously deprecated way of defining a custom version manifest to control which uv versions are available and where to download them from got removed. The functionality is still there but you have to use the new format.

No more major and minor tags

To increase security even more we will stop publishing minor tags. You won't be able to use @v8 or @v8.0 any longer. We do this because pinning to major releases opens up users to supply chain attacks like what happened to tj-actions.

Tip

Use the immutable tag as a version astral-sh/setup-uv@v8.0.0
Or even better the githash astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57

🚨 Breaking changes

🧰 Maintenance

v7.6.0 🌈 Fetch uv from Astral's mirror by default

16 Mar 15:36
37802ad

Choose a tag to compare

Changes

We now default to download uv from releases.astral.sh.
This means by default we don't hit the GitHub API at all and shouldn't see any rate limits and timeouts any more.

🚀 Enhancements

  • Fetch uv from Astral's mirror by default @zsol (#809)

🧰 Maintenance

⬆️ Dependency updates

v7.5.0 🌈 Use `astral-sh/versions` as version provider

12 Mar 22:20
e06108d

Choose a tag to compare

No more rate-limits

This release addresses a long-standing source of timeouts and rate-limit failures in setup-uv.

Previously, the action resolved version identifiers like 0.5.x by iterating over available uv releases via the GitHub API to find the best match. In contrast, latest and exact versions such as 0.5.0 skipped version resolution entirely and downloaded uv directly.

The manifest-file input was an earlier attempt to improve this. It allows providing an url to a file that lists available versions, checksums, and even custom download URLs. The action also shipped with such a manifest.
However, because that bundled file could become outdated whenever new uv releases were published, the action still had to fall back to the GitHub API in many cases.

This release solves the problem by sourcing version data from Astral’s versions repository via the raw content endpoint:

https://raw.githubusercontent.com/astral-sh/versions/refs/heads/main/v1/uv.ndjson

By using the raw endpoint instead of the GitHub API, version resolution no longer depends on API authentication and is much less likely to run into rate limits or timeouts.


Tip

The next section is only interesting for users of the manifest-file input

The manifest-file input lets you override that source with your own URL, for example to test custom uv builds or alternate download locations.

The manifest file must be in NDJSON format, where each line is a JSON object representing a version and its artifacts. For example:

{"version":"0.10.7","artifacts":[{"platform":"x86_64-unknown-linux-gnu","variant":"default","url":"https://example.com/uv-x86_64-unknown-linux-gnu.tar.gz","archive_format":"tar.gz","sha256":"..."}]}
{"version":"0.10.6","artifacts":[{"platform":"x86_64-unknown-linux-gnu","variant":"default","url":"https://example.com/uv-x86_64-unknown-linux-gnu.tar.gz","archive_format":"tar.gz","sha256":"..."}]}

Warning

The old format still works but is deprecated. A warning will be logged when you use it.

Changes

  • docs: replace copilot instructions with AGENTS.md @eifinger (#794)

🚀 Enhancements

  • Use astral-sh/versions as primary version provider @eifinger (#802)

📚 Documentation

  • docs: add cross-client dependabot rollup skill @eifinger (#793)

v7.4.0 🌈 Add riscv64 architecture support to platform detection

10 Mar 16:51
6ee6290

Choose a tag to compare

Changes

Thank you @luhenry for adding support for riscv64 arch

🚀 Enhancements

  • Add riscv64 architecture support to platform detection @luhenry (#791)

🧰 Maintenance

⬆️ Dependency updates

v7.3.1 🌈 fall back to VERSION_CODENAME when VERSION_ID is not available

27 Feb 18:40
5a095e7

Choose a tag to compare

Changes

This release adds support for running in containers like debian:testing or debian:unstable

🐛 Bug fixes

  • fix: fall back to VERSION_CODENAME when VERSION_ID is not available @eifinger-bot (#774)

🧰 Maintenance

⬆️ Dependency updates

v7.3.0 🌈 New features and bug fixes for activate-environment

06 Feb 15:43
eac588a

Choose a tag to compare

Changes

This release contains a few bug fixes and a new feature for the activate-environment functionality.

🐛 Bug fixes

🚀 Enhancements

  • feat: add venv-path input for activate-environment @eifinger (#746)

🧰 Maintenance

📚 Documentation

⬆️ Dependency updates

v7.2.1 🌈 update known checksums up to 0.9.28

30 Jan 07:41
803947b

Choose a tag to compare

Changes

🧰 Maintenance

📚 Documentation

⬆️ Dependency updates

v7.2.0 🌈 add outputs python-version and python-cache-hit

06 Jan 17:12
61cb8a9

Choose a tag to compare

Changes

Among some minor typo fixes and quality of life features for developers of actions the main feature of this release are new outputs:

  • python-version: The Python version that was set (same content as existing UV_PYTHON)
  • python-cache-hit: A boolean value to indicate the Python cache entry was found

While implementing this it became clear, that it is easier to handle the Python binaries in a separate cache entry. The added benefit for users is that the "normal" cache containing the dependencies can be used in all runs no matter if these cache the Python binaries or not.

Note

This release will invalidate caches that contain the Python binaries. This happens a single time.

🐛 Bug fixes

  • chore: remove stray space from UV_PYTHON_INSTALL_DIR message @akx (#720)

🚀 Enhancements

🧰 Maintenance

⬆️ Dependency updates

v7.1.6 🌈 add OS version to cache key to prevent binary incompatibility

13 Dec 16:40
681c641

Choose a tag to compare

Changes

This release will invalidate your cache existing keys!

The os version e.g. ubuntu-22.04 is now part of the cache key. This prevents failing builds when a cache got populated with wheels built with different tools (e.g. glibc) than are present on the runner where the cache got restored.

🐛 Bug fixes

  • feat: add OS version to cache key to prevent binary incompatibility @eifinger (#716)

🧰 Maintenance

⬆️ Dependency updates