Skip to content

Releases: astral-sh/uv

0.5.3

19 Nov 19:36
56d3622
Compare
Choose a tag to compare

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" with tool.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

14 Nov 22:22
195f4b6
Compare
Choose a tag to compare

Release Notes

Enhancements

  • Hide --no-system from uv 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 in uv add --frozen and uv 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 when uv 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

08 Nov 23:36
f399a52
Compare
Choose a tag to compare

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 in uv 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

07 Nov 23:06
8d66526
Compare
Choose a tag to compare

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 with uv 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 of pyenv 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 the uv.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 for torch==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 names base and default to determine if an environment active via CONDA_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 over FOLDERID_Profile when selecting a home directory on Windows (#8048)

    This change is a side-effect of switching from the directories crate to etcetera for determining canonical system paths. If USERPROFILE 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 and NO_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, the allow-insecure-host setting has been removed from the [tool.uv.pip] configuration in favor of [tool.uv].

  • Only write .python-version files during uv init for workspace members if the version differs (#8897)

    Previously, uv would create a .python-version file for workspace members during uv 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 with RUST_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...
Read more

0.4.30

05 Nov 01:14
61ed2a2
Compare
Choose a tag to compare

Release Notes

Enhancements

  • Add support for .env and custom env files in uv run (#8811)
  • Add support for --all-packages in uv run, uv sync, and uv export (#8742, #8741, #8739)
  • Allow use of --frozen with --all-packages in uv sync and uv export (#8760)
  • Show full error chain on tool upgrade failures (#8753)
  • Add --check-url to uv 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

  • Extend BaseClient to accept extra middleware (#8807)
  • Add From for FlatDistributions struct (#8800)

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

30 Oct 23:44
85f9a0d
Compare
Choose a tag to compare

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

28 Oct 22:30
debe67f
Compare
Choose a tag to compare

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 and requires-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

25 Oct 19:29
36b729e
Compare
Choose a tag to compare

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 in uv 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 over debug free-threaded managed Python builds (#8515)

Documentation

  • Add tool.uv.sources to the "Settings" reference (#8543)
  • Add reference to uv build and uv 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

23 Oct 20:08
1b9b9d5
Compare
Choose a tag to compare

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 in uv publish (#8440)
  • Allow arbitrary --package includes in uv 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 in tags = 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 for uvx (#8473)
  • Support --with-editable in uv 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

21 Oct 08:59
97eb6ab
Compare
Choose a tag to compare

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 and UV_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 and uv 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 and uv 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 on macos-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