Commit Graph

5224 Commits

Author SHA1 Message Date
Charlie Marsh
340e30d91e Include extras in uv-build Requires-Dist metadata (#10110)
## Summary

Closes https://github.com/astral-sh/uv/issues/10091.
2024-12-23 08:56:53 -05:00
renovate[bot]
c329623770 Update Rust crate thiserror to v2.0.9 (#10112) 2024-12-23 08:48:06 -05:00
renovate[bot]
9d417da4e1 Update astral-sh/setup-uv action to v5 (#10116) 2024-12-23 08:47:58 -05:00
renovate[bot]
df99d04b1d Update pre-commit dependencies (#10114) 2024-12-23 08:47:43 -05:00
renovate[bot]
4008e313bf Update Rust crate which to v7.0.1 (#10113) 2024-12-23 08:47:36 -05:00
renovate[bot]
dae551d8d8 Update documentation references to astral-sh/setup-uv to v5 (#10117) 2024-12-23 08:47:28 -05:00
renovate[bot]
54ab15121c Update Rust crate target-lexicon to v0.13.1 (#10111) 2024-12-23 01:45:06 +00:00
renovate[bot]
27ec53c736 Update Rust crate syn to v2.0.91 (#10109) 2024-12-23 01:34:43 +00:00
renovate[bot]
a31ec7aa16 Update Rust crate serde_json to v1.0.134 (#10108) 2024-12-23 01:33:50 +00:00
renovate[bot]
4945880270 Update Rust crate predicates to v3.1.3 (#10107) 2024-12-23 01:29:47 +00:00
renovate[bot]
1f97944c79 Update Rust crate platform-info to v2.0.5 (#10106) 2024-12-23 01:12:31 +00:00
renovate[bot]
ad156f393c Update Rust crate home to v0.5.11 (#10104) 2024-12-23 01:01:24 +00:00
renovate[bot]
18d8b79db1 Update Rust crate console to v0.15.10 (#10103) 2024-12-23 00:59:23 +00:00
renovate[bot]
9e33658ba9 Update Rust crate anyhow to v1.0.95 (#10102) 2024-12-23 00:49:18 +00:00
Charlie Marsh
d9008595d7 Rename 'Expected' and 'Actual' in lockfile logging (#10101)
## Summary

I can never remember which is which.
2024-12-22 20:42:42 +00:00
Charlie Marsh
0e836bcbbc Include both installed and request in satisfied logging (#10100) 2024-12-22 20:41:28 +00:00
Charlie Marsh
38a38fa8e2 Avoid erroring when subdirectories are provided in uv add (#10095)
## Summary

Closes https://github.com/astral-sh/uv/issues/10094.
2024-12-22 15:23:27 +00:00
Charlie Marsh
33cb3497aa Strip fragment when storing direct URL (#10093)
## Summary

Closes
https://github.com/astral-sh/uv/issues/10088#issuecomment-2558280467.
2024-12-22 09:07:04 -05:00
Charlie Marsh
ad92aaf186 Update PyTorch test to latest numpy (#10087) 2024-12-21 18:43:09 -05:00
Charlie Marsh
6e8114ae53 Update PyTorch test to latest jinja2 (#10084)
## Summary

This index doesn't include `exclude_newer`, unfortunately, so this
happens from time to time.
2024-12-21 21:01:10 +00:00
Charlie Marsh
8ff1dfd9b5 Add test cases for hash enforcement from existing uv.lock (#10081) 2024-12-21 09:53:38 -05:00
Charlie Marsh
705b3da913 Preserve sort when deciding on requirement placement (#10078)
## Summary

We had the right logic for determining whether the list is already
sorted, but we forgot to apply the same logic when deciding where to
insert the requirement, which made the list _unsorted_ for future
operations.

Closes https://github.com/astral-sh/uv/issues/10076.
2024-12-21 09:43:43 -05:00
Charlie Marsh
19a6b5fe4b Include hashes for local source archives (#10080)
## Summary

Closes https://github.com/astral-sh/uv/issues/10077
2024-12-21 09:31:28 -05:00
Charlie Marsh
3da4fdeeb3 Use portable path in requirements wire (#10071) 2024-12-20 23:10:24 -05:00
Charlie Marsh
9128fe1866 Use portable path instead of string for subdirectory (#10069)
## Summary

A few places where there are extra conversions to and from string that
seem unnecessary; a few places where we're using `PathBuf` instead of
`PortablePathBuf`.
2024-12-21 00:28:36 +00:00
Charlie Marsh
ddc290feb4 Add support for subdirectories in direct URLs in uv.lock (#10068)
## Summary

There were some subtle bugs here and no test coverage.
2024-12-20 19:00:50 -05:00
Charlie Marsh
2c68dfd4a9 Backtrack to non-local versions when wheels are missing platform support (#10046)
## Summary

This is yet another variation on
https://github.com/astral-sh/uv/pull/9928, with a few minor changes:

1. It only applies to local versions (e.g., `2.5.1+cpu`).
2. It only _considers_ the non-local version as an alternative (e.g.,
`2.5.1`).
3. It only _considers_ the non-local alternative if it _does_ support
the unsupported platform.
4. Instead of failing, it falls back to using the local version.

So, this is far less strict, and is effectively designed to solve
PyTorch but nothing else. It's also not user-configurable, except by way
of using `environments` to exclude platforms.
2024-12-20 19:11:27 +00:00
Charlie Marsh
f3c5b63095 Avoid duplicating backslashes in sysconfig parser (#10063)
## Summary

We had a bug in our handling of escape sequences that caused us to
duplicate backslashes. If you installed repeatedly, we'd keep doubling
them, leading to an exponential blowup.

Closes #10060.
2024-12-20 13:52:42 -05:00
bw513
2ca5c2ba70 Add additional version filter to mirror script. (#10055)
## Summary

Adds regular expression based version filter to python mirror script.

## Test Plan

Manually using `uv run ./scripts/create-python-mirror.py --name cpython
--arch x86_64 --os linux --version "3.13.\d+$"`
2024-12-20 12:50:59 -06:00
konsti
cf14a62de7 Remove uv-pep440 cdylib (#10058) 2024-12-20 15:38:13 +00:00
bw513
6af14bddca Fix mirror script to handle newer metadata format. (#10050)
## Summary

The architecture details in `crates/uv-python/download-metadata.json` is
now a dictionary with family and variant data, whereas it used to be a
string. This patches the architecture filter in
`scripts/create-python-mirror.py` to support both scenarios.

## Test Plan

Tested manually using `uv run ./scripts/create-python-mirror.py --name
cpython --arch x86_64 --os linux --from-all-history`
2024-12-20 13:37:51 +00:00
konsti
ae659c8bfe Stable order for virtual packages (#10024)
uv gives priorities to packages by package name, not by virtual package
(`PubGrubPackage`). pubgrub otoh when prioritizing order the virtual
packages. When the order of virtual packages changes, uv changes its
resolutions and error messages. This means uv was depending on
implementation details of pubgrub's prioritization caching.

This broke with https://github.com/pubgrub-rs/pubgrub/pull/299, which
added a tiebreaker term that made pubgrub's sorting deterministic given
a deterministic ordering of allocating the packages (which happens the
first time pubgrub sees a package).

The new custom tiebreaker decreases the difference to upstream pubgrub.
2024-12-20 09:28:46 +00:00
konsti
ff860296c5 Use shutil.which for the build backend (#10028)
From PEP 517:

> All command-line scripts provided by the build-required packages must
be present in the build environment’s PATH. For example, if a project
declares a build-requirement on flit, then the following must work as a
mechanism for running the flit command-line tool:
>
> ```python
> import subprocess
> import shutil
> subprocess.check_call([shutil.which("flit"), ...])
> ```

Fixes #9991

---------

Co-authored-by: Charles Tapley Hoyt <cthoyt@gmail.com>
2024-12-20 10:15:24 +01:00
Zanie Blue
c4d0caaee5 Bump version to 0.5.11 (#10044) 0.5.11 2024-12-19 18:01:45 -06:00
github-actions[bot]
7cfa1fd204 Sync latest Python releases (#10045)
Automated update for Python releases.

Co-authored-by: zanieb <2586601+zanieb@users.noreply.github.com>
2024-12-19 17:58:25 -06:00
Zanie Blue
8908e26de7 Add uv python install --preview to the documentation (#10010) 2024-12-19 16:07:46 -06:00
Charlie Marsh
2b0f8ffdee Remove remaining references to deprecated first-match (#10038)
## Summary

Missed these in https://github.com/astral-sh/uv/pull/10036.
2024-12-19 14:37:27 -05:00
Charlie Marsh
4513ce0e2a Allow --script to be provided with uv run - (#10035)
## Summary

Closes #10021.
2024-12-19 17:52:57 +00:00
Charlie Marsh
5a3826d9ff Remove references to deprecated first-match (#10036)
## Summary

This is a backwards-compatible alias for `first-index`.

Closes https://github.com/astral-sh/uv/issues/10031.
2024-12-19 12:40:14 -05:00
Charlie Marsh
5c6e584987 Allow uv run arguments when reading from stdin (#10034)
## Summary

Closes https://github.com/astral-sh/uv/issues/10033.
2024-12-19 12:39:56 -05:00
Steven L.
bd03243dd5 Fix typo in Caching docs (#10032)
Fix typo in Caching docs

Co-authored-by: Steven Locorotondo <steven.locorotondo@justeattakeaway.com>
2024-12-19 12:15:32 -05:00
konsti
557e750199 Build backend: Preserve executable bit (#10027)
Fixes #9968
2024-12-19 17:54:44 +01:00
FishAlchemist
afdcea6540 Supplement missing separators for UV_INSTALL_DIR in Windows. (#9507)
## Summary
Ensure proper separation between instructions.
fix #9503 
## Test Plan
Both Windows Powershell (v5) and powershell 7 are available

![image](https://github.com/user-attachments/assets/9a73ea6f-8bee-49a1-b6d4-050317176cd6)



<!-- How was it tested? -->
2024-12-19 09:53:49 -06:00
konsti
ac348eecdf Batch prefetch per fork (#10029)
Previously, the batch prefetcher was part of the solver loop, used
across forks. This would lead to each preference in a fork being counted
as a tried version, so that after 5 forks with the identical version, we
would start batch prefetching. The reported numbers of tried versions
are also reported. By tracking the batch prefetcher on the fork the
numbers are corrected.

An alternative would be tracking the actually tried versions, but that
would mean more overhead in the top level solver loop when the current
heuristic works.

In `ecosystem/transformers`:

```
$ hyperfine --runs 10 --prepare "rm -f uv.lock" "../../target/release/uv lock --exclude-newer 2024-08-08T00:00:00Z" "uv lock --exclude-newer 2024-08-08T00:00:00Z"
Benchmark 1: ../../target/release/uv lock --exclude-newer 2024-08-08T00:00:00Z
  Time (mean ± σ):     386.2 ms ±   6.1 ms    [User: 396.0 ms, System: 144.5 ms]
  Range (min … max):   378.5 ms … 397.9 ms    10 runs

Benchmark 2: uv lock --exclude-newer 2024-08-08T00:00:00Z
  Time (mean ± σ):     422.0 ms ±   5.5 ms    [User: 459.6 ms, System: 190.3 ms]
  Range (min … max):   415.0 ms … 430.5 ms    10 runs

Summary
  ../../target/release/uv lock --exclude-newer 2024-08-08T00:00:00Z ran
    1.09 ± 0.02 times faster than uv lock --exclude-newer 2024-08-08T00:00:00Z
```
2024-12-19 15:47:01 +01:00
Jp
dd442450b0 Retry mechanisms on Windows for copy_atomic and write_atomic (#10026)
Hello! 🙂 


## Summary

After submitting retry mechanisms on scripts installation for windows:
#9543 , I noticed that some other functions were using the same
`persist` features of temporary files. This could lead to the same issue
spotted before (temporary lock by AV/EDR software). I validated that it
was possible.

So I updated them to go through the same function on Windows, which is
using the retry mechanisms if needed.
In order to do so, I add to add an async version of the
`persist_with_retry`.

There is a little trick to make the borrow-checker happy line 306,
curious of your opinion on it? This is just a pointer move so it should
not induce some performance regression if I'm not mistaking.

I also updated them to use `fs_err` on Unix for better error messages.

Also, one of the error messages I introduced was badly formatted, I
fixed it. 🙂

## Test Plan

The changes should be iso functional and covered with the existing
test-suite.
2024-12-19 08:43:57 -05:00
samypr100
e65a273f1b Sync env vars with uv-static crate 🧹 (#10016)
## Summary

Updates some env vars references to use `EnvVars` accordingly.
2024-12-18 22:10:27 -05:00
Zanie Blue
1d8dac17fd Fix uv python install --default note about multiple requests (#10011) 2024-12-18 22:12:54 +00:00
Charlie Marsh
4d3c1b325e Prefer higher Python lower-bounds when forking (#10007)
## Summary

With the advent of `--fork-strategy requires-python` (the default), we
actually _want_ to solve higher lower-bound forks before lower
lower-bound forks. The former ensures we get the most compatible
versions, while the latter ensures we get fewer overall versions. These
two strategies match up with `--fork-strategy`, but need to be respected
as such.

Closes https://github.com/astral-sh/uv/issues/9998.
2024-12-18 16:54:56 -05:00
konsti
8f88f98350 Update packse to 0.3.42 for backtracking test (#10009)
Add the missing test for #9843.
2024-12-18 19:53:34 +00:00
konsti
cb325e2e2f metadata_directory already contains dist-info directory (#10005)
From PEP 517:

```python
def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
    ...
```

> Must create a .dist-info directory containing wheel metadata inside
the specified metadata_directory (i.e., creates a directory like
{metadata_directory}/{package}-{version}.dist-info/).

```python
def build_wheel(wheel_directory, config_settings=None, metadata_directory=None):
    ...
```

> If the build frontend has previously called
prepare_metadata_for_build_wheel and depends on the wheel resulting from
this call to have metadata matching this earlier call, then it should
provide the path to the created .dist-info directory as the
metadata_directory argument.

Notice that the `metadata_directory` is different for the both hooks:
For `prepare_metadata_for_build_wheel` is doesn't contain the
`.dist-info` directory as final segment, for `build_wheel` it does.

Previously, the code assumed that both directories didn't contain the
`.dist-info` for both cases.

Checked with:

```
maturin build
uv init test-uv-build-backend --build-backend uv
cd test-uv-build-backend
uv build --sdist --preview
cd ..
UV_PREVIEW=1 pip install test-uv-build-backend/dist/test_uv_build_backend-0.1.0.tar.gz --no-index --find-links target/wheels/ -v --no-cache-dir
```

Fixes #9969
2024-12-18 20:14:08 +01:00