Skip to content

Latest commit

 

History

History
1306 lines (966 loc) · 82.6 KB

0.2.x.md

File metadata and controls

1306 lines (966 loc) · 82.6 KB

Changelog 0.2.x

0.2.37

Performance

  • Avoid cloning requirement for unchanged markers (#6116)

Bug fixes

  • Fix loading of cached metadata for Git distributions with subdirectories (#6094)

Error messages

  • Add env var to --link-mode=copy warning (#6103)
  • Avoid displaying "failed to download" on build failures for local source distributions (#6075)
  • Improve display of available package ranges (#6118)
  • Use "your requirements" consistently in resolver error messages (#6113)

Preview features

  • Add python-version-file to GitHub integration documentation (#6086)
  • Always narrow markers by Python version (#6076)
  • Avoid warning for redundant --no-project (#6111)
  • Change the definition of --locked to require satisfaction check (#6102)
  • Improve debug log for interpreter requests during project commands (#6120)
  • Improve display of resolution errors for workspace member conflicts with optional dependencies (#6123)
  • Improve resolver error messages for single-project workspaces (#6095)
  • Improve resolver error messages referencing workspace members (#6092)
  • Invalidate uv.lock if registry sources are removed (#6026)
  • Propagate fork markers to extras (#6065)
  • Redact Git credentials from pyproject.toml (#6074)
  • Redact Git credentials in lockfile (#6070)
  • Remove 'tool' reference on uv run CLI (#6110)
  • Remove same-graph merging in resolver (#6077)
  • Strip SHA when constructing package source (#6097)
  • Treat Git sources as immutable in lockfile (#6109)
  • Use the proper singular form for workspace member dependencies in resolver errors (#6128)
  • Use sets rather than vectors for lockfile requirements (#6107)
  • Normalize python_version markers to python_full_version (#6126)
  • Update Pythons to include Python 3.12.5 (#6087)

0.2.36

Bug fixes

  • Use consistent canonicalization for URLs (#5980)
  • Improve warning message when parsing pyproject.toml fails (#6009)
  • Improve handling of overlapping markers in universal resolver (#5887)

Preview features

  • Add resolver error context to run and tool run (#5991)
  • Avoid replacing executables on no-op upgrades (#5998)
  • Colocate Python install cache with destination directory (#6043)
  • Filter mixed sources from --find-links entries in lockfile (#6025)
  • Fix some outdated documentation discussing Python environments (#6058)
  • Fix projects guide typo (#6033)
  • Fix tools guide typo (#6027)
  • Hide python options in uv tool list help (#6003)
  • Improve top-level help for uv tool commands (#5983)
  • Move help documentation into dedicated page (#6057)
  • Remove editable: false support (#5987)
  • Remove uses of Option<MarkerTree> in ResolutionGraph (#6035)
  • Resolve relative tool.uv.sources relative to containing project (#6045)
  • Support PEP 723 scripts in uv add and uv remove (#5995)
  • Support tool.uv in PEP 723 scripts (#5990)
  • Treat local indexes as registry sources in lockfile (#6016)
  • Use simplified paths in lockfile (#6049)
  • Use upgrade-specific output for tool upgrade (#5997)

0.2.35

CLI

  • Deprecate --system and --no-system in uv venv (#5925)
  • Make --upgrade imply --refresh (#5943)
  • Warn when there are missing bounds on transitive dependencies with --resolution-strategy lowest (#5953)

Configuration

  • Add support for no-build-isolation-package (#5894)

Performance

  • Enable LTO optimizations in release builds to reduce binary size (#5904)
  • Prefetch metadata in --no-deps mode (#5918)

Bug fixes

  • Display portable paths in POSIX virtual environment activation commands (#5956)
  • Respect subdirectories when locating Git workspaces (#5944)

Documentation

  • Improve the uv venv CLI documentation (#5963)

Preview features

  • Add CLI flags to reference documentation (#5926)
  • Add update alias for uv tool upgrade (#5948)
  • Add caveat about pip interface name (#5940)
  • Add hint for long help to uvx (#5971)
  • Avoid requires-python warning in virtual-only workspace (#5895)
  • Discard forks when using --upgrade (#5905)
  • Document the tool upgrade command (#5947)
  • Document virtual environment discovery (#5965)
  • Enable mirror for python-build-standalone downloads (#5719)
  • Fix reuse of Git commits in lockfile (#5908)
  • Ignore local configuration in tool commands (#5923)
  • Improve the CLI documentation for uv add (#5914)
  • Improve the CLI documentation for uv remove (#5916)
  • Improve the uv lock CLI documentation (#5932)
  • Improve the uv python CLI documentation (#5961)
  • Improve the uv sync CLI documentation (#5930)
  • Improve the uv tree CLI documentation (#5917)
  • Fix link to tools concept page (#5906)
  • Add uv tool upgrade command (#5197)
  • Implement marker trees using algebraic decision diagrams (#5898)
  • Make repeated uv add operations simpler (#5922)
  • Move some documents to relevant sections (#5968)
  • Rename distribution to packages in lockfile (#5861)
  • Respect --upgrade-package in tool install (#5941)
  • Respect --upgrade-package when resolving from lockfile (#5907)
  • Retain and respect settings in tool upgrades (#5937)
  • Search beyond workspace root when discovering configuration (#5931)
  • Show build and install summaries in uv run and uv tool run (#5899)
  • Support relative path wheels (#5969)
  • Update the interface for declaring Python download preferences (#5936)
  • Use cached environments for --with layers (#5897)
  • Warn when project-specific settings are passed to non-project uv run commands (#5977)

0.2.34

Enhancements

  • Always strip in release mode (#5745)
  • Assume git+ prefix when URLs end in .git (#5868)
  • Support build constraints (#5639)

CLI

  • Create help sections for build, install, resolve, and index (#5693)
  • Improve CLI documentation for global options (#5834)
  • Improve --python CLI documentation (#5869)
  • Improve display order of top-level commands (#5830)

Bug fixes

  • Allow downloading wheels for metadata with --no-binary (#5707)
  • Reject pyproject.toml in --config-file (#5842)
  • Remove double-proxy nodes in error reporting (#5738)
  • Respect pre-release preferences from input files (#5736)
  • Support overlapping local and non-local requirements in forks (#5812)

Preview features

  • Add "next steps" to some early documentation pages (#5825)
  • Add --no-build-isolation to uv lock et al (#5829)
  • Add --no-sources to avoid reading from tool.uv.sources (#5801)
  • Add uv add --no-sync and uv remove --no-sync (#5881)
  • Add a guide for publishing packages (#5794)
  • Address some feedback in the tools documentation (#5827)
  • Avoid lingering dev and optional dependencies in uv tree (#5766)
  • Avoid mismatch in --locked with Git dependencies (#5865)
  • Avoid panic when re-locking with precise commit (#5863)
  • Avoid using already-installed tools on --upgrade or --reinstall (#5799)
  • Better workspace documentation (#5728)
  • Collapse policies section into reference (#5696)
  • Don't show deprecated warning in uvx --isolated (#5798)
  • Ensure python-to-pythonX.Y symlink exists in downloaded Pythons (#5849)
  • Fix CLI reference URLs to subcommands (#5722)
  • Fix some console blocks in the environment doc (#5826)
  • Group resolver options in lockfile (#5853)
  • Improve CLI documentation for uv tree (#5870)
  • Improve documentation for uv init CLI (#5862)
  • Improvements to the documentation (#5718)
  • Link to the GitHub integration guide from the cache concept (#5828)
  • Make some minor tweaks to the docs (#5786)
  • Omit local segments when adding uv add bounds (#5753)
  • Remove top-level bar from Python installs (#5788)
  • Replace uv help python references in CLI documentation with links (#5871)
  • Respect .python-version in --isolated runs (#5741)
  • Respect malformed .dist-info directories in tool installs (#5756)
  • Reuse existing virtualenvs with --no-project (#5846)
  • Rewrite resolver docs (#5723)
  • Show default and possible options in CLI reference documentation (#5720)
  • Skip files when detecting workspace members (#5735)
  • Support empty dependencies in PEP 723 scripts (#5864)
  • Support uv add --dev in virtual workspaces (#5821)
  • Update documentation index (#5824)
  • Update resolver reference documentation (#5823)
  • Update the override section with some content from the README (#5820)
  • Update the resolution concept documentation (#5813)
  • Use cache for Python install temporary directories (#5787)
  • Use lockfile directly in uv tree (#5761)
  • Use uv installer during build (#5854)
  • Filter uv tree to current platform by default (#5763)
  • Redact registry credentials in lockfile (#5803)
  • Show extras and dev dependencies in uv tree (#5768)
  • Support --python-platform in uv tree (#5764)
  • Add help heading for --no-sources (#5833)
  • Avoid reusing incompatible distributions across lock and sync (#5845)
  • Fix broken anchor links in docs about dependencies (#5769)
  • Fix the default value of python-preference in docs/reference/settings.md (#5755)
  • Improve CLI documentation for uv run (#5841)
  • Remove some trailing backticks from the docs (#5781)
  • Use uvx in docs serve contributing command (#5795)

0.2.33

Enhancements

  • Add support for ksh to relocatable virtual environments (#5640)

CLI

  • Add help sections for global options (#5665)
  • Move --python and --python-version into the "Python options" help (#5691)
  • Show help specific options (i.e. --no-pager) in uv help (#5516)
  • Update top-level command descriptions (#5706)

Bug fixes

  • Remove lingering executables after failed installs (#5666)
  • Switch from heuristic freshness lifetime to hard-coded value (#5654)

Documentation

  • Don't use equals signs for CLI options with values (#5704)

Preview features

  • Add --package to uv sync (#5656)
  • Add documentation for caching the uv cache in GHA (#5663)
  • Avoid persisting uv add calls that result in resolver errors (#5664)
  • Bold active nav links for accessibility (#5673)
  • Check idempotence in packse lock scenarios (#5485)
  • Detect python version from python project by default in uv venv (#5592)
  • Drop badges from docs landing (#5617)
  • Fix non-registry serialization for receipts (#5668)
  • Generate CLI reference for documentation (#5685)
  • Improve copy of console command examples (#5397)
  • Improve the project guide (#5626)
  • Improve the Python version concepts documentation (#5638)
  • Improve the dependency concept documentation (#5658)
  • Include newly-added optional dependencies in lockfile (#5686)
  • Initialize the cache in uv init (#5669)
  • Limit sync after uv add (#5705)
  • Move pip-compatibility doc into pip interface section (#5670)
  • Move settings reference to reference section (#5689)
  • Omit the nav bar title when it has no use (#5316)
  • Omit transitive development dependencies from workspace lockfile (#5646)
  • Prioritize forks based on Python narrowing (#5642)
  • Prioritize forks based on upper bounds (#5643)
  • Prompt an early jump to the feature overview during first steps (#5655)
  • Remove breadcrumbs for navigation (#5676)
  • Replace --python-preference installed with managed (#5637)
  • Set lower bounds in uv add (#5688)
  • Simplify GHA UV_SYSTEM_PYTHON examples (#5659)
  • Support legacy tool receipts with PEP 508 requirements (#5679)
  • Unhide the experimental top-level commands (#5700)
  • Use "uv" for title of index instead of "Introduction" (#5677)
  • Use fork markers and fork preferences in resolution with lockfile (#5481)
  • Use full requirement when serializing receipt (#5494)
  • Use intersection rather than union for requires-python (#5644)
  • uvx warn when no executables are available (#5675)

0.2.32

Enhancements

  • Deprecate the --isolated flag in favor of --no-config (#5466)
  • Re-enable requires-python narrowing in forks (#5583)

Performance

  • Skip copying to empty entries in seekable zip (#5571)
  • Use a consistent buffer size for downloads (#5569)
  • Use a consistent buffer size when writing out zip files (#5570)

Bug fixes

  • Avoid setting executable permissions on files we might not own (#5582)
  • Statically link liblzma (#5577)

Preview features

  • Implement uv run --directory (#5566)
  • Add --isolated support to uv run (#5471)
  • Add --no-workspace and --no-project in lieu of --isolated (#5465)
  • Add documentation for cache clearing (#5517)
  • Add forks to lockfile, don't read them yet (#5480)
  • Add links to documentation footer (#5616)
  • Error when multiple git references are provided in uv add (#5502)
  • Improvements to the project concept docs (#5634)
  • List installed tools when no command is provided to uv tool run (#5553)
  • Make --directory a global argument (#5579)
  • Reframe use of --isolated in tool run (#5470)
  • Remove --isolated usages from the uv python API (#5468)
  • Rename more use of "lock file" to "lockfile" (#5629)
  • Suppress resolver output by default in uv run and uv tool run (#5580)
  • Wrap documentation at 100 characters (#5635)

0.2.31

Enhancements

  • Add --relocatable flag to uv venv (#5515)
  • Support xz-compressed packages (#5513)
  • Warn, but don't error, when encountering tilde .dist-info directories (#5520)

Bug fixes

  • Make pip list --editable conflict with --exclude-editable (#5506)
  • Add some missing reinstall-refresh calls (#5497)
  • Avoid warning users for missing self-extra lower bounds (#5518)
  • Generate hashes for --find-links entries (#5544)
  • Retain editable designation for cached wheel installs (#5545)
  • Use 666 rather than 644 for default permissions (#5498)
  • Retry on incomplete body (#5555)
  • Ban --no-cache with --link-mode=symlink (#5519)

Preview features

  • Allow uv pip install for unmanaged projects (#5504)
  • Compare simplified paths in Windows exclusion tests (#5525)
  • Respect reinstalls in cached environments (#5499)
  • Use hatchling rather than implicit setuptools default (#5527)
  • Use relocatable installs to support concurrency-safe cached environments (#5509)
  • Support --editable installs for uv tool (#5454)
  • Fix basic case of overlapping markers (#5488)

0.2.30

Enhancements

  • Infer missing .exe in Windows Python discovery (#5456)
  • Make --reinstall imply --refresh (#5425)

CLI

  • Add --no-config to replace --isolated (#5463)
  • Cache metadata for source tree dependencies (#5423)

Bug fixes

  • Avoid canonicalizing executables on Windows (#5446)
  • Set standard permissions for temporary files (#5457)

Preview features

  • Allow distributions to be absent in deserialization (#5453)
  • Merge identical forks (#5405)
  • Minor consistency fixes for code blocks (#5437)
  • Prefer "lockfile" to "lock file" (#5427)
  • Update documentation sections (#5452)
  • Use sitecustomize.py to implement environment layering (#5462)
  • Use stripped variants by default in Python install (#5451)

0.2.29

Enhancements

  • Add --ci mode to uv cache prune (#5391)
  • Display Python installation key for discovered interpreters (#5365)

Bug fixes

  • Allow symlinks to files in scripts directory (#5380)
  • Always accept already-installed pre-releases (#5419)
  • Validate successful metadata fetch for direct dependencies (#5392)

Documentation

  • Add warning to --link-mode=symlink documentation (#5387)

Preview features

  • Add PyPy finder (#5337)
  • Add uv init --virtual (#5396)
  • Allow uv init in unmanaged projects (#5372)
  • Allow comments in .python-version[s] (#5350)
  • Always show lock updates in uv lock (#5413)
  • Improvements to the docs content (#5426)
  • Fix blurring from nav title box shadow (#5374)
  • Ignore Ctrl-C signals in uv run and uv tool run (#5395)
  • Ignore hidden directories in workspace discovery (#5408)
  • Increase padding between each nav section (#5373)
  • Mark --raw-sources as conflicting with sources-specific arguments (#5378)
  • Omit empty uv.tool.dev-dependencies on uv init (#5406)
  • Omit interpreter path during uv venv with managed Python (#5311)
  • Omit interpreter path from output when using managed Python (#5313)
  • Reject Git CLI arguments with non-Git sources (#5377)
  • Retain dependency specifier in uv add with sources (#5370)
  • Show additions and removals in uv lock updates (#5410)
  • Skip 'Nothing to uninstall' message when removing dangling environments (#5382)
  • Support requirements.txt files in uv tool install and uv tool run (#5362)
  • Use env variables in Github Actions docs (#5411)
  • Use logo in documentation (#5421)
  • Warn on requirements.txt-provided arguments in uv run et al (#5364)

0.2.28

Enhancements

  • Output stable ordering to requirements.txt in universal mode (#5334)
  • Allow symlinks with --find-links (#5323)
  • Add support for variations of pythonw.exe (#5259)

CLI

  • Stylize Requires-Python consistently in CLI output (#5304)
  • Add --show-version-specifiers to tree (#5240)

Performance

  • Avoid always rebuilding dynamic metadata (#5206)
  • Avoid URL parsing when deserializing wheels (#5235)

Bug fixes

  • Avoid cache prune failure due to removed interpreter (#5286)
  • Avoid including empty extras in resolution (#5306)
  • If multiple indices contain the same version, use the first index (#5288)
  • Include URLs on graph edges (#5312)
  • Match wheel tags against Requires-Python major-minor (#5289)
  • Remove Simple API cache files for alternative indexes in cache clean (#5353)
  • Remove extraneous are from wheel tag error messages (#5303)
  • Allow conflicting pre-release strategies when forking (#5150)
  • Use tag error rather than requires-python error for ABI filtering (#5296)

Preview features

  • Add requires-python to uv init (#5322)
  • Add uv add --no-editable (#5246)
  • Add constraint dependencies to pyproject.toml (#5248)
  • Add support for requirements files in uv run (#4973)
  • Avoid redundant members update in uv init (#5321)
  • Create member pyproject.toml prior to workspace discovery (#5317)
  • Fix uv init . (#5330)
  • Fix uv init creation of a sub-package by path (#5247)
  • Fix colors in uv tool run suggestion (#5267)
  • Improve consistency of tool CLI (#5326)
  • Make tool install robust to malformed receipts (#5305)
  • Reduce spacing between nav items (#5310)
  • Respect exclusions in uv init (#5318)
  • Store resolution options in lockfile (#5264)
  • Use backticks in project init message (#5302)
  • Ignores workspace when --isolated flag is used in uv init (#5290)
  • Normalize directory names in uv init (#5292)
  • Avoid project discovery in uv python pin if --isolated is provided (#5354)
  • Show symbolic links in uv python list (#5343)
  • Discover workspace from target path in uv init (#5250)
  • Do not create nested workspace in uv init (#5293)

0.2.27

Enhancements

  • Add GraalPy support (#5141)
  • Add a --verify-hashes hash-checking mode (#4007)
  • Discover all python3.x executables in the PATH (#5148)
  • Support --link-mode=symlink (#5208)
  • Warn about unconstrained direct deps in lowest resolution (#5142)
  • Log origin of version selection (#5186)
  • Key hash policy on version, rather than package (#5169)

CLI

  • Make missing project table a tracing warning (#5194)
  • Remove trailing period from user-facing messages (#5218)

Bug fixes

  • Make entrypoint writes atomic to avoid overwriting symlinks (#5165)
  • Use which-retrieved path directly when spawning pager (#5198)
  • Don't apply irrelevant constraints when validating site-packages (#5231)
  • Respect local versions for all user requirements (#5232)

Preview features

  • Add --frozen to uv add, uv remove, and uv tree (#5214)
  • Add --locked and --frozen to uv run CLI (#5196)
  • Add uv tool dir --bin to show executable directory (#5160)
  • Add uv tool list --show-paths to show install paths (#5164)
  • Add color to python pin CLI (#5215)
  • Added a way to inspect installation scripts on Powershell( Windows) (#5157)
  • Avoid TOCTOU errors in .python-version reads (#5223)
  • Only show the Python installed on the system if --python-preference only-system is specified (#5219)
  • Check python pin compatibility with Requires-Python (#4989)
  • Enforce hashes in lockfile install (#5170)
  • Fix reference to uv run in uv tree CLI (#5216)
  • Handle universal vs. fork markers with ResolverMarkers (#5099)
  • Implement uv init (#4791)
  • Make Python install robust to individual failures (#5199)
  • Make registry hashes optional in the lockfile (#5166)
  • Merge extras in lockfile (#5181)
  • Move integration guide docs and edit Azure integration guide (#5117)
  • Process completed Python installs and uninstalls as a stream (#5203)
  • Skip invalid tools in uv tool list (#5156)
  • Touch-ups to tools guide (#5202)
  • Use +- install output for Python versions (#5201)
  • Use display representation for download error (#5173)
  • Use specialized error message for invalid Python install / uninstall requests (#5171)
  • Use the strongest hash in the lockfile (#5167)
  • Write project guide (#5195)
  • Write tools concept document (#5207)
  • Fix reference to projects.md (#5154)
  • Fixes to the settings documentation (#5177)
  • Set exact version specifiers when resolving from lockfile (#5193)

0.2.26

CLI

  • Add --no-progress global option to hide all progress animations (#5098)

Performance

  • Cache downloaded wheel when range requests aren't supported (#5089)

Bug fixes

  • Download wheel to disk when streaming unzip failed with HTTP streaming error (#5094)
  • Filter out invalid wheels based on requires-python (#5084)
  • Filter out none ABI wheels with mismatched Python versions (#5087)
  • Lock Git cache on resolve (#5051)
  • Change order of pip compile command checks to handle exact argument first (#5111)

Documentation

  • Document that --universal implies --no-strip-markers (#5121)

Preview features

  • Indicate that uv lock --upgrade has updated the lock file (#5110)
  • Sort managed Python installations by version (#5140)
  • Support workspace to workspace path dependencies (#4833)
  • Allow conflicting locals when forking (#5104)
  • Rework pyproject.toml reformatting to respect original indentation (#5075)

0.2.25

Enhancements

  • Include PyPy-specific executables when creating virtual environments with uv venv (#5047)
  • Add a custom error message for --no-build-isolation torch dependencies (#5041)
  • Improve missing wheel error message with --no-build-isolation (#4964)

CLI

  • Add --no-pager option in help command (#5007)
  • Unhide --isolated global argument (#5005)
  • Warn when unused pyproject.toml configuration is detected (#5025)

Bug fixes

  • Fall back to streaming wheel when Content-Length header is absent (#5000)
  • Fix substring marker expression disjointness checks (#4998)
  • Lock directories to synchronize wheel-install copies (#4978)
  • Normalize out complementary == or != markers (#5050)
  • Retry on permission errors when persisting extracted source distributions to the cache (#5076)
  • Set absolute URLs prior to uploading to PyPI (#5038)
  • Exclude --upgrade-package from the pip compile header (#5032)
  • Exclude --upgrade-package when option and value are passed as a single argument (#5033)
  • Add split to cover marker universe when existing splits are incomplete (#5074)
  • Use correct pyproject.toml path in warnings (#5069)

Documentation

  • Fix CONTRIBUTING.md instructions to install multiple Python versions (#5015)
  • Use versioned badges when uploading to PyPI (#5039)

Preview features

  • Add documentation for running scripts (#4968)
  • Add guide for tools (#4982)
  • Allow URL dependencies in tool run --from (#5002)
  • Add guide for authenticating to Azure Artifacts (#4857)
  • Improve rc file detection based on rustup (#5026)
  • Rename python install --force parameter to --reinstall (#4999)
  • Use lockfile to prefill resolver index (#4495)
  • uv tool install hint the correct when the executable is available (#5019)
  • uv tool run error messages references uvx when appropriate (#5014)
  • uvx warns when requested executable is not provided by the package #5071)
  • Exit with zero when uv tool install request is already satisfied (#4986)
  • Respect the libc of the execution environment with uv python list (#5036)
  • Update standalone Pythons to include 3.12.4 (#5042)
  • uv tool run suggest valid commands when command is not found (#4997)
  • Add Windows path updates for uv tool (#5029)
  • Add a command to append uv's binary directory to PATH (#4975)

0.2.24

Enhancements

  • Add support for 'any' Python requests (#4948)
  • Allow constraints to be provided in --upgrade-package (#4952)
  • Add manylinux_2_31 to supported --python-platform (#4965)
  • Improve marker simplification (#4639)

CLI

  • Display short help menu when --help is used (#4772)
  • Allow uv help global options during uv help (#4906)
  • Use paging for uv help display when available (#4909)

Performance

  • Switch to single threaded async runtime (#4934)

Bug fixes

  • Avoid AND-ing multi-term specifiers in marker normalization (#4911)
  • Avoid inferring package name for GitHub Archives (#4928)
  • Retry on connection reset network errors (#4960)
  • Apply extra to overrides and constraints (#4829)

Rust API

  • Allow uv crate to be used as a library (#4642)

Preview features

  • Add Python installation guide (#4942)
  • Add uv python pin (#4950)
  • Add command-separation for Python discovery display (#4916)
  • Avoid debug error for uv run with unknown Python version (#4913)
  • Enable --all to uninstall all managed Pythons (#4932)
  • Enable --all to uninstall all managed tools (#4937)
  • Filter out markers based on Python requirement (#4912)
  • Implement uv tree (#4708)
  • Improve 'any' search message during uv python install (#4940)
  • Lock for the duration of tool commands (#4720)
  • Perform lock in uv sync by default (#4839)
  • Reinstall and recreate environments when interpreter is removed (#4935)
  • Respect --isolated in uv python install (#4938)
  • Respect resolver settings in uv remove (#4930)
  • Update "Python versions" documentation (#4943)
  • Warn if tool binary directory is not on path (#4951)
  • Avoid reparsing wheel URLs (#4947)
  • Avoid serializing if lockfile does not change (#4945)

0.2.23

Enhancements

  • Update Windows trampoline binaries (#4864)
  • Show user-facing warning when falling back to copy installs (#4880)

Bug fixes

  • Initialize all --prefix subdirectories (#4895)
  • Respect requires-python when prefetching (#4900)
  • Partially revert Requires-Python version narrowing (#4902)

Preview features

  • Avoid creating cache directories in tool directory (#4868)
  • Add progress bar when downloading python (#4840)
  • Add some decoration to tool CLI (#4865)
  • Add some text decoration to toolchain CLI (#4882)
  • Add user-facing output to indicate PEP 723 script (#4881)
  • Ensure Pythons are aligned in uv python list (#4884)
  • Fix always-plural message in uv python install (#4866)
  • Skip installing --with requirements if present in base environment (#4879)
  • Sort dependencies before wheels and source distributions (#4897)
  • Improve logging during resolver forking (#4894)

0.2.22

CLI

  • Add --exclude-newer to installer arguments (#4785)
  • Bold durations in CLI messages (#4818)
  • Drop crate description from the uv help menu (#4773)
  • Update "about" in help menu (#4782)

Configuration

  • Add UV_OVERRIDE environment variable for --override (#4836)

Bug fixes

  • Always use release-only comparisons for requires-python (#4794)
  • Avoid hangs before exiting CLI (#4793)
  • Preserve verbatim URLs for --find-links (#4838)

Preview features

  • Always use base interpreter for cached environments (#4805)
  • Cache tool environments in uv tool run (#4784)
  • Check hash of downloaded python toolchain (#4806)
  • Remove incompatible wheels from uv.lock (#4799)
  • uv cache prune removes all cached environments (#4845)
  • Add dedicated help menu for uvx (#4770)
  • Change "toolchain" to "python" (#4735)
  • Create empty environment for uv run --isolated (#4849)
  • Deduplicate when install or uninstall python (#4841)
  • Require at least one target for toolchain uninstalls (#4820)
  • Resolve requirements prior to nuking tool environments (#4788)
  • Tweak installation language in toolchain install (#4811)
  • Use already-installed tools in uv tool run (#4750)
  • Use cached environments in PEP 723 execution (#4789)
  • Use optimized versions of managed Python on Linux (#4775)
  • Fill Python requests with platform information during automatic fetches (#4810)
  • Remove installed python for force installation (#4807)
  • Add tool version to list command (#4674)
  • Add entrypoints to tool list (#4661)

0.2.21

  • Fix issue where standalone installer failed to due missing uvx.exe binary on Windows (#4756)

CLI

  • Differentiate freeze and list help text (#4751)

Preview features

  • Replace tool environments on updated Python request (#4746)

0.2.20

  • Fix issue where the standalone installer failed due to a missing uvx binary (#4743)

0.2.19

Enhancements

  • Indicate when we retried requests during network errors (#4725)

CLI

  • Add --disable-pip-version-check to compatibility arguments (#4672)
  • Allow uv pip sync to clear an environment with opt-in (#4517)
  • Add --invert to uv pip tree (#4621)
  • Omit (*) in uv pip tree for empty packages (#4673)
  • Add --package to uv pip tree (#4655)

Bug fixes

  • Fix bug where git cache did not validate commits correctly (#4698)
  • Narrow requires-python requirement in resolver forks (#4707)
  • Fix bug when pruning the last package in uv pip tree (#4652)

Preview features

  • Remove dangling environments in uv tool uninstall (#4740)
  • Respect upgrades in uv tool install (#4736)
  • Add PEP 723 support to uv run (#4656)
  • Add tool dir and toolchain dir commands (#4695)
  • Omit pythonX.Y segment in stdlib path for managed toolchains on Windows (#4727)
  • Add uv toolchain uninstall (#4646)
  • Add uvx alias for uv tool run (#4632)
  • Allow configuring the toolchain fetch strategy (#4601)
  • Drop prefer prefix from toolchain-preference values (#4602)
  • Enable projects to opt-out of workspace management (#4565)
  • Fetch managed toolchains if necessary in uv tool install and uv tool run (#4717)
  • Fix tool dist-info directory normalization (#4686)
  • Lock the toolchains directory during toolchain operations (#4733)
  • Log when we start solving a fork (#4684)
  • Reinstall entrypoints with --force (#4697)
  • Respect data scripts in uv tool install (#4693)
  • Set fork solution as preference when resolving (#4662)
  • Show dedicated message for tools with no entrypoints (#4694)
  • Support unnamed requirements in uv tool install (#4716)

0.2.18

CLI

  • Make --universal and --python-platform mutually exclusive (#4598)
  • Add --depth and --prune support to pip tree (#4440)

Bug fixes

  • Handle cycles when propagating markers (#4595)
  • Ignore py not found errors during interpreter discovery (#4620)
  • Merge markers when applying constraints (#4648)
  • Retry on spurious failures when caching built wheels (#4605)
  • Sort indexes during graph edge removal (#4649)
  • Treat Python version as a lower bound in --universal (#4597)
  • Fix the incorrect handling of markers in pip tree (#4611)
  • Improve toolchain and environment missing error messages (#4596)

Documentation

  • Explicitly mention use of seed packages during uv venv --seed (#4588)

Preview features

  • Add uv tool list (#4630)
  • Add uv tool uninstall (#4641)
  • Add support for specifying name@version in uv tool run (#4572)
  • Allow uv add to specify optional dependency groups (#4607)
  • Allow the package spec to be passed positionally in uv tool install (#4564)
  • Avoid infinite loop for cyclic installs (#4633)
  • Indent wheels like dependencies in the lockfile (#4582)
  • Sync all packages in a virtual workspace (#4636)
  • Use inline table for dependencies in lockfile (#4581)
  • Make source field in lock file more structured (#4627)

0.2.17

Bug fixes

  • Avoid enforcing extra-only constraints (#4570)

Preview features

  • Add --extra to uv add and enable fine-grained updates (#4566)

0.2.16

Enhancements

  • Add a universal resolution mode to uv pip compile with --universal (#4505)
  • Add support for --no-strip-markers in uv pip compile output (#4503)
  • Add --no-dedupe support to uv pip tree (#4449)

Bug fixes

  • Enable more precise environment locking with --prefix (#4506)
  • Allow local index references in requirements.txt files (#4525)
  • Allow non-file:// paths to serve as --index-url values (#4524)
  • Make .egg-info filename parsing spec compliant (#4533)
  • Gracefully handle non-existent packages in local indexes (#4545)
  • Read content length from response rather than request (#4488)
  • Read persistent configuration from non-workspace pyproject.toml (#4526)
  • Avoid panic for invalid, non-base index URLs (#4527)

Performance

  • Skip submodule update for fresh clones (#4482)
  • Use shared client in Git fetch implementation (#4487)

Preview features

  • Add --package argument to uv add and uv remove (#4556)
  • Add uv tool install (#4492)
  • Fallback to interpreter discovery in uv run (#4549)
  • Make uv.sources without --preview non-fatal (#4558)
  • Remove non-existent extras from lockfile (#4479)
  • Support conflicting URL in separate forks (#4435)
  • Automatically detect workspace packages in uv add (#4557)
  • Omit distribution.sdist from lockfile when it is redundant (#4528)
  • Remove source and version from lock file when unambiguous (#4513)
  • Allow uv lock to read overrides from tool.uv (#4108) (#4369)

0.2.15

Enhancements

  • Add --emit-build-options flag to uv pip compile interface (#4463)
  • Add pythonw support for gui scripts on Windows (#4409)
  • Add uv pip tree (#3859)

CLI

  • Adjust the docs for the pip CLI commands (#4445)
  • Fix casing of --no-compile alias (#4453)

Bug fixes

  • Fix ordering of prefer-system toolchain preference (#4441)
  • Respect index strategy in source distribution builds (#4468)

Documentation

  • Add documentation for using uv in a Docker image (#4433)

0.2.14

Enhancements

  • Support toolchain requests with platform-tag style Python implementations and version (#4407)

CLI

  • Use "Prepared" instead of "Downloaded" in logs (#4394)

Bug fixes

  • Treat mismatched directory and file urls as unsatisfied requirements (#4393)

Preview features

  • Expose toolchain-preference as a CLI and configuration file option (#4424)
  • Improve handling of command arguments in uv run and uv tool run (#4404)
  • Add tool.uv.sources support for uv add (#4406)
  • Use correct lock path for workspace dependencies (#4421)
  • Filter out sibling dependencies in resolver forks (#4415)

0.2.13

Enhancements

  • Add resolver tracing logs for when we filter requirements (#4381)

Preview features

  • Add --workspace option to uv add (#4362)
  • Ignore query errors during uv toolchain list (#4382)
  • Respect .python-version files and fetch managed toolchains in uv project commands (#4361)
  • Respect .python-version in uv venv --preview (#4360)

0.2.12

Enhancements

  • Allow specific --only-binary and --no-binary packages to override :all: (#4067)
  • Flatten ORs and ANDs in marker construction (#4260)
  • Skip invalid interpreters when searching for requested interpreter executable name (#4308)
  • Display keyring stderr during queries (#4343)
  • Allow discovery of uv binary relative to package root (#4336)
  • Use relative path for lib64 symlink (#4268)

CLI

  • Add uv version to debug output (#4259)
  • Allow --no-binary with uv pip compile (#4301)
  • Hide --no-system from the CLI (#4292)
  • Make --reinstall, --upgrade, and --refresh shared arguments (#4319)

Configuration

  • Add UV_EXCLUDE_NEWER environment variable (#4287)

Bug fixes

  • Allow normalization to completely eliminate markers (#4271)
  • Avoid treating direct path archives as always dynamic (#4283)
  • De-duplicate markers during normalization (#4263)
  • Fix incorrect parsing of requested Python version as empty version specifiers (#4289)
  • Suggest correct command to create a virtual environment when encountering externally managed interpreters (#4314)
  • Use consistent order for extra groups in lockfile (#4275)

Documentation

  • Add pip-compile defaults to PIP_COMPATIBILITY.md (#4302)
  • Expand on pip-compile default differences (#4306)
  • Tweak copy on some command-line arguments (#4293)
  • Move the preview changelog so the GitHub Release shows stable changes (#4290)

Preview features

  • Add --force option to uv toolchain install (#4313)
  • Add --no-build, --no-build-package, and binary variants (#4322)
  • Add EXTERNALLY-MANAGED markers to managed toolchains (#4312)
  • Add uv toolchain find (#4206)
  • Add persistent configuration for non-pip APIs (#4294)
  • Add support for adding/removing development dependencies (#4327)
  • Add support for listing system toolchains (#4172)
  • Add support for toolchain requests by key (#4332)
  • Allow multiple toolchains to be requested in uv toolchain install (#4334)
  • Fix relative and absolute path handling in lockfiles (#4266)
  • Load configuration options from workspace root (#4295)
  • Omit project name from workspace errors (#4299)
  • Read Python version files during toolchain installs (#4335)
  • Remove extraneous installations in uv sync by default (#4366)
  • Respect requires-python in uv lock (#4282)
  • Respect workspace-wide requires-python in interpreter selection (#4298)
  • Support unnamed requirements in uv add (#4326)
  • Use portable slash paths in lockfile (#4324)
  • Use registry URL for fetching source distributions from lockfile (#4280)
  • uv sync --no-clean (#4367)
  • Filter dependencies by tracking markers on resolver forks (#4339)
  • Use Requires-Python to filter dependencies during universal resolution (#4273)

0.2.11

Enhancements

  • Add support for local directories with --index-url (#4226)
  • Add mTLS support (#4171)
  • Allow version specifiers to be used in Python version requests (#4214)

Bug fixes

  • Always install as editable when duplicate dependencies are requested (#4208)
  • Avoid crash with XDG_CONFIG_HOME=/dev/null (#4200)
  • Improve handling of missing interpreters during discovery (#4218)
  • Make missing METADATA file a recoverable error (#4247)
  • Represent build tag as u64 (#4253)

Documentation

  • Document Windows 10 requirement (#4210)

Release

  • Re-add aarch64-unknown-linux-gnu binary to release assets (#4254)

Preview features

  • Add changelog for preview changes (#4251)
  • Allow direct URLs for dev dependencies (#4233)
  • Create temporary environments in dedicated cache bucket (#4223)
  • Improve output when an older toolchain version is already installed (#4248)
  • Initial implementation of uv add and uv remove (#4193)
  • Refactor project interpreter request for requires-python specifiers (#4216)
  • Replace toolchain fetch with toolchain install (#4228)
  • Support locking relative paths (#4205)
  • Warn when 'requires-python' does not include a lower bound (#4234)

0.2.10

Enhancements

  • Accept file:// URLs for requirements.txt et all references (#4145)
  • Add support for --prefix (#4085)

CLI

  • Add pyproject.toml to CLI help (#4181)
  • Drop "registry" prefix from request timeout log (#4144)

Bug fixes

  • Allow transitive URLs via recursive extras (#4155)
  • Avoid pre-fetching for unbounded minimum versions (#4149)
  • Avoid showing dev hints for Python requirements (#4111)
  • Include non-standard ports in keyring host queries (#4061)
  • Omit URL dependencies from pre-release hints (#4140)
  • Improve static metadata extraction for Poetry projects (#4182)

Documentation

  • Document bytecode compilation in pip compatibility guide (#4195)
  • Fix PEP 508 link in preview doc specifying_dependencies (#4158)
  • Clarify role of --system flag (#4031)

Preview features

  • Add uv toolchain install (#4164)
  • Add uv toolchain list (#4163)
  • Add extra and dev dependency validation to lockfile (#4112)
  • Add markers to edges rather than distributions (#4166)
  • Cap Requires-Python comparisons at the patch version (#4150)
  • Do not create a virtual environment when locking (#4147)
  • Don't panic with invalid wheel source (#4191)
  • Fetch managed toolchains in uv run (#4143)
  • Fix PEP 508 link in preview doc specifying_dependencies (#4158)
  • Ignore tags in universal resolution (#4174)
  • Implement Toolchain::find_or_fetch and use in uv venv --preview (#4138)
  • Lock all packages in workspace (#4016)
  • Recreate project environment if --python or requires-python doesn't match (#3945)
  • Respect --find-links in lock and sync (#4183)
  • Set --dev to default for uv run and uv sync (#4118)
  • Track Markers via a PubGrub package variant (#4123)
  • Use union of requires-python in workspace (#4041)
  • make universal resolver fork only when markers are disjoint (#4135)

0.2.9

Enhancements

  • Respect existing .egg-link files in site packages (#4082)

Bug fixes

  • Avoid extra-only filtering for constraints (#4095)

Documentation

  • Add install link for specific version to README (#4105)

Preview features

  • Add support for development dependencies (#4036)
  • Avoid enforcing distribution ID uniqueness for extras (#4104)
  • Ignore upper-bounds on Requires-Python (#4086)

0.2.8

Bug fixes

  • Fix uv venv handling when VIRTUAL_ENV refers to an non-existent environment (#4073)

Preview features

  • Default to current Python minor if Requires-Python is absent (#4070)
  • Enforce Requires-Python when syncing (#4068)
  • Track supported Python range in lockfile (#4065)

0.2.7

CLI

  • Support NO_COLOR and FORCE_COLOR environment variables (#3979)

Performance

  • Avoid building packages with dynamic versions (#4058)
  • Avoid work-stealing in bytecode compilation (#4004)

Bug fixes

  • Avoid dropping pip sync requirements with markers (#4051)
  • Bias towards local directories for bare editable requirements (#3995)
  • Preserve fragments when applying verbatim redirects (#4038)
  • Avoid 'are incompatible' for singular bounded versions (#4003)

Preview features

  • Fix a bug where no warning is output when parsing of workspace settings fails. (#4014)
  • Normalize extras in lockfile (#3958)
  • Respect Requires-Python in universal resolution (#3998)

0.2.6

Enhancements

  • Support PEP 508 requirements for editables (#3946)
  • Discard fragments when parsing unnamed URLs (#3940)
  • Port all Git functionality to use Git CLI (#3833)
  • Use statically linked C runtime on Windows (#3966)

Bug fixes

  • Disable concurrent progress bars in Jupyter Notebooks (#3890)
  • Initialize multi-progress state before individual bars (#3901)
  • Add missing i686 alias for x86 (#3899)
  • Add missing ppc64le alias for powerpc64le (#3963)
  • Fix reference to --python-version patch behavior (#3989)
  • Avoid race condition in OnceMap (#3987)

Preview features

  • Add uv run --package (#3864)
  • Add index URL parameters to Project CLI (#3984)
  • Avoid re-adding solutions to forked state (#3967)
  • Draft for user docs for workspaces (#3866)
  • Include all extras when generating lockfile (#3912)
  • Remove unstable uv lock from pip interface (#3970)
  • Respect resolved Git SHAs in uv lock (#3956)
  • Use lockfile in uv run (#3894)
  • Use lockfile versions as resolution preferences (#3921)
  • Use universal resolution in uv lock (#3969)

0.2.5

Enhancements

  • Add support for x86 Windows (#3873)
  • Add support for prepare_metadata_for_build_editable hook (#3870)
  • Add concurrent progress bars for downloads (#3252)

Bug fixes

  • Update bundled Python URLs and add "arm" architecture variant (#3855)

Preview features

  • Add context to failed uv tool run (#3882)
  • Add persistent storage of installed toolchains (#3797)
  • Gate discovery of managed toolchains with preview (#3835)
  • Initial workspace support (#3705)
  • Move editable discovery behind --preview for now (#3884)

0.2.4

CLI

  • Allow --system and --python to be passed together (#3830)

Bug fixes

  • Ignore libc on other platforms (#3825)

0.2.3

Enhancements

  • Incorporate build tag into wheel prioritization (#3781)
  • Avoid displaying log for satisfied editables if none are requested (#3795)
  • Improve logging during interpreter discovery (#3790)
  • Improve logging for environment locking (#3792)
  • Improve logging of interpreter implementation (#3791)
  • Remove extra details from interpreter query traces (#3803)
  • Use colon more consistently in error messages (#3788)

Configuration

  • Add JSON alias for unsafe-any-match (#3820)

Release

  • Remove redundant dynamically linked Linux binary again (#3762)" (#3778)
  • Remove aarch64-unknown-linux-gnu from list of expected binaries (#3761)

Bug fixes

  • Always include package names for Git and HTTPS dependencies (#3821)
  • Fix interpreter cache collisions for relative virtualenv paths (#3823)
  • Ignore unnamed requirements in preferences (#3826)
  • Search for python3 in unix virtual environments (#3798)
  • Use a cross-platform representation for relative paths in pip compile (#3804)

Preview features

  • Allow specification of additional requirements in uv tool run (#3678)

0.2.2

Enhancements

  • Report yanks for cached and resolved packages (#3772)
  • Improve error message when default Python is not found (#3770)

Bug fixes

  • Do not treat interpreters discovered via CONDA_PREFIX as system interpreters (#3771)

0.2.1

Bug fixes

  • Re-added the dynamically-linked Linux binary (#3762)

Preview features

  • Allow users to specify a custom source package to uv tool run (#3677)

0.2.0

Starting with this release, uv will use the minor version tag to indicate breaking changes.

Breaking

In this release, discovery of Python interpreters has changed. These changes should have a limited effect in most use-cases, however, it has been marked as a breaking change because the interpreter used by uv could change in some edge cases.

When multiple Python interpreters are installed, uv makes an attempt to find the exact version you requested. Previously, uv would stop at the first Python interpreter it discovered — if the interpreter did not satisfy the requested version, uv would fail. Now, uv will query multiple Python interpreters until it finds the requested version, skipping interpreters that are broken or do not satisfy the request.

Additionally, uv now allows requests for interpreter implementations such as pypy and cpython. For example, the request --python cpython will ignore a python executable that's implemented by pypy. These requests may also include a version, e.g., --python pypy@3.10. By default, uv will accept any interpreter implementation.

In summary, the following Python interpreter requests are now allowed:

  • A Python version without an implementation name, e.g., 3.10
  • A path to a directory containing a Python installation, e.g., ./foo/.venv
  • A path to a Python executable, e.g., ~/bin/python
  • A Python implementation without a version, e.g., pypy or cpython
  • A Python implementation name and version, e.g., pypy3.8 or pypy@3.8
  • The name of a Python executable (for lookup in the PATH), e.g., foopython3

Previously, interpreter requests that were not versions or paths were always treated as executable names.

To align the user expectations, uv now respects the interpreter that starts it. For example, python -m uv ... will now prefer the python interpreter that was used to start uv instead of searching for a virtual environment.

We now check if discovered interpreters are virtual environments. This means that setting VIRTUAL_ENV to a Python installation directory that is not a virtual environment will no longer work. Instead, use --system or --python <path> to request the interpreter.

Enhancements

  • Rewrite Python interpreter discovery (#3266)
  • Add support for requesting pypy interpreters by implementation name (#3706)
  • Discover and prefer the parent interpreter when invoked with python -m uv #3736
  • Add PEP 714 support for HTML API client (#3697)
  • Add PEP 714 support for JSON API client (#3698)
  • Write relative paths with unnamed requirement syntax (#3682)
  • Allow relative Python executable paths in Windows trampoline (#3717)
  • Add support for clang and msvc in missing header error (#3753)

CLI

  • Allow --constraint files in pip sync (#3741)
  • Allow --config-file to be passed before or after command name (#3730)
  • Make --offline a global argument (#3729)

Performance

  • Improve performance in complex resolutions by reducing cost of PubGrub package clones (#3688)

Bug fixes

  • Evaluate arbitrary markers to false (#3681)
  • Improve DirWithoutEntrypoint error message (#3690)
  • Improve display of root package in range errors (#3711)
  • Propagate URL errors in verbatim parsing (#3720)
  • Report yanked packages in --dry-run (#3740)

Release

  • Drop native manylinux wheel in favor of dual-tagged wheel (#3685)
  • The python-patch test feature is no longer on by default and must be manually enabled to test patch version behavior (#3746)

Documentation

  • Add --prefix link to compatibility guide (#3734)
  • Add --only-binary to compatibility guide (#3735)
  • Add instructions for building and updating uv-trampolines (#3731)
  • Add notes for testing on Windows (#3658)

Preview features

  • Add initial implementation of uv tool run (#3657)
  • Add offline support to uv tool run and uv run (#3676)
  • Better error message for uv run failures (#3691)
  • Discover workspaces without using them in resolution (#3585)
  • Support editables in uv sync (#3692)
  • Track editable requirements in lockfile (#3725)