pypi uv 0.6.0

latest releases: 0.6.2, 0.6.1
7 days ago

Release Notes

There have been 31 releases and 1135 pull requests since 0.5.0, our last release with breaking changes. As before, 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

  • Create main.py instead of hello.py in uv init (#10369)

    Previously, uv init created a hello.py sample file. Now, uv init will create main.py instead — which aligns with expectations from user feedback. The --bare option can be used to avoid creating the file altogether.

  • Respect UV_PYTHON in uv python install (#11487)

    Previously, uv python install did not read this environment variable; now it does. We believe this matches user expectations, however, this will take priority over .python-version files which could be considered breaking.

  • Set UV to the uv executable path (#11326)

    When uv spawns a subprocess, it will now have the UV environment variable set to the uv binary path. This change is breaking if you are setting the UV environment variable yourself, as we will overwrite its value.

    Additionally, this change requires marking the uv Rust entrypoint (uv::main) as unsafe to avoid unsoundness — this is only relevant if you are invoking uv using Rust. See the Rust documentation for details about the safety of updating a process' environment.

  • Error on non-existent extras, e.g., in uv sync (#11426)

    Previously, uv would silently ignore non-existent extras requested on the command-line (e.g., via uv sync --extra foo). This is generally correct behavior when resolving requests for package extras, because an extra may be present on one compatible version of a package but not another. However, this flexibility doesn't need to apply to the local project and it's less surprising to error here.

  • Error on missing dependency groups when --frozen is provided (#11499)

    Previously, uv would not validate that the requested dependency groups were present in the lockfile when the --frozen flag was used. Now, an error will be raised if a requested dependency group is not present.

  • Change -p to a --python alias in uv pip compile (#11486)

    In uv pip compile, -p was an alias for --python-version while everywhere else in uv's interface it is an alias for --python. Additionally, uv pip compile did not respect the UV_PYTHON environment variable. Now, the semantics of this flag have been updated for parity with the rest of the CLI.

    However, --python-version is unique: if we cannot find an interpreter with the given version, we will not fail. Instead, we'll use an alternative interpreter and override its version tags with the requested version during package resolution. This behavior is retained here for backwards compatibility, --python <version> / -p <version> will not fail if the version cannot be found. However, if a specific interpreter is requested, e.g., with --python <path> or --python pypy, and cannot be found — uv will exit with an error.

    The breaking changes here are that UV_PYTHON is respected and --python <version> will no longer fail if the version cannot be found.

  • Bump alpine default tag to 3.21 for derived Docker images (#11157)

    Alpine 3.21 was released in Dec 2024 and is used in the official Alpine-based Python images. Our uv:python3.x-alpine images have been using 3.21 since uv v0.5.8. However, now the the uv:alpine image will use 3.21 instead of 3.20 and uv:alpine3.20 will no longer be updated.

  • Use files instead of junctions on Windows (#11269)

    Previously, we used junctions for atomic replacement of cache entries on Windows. Now, we use a file with a pointer to the cache entry instead. This resolves various edge-case behaviors with junctions. These files are only intended to be consumed by uv and the cache version has been bumped. We do not think this change will affect workflows.

Stabilizations

  • uv publish is no longer in preview (#11032)

    This does not come with any behavior changes. You will no longer see an experimental warning when using uv publish. See the linked pull request for a report on the stabilization.

Enhancements

  • Support --active for PEP 723 script environments (#11433)
  • Add revision to the lockfile to allow backwards-compatible metadata changes (#11500)

Bug fixes

  • Avoid reading metadata from .egg-info files (#11395)
  • Include archive bucket version in archive pointers (#11306)
  • Omit lockfile version when additional fields are dynamic (#11468)
  • Respect executable name in uvx --from tool@latest (#11465)

Install uv 0.6.0

Install prebuilt binaries via shell script

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

Download uv 0.6.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-aarch64-pc-windows-msvc.zip ARM64 Windows 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.