64 KiB
Changelog 0.1.x
0.1.1
Bug fixes
- Fix bug where
python3is not found in the global path (#1351)
Documentation
0.1.2
Enhancements
- Add
--upgradesupport topip install(#1379) - Add
-U/-Pshort flags for--upgrade/--upgrade-package(#1394) - Add
UV_NO_CACHEenvironment variable (#1383) - uv-cache: Add hidden alias for --no-cache-dir (#1380)
Bug fixes
- Add fix-up for invalid star comparison with major-only version (#1410)
- Add fix-up for trailing comma with trailing space (#1409)
- Allow empty fragments in HTML parser (#1443)
- Fix search for
python.exeon Windows (#1381) - Ignore invalid extra named
.none(#1428) - Parse
-rand-centries as relative to containing file (#1421) - Avoid import contextlib in
_virtualenv(#1406) - Decode HTML escapes when extracting SHA (#1440)
- Fix broken URLs parsed from relative paths in registries (#1413)
- Improve error message for invalid sdist archives (#1389)
Documentation
- Re-add license badge to the README (#1333)
- Replace "novel" in README (#1365)
- Tweak some grammar in the README (#1387)
- Update README.md to include venv activate (#1411)
- Update wording and add
alttag (#1423)
0.1.3
Enhancements
- Add support for
UV_EXTRA_INDEX_URL(#1515) - Use the system trust store for HTTPS requests (#1512)
- Automatically detect virtual environments when used via
python -m uv(#1504) - Add warning for empty requirements files (#1519)
- Support MD5 hashes (#1556)
Bug fixes
- Add support for extras in editable requirements (#1531)
- Apply percent-decoding to file-based URLs (#1541)
- Apply percent-decoding to filepaths in HTML find-links (#1544)
- Avoid attempting rename in copy fallback path (#1546)
- Fix list rendering in
venv --helpoutput (#1459) - Fix trailing commas on
Requires-Pythonin HTML indexes (#1507) - Read from
/bin/shif/bin/lscannot be found when determining libc path (#1433) - Remove URL encoding when determining file name (#1555)
- Support recursive extras (#1435)
- Use comparable representation for
PackageId(#1543) - fix OS detection for Alpine Linux (#1545)
- only parse /bin/sh (not /bin/ls) (#1493)
- pypi-types: fix lenient requirement parsing (#1529)
- Loosen package script regexp to match spec (#1482)
- Use string display instead of debug for url parse trace (#1498)
Documentation
- Provide example of file based package install. (#1424)
- Adjust link (#1434)
- Add troubleshooting section to benchmarks guide (#1485)
- infra: source github templates (#1425)
0.1.4
Enhancements
Bug fixes
- Add graceful fallback for Artifactory indexes (#1574)
- Allow URL requirements in editable installs (#1614)
- Allow repeated dependencies when installing (#1558)
- Always run
get_requires_for_build_wheel(#1590) - Avoid propagating top-level options to sub-resolutions (#1607)
- Consistent use of
BIN_NAMEin activation scripts (#1577) - Enforce URL constraints for non-URL dependencies (#1565)
- Allow non-nested archives for
hexdumpand others (#1564) - Avoid using
whitecoloring in terminal output (#1576) - Bump simple metadata cache version (#1617)
- Better error messages on expect failures in resolver (#1583)
Documentation
- Add license to activator scripts (#1610)
0.1.5
Enhancements
- Add
CACHEDIR.TAGto uv-created virtualenvs (#1653)
Bug fixes
- Build source distributions in the cache directory instead of the global temporary directory (#1628)
- Do not remove uv itself on pip sync (#1649)
- Ensure we retain existing environment variables during
python -m uv(#1667) - Add yank warnings at end of messages (#1669)
Documentation
- Add brew to readme (#1629)
- Document RUST_LOG=trace for additional logging verbosity (#1670)
- Document local testing instructions (#1672)
- Minimal markdown nits (#1664)
- Use
--overriderather than-oto specify overrides in README.md (#1668) - Remove setuptools & wheel from seed packages on Python 3.12+ ( #1602) (#1613)
0.1.6
Enhancements
- Expose find_uv_bin and declare typing support (#1728)
- Implement
uv cache dir(#1734) - Support
venv --prompt(#1570) - Print activation instructions for a venv after one has been created (#1580)
CLI
- Add shell completions generation (#1675)
- Move
uv cleantouv cache clean(#1733) - Allow
-falias for--find-links(#1735)
Configuration
- Control pip timeout duration via environment variable (#1694)
Bug fixes
- Add support for absolute paths on Windows (#1725)
- Don't preserve timestamp in streaming unzip (#1749)
- Ensure extras trigger an install (#1727)
- Only preserve the executable bit (#1743)
- Preserve trailing slash for
--find-linksURLs (#1720) - Respect
--index-urlprovided via requirements.txt (#1719) - Set index URLs for seeding venv (#1755)
- Support dotted function paths for script entrypoints (#1622)
- Support recursive extras for URL dependencies (#1729)
- Better error message for missing space before semicolon in requirements (#1746)
- Add warning when dependencies are empty with Poetry metadata (#1650)
- Ignore invalid extras from PyPI (#1731)
- Improve Poetry warning (#1730)
- Remove uv version from uv pip compile header (#1716)
- Fix handling of range requests on servers that return "Method not allowed" (#1713)
- re-introduce cache healing when we see an invalid cache entry (#1707)
Documentation
- Clarify Windows install command in README.md (#1751)
- Add instructions for installing on Arch Linux (#1765)
Rust API
- Allow passing in a custom reqwest Client (#1745)
0.1.7
Enhancements
- Stream zip archive when fetching non-range-request metadata (#1792)
- Support setting request timeout with
UV_HTTP_TIMEOUTandHTTP_TIMEOUT(#1780) - Improve error message when git ref cannot be fetched (#1826)
Configuration
- Implement
--annotation-styleparameter foruv pip compile(#1679)
Bug fixes
- Add fixup for
prefect<1.0.0(#1825) - Add support for
>devspecifier (#1776) - Avoid enforcing URL correctness for installed distributions (#1793)
- Don't expect pinned packages for editables with non-existent extras (#1847)
- Linker copies files as a fallback when ref-linking fails (#1773)
- Move conflicting dependencies into PubGrub (#1796)
- Normalize
VIRTUAL_ENVpath in activation scripts (#1817) - Preserve executable bit when untarring archives (#1790)
- Retain passwords in Git URLs (#1717)
- Sort output when installing seed packages (#1822)
- Treat ARM wheels as higher-priority than universal (#1843)
- Use
gitcommand to fetch repositories instead oflibgit2for robust SSH support (#1781) - Use redirected URL as base for relative paths (#1816)
- Use the right marker for the
implementationfield ofpyvenv.cfg(#1785) - Wait for distribution metadata with
--no-deps(#1812) - platform-host: check /bin/sh, then /bin/dash and then /bin/ls (#1818)
- Ensure that builds within the cache aren't considered Git repositories (#1782)
- Strip trailing
+from version number of local Python builds (#1771)
Documentation
- Add docs for git authentication (#1844)
- Update venv activation for windows (#1836)
- Update README.md to include extras example (#1806)
0.1.8
Bug fixes
- Allow duplicate URLs that resolve to the same canonical URL (#1877)
- Retain authentication attached to URLs when making requests to the same host (#1874)
- Win Trampoline: Use Python executable path encoded in binary (#1803)
- Expose types to implement custom
ResolverProvider(#1862) - Search
PATHwhenpythoncan't be found withpy(#1711) - Avoid displaying "root" package when formatting terms (#1871)
Documentation
- Use more universal windows install instructions (#1811)
Rust API
- Expose types to implement custom ResolverProvider (#1862)
0.1.9
Enhancements
- Add support for
config_settingsin PEP 517 hooks (#1833) - feat: allow passing extra config k,v pairs for pyvenv.cfg when creating a venv (#1852)
Bug fixes
- Ensure authentication is passed from the index url to distribution files (#1886)
- Use
rustls-tls-native-rootsinuvcrate (#1888) - pep440: fix version ordering (#1883)
- Hide index URLs from header if not emitted (#1835)
Documentation
- Add changelog (#1881)
0.1.10
Enhancements
- Omit
--find-linksfrom annotation header unless requested (#1898) - Write to stdout when
--output-fileis present (#1892)
Bug fixes
- Retain authentication when making range requests (#1902)
- Fix uv-created venv detection (#1908)
- Fix Windows
pyfailure from spurious stderr (#1885) - Ignore Python 2 installations when querying for interpreters (#1905)
0.1.11
Enhancements
- Add support for pip-compile's
--unsafe-packageflag (#1889) - Improve interpreter discovery logging (#1909)
- Implement
uv pip list(#1662) - Allow round-trip via
freezecommand (#1936) - Don't write pip compile output to stdout with
-q(#1962) - Add long-form version output (#1930)
Compatibility
- Accept single string for
backend-path(#1969) - Add compatibility for deprecated
python_implementationmarker (#1933) - Generate versioned
piplaunchers (#1918)
Bug fixes
- Avoid erroring for source distributions with symlinks in archive (#1944)
- Expand scope of archive timestamping (#1960)
- Gracefully handle virtual environments with conflicting packages (#1893)
- Invalidate dependencies when editables are updated (#1955)
- Make < exclusive for non-pre-release markers (#1878)
- Properly apply constraints in venv audit (#1956)
- Re-sync editables on-change (#1959)
- Remove current directory from PATH in PEP 517 hooks (#1975)
- Remove
--upgradeand--quietflags from generated output files (#1873) - Use full python version in
pyvenv.cfg(#1979)
Performance
- fix
uv pip installhandling of gzip'd response and PEP 691 (#1978) - Remove
spawn_blockingfrom version map (#1966)
Documentation
- Clarify
lowestvs.lowest-directresolution strategies (#1954) - Improve error message for network timeouts (#1961)
0.1.12
CLI
- Add a
--pythonflag to allow installation into arbitrary Python interpreters (#2000) - Add a
--systemflag for opt-in non-virtualenv installs (#2046)
Enhancements
- Add a
--prealias for--prerelease=allow(#2049) - Enable
freezeandlistto introspect non-virtualenv Pythons (#2033) - Support environment variables in index URLs in requirements files (#2036)
- Add
--exclude-editableand--excludeargs touv pip list(#1985) - Always remove color codes from output file (#2018)
- Support recursive extras in direct
pyproject.tomlfiles (#1990) - Un-cache editable requirements with dynamic metadata (#2029)
- Use a non-local lockfile for locking system interpreters (#2045)
- Surface the
EXTERNALLY-MANAGEDmessage to users (#2032)
0.1.13
Bug fixes
- Prioritize
PATHoverpy --list-pathsin Windows selection (#2057). This fixes an issue in which the--systemflag would not work correctly on Windows in GitHub Actions. - Avoid canonicalizing user-provided interpreters
(#2072). This fixes an issue in which the
--pythonflag would not work correctly with pyenv and other interpreters. - Allow pre-releases for requirements in constraints files (#2069)
- Avoid truncating EXTERNALLY-MANAGED error message (#2073)
- Extend activation highlighting to entire
venvcommand (#2070) - Reverse the order of
--index-urland--extra-index-urlpriority (#2083) - Avoid assuming
RECORDfile is inplatlib(#2091)
0.1.14
Enhancements
- Add support for
--system-site-packagesinuv venv(#2101) - Add support for Python installed from Windows Store (#2122)
- Expand environment variables in
-rand-csubfile paths (#2143) - Treat empty index URL strings as null instead of erroring (#2137)
- Use space as delimiter for
UV_EXTRA_INDEX_URL(#2140) - Report line and column numbers in
requirements.txtparser errors (#2100) - Improve error messages when
uvis offline (#2110)
Bug fixes
- Future-proof the
pipentrypoints special-case (#1982) - Allow empty extras in
pep508-rsand add more corner case to tests (#2128) - Adjust base Python lookup logic for Windows to respect Windows Store (#2121)
- Consider editable dependencies to be 'direct' for
--resolution(#2114) - Preserve environment variables in resolved Git dependencies (#2125)
- Use
prefixinstead ofbase_prefixfor environment root (#2117) - Wrap unsafe script shebangs in
/bin/sh(#2097) - Make WHEEL parsing error line numbers one indexed (#2151)
- Determine
site-packagespath based on implementation name (#2094)
Documentation
- Add caveats on
--systemsupport to the README (#2131) - Add instructions for
SSL_CERT_FILEenv var (#2124)
0.1.15
Enhancements
- Add a
--compileoption toinstallto enable bytecode compilation (#2086) - Expose the
--exclude-newerflag to limit candidate packages based on date (#2166) - Add
uvversion to user agent (#2136)
Bug fixes
- Set
.metadatasuffix on URL path (#2123) - Fallback to non-range requests when HEAD returns 404 (#2186)
- Allow direct URLs in optional dependencies in editables (#2206)
- Allow empty values in WHEEL files (#2170)
- Avoid Windows Store shims in
--python python3-like invocations (#2212) - Expand Windows shim detection to include
python3.12.exe(#2209) - HTML-decode URLs in HTML indexes (#2215)
- Make direct dependency detection respect markers (#2207)
- Respect
py --list-pathsfallback in--python python3invocations on Windows (#2214) - Respect local freshness when auditing installed environment (#2169)
- Respect markers on URL dependencies in editables (#2176)
- Respect nested editable requirements in parser (#2204)
- Run Windows against Python 3.13 (#2171)
- Error when editables don't match
Requires-Python(#2194)
0.1.16
Enhancements
- Add support for
--no-build-isolation(#2258) - Add support for
--break-system-packages(#2249) - Add support for
.netrcauthentication (#2241) - Add support for
--format=freezeand--format=jsoninuv pip list(#1998) - Add support for remote
https://requirements files (#1332) (#2081) - Implement
uv pip show(#2115) - Allow
UV_PRERELEASEto be set via environment variable (#2240) - Include exit code for build failures (#2108)
- Query interpreter to determine correct
virtualenvpaths, enablinguv venvwith PyPy and others (#2188) - Respect non-
sysconfig-based system Pythons, enabling--systeminstalls on Debian and others (#2193)
Bug fixes
- Fallback to fresh request on non-validating 304 (#2218)
- Add
.stdout()and.stderr()outputs toPrinter(#2227) - Close
RECORDafter reading entries during uninstall (#2259) - Fix Conda Python detection on Windows (#2279)
- Fix parsing requirement where a variable follows an operator without a space (#2273)
- Prefer more recent minor versions in wheel tags (#2263)
- Retry on Python interpreter launch failures during
--compile(#2278) - Show appropriate activation command based on shell detection (#2221)
- Escape Windows paths with spaces in
venvactivation command (#2223) - Add specialized activation message for
cmd.exe(#2226) - Cache wheel metadata in no-PEP 658 fallback (#2255)
- Use reparse points to detect Windows installer shims (#2284)
Documentation
- Add
PIP_COMPATIBILITY.mdto document known deviations frompip(#2244)
0.1.17
Enhancements
- Allow more-precise Git URLs to override less-precise Git URLs (#2285)
- Add support for Metadata 2.2 (#2293)
- Added ability to select bytecode invalidation mode of generated
.pycfiles (#2297) - Add
Seekfallback for zip files with data descriptors (#2320)
Bug fixes
- Support reading UTF-16 requirements files (#2283)
- Trim rows in
pip list(#2298) - Avoid using setuptools shim of distutils (#2305)
- Communicate PEP 517 hook results via files (#2314)
- Increase default buffer size for wheel and source downloads (#2319)
- Add
Accept-Encoding: identityto remaining stream paths (#2321) - Avoid duplicating authorization header with netrc (#2325)
- Remove duplicate
INSTALLERinRECORD(#2336)
Documentation
- Add a custom suggestion to install wheel into the build environment (#2307)
- Document the environment variables that uv respects (#2318)
0.1.18
Breaking changes
Users that rely on native root certificates (or the SSL_CERT_FILE) environment variable must now
pass the --native-tls command-line flag to enable this behavior.
- Enable TLS native root toggling at runtime (#2362)
Enhancements
- Add
--dry-runflag touv pip install(#1436) - Implement "Requires" field in
pip show(#2347) - Remove
wheelfrom default PEP 517 backend (#2341) - Add
UV_SYSTEM_PYTHONenvironment variable as alias to--system(#2354) - Add a
-vvlog level and make-vmore readable (#2301)
Bug fixes
- Expand environment variables prior to detecting scheme (#2394)
- Fix bug where
--no-binary :all:prevented build of editable packages (#2393) - Ignore inverse dependencies when building graph (#2360)
- Skip prefetching when
--no-depsis specified (#2373) - Trim injected
python_versionmarker to (major, minor) (#2395) - Wait for request stream to flush before returning resolution (#2374)
- Write relative paths for scripts in data directory (#2348)
- Add dedicated error message for direct filesystem paths in requirements (#2369)
0.1.19
Configuration
- Add
UV_NATIVE_TLSenvironment variable (#2412) - Allow
SSL_CERT_FILEwithout requiring--native-tls(#2401) - Add support for retrieving credentials from
keyring(#2254)
Bug fixes
- Add backoff for transient Windows failures (#2419)
- Move architecture and operating system probing to Python (#2381)
- Respect
--native-tlsinvenv(#2433) - Treat non-existent site-packages as empty (#2413)
Documentation
- Document HTTP authentication (#2425)
Performance
- Improve performance of version range operations (#2421)
0.1.20
Bug fixes
- Add in-URL credentials to store prior to creating requests (#2446)
- Error when direct URL requirements don't match
Requires-Python(#2196)
0.1.21
Enhancements
- Loosen
.dist-infovalidation to accept arbitrary versions (#2441)
Bug fixes
- Fix macOS architecture detection on i386 machines (#2454)
0.1.22
Enhancements
- Add support for PyTorch-style local version semantics (#2430)
- Add support for Hatch's
{root:uri}paths in editable installs (#2492) - Implement
uv pip check(#2397) - Add pip-like linehaul information to user agent (#2493)
- Add additional ARM targets to release (#2417)
Bug fixes
- Allow direct file path requirements to include fragments (#2502)
- Avoid panicking on cannot-be-a-base URLs (#2461)
- Drop
macosx_10_0from compatible wheel tags onaarch64(#2496) - Fix operating system detection on *BSD (#2505)
- Fix priority of ABI tags (#2489)
- Fix priority of platform tags for manylinux (#2483)
- Make > operator exclude post and local releases (#2471)
- Re-add support for pyenv shims (#2503)
- Validate required package names against wheel package names (#2516)
0.1.23
Enhancements
- Implement
--no-strip-extrasto preserve extras in compilation (#2555) - Preserve hashes for pinned packages when compiling without
--upgrade(#2532) - Add a
uv self updatecommand (#2228) - Use relative paths for user-facing messages (#2559)
- Add
CUSTOM_COMPILE_COMMANDsupport touv pip compile(#2554) - Add SHA384 and SHA512 hash algorithms (#2534)
- Treat uninstallable packages as warnings, rather than errors (#2557)
Bug fixes
- Allow
VIRTUAL_ENVto take precedence overCONDA_PREFIX(#2574) - Ensure mtime of site packages is updated during wheel installation (#2545)
- Re-test validity after every lenient parsing change (#2550)
- Run interpreter discovery under
-Imode (#2552) - Search in both
purelibandplatlibfor site-packages population (#2537) - Fix wheel builds and uploads for musl ARM (#2518)
Documentation
- Add
--link-modedefaults to CLI (#2549) - Add an example workflow for compiling the current environment's packages (#1968)
- Add
uv pip check diagnosticstoPIP_COMPATIBILITY.md(#2544)
0.1.24
Breaking changes
uv pip uninstallno longer supports specifying targets with the-e/--editableflag (#2577)
Enhancements
- Add a garbage collection mechanism to the CLI (#1217)
- Add progress reporting for named requirement resolution (#2605)
- Add support for parsing unnamed URL requirements (#2567)
- Add support for unnamed local directory requirements (#2571)
- Enable PEP 517 builds for unnamed requirements (#2600)
- Enable install audits without resolving named requirements (#2575)
- Enable unnamed requirements for direct URLs (#2569)
- Respect HTTP client options when reading remote requirements files (#2434)
- Use PEP 517 build hooks to resolve unnamed requirements (#2604)
- Use c-string literals and update trampolines (#2590)
- Support unnamed requirements directly in
uv pip uninstall(#2577) - Add support for unnamed Git and HTTP requirements (#2578)
- Make self-update an opt-in Cargo feature (#2606)
- Update minimum rust version (cargo) to 1.76 (#2618)
Bug fixes
- Fix self-updates on Windows (#2598)
- Fix authentication with usernames that contain
@characters (#2592) - Do not error when there are warnings on Python interpreter stderr (#2599)
- Prevent discovery of cache gitignore when building distributions (#2615)
Rust API
Documentation
- Fix badge to current CI status (#2612)
0.1.25
Breaking changes
- Limit overrides and constraints to
requirements.txtformat (#2632)
Enhancements
- Accept
setup.pyandsetup.cfgfiles in compile (#2634) - Add
--no-binaryand--only-binarysupport torequirements.txt(#2680) - Allow pre-releases, locals, and URLs in non-editable path requirements (#2671)
- Use PEP 517 to extract dynamic
pyproject.tomlmetadata (#2633) - Add
Editable project locationandRequired-bytopip show(#2589) - Avoid
prepare_metadata_for_build_wheelcalls for Hatch packages with dynamic dependencies (#2645) - Fall back to PEP 517 hooks for non-compliant PEP 621 metadata (#2662)
- Support
file://localhost/schemes (#2657) - Use normal resolver in
pip sync(#2696)
CLI
- Disallow
pyproject.tomlfrompip uninstall -r(#2663) - Unhide
--emit-index-urland--emit-find-links(#2691) - Use dense formatting for requirement version specifiers in diagnostics (#2601)
Performance
- Add an in-memory cache for Git references (#2682)
- Do not force-recompile
.pycfiles (#2642) - Read package metadata from
pyproject.tomlwhen it is statically defined (#2676)
Bug fixes
- Don't error on multiple matching index URLs (#2627)
- Extract local versions from direct URL requirements (#2624)
- Respect
--no-indexwith--find-linksinpip sync(#2692) - Use
Scriptsfolder for virtualenv activation prompt (#2690)
0.1.26
Bug fixes
- Bump simple cache version (#2712)
0.1.27
Enhancements
- Add
--exclude-editablesupport topip-freeze(#2740) - Add
pyproject.tomlet al to list of prompted packages (#2746) - Consider installed packages during resolution (#2596)
- Recursively allow URL requirements for local dependencies (#2702)
Configuration
- Add
UV_RESOLUTIONenvironment variable for--resolution(#2720)
Bug fixes
- Respect overrides in all direct-dependency iterators (#2742)
- Respect subdirectories when reading static metadata (#2728)
0.1.28
Enhancements
- Recursively resolve direct URL references upfront (#2684)
Performance
- Populate the in-memory index when resolving lookahead URLs (#2761)
Bug fixes
- Detect Fish via
FISH_VERSION(#2781) - Exclude installed distributions with multiple versions from consideration in the resolver (#2779)
- Resolve non-deterministic behavior in preferences due to site-packages ordering (#2780)
- Use canonical URL to key redirect map (#2764)
- Use distribution database and index for all pre-resolution phases (#2766)
- Fix
uv self updateon Linux (#2783)
0.1.29
Enhancements
- Allow conflicting Git URLs that refer to the same commit SHA (#2769)
- Allow package lookups across multiple indexes via explicit opt-in
(
--index-strategy unsafe-any-match) (#2815) - Allow no-op
--no-compileflag on CLI (#2816) - Upgrade
rs-async-zipto support data descriptors (#2809)
Bug fixes
- Avoid unused extras check in
pip installfor source trees (#2811) - Deduplicate editables during install commands (#2820)
- Fix windows lock race: lock exclusive after all try lock errors (#2800)
- Preserve
.gitsuffixes and casing in Git dependencies (#2789) - Respect Git tags and branches that look like short commits (#2795)
- Enable virtualenv creation on Windows with cpython-x86 (#2707)
Documentation
- Document that uv is safe to run concurrently (#2818)
0.1.30
Enhancements
- Show resolution diagnostics after
pip install(#2829)
Performance
- Speed up cold-cache
urllib3-boto3-botocoreperformance with batched prefetching (#2452)
Bug fixes
- Backtrack on distributions with invalid metadata (#2834)
- Include LICENSE files in source distribution (#2855)
- Respect
--no-buildand--no-binaryin--find-links(#2826) - Respect cached local
--find-linksin install plan (#2907) - Avoid panic with multiple confirmation handlers (#2903)
- Use scheme parsing to determine absolute vs. relative URLs (#2904)
- Remove additional 'because' in resolution failure messages (#2849)
- Use
miettewhen printingpip syncresolution failures (#2848)
0.1.31
Bug fixes
- Ignore direct URL distributions in prefetcher (#2943)
0.1.32
Enhancements
- Add a
--require-hashescommand-line setting (#2824) - Add hash-checking support to
installandsync(#2945) - Add support for URL requirements in
--generate-hashes(#2952) - Allow unnamed requirements for overrides (#2999)
- Enforce and backtrack on invalid versions in source metadata (#2954)
- Fall back to distributions without hashes in resolver (#2949)
- Implement
--emit-index-annotationto annotate source index for each package (#2926) - Log hard-link failures (#3015)
- Support free-threaded Python (#2805)
- Support unnamed requirements in
--require-hashes(#2993) - Respect link mode for builds, in
uv pip compileand foruv venvseed packages (#3016) - Force color for build error messages (#3032)
- Surface invalid metadata as hints in error reports (#2850)
Configuration
- Add
UV_BREAK_SYSTEM_PACKAGESenvironment variable (#2995)
CLI
- Remove some restrictions in argument groups (#3001)
Bug fixes
- Add
--find-linkssource distributions to the registry cache (#2986) - Allow comments after all
requirements.txtentries (#3018) - Avoid cache invalidation on credentials renewal (#3010)
- Avoid calling
normalize_pathwith relative paths that extend beyond the current directory (#3013) - Deduplicate symbolic links between
purelibandplatlib(#3002) - Remove unused
--output-filefrompip install(#2975) - Strip query string when parsing filename from HTML index (#2961)
- Update hashes without
--upgradeif not present (#2966)
0.1.33
Breaking changes
Using the keyring requires a username to be provided on index URLs now. Previously, the username
oauth2accesstoken was assumed. This will affect Google Artifact Registry users using
--keyring-provider subprocess and an index URL without a username. The suggested fix is to add the
required username to index URLs, e.g., https://oauth2accesstoken@<url>.
See #2976 for details.
Enhancements
- Allow passing a virtual environment path to
uv pip --python(#3064) - Add compatibility argument for
pip list --outdated(#3055)
CLI
Performance
- Incorporate heuristics to improve package prioritization (#3087)
Bug fixes
- Fix HTTP authentication when the password includes percent encoded characters (e.g., with Google Artifact Registry) (#2822)
- Use usernames from URLs when looking for credentials in netrc files and the keyring #2563)
- Skip
HEADrequests for indexes that return 403 (e.g., PyPICloud) (#3070) - Use kebab-case consistently (#3080)
- Show package name in no version for direct dependency error (#3056)
- Avoid erroring when encountering
.tar.bz2source distributions (#3069)
0.1.34
CLI
- Allow
--pythonand--systemonpip compile(#3115) - Remove
Option<bool>for--no-cache(#3129) - Rename
--compileto--compile-bytecode(#3102) - Accept
0,1, and similar values for Boolean environment variables (#3113)
Configuration
Bug fixes
- Avoid fetching unnecessary extra versions during resolution (#3100)
- Avoid deprioritizing recursive editables (#3133)
- Avoid treating localhost URLs as local file paths (#3132)
- Hide password in the index printed via
--emit-index-annotation(#3112) - Restore seeding of authentication cache from index URLs (#3124)
0.1.35
Enhancements
- Add a
--python-platformargument to enable resolving against a target platform (#3111) - Enforce HTTP timeouts on a per-read (rather than per-request) basis (#3144)
Bug fixes
- Avoid preferring constrained over unconstrained packages (#3148)
- Allow
UV_SYSTEM_PYTHON=1in addition toUV_SYSTEM_PYTHON=true(#3136)
0.1.36
Enhancements
- Add support for embedded Python on Windows (#3161)
- Add Docker image publishing to release pipeline (#3155)
Configuration
- Add
UV_CONSTRAINTenvironment variable to provide value for--constraint(#3162)
Bug fixes
- Avoid waiting for metadata for
--no-depseditables (#3188) - Fix
venvlauncher.exereference in venv creation (#3160) - Fix authentication for URLs with a shared realm (#3130)
- Restrict observed requirements to direct when
--no-depsis specified (#3191)
Documentation
- Add a versioning policy to the README (#3151)
0.1.37
Enhancements
- Change default HTTP read timeout to 30s (#3182)
- Add
--python-platformtosyncandinstallcommands (#3154) - Add ticks around error messages more consistently (#3004)
- Fix Docker publish permissions in release pipeline (#3195)
- Improve tracing for keyring provider (#3207)
Performance
- Update keyring provider to be async (#3089)
Bug fixes
- Fix fetch of credentials when cache is seeded with username (#3206)
Documentation
- Improve
--python-platformdocumentation (#3202)
0.1.38
Enhancements
- Add alternate manylinux targets to
--python-platform(#3229) - An enum and backticks for lookahead error (#3216)
- Upgrade macOS target to
12.0(#3228) - Add keyring logs for URL and host fetches (#3212)
- Combine unresolvable error dependency clauses with the same root (#3225)
CLI
- Gave a better name to the
--colorplaceholder (#3226) - Warn when an unsupported Python version is encountered (#3250)
Configuration
- Use directory instead of file when searching for
uv.tomlfile (#3203)
Performance
- Only perform fetches of credentials for a realm and username combination once (#3237)
- Unroll self-dependencies via extras (#3230)
- Use read-write locks instead of mutexes in authentication handling (#3210)
Bug fixes
- Avoid removing quotes from requirements markers (#3214)
- Avoid adding extras when expanding constraints (#3232)
- Reinstall package when editable label is removed (#3219)
Documentation
- Add
RAYON_NUM_THREADSto environment variable docs (#3223) - Document support for HTTP proxy variables (#3247)
- Fix documentation for
--python-platform(#3220)
0.1.39
Enhancements
- Add
--targetsupport tosyncandinstall(#3257) - Implement
--index-strategy unsafe-best-match(#3138)
Bug fixes
- Fix
platform_machinetag for--python-platformon macOS ARM (#3267)
Release
0.1.40
Enhancements
- Add
--allow-existingto overwrite existing virtualenv (#2548) - Respect and enable uninstalls of legacy editables (
.egg-link) (#3415) - Respect and enable uninstalls of existing
.egg-infopackages (#3380)
CLI
- Accept
--no-upgrade,--no-refresh, etc. on the CLI (#3328)
Configuration
- Expose
UV_NO_BUILD_ISOLATIONas environment variable (#3318) - Expose
UV_PYTHONas an environment variable (#3284) - Expose
UV_LINK_MODEas environment variable (#3315) - Add
UV_CUSTOM_COMPILE_COMMANDto environment variable docs (#3382)
Bug fixes
- Ignore 401 HTTP responses with multiple indexes (#3292)
- Avoid panic for file URLs (#3306)
- Quote version parse errors consistently (#3325)
- Detect current environment when
uvis invoked from within a virtualenv (#3379) - Unset target when creating virtual environments (#3362)
- Update activation scripts from virtualenv (#3376)
- Use canonical URLs in satisfaction check (#3373)
Preview features
- Add basic
tool.uv.sourcessupport (#3263) - Improve non-git error message (#3403)
- Preserve given for
tool.uv.sourcespaths (#3412) - Restore verbatim in error message (#3402)
- Use preview mode for tool.uv.sources (#3277)
- Use top-level
--isolatedforuv run(#3431) - add basic "install from lock file" operation (#3340)
- uv-resolver: add initial version of universal lock file format (#3314)
0.1.41
Bug fixes
- Remove unconstrained version error from requirements (#3443)
0.1.42
This release includes stabilized support for persistent configuration in uv.
uv will now read project configuration from a pyproject.toml or uv.toml file in the current
directory or any parent directory, along with user configuration at ~/.config/uv/uv.toml (or
$XDG_CONFIG_HOME/uv/uv.toml) on macOS and Linux, and %APPDATA%\uv\uv.toml on Windows.
See: Persistent Configuration for more.
Enhancements
- Respect
MACOSX_DEPLOYMENT_TARGETin--python-platform(#3470)
Configuration
- Add documentation for persistent configuration (#3467)
- Add JSON Schema export to SchemaStore (#3461)
- Merge user and workspace settings (#3462)
Bug fixes
- Use Metadata10 to parse PKG-INFO of legacy editable (#3450)
- Apply normcase to line from easy-install.pth (#3451)
- Upgrade
async_http_range_readerto v0.8.0 to respect redirects in range requests (#3460) - Use last non-EOL version for
--python-platformmacOS (#3469)
Preview features
- Use environment layering for
uv run --with(#3447) - Warn when missing minimal bounds when using
tool.uv.sources(#3452)
0.1.43
Enhancements
- Annotate sources of requirements in
pip compileoutput (#3269) - Track origin for
setup.pyfiles and friends (#3481)
Configuration
- Consolidate concurrency limits and expose as environment variables (#3493)
Release
- Use manylinux: auto to enable
musllinux_1_2aarch64 builds (#3444) - Enable musllinux_1_1 wheels (#3523)
Bug fixes
- Avoid keyword arguments for PEP 517 build hooks (#3517)
- Apply advisory locks when building source distributions (#3525)
- Avoid attempting to build editables when fetching metadata (#3563)
- Clone individual files on windows ReFS (#3551)
- Filter irrelevant requirements from source annotations (#3479)
- Make cache clearing robust to directories without read permissions (#3524)
- Respect constraints on editable dependencies (#3554)
- Skip Python 2 versions when locating Python (#3476)
- Make
--isolateda global argument (#3558) - Allow unknown
pyproject.tomlfields (#3511) - Change error value detection for glibc (#3487)
Preview features
- Create virtualenv if it doesn't exist in project API (#3499)
- Discover
uv runprojects hierarchically (#3494) - Read and write
uv.lockbased on project root (#3497) - Read package name from
pyproject.tomlinuv run(#3496) - Rebrand workspace API as project API (#3489)
0.1.44
Release
Reverts "Use manylinux: auto to enable musllinux_1_2 aarch64 builds
(#3444)"
The manylinux change appeared to introduce SSL errors when building aarch64 Docker images, e.g.,
invalid peer certificate: BadSignature
The v0.1.42 behavior for aarch64 manylinux builds is restored in this release.
See #3576
0.1.45
Enhancements
- Parse and store extras on editable requirements (#3629)
- Allow local versions in wheel filenames (#3596)
- Create lib64 symlink for 64-bit, non-macOS, POSIX environments (#3584)
Configuration
- Add
UV_CONCURRENT_INSTALLSvariable in favor ofRAYON_NUM_THREADS(#3646) - Add serialization and deserialization for
--find-links(#3619) - Apply combination logic to merge CLI and persistent configuration (#3618)
Performance
- Parallelize resolver (#3627)
Bug fixes
- Reduce sensitivity of unknown option error to discard Python 2 interpreters (#3580)
- Respect installed packages in
uv run(#3603) - Separate cache construction from initialization (#3607)
- Add missing
"directory"branch in source match (#3608) - Fix source annotation in pip compile
annotation-style=lineoutput (#3637) - Run cargo update to pull in h2 (#3638)
- URL-decode hashes in HTML fragments (#3655)
- Always print JSON output with
--formatjson (#3671)
Documentation
- Add
UV_CONFIG_FILEenvironment variable to documentation (#3653) - Explicitly mention
--userin compatibility guide (#3666)
Release
Preview features
- Add direct URL conversion to lockfile (#3633)
- Add hashes and versions to all distributions (#3589)
- Add local path conversions from lockfile (#3609)
- Add missing
"directory"branch in source match (#3608) - Add registry file size to lockfile (#3652)
- Add registry source distribution support to lockfile (#3649)
- Refactor editables for supporting them in bluejay commands (#3639)
- Rename
sourcedisttosdistin lockfile (#3590) - Respect installed packages in
uv run(#3603) - Support lossless serialization for Git dependencies in lockfile (#3630)