github astral-sh/uv 0.4.23

4 hours ago

Release Notes

This release introduces a revamped system for defining package indexes, as an alternative to the existing pip-style
--index-url and --extra-index-url configuration options.

You can now define named indexes in your pyproject.toml file using the [[tool.uv.index]] table:

[[tool.uv.index]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cpu"

Packages can be pinned to a specific index via tool.uv.sources, to ensure that a given package is installed from the
correct index. For example, to ensure that torch is always installed from the pytorch index:

[tool.uv.sources]
torch = { index = "pytorch" }

[[tool.uv.index]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cpu"

Indexes can also be marked as explicit = true to prevent packages from being installed from that index
unless explicitly pinned. For example, to ensure that torch is installed from the pytorch index, but all other
packages are installed from the default index:

[tool.uv.sources]
torch = { index = "pytorch" }

[[tool.uv.index]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cpu"
explicit = true

To define an additional index outside a pyproject.toml file, use the --index command-line argument
(or the UV_INDEX environment variable); to replace the default index (PyPI), use the --default-index command-line
argument (or UV_DEFAULT_INDEX).

These changes are entirely backwards-compatible with the deprecated --index-url and --extra-index-url options,
which continue to work as before.

See the Index documentation for more.

Enhancements

  • Add index URLs when provided via uv add --index or --default-index (#7746)
  • Add support for named and explicit indexes (#7481)
  • Add templates for popular build backends (#7857)
  • Allow multiple pinned indexes in tool.uv.sources (#7769)
  • Allow users to incorporate Git tags into dynamic cache keys (#8259)
  • Pin named indexes in uv add (#7747)
  • Respect named --index and --default-index values in tool.uv.sources (#7910)
  • Update to latest PubGrub version (#8245)
  • Enable environment variable authentication for named indexes (#7741)
  • Avoid showing lower-bound warning outside of explicit lock and sync (#8234)
  • Improve logging during lock errors (#8258)
  • Improve styling of requires-python warnings (#8240)
  • Show hint in resolution failure on Forbidden (403) or Unauthorized (401) (#8264)
  • Update to latest cargo-dist version (includes new installer features) (#8270)
  • Warn when patch version in requires-python is implicitly 0 (#7959)
  • Add more context on client errors during range requests (#8285)

Bug fixes

  • Avoid writing duplicate index URLs with --emit-index-url (#8226)
  • Fix error leading to out-of-bound panic in uv-pep508 (#8282)
  • Fix managed distributions of free-threaded Python on Windows (#8268)
  • Fix selection of free-threaded interpreters during default Python discovery (#8239)
  • Ignore sources in build requirements for non-source trees (#8235)
  • Invalid cache when adding lower bound to lockfile (#8230)
  • Respect index priority when storing credentials (#8256)
  • Respect relative paths in uv build sources (#8237)
  • Narrow what the pip3. logic drops from entry points. (#8273)

Documentation

  • Add some additional notes to --index-url docs (#8267)
  • Add upgrade note to README (#7937)
  • Remove note that "only a single source may be defined for each dependency" (#8243)

Install uv 0.4.23

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.4.23/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.23/uv-installer.ps1 | iex"

Download uv 0.4.23

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

Don't miss a new uv release

NewReleases is sending notifications on new releases.