Commit Graph

4293 Commits

Author SHA1 Message Date
Javad Zarezadeh
dea5aa6b04 Update documentation to setup-uv@v3 (#7807)
## Summary

Update the documentation from using setup-uv@v2 for GitHub Actions to
use setup-uv@v3 instead.
2024-09-30 08:47:52 -04:00
renovate[bot]
958da0b48f Update pre-commit dependencies (#7797) 2024-09-29 22:52:57 -04:00
renovate[bot]
077affc11a Update Rust crate platform-info to v2.0.4 (#7790) 2024-09-30 01:35:30 +00:00
renovate[bot]
7947422c92 Update Rust crate hyper-util to v0.1.9 (#7789) 2024-09-30 01:10:33 +00:00
renovate[bot]
ad6236b903 Update Rust crate regex to v1.11.0 (#7793) 2024-09-29 21:01:13 -04:00
renovate[bot]
9044931c5b Update Rust crate toml_edit to v0.22.22 (#7792) 2024-09-29 21:01:09 -04:00
renovate[bot]
3b0b1d4dc1 Update Rust crate syn to v2.0.79 (#7791) 2024-09-29 21:01:04 -04:00
renovate[bot]
a7038e1b4a Update Rust crate flate2 to v1.0.34 (#7788) 2024-09-29 21:00:38 -04:00
renovate[bot]
0019aae813 Update Rust crate async-trait to v0.1.83 (#7787) 2024-09-29 21:00:27 -04:00
renovate[bot]
bcada9f99c Update Rust crate tempfile to v3.13.0 (#7795) 2024-09-29 21:00:14 -04:00
Sebastián Ramírez
5fc1495c54 ✏️ Fix typo in projects.md (#7784)
## Summary

✏️ Fix typo in `projects.md`

<!-- What's the purpose of the change? What does it do, and why? -->

## Test Plan

<!-- How was it tested? -->

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-09-29 19:40:45 +00:00
Charlie Marsh
66d7ec541a Avoid reusing cached downloaded binaries with --no-binary (#7772)
## Summary

Historically, we've allowed the use of wheels that were downloaded from
PyPI even when the user passes `--no-binary`, if the wheel exists in the
cache. This PR modifies the cache lookup code such that we respect
`--no-build` and `--no-binary` in those paths.

Closes https://github.com/astral-sh/uv/issues/2154.
2024-09-29 17:34:52 +00:00
Charlie Marsh
c415251aa2 Use file stem when parsing cached wheel names (#7773)
## Summary

I noticed that we were including `http` (the file extension) in the
platform tags when reading from the cache:

![Screenshot 2024-09-28 at 9 40
15 PM](https://github.com/user-attachments/assets/d80ed351-1257-42b5-8292-0b11a50c767d)

Probably harmless, but wrong.
2024-09-29 12:05:15 -04:00
konsti
884b5a3c80 No jemalloc on freebsd (#7780) 2024-09-29 17:49:07 +02:00
Jp
ada6b36635 Correctly trims values during wheel WHEEL file parsing (#7770)
## Summary

My last changes (#6616) used by mistake == instead of !=.
😥 Making values currently never trimmed despite
what we wanted.
Values should now be trimmed if needed.

Also removes the trim of the header name, because if a header contains
spaces, the header will be skipped by the mailparse crate in the first
place.

## Test Plan
- A unit test has been added to validate that we correctly trim values.
- A unit test has been added to validate the header names containing
spaces are skipped.
2024-09-28 20:08:22 -04:00
Charlie Marsh
9312a08009 Reject self-dependencies in uv add (#7766)
## Summary

However, adding a recursive extra _is_ allowed.

Closes https://github.com/astral-sh/uv/issues/7731.
2024-09-28 16:02:11 -04:00
Charlie Marsh
9363ecfd31 Retain empty extras on workspace members (#7762)
## Summary

I'm not sure why we drop these but it seems incorrect.
2024-09-28 14:34:34 -04:00
adisbladis
9f981c934a Add UV_NO_SYNC environment variable (#7752)
## Summary

I have a workflow where I want use `uv` as a dependency solver only, and
manage my environments with external tooling (Nix).

## Test Plan

Manually tested. Automated testing seems excessive for such a trivial
change.

## Problems

It's still not as useful as I'd like it to be.
`uv` uncondtionally creates a virtual environment, something I would
expect that `--no-sync` should disable.
This looks a bit more tricky to achieve and I'm not sure about how to
best structure it.
2024-09-28 12:03:45 -04:00
Jo
0dbf9ae4a7 Support uv run -m foo to run a module (#7754)
## Summary

This is another attempt using `module: bool` instead of `module:
Option<String>` following #7322.
The original PR can't be reopened after a force-push to the branch, I've
created this new PR.

Resolves #6638
2024-09-28 10:07:21 -05:00
Jiahao Yuan
1cae78dd03 Fix encoding mismatch between python child process and uv (#7757)
## Summary

This PR fixes #7733. According to [CPython documentation on
`sys.stdout`](https://docs.python.org/3.12/library/sys.html#sys.stdout),
when `stdout`/`stderr` is non-character device like pipe, the encoding
will be set to system locale on windows. However, on the Rust side
`stdout_reader` and `stderr_reader` expect them to be encoded in UTF-8
and will fail when child process write non-ASCII character to
stdout/stderr, e.g., build directory name containing non-ASCII
character.

Both
[CPython3](https://docs.python.org/3.12/using/cmdline.html#envvar-PYTHONIOENCODING)
and [PyPy](https://doc.pypy.org/en/default/man/pypy3.1.html#environment)
support environment variable `PYTHONIOENCODING`. When it is set to
`utf-8`, python will use UTF-8 encoding for `stdin`/`stdout`/`stderr`.
Since `stdin` is not used by the spawned python process and we expect
`stdout`/`stderr` to use UTF-8, this fix should work as expected.
<!-- What's the purpose of the change? What does it do, and why? -->

## Test Plan

I only tested it on my computer with CPython 3.12 and 3.7. With the fix
applied I confirmed that [the case I
described](https://github.com/astral-sh/uv/issues/7733#issuecomment-2380416093)
is fixed.

I'm using Windows 11 with system locale set to code page 936.
2024-09-28 12:39:37 +00:00
Zanie Blue
313612dad7 Fix table of contents sizing (#7751)
Now
<img width="864" alt="Screenshot 2024-09-27 at 10 57 40 PM"
src="https://github.com/user-attachments/assets/84c99d34-9b5a-4522-a2b4-0ef3c9cdda49">
Previously
<img width="864" alt="Screenshot 2024-09-27 at 10 57 46 PM"
src="https://github.com/user-attachments/assets/d7ff7401-ece5-4b49-813e-cd4e58d6cf19">
2024-09-27 22:59:38 -05:00
Charlie Marsh
d2e7b40cec Bump version to v0.4.17 (#7742) 0.4.17 2024-09-27 13:28:38 -04:00
Zanie Blue
41dbd97860 Tweaks to the uvx help menu when no command is provided (#7740)
Follow-up to #7641 with some minor changes to the implementation and a
simplification of the output
2024-09-27 13:02:22 -04:00
Ahmed Ilyas
e85cd26a7a Indicate which package failed in the error message for uv build --all (#7736)
## Summary

Small follow up to https://github.com/astral-sh/uv/pull/7724

## Test Plan

`cargo test`

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-09-27 12:42:34 +00:00
Ahmed Ilyas
805f1bd6f5 Add uv build --all option (#7724)
## Summary

Resolves #7705 

## Test Plan

`cargo test` and tested locally.

The snapshots were unstable due to the packages being built in a
non-deterministic order, so I used the quiet flag to suppress the
output.

Another question is whether we should label the build output to indicate
which package it belongs to?
2024-09-27 02:46:06 +00:00
Zanie Blue
ed1684a0e4 Add uv build --no-build-logs to silence the build backend logs (#7675)
Extends https://github.com/astral-sh/uv/pull/7674

The build backend can be pretty verbose, it seems nice to be able to
turn that off?
2024-09-26 23:39:47 +00:00
Kemal Akkoyun
3ce34035c8 uvx/uv tool run: Add context message before listing available tools when no arguments are provided (#7641)
## Summary

Adds a helpful context message when `uvx` is run without arguments
To clarify, it is displaying the installed tools.

This addresses confusion, such as the one highlighted in issue #7348,
by making the output more user-friendly and informative.

Related #4024 

## Test Plan

Updated the test snapshots to include the new output.
Running the tests locally with `cargo nextest run` confirms that the
tests pass.
The CI pipeline should also pass.

### Manuel Testing

**uvx**
```shell
# Make sure you have the updated version of uv installed on your path.
# cargo install --path ./crates/uv --force
❯ uvx
Provide a command to invoke with `uvx <command>` or `uvx --from <package> <command>`.

The following tools are already installed:

black v24.8.0
- black
- blackd
ruff v0.6.7
- ruff

See `uvx --help` for more information.
```

**uv tool list**
```shell
# Make sure you have the updated version of uv installed on your path.
# cargo install --path ./crates/uv --force
❯ uv tool list
black v24.8.0
- black
- blackd
ruff v0.6.7
- ruff
```

**uv tool run**
```shell
# Make sure you have the updated version of uv installed on your path.
# cargo install --path ./crates/uv --force
❯ uv tool run
Provide a command to invoke with `uv tool run <command>` or `uv tool run --from <package> <command>`.

The following tools are already installed:

black v24.8.0
- black
- blackd
ruff v0.6.7
- ruff

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

Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>

---------

Signed-off-by: Kemal Akkoyun <kakkoyun@gmail.com>
2024-09-26 15:35:08 -05:00
Zanie Blue
5e64dac75f Remove the typeset plugin (#7721)
Ref 

- https://github.com/astral-sh/ruff/pull/13517
- https://github.com/squidfunk/mkdocs-material/issues/7567
2024-09-26 13:51:45 -05:00
Zanie Blue
f8fc8816e6 Add uv build and uv publish to features overview (#7716) 2024-09-26 12:47:11 -05:00
Charlie Marsh
fe88c10813 Remove unused thiserror variants in resolver (#7717)
## Summary

While looking at something else, I noticed that these are not used.
2024-09-26 16:36:52 +00:00
Trevor Manz
df45b9ac25 Pin rich==13.7.1 for --exclude-newer in tests (#7713)
Fixes broken test in #6375

Tested here with:

```sh
cargo run run --exclude-newer=2024-03-25T00:00:00Z scripts/uv-run-remote-script-test.py CI
```
2024-09-26 11:54:50 -04:00
Trevor Manz
7a8f4f93cc Check in test script for uv run <url> (#7708)
Merge before #6375 (see
https://github.com/astral-sh/uv/pull/6375#discussion_r1776975298)

This is testing a couple of things at once, and I'm happy to strip back
to something more simple (i.e., "just" printing).
However, I figured it would be useful to ensure that the PEP 723
metadata correctly works as well as that
additional arguments are correctly forwarded to the Python program.

cc: @burntsushi
2024-09-26 11:00:33 -04:00
konsti
d536dfe67e Escape glob patterns (#7709) 2024-09-26 14:54:29 +00:00
Aarni Koskela
23b010c08f Docker: put uv and uvx in a single layer (#7697)
## Summary

Copy both `uv` and `uvx` into place in a single Dockerfile command.
[`COPY` supports multiple sources when the destination is a
directory.](https://docs.docker.com/engine/reference/builder/#copy)

As it is, e.g. `ghcr.io/astral-sh/uv:0.4.16-python3.12-bookworm-slim`
has this (screenshot from [Dive](https://github.com/wagoodman/dive)):

<img width="377" alt="Screenshot 2024-09-26 at 10 11 24"
src="https://github.com/user-attachments/assets/1ca6a0d5-95fd-4210-9a4f-0afa2300b63f">

and less layers is a Good Thing.

## Test Plan

I hope the CI pipeline will take care of testing – I couldn't get the
Docker build to finish on my machine right away (SIGKILL, so out of
memory, I guess 😄)
2024-09-26 09:19:14 -05:00
Aarni Koskela
21151b591c Docs: Spell out the names of the Docker images for easier copy-paste (#7706)
## Summary

It was all too easy to just copy the non-qualified name of the Docker
images and wonder why they couldn't be found – well, because they're on
`ghcr.io`, and you need to read the prose before the list to figure that
out.


## Test Plan

No plan.
2024-09-26 09:18:46 -05:00
Aarni Koskela
ed940300f7 Don't create Python bytecode files during interpreter discovery (#7707) 2024-09-26 13:52:10 +00:00
Liam
c8357b7bf2 Allow unused mut in graph resolution conflicts (#7701) 2024-09-26 09:17:43 +00:00
Jo
0c801f8f4b Initialize a Git repository in uv init (#5476)
## Summary

Similiar to `cargo init --vcs <VCS>`, this PR adds the `--vcs <VCS>`
flag for `uv init`, allowing to create a version control system during
initialization. By default, `uv init` will create a Git repository if
the `--vcs` flag is not provided. Use `--vcs none` to disable this
feature.

Currently, only Git is supported. While Cargo also supports hg, pijul,
and fossil, this initial PR only includes Git. We can add more later if
there are any user requests.

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-09-26 02:40:39 +00:00
Charlie Marsh
4ba0e56754 Document uv-with-Jupyter workflows (#7625)
## Summary

This is a work-in-progress as I actually want to change some behaviors
here.

Closes https://github.com/astral-sh/uv/issues/6329.
2024-09-26 00:55:02 +00:00
tfsingh
6e9ecde9c2 Add support for uv init --script (#7565)
This PR adds support for ```uv init --script```, as defined in issue
#7402 (started working on this before I saw jbvsmo's PR). Wanted to
highlight a few decisions I made that differ from the existing PR:

1. ```--script``` takes a path, instead of a path/name. This potentially
leads to a little ambiguity (I can certainly elaborate in the docs,
lmk!), but strictly allowing ```uv init --script path/to/script.py```
felt a little more natural than allowing for ```uv init --script path/to
--name script.py``` (which I also thought would prompt more questions
for users, such as should the name include the .py extension?)
2. The request is processed immediately in the ```init``` method,
sharing logic in resolving which python version to use with ```uv add
--script```. This made more sense to me — since scripts are meant to
operate in isolation, they shouldn't consider the context of an
encompassing package should one exist (I also think this decision makes
the relative codepaths for scripts/packages easier to follow).
3. No readme — readme felt a little excessive for a script, but I can of
course add it in!

---------

Co-authored-by: João Bernardo Oliveira <jbvsmo@gmail.com>
2024-09-25 22:48:01 +00:00
Charlie Marsh
a3abd89ab0 Note that uv lock --upgrade-package retains locked versions (#7694)
Closes https://github.com/astral-sh/uv/issues/7672.
2024-09-25 22:17:55 +00:00
Charlie Marsh
cc2aa8855a Add documentation on cache versioning (#7693)
Closes https://github.com/astral-sh/uv/issues/7547.
2024-09-25 22:13:02 +00:00
konsti
9004364de3 Rename uv-build to uv-build-frontend (#7688)
uv will soon support both a build frontend (`uv build`) and a build
backend (`build-system = "uv"`). To avoid the name clash, I'm renaming
the `uv-build` crate to `uv-build-frontend`. In a follow-up PR, I will
add a `uv-build-backend` crate with the build backend implementation.
2024-09-25 14:17:54 -04:00
tfsingh
106633a5e5 Add support for upgrading Python in tool environments (#7605)
This PR adds support for upgrading the build environment of tools with
the addition of a ```--python``` argument to ```uv upgrade```, as
specified in #7471.

Some things to note:
- I added support for individual packages — I didn't think there was a
good reason for ```--python``` to only apply to all packages
- Upgrading with ```--python``` also upgrades the package itself — I
think this is fair as if a user wants to _strictly_ switch the version
of Python being used to build a tool's environment they can use ```uv
install```. This behavior can of course be modified if others don't
agree!

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

Closes https://github.com/astral-sh/uv/issues/7471.
2024-09-25 17:40:28 +00:00
konsti
f5601e2610 Clean up "performance allocators" and "performance flate2" backends (#7686)
Co-authored-by: Amos Wenger <amos@bearcove.net>
2024-09-25 15:41:40 +00:00
Zanie Blue
12ab7d1ab7 Respect --quiet flag in uv build (#7674)
I noticed this was not respected, seems like an oversight.
2024-09-25 08:23:43 -05:00
Topher Anderson
84e5f6e871 Regression fix: don't prefetch source dists with unbounded lower-bound ranges (#7683)
#7226 modified the check to skip prefetching of source dists without
proper minimum-version bounds, and wound up flipping the boolean
expression. This change flips the some/none expression so that the
intended skip happens as expected.

Fixes #7680.
2024-09-25 08:35:19 -04:00
Zanie Blue
82e33c2b3d Fix changelog for 0.4.16 (#7671)
I missed the other changes section somehow.
2024-09-24 20:08:19 +00:00
Zanie Blue
bef72a8880 Display skipped managed interpreters during Python discovery (#7668)
e.g.

```
❯ cargo run -- python find 3.11rc2 -v
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.14s
     Running `target/debug/uv python find 3.11rc2 -v`
DEBUG uv 0.4.15
DEBUG Searching for Python 3.11rc2 in managed installations or system path
DEBUG Found `cpython-3.12.1-macos-aarch64-none` at `/Users/zb/workspace/uv/.venv/bin/python3` (active virtual environment)
DEBUG Found `cpython-3.12.1-macos-aarch64-none` at `/Users/zb/workspace/uv/.venv/bin/python3` (virtual environment)
DEBUG Searching for managed installations at `/Users/zb/.local/share/uv/python`
DEBUG Skipping incompatible managed installation `cpython-3.13.0rc2-macos-aarch64-none`
DEBUG Skipping incompatible managed installation `cpython-3.12.1-macos-aarch64-none`
DEBUG Skipping incompatible managed installation `cpython-3.11.7-macos-aarch64-none`
DEBUG Skipping incompatible managed installation `cpython-3.10.13-macos-aarch64-none`
DEBUG Skipping incompatible managed installation `cpython-3.9.18-macos-aarch64-none`
DEBUG Skipping incompatible managed installation `cpython-3.8.18-macos-aarch64-none`
DEBUG Skipping incompatible managed installation `cpython-3.8.12-macos-aarch64-none`
DEBUG Skipping incompatible managed installation `pypy-3.9.19-macos-aarch64-none`
DEBUG Found `cpython-3.12.1-macos-aarch64-none` at `/Users/zb/workspace/uv/.venv/bin/python` (search path)
DEBUG Found `cpython-3.12.1-macos-aarch64-none` at `/Users/zb/workspace/uv/.venv/bin/python3` (search path)
DEBUG Found `cpython-3.12.6-macos-aarch64-none` at `/opt/homebrew/bin/python3` (search path)
DEBUG Found `cpython-3.11.10-macos-aarch64-none` at `/opt/homebrew/bin/python3.11` (search path)
DEBUG Found `cpython-3.9.6-macos-aarch64-none` at `/usr/bin/python3` (search path)
error: No interpreter found for Python 3.11rc2 in virtual environments, managed installations, or system path
```
2024-09-24 14:41:41 -05:00
Zanie Blue
e81ed8ec5d Bump version to 0.4.16 (#7669) 0.4.16 2024-09-24 14:39:21 -05:00