Commit Graph

3424 Commits

Author SHA1 Message Date
Brandon W Maister 0ec2d4e434
fix: Improve compatibility with VSCode PS1 prompt (#8006) 2024-10-09 17:33:21 +02:00
Ahmed Ilyas 1764a95d39
Support `pip install --exact` (#8044)
## Summary

Resolves #8041 

## Test Plan

`cargo test`
2024-10-09 15:31:28 +02:00
Jo 44d6478f88
Remove the newly created tool environment if sync failed (#8038)
## Summary

Resolves #8011

## Test Plan

```console
$ cargo run -- tool install pyenv
$ cargo run -- tool list
```
2024-10-09 13:01:53 +00:00
Zanie Blue 5bc726a1e7
Avoid deleting a project environment directory if we cannot tell if a `pyvenv.cfg` file exists (#8012)
I was exploring a fix to an [apparent
bug](https://github.com/astral-sh/uv/actions/runs/11240101202/job/31248937280?pr=8010)
but this was actually just a CI change
https://github.com/astral-sh/uv/pull/8013

Regardless, I think this code is safer?
2024-10-08 17:15:47 -05:00
Jacob Coffee e8b8d236a1
docs: add alias context to `uv tool run --help` command (#7695)
<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->

## Summary

<!-- What's the purpose of the change? What does it do, and why? -->
- Adds detail to the `uv tool run --help` CLI that lets users know about
the shorthand, `uvx`

## Test Plan

<!-- How was it tested? -->
Building and running CLI
```
…📝✓] via 🐋 orbstack via 🎁 v0.4.16 via  pyenv via ⚙️ v1.81.0on ☁️  (us-east-2) took 3s 
➜ ./target/debug/uv tool run --help
Run a command provided by a Python package. Also available via the alias `uvx`.

Usage: uv tool run [OPTIONS] [COMMAND]

...

You can also use `uvx` as an alias for `uv tool run`. 
Use `uv help tool run` for more details.
```

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-10-08 21:43:50 +00:00
trag1c 37273cb4bc
Add prerelease compatibility check (#8020)
## Summary

Closes #7977. Makes `PythonDownloadRequest` account for the prerelease
part if allowed. Also stores the prerelease in `PythonInstallationKey`
directly as a `Prerelease` rather than a string.

## Test Plan

Correctly picks the relevant prerelease (rather than picking the most
recent one):
```
λ cargo run python install 3.13.0rc2
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.17s
     Running `target/debug/uv python install 3.13.0rc2`
Searching for Python versions matching: Python 3.13rc2
cpython-3.13.0rc2-macos-aarch64-none ------------------------------ 457.81 KiB/14.73 MiB                                                                                                                    ^C

λ cargo run python install 3.13.0rc3                 
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.17s
     Running `target/debug/uv python install 3.13.0rc3`
Searching for Python versions matching: Python 3.13rc3
Found existing installation for Python 3.13rc3: cpython-3.13.0rc3-macos-aarch64-none
```
2024-10-08 16:20:58 -05:00
Zanie Blue 0e1b25a536
Bump version to 0.4.20 (#8016) 2024-10-08 19:55:21 +00:00
Kemal Akkoyun 1a39ffe391
uv run: List available scripts when a script is not specified (#7687)
Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>
## Summary

This PR adds the ability to list available scripts in the environment
when `uv run` is invoked without any arguments.
It somewhat mimics the behavior of `rye run` command
(See https://rye.astral.sh/guide/commands/run).

This is an attempt to fix #4024.

## Test Plan

I added test cases. The CI pipeline should pass.

### Manuel Tests

```shell
❯ uv run
Provide a command or script to invoke with `uv run <command>` or `uv run script.py`.

The following scripts are available:

normalizer
python
python3
python3.12

See `uv run --help` for more information.
```

---------

Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>
Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-10-08 19:34:50 +00:00
konsti 282fab5f70
Hint at wrong endpoint in publish (#7872)
Improve hints when using the simple index URL instead of the upload URL
in `uv publish`. This is the most common confusion when publishing, so
we give it some extra care and put it more centrally in the CLI help.

Fixes #7860

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-10-08 19:16:02 +00:00
Jo 15e5e3f6af
Fill in `authors` filed during `uv init` (#7756)
## Summary

Fill in the `authors` field of `pyproject.toml` by fetching author info
from Git.

Resolves #7718
2024-10-08 14:06:37 -05:00
Zanie Blue f6fd849f2c
Add managed downloads for CPython 3.13.0 final (#8010) 2024-10-08 12:53:09 -05:00
konsti b5dbc32aee
Check consistency between prepare and build step (#7986) 2024-10-08 16:38:22 +00:00
konsti 9ae6c4fce7
Build backend: Logging and more checks (#7980) 2024-10-08 15:25:40 +00:00
konsti 1d6e1bd5b4
Fix merge problem with main (#8005) 2024-10-08 17:16:08 +02:00
konsti 025ec02326
Fix problems with build backend metadata files (#7979) 2024-10-08 16:21:36 +02:00
Zanie Blue a451fb6858
Bump version to 0.4.19 (#7991) 2024-10-07 17:32:37 -05:00
Zanie Blue 46ff220508
Remove `PythonPreference` toggle based on `UV_TEST_PYTHON_PATH` (#7989)
Needed for https://github.com/astral-sh/uv/pull/7934

This is some legacy logic, I think.
2024-10-07 21:13:19 +00:00
Zanie Blue e479e8b4b3
Show interpreter source during Python discovery query errors (#7928)
Closes https://github.com/astral-sh/uv/issues/4154

e.g.

```
❯ UV_PYTHON=/dev/null cargo run -q -- pip install anyio
error: Failed to inspect Python interpreter from provided path at `/dev/null` 
  Caused by: Failed to query Python interpreter at `/dev/null`
  Caused by: Permission denied (os error 13)
  
❯ VIRTUAL_ENV=/dev/null cargo run -q -- pip install anyio
error: Failed to inspect Python interpreter from active virtual environment at `/dev/null/bin/python3` 
  Caused by: Failed to query Python interpreter
  Caused by: failed to canonicalize path `/dev/null/bin/python3`
  Caused by: Not a directory (os error 20)
```
2024-10-07 12:57:18 -05:00
Zanie Blue a4f64d2be6
Bump patch Python versions for project (#7972) 2024-10-07 12:38:12 -05:00
konsti ceafa476c7
Basic functional build backend wheels (#7966) 2024-10-07 19:30:52 +02:00
Zanie Blue c69b808e43
Fix parsing of `gnueabi` libc variants in Python version requests (#7975)
```
❯ cargo run -q -- python install cpython-3.12.6-linux-armv7-gnueabihf
Searching for Python versions matching: cpython-3.12.6-linux-armv7-gnueabihf
Installed Python 3.12.6 in 2.10s
 + cpython-3.12.6-linux-armv7-gnueabihf

❯ uv python install cpython-3.12.6-linux-armv7-gnueabihf
error: Cannot download managed Python for request: executable name `cpython-3.12.6-linux-armv7-gnueabihf`
```
2024-10-07 15:49:21 +00:00
konsti 5d789c6af7
Implement build backend metadata (#7961) 2024-10-07 10:51:45 +02:00
konsti 92538ada7c
Metadata transformation for the build backend (#7781) 2024-10-07 10:38:40 +02:00
Zanie Blue 37b73230d3
Allow self-depedencies in the `dev` section (#7943)
https://github.com/astral-sh/uv/pull/7766 banned using `uv add` to
create self-dependencies in the `dev` section which breaks `uv add --dev
.[extra]` which is a fair use-case for adding a self-dependency.

Maybe we should only allow this if the added requirement includes an
extra group? Otherwise it's a bit weird.
2024-10-06 14:42:56 +00:00
Zanie Blue 80e76f6f63
Add failing `uv add --dev` self-reference test (#7942)
Test case for https://github.com/astral-sh/uv/pull/7943
2024-10-06 09:33:53 -05:00
konsti 79555f3e67
Remove dead Sha256Reader (#7929)
It seems that this code is never used.
2024-10-04 15:25:52 -05:00
Zanie Blue 247f66249e
Ignore `UV_CACHE_DIR` during tests (#7927)
Exploring an alternative to https://github.com/astral-sh/uv/pull/7895
2024-10-04 15:12:05 +00:00
sobolevn ff1a896dd0
Ignore `UV_CACHE_DIR` in `help` tests (#7895) 2024-10-04 09:41:25 -05:00
konsti ad638d7fa3
Use a higher timeout for publishing (#7923) 2024-10-04 15:52:23 +02:00
Krishnan Chandra d73b25385f
Coerce empty string values to `None` for `UV_PYTHON` env var (#7878)
## Summary

Closes #7841. If there are other env vars that would also benefit from
this value parser, please let me know and I can add them to this PR.

## Test Plan

When running the same example from the linked issue, it now works:

```
UV_PYTHON= cargo run -- init x
   Compiling ...
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.06s
     Running `target/debug/uv init x`
Initialized project `x` at `/Users/krishnanchandra/Projects/uv/x`
```
2024-10-04 12:32:03 +01:00
Seth Morton c591636dbe
Add `UV_FIND_LINKS` environment variable support for the `--find-links` command-line option (#7912)
## Summary

This PR adds support for the `UV_FIND_LINKS` environment variable as an
alternative to the `--find-links` command-line option, as requested in
#1839.

## Test Plan

A unit test was added to validate that setting `UV_FIND_LINKS` provided
the same result as a link provided with the `--find-links` command-line
option.

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-10-04 11:30:49 +00:00
konsti fc495876cf
Clear publish progress bar on retry (#7921) 2024-10-04 13:15:26 +02:00
Charlie Marsh d80139698d
Trim commits when reading from Git refs (#7922)
## Summary

Closes #7919.
2024-10-04 11:10:53 +00:00
Ahmed Ilyas b23feebb6d
Preserve case-insensitive sorts in `uv add` (#7864)
## Summary

Resolves https://github.com/astral-sh/uv/issues/7801

## Test Plan

`cargo test`
2024-10-04 10:57:38 +00:00
Charlie Marsh 0eb4320394
Respect project upper bounds when filtering wheels on requires-python (#7904)
## Summary

If the user sets an upper-bound on their `requires-python`, we can omit
more wheels.
2024-10-04 11:35:50 +01:00
Charlie Marsh 312eeb8f57
Always ignore `cp2` wheels in resolution (#7902)
## Summary

Closes #7873.
2024-10-03 17:35:03 +00:00
konsti 41fdecf457
Allow `py3x-none` tags in newer than Python 3.x (#7867)
Unlike `cp36-...`, which requires exactly CPython 3.6, `py36-none` is
compatible with all versions starting at Python 3.6.

Note that `py3x-none` should not be used. Instead, use `py3-none` with
`requires-python`.

Fixes #7800
2024-10-03 18:02:14 +01:00
Jo 172bff4aec
Organize downloads by prioritizing the platform, then the architecture. (#7900)
## Summary

PythonDownloadKey (cpython-3.13.0rc3-darwin-aarch64-none) and
PlatformTriple in `fetch-download-metadata.py` have a slight
inconsistency in the ordering of `os` and `arch`. In PythonDownloadKey,
`os` precedes `arch`, while in PlatformTriple, `arch` comes before
`platform` (equivalent to os). This difference in ordering affects the
sorting logic, giving arch higher priority than platform in the
`download-metadata.json` file, leading to a little bit of unexpected
order of entries.

Before:
<img width="676" alt="image"
src="https://github.com/user-attachments/assets/adb24a2e-da70-4a09-a702-4b5d71600b2c">
After:
<img width="725" alt="image"
src="https://github.com/user-attachments/assets/c6c76e6a-d3fd-43dc-bfb0-b3a4a3fe2b6b">
2024-10-03 10:51:21 -05:00
Charlie Marsh 8962bcb028
Simplify supported environments when comparing to lockfile (#7894)
## Summary

If a supported environment includes a Python marker, we don't simplify
it out, despite _storing_ the simplified markers. This PR modifies the
validation code to compare simplified to simplified markers.

Closes https://github.com/astral-sh/uv/issues/7876.
2024-10-03 14:15:07 +01:00
Charlie Marsh 005bb235f0
Improve legibility of build failure errors (#7854)
## Summary

We now...

- Only show `stdout` and/or `stderr` if they're non-empty.
- Use a colorful header for the start of each section
- Highlight the step that failed

## Test Plan

![Screenshot 2024-10-01 at 8 18
42 PM](https://github.com/user-attachments/assets/c3dadf6d-11be-468d-940c-a0a29c4a88f0)
2024-10-03 12:52:53 +00:00
Jo c07cdc6161
Remove the first empty line for `uv tree --package foo` (#7885)
## Summary

When using `uv tree --package foo`, an extra empty line appears at the
beginning, which seems unnecessary since `uv tree` without the package
option doesn’t have this. It’s possible that the intention was to add
separation between packages, i.e. the correct implementation shoule be:

```rust
if !std::mem::take(&mut first) {
    lines.push(String::new());
}
```

Even if corrected, this extra spacing might be redundant as `uv tree`
doesn’t include these empty lines between packages by default.

```console
$ uv init project
$ cd project
$ uv init foo
$ uv tree
Using CPython 3.12.5
Resolved 2 packages in 1ms
foo v0.1.0
project v0.1.0

$ uv tree --package project
Using CPython 3.12.5
Resolved 2 packages in 1ms

project v0.1.0
```
2024-10-03 13:04:36 +01:00
Jo 32ab2a5a95
Fix Python prerelease sorting (#7884)
## Summary

Observed from #7880, `rc3` should be sorted before `rc2`.
2024-10-03 13:03:19 +01:00
github-actions[bot] 1635f6da0c
Add CPython 3.13.0rc3 and 3.12.7 downloads (#7880)
Automated update for Python releases.

Co-authored-by: zanieb <2586601+zanieb@users.noreply.github.com>
2024-10-02 17:20:48 -05:00
Zanie Blue 891c91dd3a
Use an enum for free-threaded Python requests (#7871)
Follow-up to #7431 improving readability
2024-10-02 13:10:45 -05:00
Zanie Blue 64c74ac552
Rename `project::FoundInterpreter` to `ProjectInterpreter` (#7874) 2024-10-02 13:10:29 -05:00
tfsingh 5ff7dc99cb
Support uv run --script (#7739)
This PR adds support for executing a script with ```uv run```, even when
the script does not have a ```.py``` extension. Addresses #7396.
2024-10-02 09:51:12 -05:00
Zanie Blue b0014835dc
Display the target virtual environment path if non-default (#7850)
Supersedes https://github.com/astral-sh/uv/pull/4835

Closes https://github.com/astral-sh/uv/issues/2155

e.g.

```
❯ cargo run -q -- pip install --python ../../example httpx
Using Python 3.12.1 environment at /Users/zb/example
Resolved 7 packages in 561ms
Prepared 4 packages in 62ms
Installed 4 packages in 13ms
 + certifi==2024.8.30
 + h11==0.14.0
 + httpcore==1.0.5
 + httpx==0.27.2

❯ cargo run -q -- pip install httpx
Resolved 7 packages in 17ms
Installed 4 packages in 10ms
 + certifi==2024.8.30
 + h11==0.14.0
 + httpcore==1.0.5
 + httpx==0.27.2
```
2024-10-02 09:38:31 -05:00
konsti 2552dc2748
Add missing bound on tomli tests (#7868) 2024-10-02 14:20:34 +00:00
Charlie Marsh 90265419b7
Remove unnecessary `Deserialize` derives on settings (#7856) 2024-10-02 02:32:37 +00:00
Charlie Marsh f0659e76cf
Rename `install-wheel-rs` library (#7855)
## Summary

I missed this one in the rename (the crate was renamed, but not the
library).
2024-10-01 20:45:39 -04:00