Change8

0.7.0

Breaking Changes
📦 uvView on GitHub →
11 breaking5 features🐛 4 fixes🔧 16 symbols

Summary

This release introduces several breaking changes—most notably a new behavior for `uv version` and stricter validation for indexes and configuration—while adding useful enhancements such as a managed download cache and improved error hints.

⚠️ Breaking Changes

  • uv version now displays or updates the project version instead of uv's own version; the previous behavior moved to uv self version. Use uv self version to get uv's version or pass --preview to error when outside a project.
  • Authentication failures now stop index search; to retain previous fallback behavior configure index.ignore-error-codes with [401,403] in the relevant index configuration.
  • uvx now requires the requested command to be provided by the Python package; it will error if not. Use --from to bypass this check or ensure the package supplies the executable.
  • Keyring credential lookups now use the index URL instead of the full package URL; no action needed unless a custom keyring expects the full URL.
  • The --version flag was removed from all subcommands; use uv --version instead.
  • Python 3.7 downloads are no longer provided by uv's managed versions.
  • Non‑PEP 751 TOML files are rejected in install, compile, and export commands; rename custom lockfiles to pylock.<name>.toml.
  • Arbitrary string requests in .python-version files are ignored; ensure the file contains a valid Python version specifier.
  • Unknown dependency object specifiers now cause an error; only include-group is allowed.
  • --frozen and --no-sources are now conflicting options; avoid using them together.
  • Empty UV_PYTHON_INSTALL_DIR and UV_TOOL_DIR are treated as unset; remove empty definitions.

Migration Steps

  1. If you relied on uv version to show uv's version, switch to uv self version or use --preview to enforce an error when outside a project.
  2. If you need the previous authentication fallback behavior, add ignore-error-codes = [401,403] to the relevant index configuration.
  3. Update any scripts that used uvx to invoke commands not provided by the package; ensure the package supplies the executable or use uvx --from.
  4. Replace any use of --version on subcommands with uv --version.
  5. Rename custom lockfiles that are not PEP 751 to pylock.<name>.toml.
  6. Remove empty definitions of UV_PYTHON_INSTALL_DIR and UV_TOOL_DIR from the environment or configuration.
  7. Avoid using unknown object specifiers in [dependency-groups]; only include-group is supported.
  8. Do not combine --frozen with --no-sources.
  9. If you were downloading Python 3.7 via uv, switch to an external installer.

✨ New Features

  • Disallow mixing requirements across PyTorch indexes.
  • Add optional managed Python archive download cache.
  • Add poetry-core as a uv init build backend option.
  • Show tag hints when failing to find a compatible wheel in pylock.toml.
  • Report Python version mismatches in pyvenv.cfg.

🐛 Bug Fixes

  • Avoid error on omitted wheel‑only packages in pylock.toml.
  • Fix display name for uvx --version.
  • Restore handling of authentication when encountering redirects.
  • Respect build options (--no-binary etc.) in pylock.toml.

🔧 Affected Symbols

uv versionuv self versionuvxuvx --fromuv runuv installuv compileuv exportuv pip installuv pip compileindex.ignore-error-codesUV_PYTHON_INSTALL_DIRUV_TOOL_DIRdependency-groups object specifierspylock.tomlpylock.<name>.toml