Releases: astral-sh/uv
0.5.3
Release Notes
This release includes support for conflicting optional dependencies and dependency groups in the uv resolver, including the ability to specify dependency sources (like index assignment) on a per-extra or per-group basis.
For example, you can now select CPU-only vs. GPU-enabled PyTorch builds at runtime by defining conflicting extras in a pyproject.toml
, and assigning different extras to different PyTorch indexes:
[project]
name = "project"
version = "0.1.0"
requires-python = ">=3.12.0"
[project.optional-dependencies]
# Include `torch` whenever `--extra cpu` or `--extra gpu` is provided.
cpu = ["torch>=2.5.1"]
gpu = ["torch>=2.5.1"]
[tool.uv]
# But allow `cpu` and `gpu` to choose conflicting versions of `torch`.
conflicts = [[{ extra = "cpu" }, { extra = "gpu" }]]
[tool.uv.sources]
torch = [
# With `--extra cpu`, pull PyTorch from the CPU-only index.
{ index = "pytorch-cpu", extra = "cpu", marker = "platform_system != 'Darwin'" },
# With `--extra gpu`, pull PyTorch from the GPU-enabled index.
{ index = "pytorch-gpu", extra = "gpu" },
]
[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true
[[tool.uv.index]]
name = "pytorch-gpu"
url = "https://download.pytorch.org/whl/cu124"
explicit = true
See the PyTorch documentation for more.
Enhancements
- Allow conflicting extras in explicit index assignments (#9160)
- Support overrides and constraints in PEP 723 scripts (#9162)
- Update
uv tool install --force
to imply--reinstall-package <name>
(#9074) - Turn
--verify-hashes
on by default (#9170)
Performance
- Enable
zlib-rs
on all platforms (#9202)
Bug fixes
- Allow apostrophe in virtual environment name (#8984)
- Automatically retry body errors when processing response (#9213)
- Detect nested workspace inside the current workspace and members with identical names (#9094)
- Only install the specified project with
--frozen --package
in legacy non-[project]
workspaces (#9215) - Respect
[[tool.uv.index]]
in PEP 723 scripts (#9208) - Show derivation markers for resolutions with project name (#9136)
- Sort distributions when computing hash (#9185)
- Include trampolines in source distributions on Windows (#9172)
Documentation
- Add
--index <name>=<url>
syntax to index documentation (#9139) - Add documentation for using uv with PyTorch (#9210)
Error messages
- Add a dedicated error for
include = "dev"
withtool.uv.dev-dependencies
(#9173) - Avoid showing disjoint marker error with
true
(#9169) - Improve error message when
git
is not found (#9206) - Include extras and dependency groups in derivation chains (#9113)
- Include version constraints in derivation chains (#9112)
Install uv 0.5.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.3/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.5.3/uv-installer.ps1 | iex"
Download uv 0.5.3
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum |
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum |
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum |
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum |
0.5.2
Release Notes
Enhancements
- Hide
--no-system
fromuv pip tree
CLI (#9040) - Allow configuration of Python and PyPy install mirrors in
uv.toml
(#8695) - Allow passing Python download mirrors to
uv python install
(#8695) - Add support for specifying conflicting extras and dependency groups (#8976, #9096)
- Consistent colon usage in build failure errors (#8994)
- Show full derivation chain when encountering build failures (#9108)
- Show link we failed on parsing index pages (#9118)
- Remove duplicate log when searching for interpreters (#9092)
- Update uv development status classifier to "Stable" on PyPI (#8943)
- Use rich diagnostic formatting for early build failures (#9041)
- Use rich diagnostic formatting for install failures (#9043)
Performance
- Avoid retraversing filesystem when testing exact glob matches (#9022)
Bug fixes
- Allow
--no-build
to validate lock (#9024) - Allow default indexes to be marked as explicit (#8990)
- Avoid creating
.venv
inuv add --frozen
anduv add --no-sync
(#8980) - Avoid duplicating first-entry comments in
uv add
(#9109) - Defer reporting of build failures in resolver (#9098)
- Fix references to
--resolution-strategy
in error message output (#8971) - Ignore virtual environments in parent directories when choosing Python version for new projects (#9075)
- Forward SIGTERM to child processes in
uv run
(#8933) - Prefer Python executable names that match the request over default names (#9066)
- Prefer compatible to incompatible distributions when packages exist on multiple indexes (#8961)
- Publish: Ignore non-matching files (#8986)
- Revert
uv.lock
changes whenuv add
fails (#9030) - Show file extensions on available commands when not
.exe
(#9099) - Sort by name, then specifiers in
uv add
(#9097) - Split after specifiers in
--with
requirements (#9089) - Support multiple extras in universal pip compile output (#8960)
Preview features
- Build backend: Add tests for source tree -> source dist -> wheel conversions (#9091)
- Build backend: Switch to custom
glob-walkdir
implementation (#9013) - Build backend: Add minimal wheel settings (#9085)
Documentation
- Add wget instructions for systems without curl (#8630)
- Fix
.env
file example in docs (#9064) - Fix reference to
--resolution
in docs (#8968) - Fix typo in GitLab integration docs (#9047)
- Update format of environment variable reference (#9018)
- Use Python syntax for
value_type
consistently (#9017) - Use
[[index]]
API in configuration example (#9065) - Mention how to use extras (#8972)
- Add some words about specifying conflicting extras/groups (#9120)
Install uv 0.5.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.2/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.5.2/uv-installer.ps1 | iex"
Download uv 0.5.2
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum |
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum |
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum |
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum |
0.5.1
Release Notes
Enhancements
- Allow installation of manylinux wheels on
riscv64
(#8934)
Bug fixes
- Build source distributions at top-level of cache (#8905)
- Allow non-registry dependencies in
uv pip list --outdated
(#8939) - Compute superset of existing and required hashes when healing cache (#8955)
- Enable uv to replace and delete itself on Windows (#8914)
- Remove source distribution filename from cache (#8907)
- Respect
--index-url
inuv pip list
(#8942) - Respect comma-separated extras in
--with
(#8946)
Documentation
- Add uninstall note for previous versions (#8937)
- Remove some missed references to
~/.cargo/bin
(#8936) - Split README's install code block into 3 (#8853)
Install uv 0.5.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.1/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.5.1/uv-installer.ps1 | iex"
Download uv 0.5.1
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum |
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum |
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum |
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum |
0.5.0
Release Notes
Since the launch of Python version, project, and tool management capabilities back in August, we've seen extraordinary adoption of uv. We've been iterating rapidly: adding new features, fixing bugs, and improving the user experience. Despite moving quickly, stability and compatibility have been a major focus — we've made thirty releases since our last breaking change. Consequently, we've accumulated various changes that improve correctness and user experience, but could break some workflows. This release contains those changes; many have been marked as breaking out of an abundance of caution. We expect most users to be able to upgrade without making changes.
Breaking changes
-
Use base executable to set virtualenv Python path (#8481)
Previously, uv canonicalized the path to the Python executable when setting the Python path in created virtual environments. This behavior had several undesirable effects: it would bypass stabilized version directories (as constructed by Homebrew) and it was not consistent with the Python standard library's behavior. Now, uv uses the
sys._base_executable
path. -
Use XDG (i.e.
~/.local/bin
) instead of the Cargo home directory in the installer (#8420)Previously, uv's installer used
$CARGO_HOME
or~/.cargo/bin
for its target install directory. It's been a longstanding complaint that uv uses this directory, as there's no relationship to Cargo. Now, uv will be installed into$XDG_BIN_HOME
,$XDG_DATA_HOME/../bin
, or~/.local/bin
(in that order). Note that$UV_INSTALL_DIR
can always be used to override the target directory. Upgrading withuv self update
will not move uv to the new install directory. -
Discover and respect
.python-version
files in parent directories (#6370)Previously, uv only read
.python-version
files from the working directory. Now, uv will check parent directories for.python-version
files; however uv will not search for.python-version
files beyond project boundaries. The new behavior is better aligned with that ofpyenv
and Rye. -
Error when disallowed settings are defined in
uv.toml
(#8550)Some settings can only be defined in the
pyproject.toml
. Previously, uv would ignore these settings when present in theuv.toml
. Now, uv will error to avoid confusion about why the settings are not respected. -
Implement PEP 440-compliant local version semantics (#8797)
Previously, uv's implementation of local versions (e.g.
2.0+cpu
) was not compliant with the specification due to the technical complexity of implementing the local version semantics in the PubGrub algorithm. Thanks to the work of @ericmarkmartin, uv now has a spec-compliant implementation. Namely, uv will now allow a request fortorch==2.1.0
to install[email protected]+cpu
regardless of whether[email protected]
(without a local tag) actually exists. -
Treat the base Conda environment as a system environment (#7691)
Previously, uv would not distinguish between the base and other Conda environments. Now, uv uses
CONDA_DEFAULT_ENV
and the namesbase
anddefault
to determine if an environment active viaCONDA_PREFIX
is the base environment. If the base environment is active, the--system
flag must be used to mutate it. -
Do not allow pre-releases when the
!=
operator is used (#7974)Previously, uv would use the presence of a pre-release specifier in a version specifier as an opt-in to allow pre-release versions during resolution. The new behavior does not allow pre-releases when an inequals operator is used, e.g.,
!= 2.0a1
. -
Prefer
USERPROFILE
overFOLDERID_Profile
when selecting a home directory on Windows (#8048)This change is a side-effect of switching from the
directories
crate toetcetera
for determining canonical system paths. IfUSERPROFILE
is not set, the behavior will be unchanged. -
Improve interactions between color environment variables and CLI options (#8215)
Previously, uv would respect the
FORCE_COLOR
andNO_COLOR
environment variables over the--color
flag. Now, when the--color
flag is explicitly provided, uv will respect it over the environment variables. -
Make
allow-insecure-host
a global option (#8476)Previously, this option was only available in some parts of uv. Now,
--allow-insecure-host
can be provided to any command. For consistency, theallow-insecure-host
setting has been removed from the[tool.uv.pip]
configuration in favor of[tool.uv]
. -
Only write
.python-version
files duringuv init
for workspace members if the version differs (#8897)Previously, uv would create a
.python-version
file for workspace members duringuv init
. Now, uv will only do so if the version differs from the.python-version
file in the workspace root since uv will respect.python-version
files in parent directories.
Enhancements
- Add
uv tree --outdated
(#8893) - Add armv8l alias for armv7l to support arm 32-bit compatibility mode (#8881)
- Add support for
pip list --outdated
(#8872) - Allow semicolons directly after direct URLs (#8836)
- Enable support for arbitrary git transports (#8769)
- Improve Python discovery source messages (#8890)
- Show dedicated error for trailing
;
on URL and path requirements (#8835) - Add progress bar for
uv cache clean
(#8857) - Warn on failure to query system configuration file (#8829)
Preview features
- Add support for building basic source distributions with the experimental uv build backend (#8886)
Bug fixes
- Respect dynamic version updates in
uv lock
(#8867) - Respect fork markers in
--resolution-mode=lowest-direct
(#8839)
Documentation
- Add further examples of git+https support (#8841)
- Add installer variables to environment reference (#8874)
- Add note on private classifier (#8783)
- Update pip-and-uv strictness example (#8822)
- Fix
uv python install
docs to use an existing PyPy version (#8845) - Document how to mimic
--verbose
withRUST_LOG
(#8858)
Install uv 0.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.5.0/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.5.0/uv-installer.ps1 | iex"
Download uv 0.5.0
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
[uv-s390x-unknown-linux-gnu.tar.gz](h... |
0.4.30
Release Notes
Enhancements
- Add support for
.env
and custom env files inuv run
(#8811) - Add support for
--all-packages
inuv run
,uv sync
, anduv export
(#8742, #8741, #8739) - Allow use of
--frozen
with--all-packages
inuv sync
anduv export
(#8760) - Show full error chain on tool upgrade failures (#8753)
- Add
--check-url
touv publish
to check for existing distributions during upload (#8531) - Suggest using
--check-url
when--skip-existing
is used (#8803)
Bug fixes
- Allow incompatible
requires-python
for source distributions with static metadata (#8768) - Allow managed downloads with
--python-preference system
(#8808) - Avoid error for
--group
defined in non-root workspace member (#8734) - Avoid showing dependency group annotations on workspace members in tree (#8730)
- Do not error when the Python bin directory is missing on
uv python uninstall
(#8725) - Include member groups when locking workspace (#8736)
- Fix bug where
python_version < '0'
could appear in a final resolution (#8759) - Sanitize filenames during zip extraction (#8732)
- Switch to RFC 9110 compatible format for exclude newer requests (#8752)
Preview features
- Add support for installing versioned Python executables on Windows (#8663)
- Improve interactions with existing Python executables during install (#8733)
Rust API
Documentation
- Fix environment variable name in providing credentials section (#8740)
- Fix
add httpx
example with real git branch (#8756) - Fix indentation in
projects.md
(#8772) - Fix link to publish guide in
README
(#8720) - Generate environment variables documentation from code (#8493)
- Improve and fix some documents (#8749)
- Improve environment variables document (#8777)
Install uv 0.4.30
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.4.30/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.4.30/uv-installer.ps1 | iex"
Download uv 0.4.30
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum |
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum |
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum |
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum |
0.4.29
Release Notes
Enhancements
- Sort errors during display in
uv python install
(#8684) - Update resolver to use disjointness checks instead of marker equality (#8661)
- Add
riscv64
to supported Python platform tags (#8660)
Bug fixes
- Fix hard and soft float libc detection for managed Python distributions on ARM (#8498)
- Handle cycles in
uv pip tree
(#8689) - Respect dependency group markers in
uv export
(#8659) - Support transitive dependencies in Git workspaces (#8665)
- Use portable paths for subdirectories in lock URLs (#8707)
- Update
uv init --virtual
to imply--no-package
(#8595)
Preview
- Install versioned Python executables into the bin directory during
uv python install
(Unix only) (#8458)
Documentation
- Clarify relationship between specifiers and
requires-python
range (#8688) - Fix broken link in docs (#8552)
- Fix outdated documentation on
Requires-Python
(#8679) - Add Google Artifact Registry index authentication guide (#8579)
Install uv 0.4.29
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.4.29/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.4.29/uv-installer.ps1 | iex"
Download uv 0.4.29
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum |
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum |
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum |
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum |
0.4.28
Release Notes
Enhancements
- Add support for requesting free-threaded builds via
+freethreaded
(#8645) - Improve trusted publishing error messages (#8633)
- Remove unneeded
return
from Maturin project template (#8604) - Skip Python interpreter discovery for
uv export
(#8638) - Hint about missing trusted publishing permission (#8632)
Configuration
- Add environment variable to disable progress output (#8600)
Bug fixes
- Fork when minimum Python version increases (#8628)
- Ignore empty groups when validating lock (#8598)
- Remove duplicate word in error message (#8589)
- Support cyclic dependencies in
uv tree
(#8564) - Update
uv init
to imply--package
when using--build-backend
(#8593) - Restore use of
dev-dependencies
andrequires-dev
for lockfile compatibility (#8599)
Documentation
- Clarify
requires-python
requirement for dependencies (#8619) - Update CLI documentation for
--cache-dir
(#8627)
Install uv 0.4.28
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.4.28/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.4.28/uv-installer.ps1 | iex"
Download uv 0.4.28
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum |
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum |
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum |
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum |
0.4.27
Release Notes
This release includes support for the [dependency-groups]
table as recently standardized in PEP 735. The table allows for declaration of optional dependency groups that are not published as part of the package metadata, unlike [project.optional-dependencies]
. There are new --group
, --only-group
, and --no-group
options throughout the uv interface.
Previously, uv used a single tool.uv.dev-dependencies
list for declaration of development dependencies. Now, uv supports declaring development dependencies in a standardized format and allows splitting development dependencies into multiple groups.
For compatibility, and to simplify usage for people that do not need multiple groups, uv special-cases the group named dev
. The dev
group is equivalent to tool.uv.dev-dependencies
. The contents of tool.uv.dev-dependencies
will merged into the dev
group in uv's resolver. The --dev
, --only-dev
, and --no-dev
flags remain as aliases for the corresponding --group
options. Support for tool.uv.dev-dependencies
remains in this release, but will display warnings in a future release.
uv syncs the dev
group by default — this matches the exististing behavior for tool.uv.dev-dependencies
. The default groups can be changed with the tool.uv.default-groups
setting.
Thank you to Stephen Rosen who authored PEP 735.
Enhancements
- Support for PEP 735 (#8272)
- Add support for
--dry-run
mode inuv lock
(#7783) - Don't allow non-string email in authors (#8520)
- Enforce lockfile schema versions (#8509)
Bug fixes
- Always attach URL to network errors (#8444)
- Fix dangling non-platform dependencies in
uv tree
(#8532) - Prefer
lto
overdebug
free-threaded managed Python builds (#8515)
Documentation
- Add
tool.uv.sources
to the "Settings" reference (#8543) - Add reference to
uv build
anduv publish
in the landing pages (#8542) - Avoid duplicate
[tool.uv]
header in TOML examples (#8545) - Document
.netrc
environment variable and path (#8511) - Fix
.netrc
typo in authentication docs (#8521) - Fix heading level of "Script support" on docs landing page (#8544)
- Move the installation configuration docs to a separate page (#8546)
- Update docs for
--publish-url
to avoid duplication. (#8561) - Fix typo (#8554)
- Fix typo in description of
--strict
flag (#8513)
Install uv 0.4.27
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.4.27/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.4.27/uv-installer.ps1 | iex"
Download uv 0.4.27
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum |
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum |
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum |
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum |
0.4.26
Release Notes
Enhancements
- Allow static dependency metadata entries for direct URL requirements (#7846)
- Use reinstall report formatting for
uv python install --reinstall
(#8487) - Add support for system-level
uv.toml
configuration (#7851)
Bug fixes
- Apply
requires-python
narrowing with upper bounds (#8403) - Avoid rewriting
[[tool.uv.index]]
entries when credentials are provided (#8502) - Fix
uv add
comment handling for empty arrays (#8504) - Replace dashes with underscores in index credential variables (#8452)
- Respect
--allow-insecure-host
inuv publish
(#8440) - Allow arbitrary
--package
includes inuv tree
(#8507) - Remove existing Python install after successful download in
uv python install
(#8485)
Documentation
- Add docs example for URLs with
[tool.uv.dependency-metadata]
(#8484) - Add help page for build failures (#8286)
- Fix
cache-keys
typo intags = true
(#8422) - Add documentation examples for manual branch, rev, and tag Git dependencies (#8497)
Error messages
- Improve error message for cache info serialization (#8500)
- Suggest
--from
command when executable is available foruvx
(#8473) - Support
--with-editable
inuv tool install
(#8472)
Install uv 0.4.26
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.4.26/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.4.26/uv-installer.ps1 | iex"
Download uv 0.4.26
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum |
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum |
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum |
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum |
0.4.25
Release Notes
Enhancements
- Add support for
uv pip show --files
(#8369) - Don't prefetch unreachable packages (#8246)
- Remove
tool.uv.sources
table if it is empty (#8365) - Modify cache versioning to support backwards compatibility (#8386)
Configuration
- Add support for
UV_FROZEN
andUV_LOCKED
(#8340)
Bug fixes
- Allow dashes and underscores in custom index names (#8339)
- Avoid panic when Git dependencies are included in fork markers (#8388)
- Check existing source by normalized name before
uv add
anduv remove
(#8359) - Fix bug where username from authentication cache could be ignored (#8345)
- Fix to respect comments positioning in pyproject.toml on change (#8384)
- Redact index sources in
uv.lock
(#8333) - Use correct indentation when project table contains open bracket comment (#8387)
- Only remove a source from
[tool.uv.sources]
if it is no long being referenced (#8366) - Modify
uv pip list
anduv tree
to print to stdout regardless of--quiet
flag (#8392)
Error messages
- Improve help message for missing
self update
invocations (#8337) - Log
.netrc
parsing errors (#8364) - Remove trailing newlines in error messages (#8322)
- Use a dedicated message for incompatible Python versions in wheel ABI tags (#8363)
- Remove commands available in the top-level from the suggested subcommand error (#8316)
Release
- Run release builds for
macos-x86_64
onmacos-14
runners (#8327)
Install uv 0.4.25
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.4.25/uv-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/uv/releases/download/0.4.25/uv-installer.ps1 | iex"
Download uv 0.4.25
File | Platform | Checksum |
---|---|---|
uv-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
uv-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
uv-i686-pc-windows-msvc.zip | x86 Windows | checksum |
uv-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
uv-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
uv-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
uv-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
uv-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
uv-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
uv-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
uv-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | checksum |
uv-aarch64-unknown-linux-musl.tar.gz | ARM64 MUSL Linux | checksum |
uv-i686-unknown-linux-musl.tar.gz | x86 MUSL Linux | checksum |
uv-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |
uv-arm-unknown-linux-musleabihf.tar.gz | ARMv6 MUSL Linux (Hardfloat) | checksum |
uv-armv7-unknown-linux-musleabihf.tar.gz | ARMv7 MUSL Linux | checksum |