Commit graph

346 commits

Author SHA1 Message Date
Charlie Marsh
4f2349119c
Add support for dynamic cache keys (#7136)
## Summary

This PR adds a more flexible cache invalidation abstraction for uv, and
uses that new abstraction to improve support for dynamic metadata.

Specifically, instead of relying solely on a timestamp, we now pass
around a `CacheInfo` struct which (as of now) contains
`Option<Timestamp>` and `Option<Commit>`. The `CacheInfo` is saved in
`dist-info` as `uv_cache.json`, so we can test already-installed
distributions for cache validity (along with testing _cached_
distributions for cache validity).

Beyond the defaults (`pyproject.toml`, `setup.py`, and `setup.cfg`
changes), users can also specify additional cache keys, and it's easy
for us to extend support in the future. Right now, cache keys can either
be instructions to include the current commit (for `setuptools_scm` and
similar) or file paths (for `hatch-requirements-txt` and similar):

```toml
[tool.uv]
cache-keys = [{ file = "requirements.txt" }, { git = true }]
```

This change should be fully backwards compatible.

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

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

Closes https://github.com/astral-sh/uv/issues/6860.
2024-09-09 20:19:15 +00:00
Soof Golan
14ebc393fc
treat .tgz the same as .tar.gz (#7201)
## Summary

Fixes #7081 

Treats source distribution `.tgz` the same as `.tar.gz` plans

## Test Plan

Quick Version

```bash
cd $(mktemp -d)
uv init
uv add --dev build
.venv/bin/python -m build -s .
mv -v dist/*tar.gz dist/"$(basename dist/*.tar.gz .tar.gz)".tgz
uv pip install dist/*.tgz
```

Can add a proper test to the branch if requested
2024-09-08 23:09:39 +00:00
Mathieu Kniewallner
eec5403adf
docs(concepts): mention PEP 625 (#7189)
## Summary

Follow-up to
https://github.com/astral-sh/uv/pull/7168#discussion_r1748914880.
2024-09-08 17:28:35 -04:00
Mathieu Kniewallner
8341d810b2
docs: list supported sdist formats (#7168)
## Summary

Explicitly list the formats and extensions that uv supports, based on
[this
list](86ee8d2c01/crates/distribution-filename/src/extension.rs (L70-L77)).
Not a huge fan of adding the section in `concepts/resolution.md`, but I
did not find a better place. Alternatively we could maybe add a
dedicated page that shortly explains Python package types (wheels,
sdists), where such a section could live?

## Test Plan

Local run of the documentation.
2024-09-07 19:16:12 +00:00
Zanie Blue
86ee8d2c01
Document support for UV_INSTALL_DIR (#7107) 2024-09-07 15:26:37 +00:00
Ilya Grigoriev
23c0d9b1db
installation.md: update shell syntax for setting env vars (#7138)
I find this more readable; it also no longer requires bash (thought just
replacing `bash` with `sh` would achieve that much).

Strictly speaking, `env` is not necessary on most shells, but I find it
makes things clearer.

## Test Plan

Ran the command locally, did not try compiling the docs.



----------

Aside, loosely related (and hopefully helpful) suggestions:

I'm hoping you will also explain in the docs how to install to
`~/.local/bin`, with the same goal as
https://github.com/astral-sh/uv/pull/6839. Using environment variables
for that is fine.

Another minor FR I'd have is to mention these environment variables in
the help message of the installer script, especially if you want to
encourage people to use them.

Thank you for working on the installation script! It helps me feel more
comfortable about eventually asking that people install `uv` to compile
docs on my project, hopefully helping people who don't have a Python
environment already installed.
2024-09-07 10:21:52 -05:00
FishAlchemist
aa3297a8d7
Replace incorrect `--source and --binary flags with correct --sdist and --wheel flags in uv build` (#7156)
## Summary
Replace incorrect ``--source`` and ``--binary`` flags with correct
``--sdist`` and ``--wheel`` flags in uv build.
 

![image](https://github.com/user-attachments/assets/f72a9c73-bfce-441b-8756-d0cb22afcd7d)

## Test Plan
Run the server locally

![image](https://github.com/user-attachments/assets/f702f19f-96b8-4338-bd1b-e2fb35f5697a)
2024-09-07 07:50:56 -04:00
Charlie Marsh
a178051e81
Bump version to v0.4.7 (#7150) 2024-09-07 02:18:15 +00:00
Janosh Riebesell
e96eb946f9
Fix typo aaarch64->aarch64 (#7141)
copy pasted `--python-platform aaarch64-unknown-linux-gnu` [from the
docs](https://docs.astral.sh/uv/reference/cli/#uv-pip-compile) and got

> error: invalid value 'aaarch64-unknown-linux-gnu' for
'--python-platform <PYTHON_PLATFORM>'
> [possible values: windows, linux, macos, x86_64-pc-windows-msvc,
i686-pc-windows-msvc, x86_64-unknown-linux-gnu, aarch64-apple-darwin,
x86_64-apple-darwin, aarch64-unknown-linux-gnu,
aarch64-unknown-linux-musl, x86_64-unknown-linux-musl,
x86_64-manylinux_2_17, x86_64-manylinux_2_28, x86_64-manylinux_2_31,
aarch64-manylinux_2_17, aarch64-manylinux_2_28, aarch64-manylinux_2_31]
> 
>   tip: a similar value exists: 'aarch64-unknown-linux-gnu'
2024-09-06 23:25:46 +00:00
Carlos Pascual
1b6638fdb4
(doc) Fix wrong examples for locking (#7120)
## Summary

The examples for compile with optional dependencies use `uv pip install`
instead of `uv pip compile` (probably a copy-paste error)

## Test Plan
N/A  This is a minor doc issue. The result is directly rendered.
2024-09-06 08:21:54 -05:00
Dheepak Krishnamurthy
346147db23
chore: Fix typo in docs (#7122)
Remove duplicate `the`.

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-09-06 12:40:26 +00:00
Zanie Blue
1422e18674
Fixup comment for export --output-file (#7111) 2024-09-05 20:18:39 -05:00
Charlie Marsh
6ae005b0d0
Add --no-emit-project and friends to uv export (#7110)
## Summary

Like `uv sync`, you can omit the current project (`--no-emit-project`),
a specific package (`--no-emit-package`), or the entire workspace
(`--no-emit-workspace`).

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

Closes #6995.
2024-09-06 01:01:46 +00:00
Charlie Marsh
d0f9016eda
Add --output-file to uv export (#7109)
## Summary

Closes https://github.com/astral-sh/uv/issues/7058.
2024-09-05 20:53:53 -04:00
Zanie Blue
3d57b6e795
Add -ExecutionPolicy ByPass to Windows installer recommendations (#7106) 2024-09-05 19:41:40 -05:00
Zanie Blue
84f25e8cf8
Bump version to 0.4.6 (#7103) 2024-09-05 17:39:53 -05:00
Charlie Marsh
5b89734c85
Add --require-hashes and --verify-hashes to uv build (#7094) 2024-09-05 15:22:03 -04:00
Charlie Marsh
80f51cee06
Accept --build-constraints in uv build (#7085)
## Summary

Closes #7082.

Closes #7065.
2024-09-05 18:46:36 +00:00
Charlie Marsh
2da795ae8c
Document official setup-uv action (#7056)
## Summary

Closes https://github.com/astral-sh/uv/issues/7047.
2024-09-05 13:59:01 -04:00
Jakub Beránek
ae16c4e524
Document how to manually update locked package version (#7083)
This PR updates documentation to explicitly mention how to update a
specific package with a locked version to a different version.

Fixes: https://github.com/astral-sh/uv/issues/7019

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-09-05 16:37:43 +00:00
Zanie Blue
d470dfce8e
Add winget to installers (#7088) 2024-09-05 11:32:57 -05:00
Zanie Blue
27e891ff90
Document how to disable path modifications during install (#7090)
Closes https://github.com/astral-sh/uv/issues/6932
2024-09-05 11:15:39 -05:00
eth3lbert
e7a7a813fb
Implement --show-version-specifiers for tool list (#7050)
## Summary

Closes #6747 .

## Test Plan

```
cargo test --test tool_list
```
2024-09-05 02:15:18 +00:00
my1e5
86c8906d10
Update docs on .python-version file (#7051)
## Summary

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

* When displaying the file structure of a uv-managed project show the
`.python-version` file which is now created by default.
* Mention the purpose of the `.python-version` file in `Guides/Working
on projects/Project structure`
* In `Concepts/Python versions/Project python versions`, changed
sentence about `.python-version` file to reflect the fact it is included
by default so is likely to be present.
2024-09-04 19:22:34 -04:00
Ahmed Ilyas
ff39950545
Allow multiple packages for uv tool upgrade/uninstall (#7037)
## Summary

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

## Test Plan

`cargo test`
2024-09-04 17:18:52 -04:00
Ed Morley
c1effd6b05
Misc projects docs grammar fixes (#7048)
Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-09-04 20:58:36 +00:00
Zanie Blue
42b6bfbad7
Bump version to 0.4.5 (#7044) 2024-09-04 16:56:10 -04:00
Zanie Blue
5ca3ded53b
Touchup to the project environment config section (#7038) 2024-09-04 15:02:35 -05:00
samypr100
bbaf664c51
docs: fix docker tag docs (#7041)
## Summary

Closes https://github.com/astral-sh/uv/issues/7029
2024-09-04 13:11:57 -05:00
Zanie Blue
b2cb3bb2ae
Add project docs for project.scripts (#7010)
Closes https://github.com/astral-sh/uv/issues/6998

Common point of confusion because Poetry defines these in
`tool.poetry.scripts`
2024-09-04 12:16:31 -05:00
Mathieu Kniewallner
5cc76679e9
docs(configuration): clarify uv.toml precedence (#6986)
## Summary

Add a note in the documentation to clarify that `uv.toml` files take
precedence over `[tool.uv]` section in `pyproject.toml`, based on the
warning shown in the CLI:

```console
$ uv version
warning: Found both a `uv.toml` file and a `[tool.uv]` section in an adjacent `pyproject.toml`. The `[tool.uv]` section will be ignored in favor of the `uv.toml` file.
uv 0.4.2 (Homebrew 2024-09-01)
```
2024-09-04 15:57:41 +00:00
Charlie Marsh
724a93bfdb
Add documentation for uv build (#6991) 2024-09-04 15:53:14 +00:00
Charlie Marsh
7aed94bed2
Add --package support to uv build (#6990)
## Summary

This PR adds `--package` support to `uv build`, such that you can use
`--package` from anywhere in a workspace to build any member.

If a source directory is provided, we use that as the workspace root.

If a file is provided, we error.

For now, `uv build` only builds the current package, making it
semantically identical to `uv sync`.
2024-09-04 15:52:21 +00:00
Charlie Marsh
5d8e99045a
Support uv build --wheel from source distributions (#6898)
## Summary

This PR allows users to run `uv build --wheel ./path/to/source.tar.gz`
to build a wheel from a source distribution. This is also the default
behavior if you run `uv build ./path/to/source.tar.gz`. If you pass
`--sdist`, we error.
2024-09-04 15:30:32 +00:00
Charlie Marsh
df84d25a7e
Implement uv build (#6895)
## Summary

This PR exposes uv's PEP 517 implementation via a `uv build` frontend,
such that you can use `uv build` to build source and binary
distributions (i.e., wheels and sdists) from a given directory.

There are some TODOs that I'll tackle in separate PRs:

- [x] Support building a wheel from a source distribution (rather than
from source) (#6898)
- [x] Stream the build output (#6912)

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

Closes https://github.com/astral-sh/uv/issues/1663.
2024-09-04 11:23:46 -04:00
Zanie Blue
1996067f81
Add note to extra and all-extras in uv sync help (#7013) 2024-09-04 15:05:21 +00:00
Zanie Blue
dd2b2eb3fe
Fix available Docker image rendering and shorten list (#7017) 2024-09-04 08:47:34 -05:00
Charlie Marsh
3d75df6ab2
Bump version to v0.4.4 (#6988) 2024-09-04 00:30:38 +00:00
Zanie Blue
1fd27d768e
Add instructions for installing from Cargo (#6979) 2024-09-04 00:24:55 +00:00
Zanie Blue
88ba1e90a0
Add docs for UV_PROJECT_ENVIRONMENT (#6987) 2024-09-03 19:47:05 -04:00
Charlie Marsh
50d7b9c38a
Pin .python-version in uv init (#6869)
## Summary

I'm not convinced that the behavior is correct as-implemented. When the
user passes a `--python >=3.8` or we discover a `requires-python` from
the workspace, we're currently writing that request out to
`.python-version`. I would probably rather that we write the resolved
patch version?

Closes https://github.com/astral-sh/uv/issues/6821.
2024-09-03 19:43:50 -04:00
Zanie Blue
3e8d53c8eb
Document use of the file:// scheme in Python installation mirrors (#6984)
Documenting https://github.com/astral-sh/uv/pull/6950
2024-09-03 18:38:16 -05:00
Zanie Blue
614839e88b
Add optional dependencies section to the lockfile document (#6982)
Closes https://github.com/astral-sh/uv/issues/6729
2024-09-03 19:37:36 -04:00
Zanie Blue
4a6bea5321
Fix outdated references to the help menu documentation in the first steps page (#6980) 2024-09-03 17:14:38 -05:00
Zanie Blue
d87256bebe
Improve project handling in uv venv (#6835)
- Respect `UV_PROJECT_ENVIRONMENT` when in project root
- Add `--no-project` and `--no-workspace` to opt-out of above and
`requires-python` detection
- Rename `[NAME]` to `[PATH]` in CLI
2024-09-03 14:22:30 -05:00
eth3lbert
c667588524
Show env option in CLI reference documentation (#6863)
## Summary

Closes #6469.

<img width="721" alt="image"
src="https://github.com/user-attachments/assets/be144e43-e02f-473e-921c-91cf00c3c8d3">
2024-09-03 12:10:49 -05:00
David Bern
b7795024a8
docs docker.md: example to use bind mounts (#6921)
## Summary

Update the extended docker example to use bind mounts and avoid creating
extra layers and avoid copying files into layers

This is in line with the official Docker templates for Python
applications (you can try them out using `docker init`. I found them
very helpful!)
2024-09-03 09:36:54 -05:00
samypr100
37e25e2b1d
feat: introduce more docker tags for uv (#6053)
## Summary

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

This PR introduces additional images with the uv/uvx binaries from
scratch for both amd64/arm64 and make the mapping easy to configure by
generating the Dockerfile on the fly. This approach focuses on
minimizing CI time by taking advantage of dedicating a worker per
mapping (20-30s~ per job).

This PR also fixes `org.opencontainers.image.version` for all tags
(including the one from `scratch) to contain the right release version
instead of branch name `main` (default when no tag patterns are
specified).

For example, on release `x.y.z`, this will publish the following image
tags with format `ghcr.io/astral-sh/uv:{tag}` with manifests for both
amd64/arm64. This also include `x.y` tags for each respective additional
tag.

* From **scratch**: `latest`, `x.y.z`, `x.y` (currently being published)
* From **alpine:3.20**: `alpine`, `alpine3.20`, `x.y.z-alpine`,
`x.y.z-alpine3.20`
* From **debian:bookworm-slim**: `debian-slim`, `bookworm-slim`,
`x.y.z-debian-slim`, `x.y.z-bookworm-slim`
* From **buildpack-deps:bookworm**: `debian`, `bookworm`,
`x.y.z-debian`, `x.y.z-bookworm`
* From **python:3.12-alpine**: `python3.12-alpine`,
`x.y.z-python3.12-alpine`
* From **python:3.11-alpine**: `python3.11-alpine`,
`x.y.z-python3.11-alpine`
* From **python:3.10-alpine**: `python3.10-alpine`,
`x.y.z-python3.10-alpine`
* From **python:3.9-alpine**: `python3.9-alpine`,
`x.y.z-python3.9-alpine`
* From **python:3.8-alpine**: `python3.8-alpine`,
`x.y.z-python3.8-alpine`
* From **python:3.12-bookworm**: `python3.12-bookworm`,
`x.y.z-python3.12-bookworm`
* From **python:3.11-bookworm**: `python3.11-bookworm`,
`x.y.z-python3.11-bookworm`
* From **python:3.10-bookworm**: `python3.10-bookworm`,
`x.y.z-python3.10-bookworm`
* From **python:3.9-bookworm**: `python3.9-bookworm`,
`x.y.z-python3.9-bookworm`
* From **python:3.8-bookworm**: `python3.8-bookworm`,
`x.y.z-python3.8-bookworm`
* From **python:3.12-slim-bookworm**: `python3.12-slim-bookworm`,
`x.y.z-python3.12-slim-bookworm`
* From **python:3.11-slim-bookworm**: `python3.11-slim-bookworm`,
`x.y.z-python3.11-slim-bookworm`
* From **python:3.10-slim-bookworm**: `python3.10-slim-bookworm`,
`x.y.z-python3.10-slim-bookworm`
* From **python:3.9-slim-bookworm**: `python3.9-slim-bookworm`,
`x.y.z-python3.9-slim-bookworm`
* From **python:3.8-slim-bookworm**: `python3.8-slim-bookworm`,
`x.y.z-python3.8-slim-bookworm`
2024-09-03 08:44:01 -05:00
Charlie Marsh
ccdf2d793b
Add --no-hashes to uv export (#6954)
## Summary

Closes https://github.com/astral-sh/uv/issues/6944.
2024-09-02 22:12:29 -04:00
Charlie Marsh
b229230643
Use | for page separator in meta titles (#6953)
I generally prefer this style:

![Screenshot 2024-09-02 at 8 41
38 PM](https://github.com/user-attachments/assets/795dab85-b6c4-4278-913f-1d723379b225)
2024-09-03 00:42:59 +00:00