Commit Graph

492 Commits

Author SHA1 Message Date
konsti bf4c7afe8b
A minimal build backend for uv: uv_build (#11446)
uv itself is a large package with many dependencies and lots of
features. To build a package using the uv build backend, you shouldn't
have to download and install the entirety of uv. For platform where we
don't provide wheels, it should be possible and fast to compile the uv
build backend. To that end, we're introducing a python package that
contains a trimmed down version of uv that only contains the build
backend, with a minimal dependency tree in rust.

The `uv_build` package is publish from CI just like uv itself. It is
part of the workspace, but has much less dependencies for its own
binary. We're using cargo deny to enforce that the network stack is not
part of the dependencies. A new build profile ensure we're getting the
minimum possible binary size for a rust binary.

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2025-03-06 13:27:20 -06:00
Zanie Blue b7f98f1ff2
Use the Depot Ubuntu runners instead of GitHub for release workflows (#11948)
See

-
https://opensource.axo.dev/cargo-dist/book/reference/config.html#github-custom-runners
- https://github.com/axodotdev/cargo-dist/issues/1760
- #11935
2025-03-04 13:28:14 -06:00
konsti 6132d252d6
Remove unused `UV_STACK_SIZE` env vars (#11957)
These were overlooked in #10479
2025-03-04 16:53:34 +00:00
Zanie Blue f44aba0a96
Run the Docker build workflow when we touch project or toolchain metadata (#11938)
I noticed that https://github.com/astral-sh/uv/pull/11936 did not run
the Docker builds, nor did #11934

We should run these when the relevant files change so there aren't
surprises at release time!

Updates the `build-binaries` workflow to include toolchain version
changes and `.cargo/config.toml` changes too.
2025-03-04 08:36:20 -06:00
Zanie Blue f0ec9fd44a
Bump version to 0.6.4 (#11934) 2025-03-03 16:04:11 -06:00
Zanie Blue 326d0c460a
Add emulated test for x86-64 Python on aarch64 Windows (#11626)
Coverage of https://github.com/astral-sh/uv/pull/11625 for unmanaged
Python.
2025-02-19 12:02:13 -06:00
konsti 3634a4d8e9
More consistent `build-binaries.yml` (#11478)
For uv-build, we need to duplicate a lot of the `build-binaries.yml`
logic to build another source distribution and wheel. In preparation for
that I tried to make the invocations more consistent, to make it easier
to review the changes when adding the `uv-build` builds on top.

Split out from #11446

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2025-02-18 11:36:26 -06:00
samypr100 553b3a7c34 Bump alpine default tag to 3.21 (#11157)
Alpine 3.21 has been released for a few months and it's now being used
officially under `alpine` based [python
images](https://hub.docker.com/_/python), hence our python-alpine based
images has been using 3.21 since uv 0.5.8 under the hood.

This could arguably be `breaking` as we're dropping alpine3.20 top-level
tag, so it could be a good candidate for 0.6.0.

Alternatively, we can keep support for 3.20 and make this non-breaking
by simply repointing alpine to now be 3.21 and keeping the 3.20 tag
around.
2025-02-13 16:17:49 -06:00
Zanie Blue 4badcef3d8
Disable pip cache in Windows system test job (#11403)
I have no idea why we'd want the cache enabled here anyway?

Closes https://github.com/astral-sh/uv/issues/11397
2025-02-10 20:36:00 +00:00
Zanie Blue e22ecee36b
Respect `no-build` label in Docker image builds (#11333)
e.g., https://github.com/astral-sh/uv/pull/11329 is runner Docker image
builds but should not
2025-02-08 02:17:59 +00:00
Zanie Blue 1f963d1b89
Move content from the `mkdocs.public.yml` into the template (#11246)
Closes https://github.com/astral-sh/uv/issues/11242
2025-02-05 16:13:46 +00:00
Charlie Marsh ee2bdc21fa
Disable wheel testing for `powerpc64le-unknown-linux-gnu` (#11229)
## Summary

I need to look into this later, but the test step is failing to install
Python:
https://github.com/astral-sh/uv/actions/runs/13148286589/job/36694160839.
We already disable this for the non-`le` variant, so this seems ok to
revisit.
2025-02-04 22:46:08 -05:00
FishAlchemist 49b85d2e65
Add ``last updated`` for document (#11164)
## Summary

![image](https://github.com/user-attachments/assets/75431f9f-debe-435d-a02e-d216be7a3a01)

![image](https://github.com/user-attachments/assets/2d1b895e-4878-410e-90ff-ff8e932cbf24)
Display the last document update time, excluding any automatically
generated parts of the document, while ensuring that Google can
accurately read and recognize the webpage's time.

Note that I do not have permission to update
``requirements-insiders.txt``


Google time info
*
https://developers.google.com/search/blog/2019/03/help-google-search-know-best-date-for
*
https://developers.google.com/search/docs/appearance/structured-data/article#amp

Similar https://github.com/astral-sh/uv/pull/11162
Closes #11148
## Test Plan
uvx --with-requirements docs/requirements.txt -- mkdocs serve -f
mkdocs.public.yml --strict

![image](https://github.com/user-attachments/assets/6e8cd609-2e60-489c-97cc-fb28aa3204e0)
The correct format is actually ``2024-08-08T22:01:08Z``, but Google
Search happens to be lenient and accepts this format.

![image](https://github.com/user-attachments/assets/2ec8ce98-49ea-403b-bbd2-3d0d5630a562)
2025-02-03 22:28:47 -05:00
konsti c54dbcbcc2
Use dev drive for trampoline CI to avoid timeout (#11015)
Sometimes that job is just slow:
https://github.com/astral-sh/uv/actions/runs/12996921221/job/36247398606
2025-02-03 15:38:56 +01:00
Martijn Pieters 47f80a62c4
Sign docker images using cosign (#8685)
cosign uses the GitHub action ID token to retrieve an ephemeral code
signing certificate from Fulcio, and store the signature in the Rekor
transparency log.

Once an image has been successfully signed, you should be able to verify
the signature with:

```sh
cosign verify ghcr.io/astral-sh/uv:latest --certificate-identity-regexp='.*' --certificate-oidc-issuer-regexp='.*'
```

Closes #8670
2025-01-31 09:00:23 -06:00
Zanie Blue 24c70240d5
Link to our MRE documentation in the issue template (#11045) 2025-01-28 23:09:04 -06:00
Zanie Blue a6d887a37e
Include Rust toolchain in cache in trampoline test job (#11019) 2025-01-28 14:26:07 +00:00
Zanie Blue e8d50153d0
Update name of "Build binary" job to highlight that these are the "release" binaries (#10990)
I found this confusing since we have `build binary` jobs in regular CI
2025-01-27 11:48:38 -06:00
konsti ad60f8da77
Use install action for cargo shear (#10983) 2025-01-27 18:06:17 +01:00
Zanie Blue 1ef47aa1d5
Only move the `.cargo` directory if it exists (#10938)
which it usually does... but on some runners it can be missing now?
2025-01-24 15:39:29 +00:00
Zanie Blue 98e7cd00c8
Add Windows aarch64 to the release binaries (#10885)
Following test coverage from #10540 
Closes https://github.com/astral-sh/uv/issues/1141
2025-01-24 09:24:22 -06:00
Zanie Blue 0008ec69c4
Run multiple commands in ecosystem tests (#10920) 2025-01-24 09:18:21 -06:00
Zanie Blue 9a2d5fd358
Add ecosystem test case for `pydantic/pydantic-core` (#10917) 2025-01-23 17:05:13 -06:00
Zanie Blue 10654cb8c2
Fix render of matrix arch for system conda tests (#10914) 2025-01-23 21:31:59 +00:00
Zanie Blue a05b0e0346
Separate musl and libc linux builds in CI (#10830)
We have a lot of jobs downstream of the `build-binary-linux` job, but
the job is significantly slower than the other binary builds because we
need to configure musl. Instead, we split this into two jobs (as it was
before https://github.com/astral-sh/uv/pull/2309#discussion_r1520101330)
to speed things up.

The libc job takes ~1m and its _downstream_ jobs finish before the musl
build does. The musl job takes ~5m.
2025-01-23 15:19:26 -06:00
Zanie Blue 26210cc0e6
Bump cargo-dist version to 0.28.0 (#10884)
Some installer improvements; see
https://github.com/axodotdev/cargo-dist/blob/main/CHANGELOG.md#version-0280-2025-01-08
2025-01-23 10:49:53 -06:00
konsti db4ab9dc8a
Install and remove managed Python to and from the Windows Registry (PEP 514) (#10634)
## Summary

In preview mode on windows, register und un-register the managed python build standalone installations in the Windows registry following PEP 514.

We write the values defined in the PEP plus the download URL and hash. We add an entry when installing a version, remove an entry when uninstalling and removing all values when uninstalling with `--all`. We update entries only by overwriting existing values, there is no "syncing" involved.

Since they are not official builds, pbs gets a prefix. `py -V:Astral/CPython3.13.1` works, `py -3.13` doesn't.

```
$ py --list-paths                                            
 -V:3.12 *        C:\Users\Konsti\AppData\Local\Programs\Python\Python312\python.exe
 -V:3.11.9        C:\Users\Konsti\.pyenv\pyenv-win\versions\3.11.9\python.exe
 -V:3.11          C:\Users\micro\AppData\Local\Programs\Python\Python311\python.exe
 -V:3.8           C:\Users\micro\AppData\Local\Programs\Python\Python38\python.exe
 -V:Astral/CPython3.13.1 C:\Users\Konsti\AppData\Roaming\uv\data\python\cpython-3.13.1-windows-x86_64-none\python.exe
```

Registry errors are reported but not fatal, except for operations on the company key since it's not bound to any specific python interpreter.

On uninstallation, we prune registry entries that have no matching Python installation (i.e. broken entries).

The code uses the official `windows_registry` crate of the `winreg` crate.

Best reviewed commit-by-commit.

## Test Plan

We're reusing an existing system check to test different (un)installation scenarios.
2025-01-23 14:13:41 +00:00
Divyanshu Kalra 027c3f5e67
Add Windows aarch64 build and test job to CI
Based on discussion in https://github.com/astral-sh/uv/pull/10306, this
adds building aarch64 exe using x86 runner. See:
https://github.com/astral-sh/uv/pull/10402#issuecomment-2579094192

Addresses: #1141

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2025-01-22 22:38:50 -06:00
Charlie Marsh 183fe403c6
Disable `.egg-info` tests via `slow-tests` feature on Windows and macOS (#10872)
## Summary

These are super slow on Windows and it's not critical to test them on
that platform. Let's just do the lazy thing.
2025-01-22 21:39:04 +00:00
Zanie Blue a539d33021
Update smoke test scripts to fail on first error (#10831)
These continue on failure on Windows, which is annoying.
2025-01-22 15:00:50 -06:00
Zanie Blue fd16988a4b
Move smoke tests into dedicated jobs and build `uvx` explicitly (#10824)
In the interest of expanding these tests and debugging weird behaviors,
I've moved the smoke tests out of the `cargo test` job and into
dedicated `smoke test` jobs. We explicitly build `uvx` in the `build
binary` jobs instead of relying on the implicit build for the test run.

I also added a `uvx` test case to the smoke tests: `uvx ruff --version`
2025-01-21 16:46:12 -06:00
Zanie Blue 6a5e5b33f2
Move `cargo` to the Dev Drive in Windows CI (#10656)
This successfully changed the nextest install to target the dev drive

```
info: cargo-nextest installed at /e/.cargo/bin/cargo-nextest.exe
```
2025-01-21 12:43:54 -06:00
Zanie Blue 399086d28f
Disable the distutils setuptools shim during interpreter query (#10819)
Addresses
https://github.com/astral-sh/uv/issues/4204#issuecomment-2604983670

Original context in https://github.com/astral-sh/uv/issues/2302
2025-01-21 18:34:13 +00:00
Zanie Blue ad2ef7331a
Add issue templates (#10786)
Demo at https://github.com/zanieb/uv/issues

I think the next steps are to

- Move the "Build failures" document to a dedicated "Troubleshooting"
section
- Add more documentation on how to create an MRE
- Add more troubleshooting pages
2025-01-21 11:25:07 -06:00
Zanie Blue f9539d5a8e
Remove old issue template (#10787)
It is not used anymore because of the GitHub issue preview
2025-01-21 09:03:19 -06:00
Zanie Blue 581a82d370
Install Python via uv in Windows CI (#10657)
Python 3.8 is a GHA cache miss now, so it is actually like 30-45s. uv
may be faster
2025-01-21 09:02:14 -06:00
Zanie Blue 4f31b44eac
Improve log when distutils is missing (#10713)
See https://github.com/astral-sh/uv/issues/4204 for motivation

This doesn't really reach the user experience I'd expect — i.e., we end
up saying a virtual environment "does not exist" which is a little
silly. However, I think improving the error messaging on interpreter
queries in general should be solved separately. I did one small
"general" change in
89e11d0222
— otherwise we don't show the message at all.

---------

Co-authored-by: konsti <konstin@mailbox.org>
2025-01-20 17:29:29 +00:00
Zanie Blue 896435faec
Use `D:` drive for Windows CI (#10180)
When using the standard Windows runners (as opposed to the _larger_
GitHub runners), an undocumented `D:` drive is available and performant.
We can save some money on by using this on a standard runner instead of
a larger runner with an ReFS drive. Switching to the `D:` drive was not
acceptable for `cargo test` >25m runtime.

Inspired by https://github.com/pypa/pip/pull/13129
See https://github.com/actions/runner-images/issues/8755

Timings (grain of salt — GitHub is super noisy):

- clippy: 2m 18s -> 2m 11s
- build binary: 2m 3s -> 2m 35s
- trampoline check (x86-64): 2m 32s -> 1m 50s (other architectures
similar)
- trampoline test (x86-64): 4m 12s -> 6m 7s
- trampoline test (i686): 6m 44s -> 5m 35s
2025-01-17 13:57:09 -06:00
Zanie Blue 75a1a47859
Improve performance of our test drive in Windows CI (#10651)
Previously, we couldn't use a DevDrive
(https://github.com/astral-sh/uv/pull/3522#issuecomment-2111448930)
because our Windows version was not sufficient.

Recently, I upgraded our larger runners to Windows 2025 preview
(https://github.com/astral-sh/uv/pull/10298) which I presume has support
for this.

I removed ReFS in
953c3535c3
which didn't seem to do anything to performance.

I also found some notes on "trusted" DevDrives and "disabling anti-virus
filtering" which I simply have to try.
2025-01-16 12:07:09 -06:00
Aria Desires 80ac8db7db
Always spawn a main2 thread to normalize main stack size issues (#10479)
Also removes UV_STACK_SIZE and uses RUST_MIN_STACK instead, tweaking
docs to reflect the differences.

Fixes #10367
2025-01-14 22:35:17 -05:00
Charlie Marsh 5bc09a1e9e
Revert "improve shell compatibility of venv activate scripts (#10397)" (#10497)
## Summary

This reverts commit 2f7f9ea571
(https://github.com/astral-sh/uv/pull/10397). We're seeing some
user-reported failures, so we need to investigate further before
re-shipping.

Re-opens https://github.com/astral-sh/uv/issues/7480.

Closes https://github.com/astral-sh/uv/issues/10487.
2025-01-11 09:23:07 -05:00
Zanie Blue 68bfa5b5b8
Avoid Docker rate limits by logging into DockerHub (#10400)
The latest release flaked failing to fetch the buildx image, which is
reportedly due to rate limits. Last I checked, DockerHub enforces much
stricter limits on unauthenticated requests. I added a bot account and a
corresponding read-only token.
2025-01-08 18:46:24 +00:00
Aria Desires 2f7f9ea571
improve shell compatibility of venv activate scripts (#10397)
The shellcheck action we uses misses some files, so they fell out of
spec for what we support. This PR first and foremost adds them to the
scanning list, and then fixes the issues found.

Fixes #7480
2025-01-08 13:12:29 -05:00
Zanie Blue bbf9558b16
Rename CI runners and use Windows 2025 preview on large runners (#10298)
I'm renaming our runners to be more explicit about their size,
architecture, and version.

Switching to Windows 2025 over 2022 in some of our jobs in the hope that
it's faster.
2025-01-05 14:29:37 -06:00
Charlie Marsh d1b1da5ac1
Upgrade cargo-dist to v0.27.0 (#10141)
## Summary

Required peer to https://github.com/astral-sh/uv/pull/10115.
2024-12-24 08:24:14 -05:00
renovate[bot] 9d417da4e1
Update astral-sh/setup-uv action to v5 (#10116) 2024-12-23 08:47:58 -05:00
Zanie Blue 5e7f80ea46
Disable Depot runner for macOS (#9976)
Use GitHub instead; Depot do not provide the necessary concurrency to
use this here and in `python-build-standalone`
2024-12-17 11:20:47 -06:00
konsti b7df5dbaf3
Avoid `liblzma-dev` system dep in uv-dev and uv-bench (#9933)
Enable `lzma-sys/static` through the performance feature not only in uv,
but in uv-dev and uv-bench too, to avoid the system dependency on
`liblzma-dev`.

Ref #9880
2024-12-17 16:12:33 +01:00
Charlie Marsh bee54039b1
Add lzma to benchmark install (#9888) 2024-12-13 16:54:20 -05:00
Zanie Blue d8f945a100
Install `liblzma-dev` in CI (#9880) 2024-12-13 14:10:33 -06:00
Charlie Marsh 441ed3bdcc
Remove `powerpc64le-unknown-linux-musl` target (#9810)
## Summary

This is blocking the release (#9793). We seem to have hit some sort of
limit that's causing builds to fail on this target. It's a Tier 3 Rust
target with _unknown_ (???) `std` support (see the question mark
[here](https://doc.rust-lang.org/rustc/platform-support.html)).
2024-12-11 09:30:50 -05:00
Zanie Blue f7d647e81d
Test binary builds on `Cargo.lock` changes (#9792)
This would be helpful to know if the regression was caused by a
dependency update.
2024-12-10 21:13:36 -05:00
Zanie Blue f7f300e608
Disable checkout during FreeBSD tests (#9670)
To save on that disk space and speed!
2024-12-06 08:28:08 -06:00
Zanie Blue 0805242ea2
Test `venv` in 3.13t integration test (#9665) 2024-12-05 20:57:08 -06:00
Zanie Blue d7b74f964e
Fix FreeBSD test by avoiding expensive copy of the uv binary (#9628) 2024-12-04 05:33:10 +00:00
Zanie Blue e311b0424d
Disable freebsd test until we resolve the upstream problem (#9620)
See

- https://github.com/acj/freebsd-firecracker/issues/1
- https://github.com/acj/freebsd-firecracker-action/issues/1
- #9619
2024-12-03 15:04:17 -06:00
Zanie Blue b70c4f30ee
Add `Cargo.toml` to triggers for binary test builds (#9616) 2024-12-03 14:13:32 -06:00
konsti 0b0d0f44f8
Publish: Warn when keyring has no password (#8827)
When trying to upload without a password but with the keyring, check
that the keyring has a password for the upload URL and username and warn
if it doesn't.

Fixes #8781
2024-11-27 20:54:49 +01:00
Zanie Blue ba94d85d36
Allow disabling (most of) CI with `no-test` label (#9456) 2024-11-26 17:16:08 -06:00
Jo 77116bef26
windows ci: Run `cargo clippy` in the dev drive workspace to reuse the cache (#9411)
## Summary

In the Windows Clippy job, the workspace is transferred to
`UV_WORKSPACE`. However, `cargo clippy` continues to execute in the
`github.workspace`, and `Swatinem/rust-cache` only caches the
`UV_WORKSPACE/target`, resulting in `cargo clippy` having no cache.

This adjustment will take effect when any changes are made to
`Cargo.toml` or `Cargo.lock`, prompting `Swatinem/rust-cache` to updat
the cache.
2024-11-25 15:12:43 -06:00
renovate[bot] 064fcd92af
Update astral-sh/setup-uv action to v4 (#9407) 2024-11-24 20:48:57 -05:00
konsti de2e9cd0ff
Increase UV_STACK_SIZE to 3MB (#9311)
We're seeing CI failures on windows
2024-11-21 11:46:33 +00:00
Zanie Blue 6eeb515a8a
Use larger runners for bottleneck builds of release artifacts (#9239)
Uses a different runner for builds that take >15m.

Most of the builds finish in ~10 minutes.
2024-11-19 14:35:59 -06:00
Charlie Marsh 465588f6c1
Enable `zlib-rs` on all platforms (#9202)
## Summary

Let's see if these build now. They failed back when we had a CMake
dependency, and had to build `zlib-ng`.
2024-11-18 11:21:58 -05:00
Zanie Blue 14812ff79b
Use Depot runners instead of GitHub larger runners for Unix (#9154) 2024-11-15 17:07:53 -06:00
konsti 874aa29b57
Pin publish test to 3.12 (#8951)
The bump to 3.13 broke the test
2024-11-10 15:43:47 +01:00
Mathieu Kniewallner ecb3e98da0
ci: validate project metadata (#8973)
## Summary

As per https://github.com/astral-sh/uv/pull/8943#discussion_r1835065562,
adding a CI step to validate project metadata. Documentation for the
tool: https://validate-pyproject.readthedocs.io/en/stable/readme.html.
`store` is an extra that uses [this
package](https://github.com/henryiii/validate-pyproject-schema-store) to
get a weekly update of the schema in SchemaStore.

## Test Plan

Step passes on CI, and testing the same command locally while
voluntarily using a wrong classifier fails:
```console
$ uvx --from 'validate-pyproject[all,store]' validate-pyproject pyproject.toml
Invalid file: pyproject.toml
[ERROR] `project.classifiers[5]` must be trove-classifier
```
2024-11-09 08:48:45 -06:00
Zanie Blue 7f9ab17577
Upgrade to cargo-dist `0.25.2-prerelease.3` (#8958)
Gets us the upstream fix
(https://github.com/axodotdev/cargo-dist/pull/1538Z) for
https://github.com/axodotdev/axoupdater/issues/210 so we don't need to
patch releases manually for self update to work.

Includes a few other changes, i.e., they validate checksums now.
2024-11-08 17:08:23 -06:00
Zanie Blue 55502842c0 Use 3.13 in CI (#8014) 2024-11-07 14:29:54 -06:00
Charlie Marsh 2340d73e33
Upgrade to cargo-dist v0.25.1 (#8873)
## Summary

This gets us access to `UV_INSTALLER_GITHUB_BASE_URL` and
`UV_INSTALLER_GHE_BASE_URL`.

See: https://github.com/axodotdev/cargo-dist/releases/tag/v0.25.1.
2024-11-06 21:48:43 -05:00
Jo 738f4245a5
Add `docs/configuration/environment.md` to code change list (#8859)
See #8858, the `cargo dev generate-all` step should not be skipped.
2024-11-06 11:44:42 -05:00
Jo 814b4d159c
Add MSRV build to CI (#8855)
## Summary

Closes #8451
2024-11-06 11:22:13 -05:00
Jo 9f81db7d1d
Use cache in windows clippy job (#8852)
Place the `Swatinem/rust-cache@v2` step after `setup-dev-drive.ps1` to
ensure the correct directories are cached.
2024-11-05 23:05:34 -06:00
Zanie Blue 8d3408fe39
Add support for installing versioned Python executables on Windows (#8663)
Incorporating #8637 into #8458 

- Adds `python-managed` feature selection to Windows CI for `python
install` tests
- Adds trampoline sniffing utilities to `uv-trampoline-builder`
- Uses a trampoline to install Python executables into the `PATH` on
Windows
2024-10-31 15:58:35 +00:00
Zanie Blue 4dd36b799f
Install versioned Python executables into the bin directory during `uv python install` (#8458)
Updates `uv python install` to link `python3.x` in the executable
directory (i.e., `~/.local/bin`) to the the managed interpreter path.

Includes

- #8569 
- #8571 

Remaining work

- #8663 
- #8650 
- Add an opt-out setting and flag
- Update documentation
2024-10-30 14:13:20 +00:00
Zanie Blue c335dc5e5d
Add a trampoline variant that just executes `python` (#8637)
Currently, our trampoline is used to convert `<command> [args]` to
`python <command> [args]` for script entrypoints installed into virtual
environments. For #8458, it'd be nice to convert a shim `python3.12
[args]` to `python [args]`. Here, we modify the trampolines to support
this use-case.

The only change we really need here is to avoid injecting `<command>`
into the child process. We change the "magic number" at the end of the
trampoline executables from `UVUV` to `UVSC` and `UVPY` which define
"script" and "python" variants to the trampoline. We then omit the
`<command>` injection in the latter case. We also omit writing the zip
script payload.

To support construction of the new variant, a new
`uv-trampoline-builder` crate is introduced — this avoids requirements
on `uv-install-wheel` in future work. I also use `uv-trampoline-builder`
to consolidate some of the test setup for `uv-trampoline`.

There should be no backwards compatibility concerns, since trampolines
are fully self-referential.

I rebased to fix the commits at the end, as this took many iterations to
get working via CI. This should roughly be reviewable by commit if you
prefer.
2024-10-29 09:21:15 -05:00
Zanie Blue e86c52d39c
Add note about trampoline tests on aarch64 (#8643)
Similar to https://github.com/astral-sh/uv/pull/8642, not sure why this
is incomplete.

We'll see if it works.
2024-10-28 19:53:23 +00:00
Zanie Blue 7948441121
Actually perform checks on alternate trampoline platforms (#8642)
It seems unintentional that we basically did nothing on these
alternative platforms? It seems like an artifact from some previous
change.

I'm not sure it's worth running Clippy multiple times. We could also
just reduce the matrix here.
2024-10-28 14:12:36 -05:00
Hamir Mahal dff507702b
fix: usage of `a deprecated Node.js version` in CI (#8506)
## Summary

[`ci.yml`](https://github.com/astral-sh/uv/blob/main/.github/workflows/ci.yml)
uses
[`gabrielfalcao/pyenv-action@v18`](https://github.com/gabrielfalcao/pyenv-action/),
which [uses `a deprecated Node.js
version`](https://github.com/astral-sh/uv/actions/runs/11483963555).

This pull request aims to remove any usage of `a deprecated Node.js
version` from
[`ci.yml`](https://github.com/astral-sh/uv/blob/main/.github/workflows/ci.yml).

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

## Test Plan

I attempted to test this but [canceled the run on my
fork](https://github.com/hamirmahal/uv/actions/runs/11484989508/job/31964058415)
after it waited for a runner for over 10 minutes with no result.

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

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-10-23 22:28:34 -04:00
Zanie Blue 76bcb89571
Use native Windows runner for trampoline checks (#8469)
As in https://github.com/astral-sh/uv/pull/8182 and #8468
2024-10-22 12:28:31 -05:00
Zanie Blue dc32b26afb
Replace `cargo xwin clippy` with native clippy run on Windows again (#8468)
Adds #8181 again

This failure is taking up way too much time and cache misses are feeling
frequent.
2024-10-22 11:28:19 -05:00
Zanie Blue ab16bf0a8c
Set `UV_LINK_MODE=copy` for Windows test runs (#8350)
Cherry-picked from #8347 

Might fix https://github.com/astral-sh/uv/issues/6940 — I'm not seeing a
failure over there after this change. I think there may be some problem
with concurrent reads of junctioned files on the DevDrive? It's really
hard to say.

We might lose some important test coverage with this change. I'm not
sure what to do about that either.
2024-10-20 13:37:41 -05:00
Zanie Blue d296e7270a
Run release builds for `macos-x86_64` on `macos-14` runners (#8327) 2024-10-18 11:01:52 -04:00
Zanie Blue c8cbd62a30
Patch Python executable name for Windows free-threaded builds (#8310)
A temporary fix for https://github.com/astral-sh/uv/issues/8298 while we
wait for my slower upstream fix at
https://github.com/indygreg/python-build-standalone/pull/373

I think we'll want this machinery anyway to ensure that the various
executable names are available? Otherwise we need to special-case all
the `python` names in `uv run`?

We don't have unit test coverage of managed downloads, so I added an
[integration
test](https://github.com/astral-sh/uv/actions/runs/11394150653/job/31703956805?pr=8310)
similar to what we have for Linux.
2024-10-17 18:27:55 -05:00
Zanie Blue 16b77e7fd4
Add a FreeBSD build to CI (#8269)
Playing with this because it's interesting and I learned about this cool
firecracker action.

Related #3370
2024-10-17 15:24:21 +00:00
konsti e0a2bc92cd
Reuse packages in test publish script (#8257) 2024-10-17 11:44:19 +02:00
Charlie Marsh cf7dbaa7a7
Update to `cargo-dist` v0.23.0 (#8270)
## Summary

Closes https://github.com/astral-sh/uv/issues/8242.
2024-10-16 16:25:03 -04:00
Zanie Blue b851ced09e
Fix selection of free-threaded interpreters during default Python discovery (#8239)
Closes https://github.com/astral-sh/uv/issues/8228

e.g., on this branch

```
❯ uv python install 3.13t 3.13
❯ cargo build
❯ cargo run -q --bin uvx -- --from build python -c "import sys; print(sys.base_prefix)"
/Users/zb/.local/share/uv/python/cpython-3.13.0-macos-aarch64-none
❯ cargo run -q --bin uvx -- -p 3.13 --from build python -c "import sys; print(sys.base_prefix)"
/Users/zb/.local/share/uv/python/cpython-3.13.0-macos-aarch64-none
❯ cargo run -q --bin uvx -- -p 3.13t --from build python -c "import sys; print(sys.base_prefix)"
/Users/zb/.local/share/uv/python/cpython-3.13.0+freethreaded-macos-aarch64-none
```

and on main

```
❯ cargo build
❯ cargo run -q --bin uvx -- --from build python -c "import sys; print(sys.base_prefix)"
Installed 3 packages in 12ms
/Users/zb/.local/share/uv/python/cpython-3.13.0+freethreaded-macos-aarch64-none
```

I want to add more test coverage around this, but I've noticed the
free-threaded discovery tests are a bit off as-is and it'll be a bigger
task. I think the recent bugs around discovery indicate we should invest
more into that test framework.
2024-10-16 14:44:32 -05:00
konsti 0c5d05d9e1
Don't run publish tests from fork (#8168)
Only the astral-sh/uv repository has the secrets.

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-10-14 16:46:41 -04:00
Zanie Blue 5f33915e03
Add support for managed installs of free-threaded Python (#8100)
Closes https://github.com/astral-sh/uv/issues/7193

```

❯ cargo run -q -- python uninstall 3.13t
Searching for Python versions matching: Python 3.13t
Uninstalled Python 3.13.0 in 231ms
 - cpython-3.13.0+freethreaded-macos-aarch64-none
❯ cargo run -q -- python install 3.13t
Searching for Python versions matching: Python 3.13t
Installed Python 3.13.0 in 3.54s
 + cpython-3.13.0+freethreaded-macos-aarch64-none
❯ cargo run -q -- python install 3.12t
Searching for Python versions matching: Python 3.12t
error: No download found for request: cpython-3.12t-macos-aarch64-none
❯ cargo run -q -- python install 3.13rc3t
Searching for Python versions matching: Python 3.13rc3t
Found existing installation for Python 3.13rc3t: cpython-3.13.0+freethreaded-macos-aarch64-none
❯ cargo run -q -- run -p 3.13t python -c "import sys; print(sys.base_prefix)"
/Users/zb/.local/share/uv/python/cpython-3.13.0+freethreaded-macos-aarch64-none
```
2024-10-14 15:18:52 -05:00
samypr100 db0f0aec09
fix(ci): adjust xwin timeout and revert xwin jobs being disabled (#8187)
## Summary

Reverts #8181 and #8182.

The fix is in b849f0f, which extends the run timeout to allow xwin to
download the Windows SDK files, which can take 10+ minutes.

Closes https://github.com/rust-cross/cargo-xwin/issues/127

## Test Plan

Existing CI should pass.

## Notes

xwin jobs will take a long time the first time due to cache re-warming.
2024-10-14 15:14:46 -05:00
Zanie Blue cc9767ca1e
Disable `cargo xwin clippy` in trampoline job (#8182)
See https://github.com/rust-cross/cargo-xwin/issues/127
2024-10-14 18:29:57 +00:00
Zanie Blue 581fab6597
Replace `cargo xwin clippy` with native clippy run on Windows temporarily (#8181)
We can't have CI blocked by this. If this doesn't work or is
exceptionally slow, I'll remove the job entirely.
2024-10-14 13:19:33 -05:00
Zanie Blue 163c90184f
Fix mkdocs workflow (#8174)
GitHub changed these environments to "externally managed" (or something
changed with the setup-python action?)
2024-10-14 09:45:13 -05:00
Jo 6d868c076c
Use `uv publish` to publish itself (#8065) 2024-10-12 20:18:00 +02:00
samypr100 12a76690b2
ci(docker): support python 3.13 images (#8105)
## Summary

Closes https://github.com/astral-sh/uv/issues/8066#event-14593331489
2024-10-10 14:39:07 -05:00
Tim Felgentreff 5a8f0ad705
Update to GraalPy 24.1, remove workaround for 24.0 (#8095)
## Summary

Update CI config to test against GraalPy 24.1, which makes a workaround
in the CI config unnecessary.

## Test Plan

The updated CI config is tested.
2024-10-10 17:17:22 +02:00
Mathieu Kniewallner 36fedf7ac7
chore(renovate): move out of deprecated options (#8055) 2024-10-09 14:48:19 -05:00
konsti 1e6c64074d
Add codeberg integration test for uv publish (#8043) 2024-10-09 15:02:26 +02:00
sobolevn 56521937b7
Add shellcheck CI (#7888)
<!--
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

I started learning `uv` by inspecting the source code.
I've noticed that your shell scripts are very good! Which is rare!

## Test Plan

I propose to add `shellcheck` to the CI.
It is a great tool to help finding bugs and style issues in shell code.

Techincal details:
- This CI job will only run when any `.sh` files are changed (or the job
definition file)
- It takes just several seconds even on local machine:
```
» time shellcheck -S style **/*.sh
shellcheck -S style **/*.sh  0.02s user 0.05s system 61% cpu 0.123 total
```

- It is easy to use, for example: I just fixed the single problem you
had in your code with `# shellcheck disable=SC1091`
- I am using this tool for around 8 years now and didn't have any
issues. Examples:
ca899f3b69/.github/workflows/test.yml (L22-L27)
and
https://github.com/wemake-services/wemake-django-template/blob/master/.github/workflows/shellcheck.yml

But, I understand that build / lint tools are very subjective. So, feel
free to close :)
2024-10-08 13:58:00 -05:00
Zanie Blue cd582cacab
Fix GitHub Actions integration test (#8013)
Fixes bug noted in https://github.com/astral-sh/uv/pull/8012

GitHub upgraded the 3.12 Python version so the path changed!
2024-10-08 17:53:56 +00:00
Zanie Blue 38beb2b24f
Show verbose output during integration tests (#7982) 2024-10-07 18:39:22 +00:00
Zanie Blue 0176b6f0bb
Show verbose logs during smoke test (#7984) 2024-10-07 13:28:54 -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
samypr100 c708cc82fa
chore(ci): bump macos-12 intel runner to macos-13 intel runner (#7877)
## Summary

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

This is not breaking since `MACOSX_DEPLOYMENT_TARGET` will stay the same
(currently defaulting to 10.12) so a
`uv-x.y.z-py3-none-macosx_10_12_x86_64.whl` will still be built
2024-10-03 13:00:58 +01:00
Charlie Marsh 14507a1793
Add `uv-` prefix to all internal crates (#7853)
## Summary

Brings more consistency to the repo and ensures that all crates
automatically show up in `--verbose` logging.
2024-10-01 20:15:32 -04:00
Mathieu Kniewallner 04c79aff0a
chore(renovate): enable `regex` manager (#7820)
## Summary

Investigated
https://github.com/astral-sh/uv/pull/7807#issuecomment-2384080360, and
the reason why the PR mentioned in the comment did not work in the end
is because we only opt-in for specific managers in Renovate
configuration. By enabling
[regex](https://docs.renovatebot.com/modules/manager/regex/) manager, we
should now get proper updates to documentation references.

## Test Plan

Tested enabling specific managers (including `regex` one) in
https://github.com/mkniewallner/mkv-playground/pull/18, and Renovate was
still able to detect regex dependencies.
2024-09-30 17:28:19 -04: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
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
konsti da328379c1
Don't show deploy notification when we don't need to (#7665) 2024-09-24 19:42:13 +02:00
konsti 205bf8cabe
Implement trusted publishing (#7548)
Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-09-24 16:07:20 +00:00
konsti 1995d20298
Add `uv publish`: Basic upload with username/password or keyring (#7475)
Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2024-09-24 15:33:06 +00:00
Bas Schoenmaeckers 77c2496f47
Allow creating venv with free-threaded python builds (#7431)
<!--
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

closes #4828

First iteration for an implementation. I need to add more tests but
wanted your opinion on the implementation first.

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

## Test Plan
Currently tested using the following command but will add tests shortly:

```console
D:\repo\uv> cargo run venv -p 3.13t && .venv\Scripts\python.exe
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.52s
     Running `target\debug\uv.exe venv -p 3.13t`
Using Python 3.13.0rc1 interpreter at: C:\Users\bschoen\AppData\Local\Programs\Python\Python313\python3.13t.exe
Creating virtualenv at: .venv
Activate with: .venv\Scripts\activate
Python 3.13.0rc1 experimental free-threading build (tags/v3.13.0rc1:e4a3e78, Jul 31 2024, 21:06:58) [MSC v.1940 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 
```

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-09-23 17:36:16 -05:00
Zanie Blue 47eeef5c09
Explicitly create the DevDrive tmpdir before use (#7644)
A suggested solution to #6940 — unfortunately only time will tell if it
works.
2024-09-23 12:59:22 -05:00
renovate[bot] 734a8cec81
Update astral-sh/setup-uv action to v3 (#7633) 2024-09-22 21:00:49 -04:00
Mathieu Kniewallner 2144c8bd40
chore(renovate): update GitHub Actions major versions in docs (#7584)
## Summary

Originally wanted to update the reference to `astral-sh/setup-uv` in
https://docs.astral.sh/uv/guides/integration/github/, but thought it
could be nice to automate those updates through Renovate. The custom
manager will look for any major version GitHub Action reference in any
Markdown file in `docs` directory, and raise a PR to update it.

Possible improvements:
- We could separate those updates from updating the actions updates for
uv's own GitHub Actions workflow, which would end up raising 2 different
PRs instead of grouping them (example of the current behaviour without
this improvement in
https://github.com/mkniewallner/mkv-playground/pull/4 where we update
the doc reference at the same time as a real dependency usage in a
workflow).
- ~Should the PRs be raised immediately, to handle the update as soon as
possible, instead of waiting for the regular weekly Monday schedule?
This would ensure that `astral-sh/setup-uv` references are handled as
early as possible.~ done in
6af7f45750

## Test Plan

I've tested that with
00ddfb6900/renovate.json5
and
00ddfb6900/docs/integeration/foo.md,
where Renovate raised 2 PRs:
- https://github.com/mkniewallner/mkv-playground/pull/13
- https://github.com/mkniewallner/mkv-playground/pull/4

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-09-20 14:58:40 -05:00
samypr100 b918557ae7
ci(docker): improve release tagging order and display on ghcr.io (#7568)
## Summary

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

This change adds a new job at the end of docker publish which adds
annotations the primary image digests in order to make ghcr.io rank
`ghcr.io/astral-sh/uv` at the top once again. The solution is to
annotate the index at the end during a re-publish to make ghcr.io
consider it a more updated entry than the others and rank it at the top
once again.

## Test Plan

Tested on release run on my own fork
* Packages: https://github.com/samypr100/uv/pkgs/container/uv will show
`ghcr.io/astral-sh/uv` first once again
* Run: https://github.com/samypr100/uv/actions/runs/10951404736
2024-09-20 14:05:51 -05:00
Zanie Blue 398f13824e
Add integration test for `UV_PROJECT_ENVIRONMENT` (#7591)
[Example](https://github.com/astral-sh/uv/actions/runs/10963662204/job/30445673572?pr=7591)

Test for #7585
2024-09-20 14:03:42 -05:00
bluss 7a25a82fc9
Move uvx shell completion to uvx --generate-shell-completion (#7511)
## Summary

Because a problem was found with Powershell and combining the generated
completion scripts for uv and uvx, let's try separating uv and uvx
command completion scripts.

The generated powershell script template can be seen in clap_complete
source, and it starts with `using` directives, which makes it impossible
(apparently) to concatenate two of those script outputs.

As a side effect, this is available under `uv tool run
--generate-shell-completion` too.

Fixes #7482

## Test Plan

- `eval "$(cargo run --bin uvx -- --generate-shell-completion bash)"`
- Test Powershell
2024-09-20 01:27:25 +00:00
Zanie Blue b8f9ee3b4d
Bump version to 0.4.13 (#7558) 2024-09-19 20:43:56 +00:00
konsti 4fdf5fc73f
Use a single lint task in CI (#7540) 2024-09-19 13:32:08 +02:00
Zanie Blue 4611412757
Allow Python pre-releases to be used if they are first on the `PATH` (#7470)
Closes https://github.com/astral-sh/uv/issues/7469
2024-09-18 10:19:10 -05:00
Charlie Marsh c87ce7aaf8
Run `cargo upgrade` (#7448)
Co-authored-by: konstin <konstin@mailbox.org>
2024-09-17 12:39:58 +02:00
Zanie Blue f22e5ef69a
Avoid selecting prerelease Python installations without opt-in (#7300)
Similar to our semantics for packages with pre-release versions.

We will not use prerelease versions unless there are only prerelease
versions available, a specific version is requested,
or the prerelease version is found in a reasonable source (active
environment, explicit path, etc. but not `PATH`).

For example, `uv python install 3.13 && uv run python --version` will no
longer use `3.13.0rc2` unless that is the only Python version available,
`--python 3.13` is used, or that's the Python version that is present in
`.venv`.
2024-09-11 15:49:33 -05:00
Zanie Blue ebd73d83f8
Allow explicitly requesting an system interpreter version in `check_system_python` (#7306)
Needed for #7300
2024-09-11 19:41:42 +00:00
Zanie Blue d7ec546e71
Add Python 3.13 system test for Linux (#7302)
Previously we only had coverage on Windows

e.g. for more test coverage in cases like
https://github.com/astral-sh/uv/pull/7300#discussion_r1755343870

I picked Linux over macOS because the 3.13 prereleases are not available
via HomeBrew?
2024-09-11 14:25:09 -05:00
Tom 7021b15a42
Fix PPC64 page size in binary builds. (#7298)
## Summary

Add maturin build flag to set 64kb page size on PPC64 and PPC64LE
architectures. Not aware of modern systems that use 4kb pages.

Resolves #6528

## Test Plan

ppc64le gnu dynamic-linked and musl static-linked binary builds were
tested successfully on an IBM Power9 system running RHEL 8.8. I do not
have access to other types of PPC64 systems for testing.
2024-09-11 14:13:49 -04:00
Ibraheem Ahmed 4f03d204df
Run benchmarks with `--profile profiling` (#5927)
## Summary

The CodSpeed flamegraphs are currently useless after
https://github.com/astral-sh/uv/pull/5745.
2024-09-10 14:25:53 -04:00
renovate[bot] ee74d74605
Update peter-evans/create-pull-request action to v7 (#7206) 2024-09-08 20:37:18 -04:00
Zanie Blue b36b7badff
Upgrade to the latest cargo-dist version (#7092)
Notably includes support for
[`UV_INSTALL_DIR`](https://github.com/axodotdev/cargo-dist/blob/main/CHANGELOG.md#app-branded-installer-environment-variables)
2024-09-05 13:30:33 -05: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
Jo d0fa9ccdfa
Use astral-sh/setup-uv action (#7084)
## Summary

Use the now official `astral-sh/setup-uv` action in
`sync-python-release.yml` workflow.
2024-09-05 13:04:46 -04:00
samypr100 595f5909b6
ci(docker)!: adjust entrypoint and cmd for inherited images (#7054)
## Summary

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

This removes our custom `ENTRYPOINT` just for the additional docker
tags, and makes it empty (to avoid possible upstream surprises if any)
and moves running uv to `CMD` for consistency.

This approach is probably the in-between solution from the discussion in
https://github.com/astral-sh/uv/issues/7030#issuecomment-2329443719 and
would work for everyone's use cases.

## Test Plan

Tested release workflow in
https://github.com/samypr100/uv/actions/runs/10711049920

The default CMD still gives a nice default.

```shell
> docker run ghcr.io/samypr100/uv:0.4.5-alpine
An extremely fast Python package manager.

Usage: uv [OPTIONS] <COMMAND>

Commands:
  run      Run a command or script
  init     Create a new project
  add      Add dependencies to the project
  remove   Remove dependencies from the project
  sync     Update the project's environment
  lock     Update the project's lockfile
  export   Export the project's lockfile to an alternate format
  tree     Display the project's dependency tree
  tool     Run and install commands provided by Python packages
  python   Manage Python versions and installations
  pip      Manage Python packages with a pip-compatible interface
  venv     Create a virtual environment
  build    Build Python packages into source distributions and wheels
  cache    Manage uv's cache
  version  Display uv's version
  help     Display documentation for a command
```
2024-09-04 18:55:21 -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
renovate[bot] ea0a0db7a7
Update fedora Docker tag to v42 (#6924) 2024-09-02 14:01:51 -04:00
Mathieu Kniewallner fe5f085299
chore: run `cargo dev generate-all` on CI and locally (#6899)
## Summary

Noticed that running `cargo dev generate-all` on `main` produced changes
and saw that that the command is not run on the CI nor as a pre-commit
hook.

Not sure if having the command running as a pre-commit hook is something
we want, so I can remove it if you prefer. I find that nice to have as
it's probably easy to forget to run it, especially for new contributors
(and it will only run if there are changes in `uv_cli` or `uv_settings`
crates).

## Test Plan

- Added `cargo dev generate-all --mode check` on the CI, which produced
[this failing
job](https://github.com/astral-sh/uv/actions/runs/10648055597/job/29516699393)
- Ran `cargo dev generate-all` locally and committed the changes, which
produced [this succeeding
job](https://github.com/astral-sh/uv/actions/runs/10648076910/job/29516744942)
2024-08-31 19:03:53 -04:00
Amos Wenger 3e207da3bc
ci(windows): Introduce setup-dev-drive.ps1, maximize dev drive usage (#6858)
As suggested by @samypr100 on #6680:
https://github.com/astral-sh/uv/pull/6680#issuecomment-2313607984

## Summary

Instead of using `UV_INTERNAL__TEST_DIR`, it simply exports `TEMP` when
running Windows jobs.

## Test Plan

I'm going to run this manually under ProcMon on my Windows machine and
see where uv writes temp files, hopefully to the dev drive and not
`%(LOCAL)APPDATA%` or something.

I'm going to commit a dummy code change and look at build time changes
in CI.
2024-08-30 08:54:25 -04:00
Zanie Blue bc52596cd9
Use the larger x64 macOS runner for release builds (#6767)
Closes https://github.com/astral-sh/uv/issues/6766
2024-08-29 15:11:53 -05:00
Zanie Blue c730530b4e
Add timeouts to all of the CI jobs (#6769)
Noticed
https://github.com/astral-sh/uv/actions/runs/10601946253/job/29382920849?pr=6767
hung. This seems like best practice.
2024-08-28 18:57:22 +00:00
Zanie Blue b9d027b67a
Use `uvx` for Python linting in CI (#6771) 2024-08-28 13:54:34 -05:00
samypr100 3eee70dfa1
feat: publish tag without patch version (#6734)
## Summary

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

This change would publish an additional tag that includes only
`major.minor`.

For a release with x.y.z, this would publish the tags:
* `ghcr.io/astral-sh/uv:latest`
* `ghcr.io/astral-sh/uv:x.y.z`
* `ghcr.io/astral-sh/uv:x.y`
2024-08-28 08:31:53 -05:00
Amos Wenger 2c5cc62106
ci: Make Windows tests ~27% faster by putting temp folder in dev drive (#6680)
## Summary

This PR makes `cargo test | windows` faster in CI.

### Before

![Windows tests take
5m44s](https://github.com/user-attachments/assets/8dd9c619-9b7b-4ebd-a027-56e7967b6d34)

### After

![Windows tests take
5m12s](https://github.com/user-attachments/assets/7702fdba-3034-4db8-b211-85207a1feffa)

## Also

This PR disables the `brotli` feature of `async-compression` since it's
not strictly needed, but this has little to do with the improvements
(it's still less code to build).

This PR introduces additional code in uv tool uninstall to ignore errors
(that only seem to happen on ReFS, ie. on Dev Drives) akin to "the thing
we're trying to delete cannot be deleted because it's already being
deleted".

If `raw_os_error` was stable we could do u32 matching instead of that
`.to_string().contains()` abomination.
2024-08-27 15:25:05 -05:00
Zanie Blue 6d38d42b41
Always run both public and private documentation checks (#6707)
Avoiding failures like https://github.com/astral-sh/uv/pull/6705

Context in https://github.com/astral-sh/uv/pull/6099

## Test plan

Even though I opened the pull request, the public build was still
tested.
2024-08-27 17:35:43 +00:00
renovate[bot] b68406bb56
Update tj-actions/changed-files action to v45 (#6632) 2024-08-25 22:12:03 -04:00
samypr100 a959772074
feat: use multi-runner on docker publish (#6556)
## Summary

This PR parallelizes multi-platform builds using multiple workers (hence
the new docker-build / docker-publish jobs), this seems to save about ~8
minutes.

This is partial work extracted from
https://github.com/astral-sh/uv/pull/6053 than is standalone
2024-08-23 18:50:46 -05:00
Zanie Blue f9348a6ea3
Run tests when `docs/reference` generated files change (#6551)
Short-term fix for https://github.com/astral-sh/uv/issues/6352
2024-08-23 17:35:53 -05:00
Andrew Gallant b9ff03d73c ci: increase dev drive size
For working around linked errors:
https://github.com/astral-sh/uv/actions/runs/10371457087/job/28711821180?pr=5887
2024-08-13 08:35:46 -07:00
Zanie Blue e097f948c9
Bump version to 0.2.35 (#5984) 2024-08-09 19:21:06 -05:00
Ibraheem Ahmed ddb82a01c8
Add basic universal benchmarks to CI (#5938)
## Summary

Resolves https://github.com/astral-sh/uv/issues/4921.
2024-08-09 12:52:28 -04:00
Zanie Blue e9dd4876b8
Skip git tests on Windows (#5891)
Might be pushing it on test coverage, but these are some of our slowest
tests we might get a significant speedup here.

Part of #5713
2024-08-08 10:37:24 -05:00
Zanie Blue 7523673f39
Setup Rust after restoring the cache (#5892)
This saves about 10-20s

Part of #5713
2024-08-07 16:33:12 -05:00
Zanie Blue 858d75d0af
Use a larger runner for Linux test jobs (#5883)
From 8 to 16 cores, 32 to 64 GB RAM for a 2x per minute cost increase.

As in:

- #5874 
- #5873
2024-08-07 18:39:31 +00:00
Zanie Blue c77f213acd
Use a larger runner for macOS test jobs (#5874)
From 3 to 6 (+8 GPU) cores, 7 to 14 GB ram.

Related:
- https://github.com/astral-sh/uv/pull/5873
2024-08-07 12:32:08 -05:00
Zanie Blue 8dad1ac2d4
Use a larger runner for Windows test jobs (#5873)
From 8 to 16 cores, 32 to 64 GB ram. Testing on Windows first because
it's the bottleneck.

Previously tested in #2515 to no effect, maybe better now that we have a
development drive?
2024-08-07 12:31:59 -05:00
samypr100 2cd63f06dc
feat: more rust in trampoline (#5750)
## Summary

This is an experimental PR to replace more unsafe calls with more rust
while still trying to keep the binary size small enough. These changes
roughly increase the size of the trampolines to about 40kb~. This is a
alternate PR to https://github.com/astral-sh/uv/pull/5751.

The primary changes here include
* Switch to use rust path components for ease of path management
* Leverage `std::process::exit` for process exit and cleanup
* Use `std::io::Error::last_os_error` for IO Errors to remove
`FormatMessage` complexity
* Use `std::env::current_exe` to get the current executable instead of
`GetModuleFileNameA`

## Test Plan

Added one more existing test case to trampoline tests.
Still need to verify dunce::canonicalize is desired or not on
find_python_exe.

---------

Co-authored-by: konstin <konstin@mailbox.org>
2024-08-07 08:19:38 +00:00
konsti db371560bc
Use prettier to format the documentation (#5708)
To enforce the 100 character line limit in markdown files introduced in
https://github.com/astral-sh/uv/pull/5635, and to automate the
formatting of markdown files, i've added prettier and formatted our
markdown files with it.

I've excluded the changelog and the generated references documentation
from this for having too many changes, but we can also include them.

I'm not particular on which style we use. My main motivations are
(major) not having to reflow markdown files myself anymore and (minor)
consistence between all markdown files. I've chosen prettier for similar
reason as we chose black, it's a single good style that's automated and
shared in the community. I do prefer prettier's style of not breaking
inside of a link name though.

This PR is in two parts, the first adds prettier to CI and documents
using it, while the second actually formats the docs. When merge
conflicts arise, we can drop the last commit and regenerate it with `npx
prettier --prose-wrap always --write BENCHMARKS.md CONTRIBUTING.md
README.md STYLE.md docs/*.md docs/concepts/**/*.md docs/guides/**/*.md
docs/pip/**/*.md`.

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-08-02 08:58:31 -05:00
Zanie Blue c558d70690
Install Python versions with previous uv release (#5717)
Part of https://github.com/astral-sh/uv/issues/5713

Shaves 50s or ~25% off the Ubuntu test run. Maybe 30s or 8% off macOS.
Windows already uses the GitHub distributions.

Note this is some of our only test coverage for Python version installs,
we may want to add separate coverage to compensate.
2024-08-01 18:59:28 -05:00
Charlie Marsh 5d727cb0af
Deprecate the `--isolated` flag (#5466)
## Summary

This PR deprecates the `--isolated` flag. The treatment varies across
the APIs:

- For non-preview APIs, we warn but treat it as equivalent to
`--no-config`.
- For preview APIs, we warn and ignore it, with two exceptions...
- For `tool run` and `run` specifically, we don't even warn, because we
can't differentiate the command-specific `--isolated` from the global
`--isolated`.
2024-07-30 22:40:38 +00:00
Charlie Marsh e6ad0cd2f9
Remove PyO3 updates from renovate (#5559) 2024-07-29 14:38:12 +00:00
renovate[bot] 8f378ec2c9
Update CodSpeedHQ/action action to v3 (#5549)
=
2024-07-29 10:03:04 -04:00
renovate[bot] 5365794023
Update hynek/setup-cached-uv action to v2 (#5550) 2024-07-29 09:44:03 -04:00
konsti 2452314f20
Add exclude-newer to benches case priming (#5554)
Uses the same cutoff that the benchmark itself uses
2024-07-29 13:48:38 +02:00
konsti 78be9a6a6b
Add trampoline tests to CI (#5331)
Add the tests added in #5204 to CI. The crate is not part of the
workspace (it requires nightly) and is windows only, so we have to test
it separately.

---------

Co-authored-by: samypr100 <3933065+samypr100@users.noreply.github.com>
2024-07-29 11:43:50 +02:00
Jo 62e72f51ff
Remove an extra quote in `sync-python-releaes.yml` (#5393) 2024-07-24 02:53:00 +00:00
Jo 17d63b0e07
Update `python-build-standalone` workflow (#5390)
## Summary

After #5337, `fetch-download-metadata.py` fetches not just from
`python-build-standalone`, so updates the workflow to
`sync-python-releases.yml`.

Also includes `crates/uv-python/download-metadata.json` in `add-paths`.

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2024-07-24 02:11:52 +00:00
Zanie Blue aced05d427
Use the docs bot email for docs publish commits (#5369) 2024-07-23 16:04:12 -05:00
Jo 7ddf67a72b
Add PyPy finder (#5337)
## Summary

This PR adds PyPy finder and adds PyPy to uv managed Python versions.

## Test Plan

```console
$ cargo run -- python install
```
2024-07-23 14:58:04 -05:00
Jo 43084249ee
Add mypy type check for uv-python scripts (#5332)
## Summary

Per https://github.com/astral-sh/uv/pull/4853#issuecomment-2212505407

> If we're going to aim for full type coverage, we should probably
follow this by adding type checking in CI too otherwise it seems too
easy for it to become out of date.
2024-07-23 09:14:05 -05:00
Jo 025f2f3162
Fix `python-build-standalone` workflow (#5327)
## Summary

The script reads `GITHUB_TOKEN` instead. And since #4853 merged, there
is no need to use `uv run --with`.
2024-07-23 08:20:36 -04:00
Charlie Marsh dc108e373a
Add an automated job to sync `python-build-standalone` releases (#5261)
## Summary

Perhaps in the future we can trigger this directly on release in
`python-build-standalone`, but for now it's a cron job.
2024-07-22 14:55:47 -04:00
Zanie Blue 6492f1a897
A bundle of documentation changes (#5239)
I just need to iterate on everything and we're not doing a lot of
reviews anyway.

Closes #5234 
Closes #5191
2024-07-22 17:15:11 +00:00
Tim Felgentreff 24a0268675
Add GraalPy support (#5141)
<!--
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

Currently, `uv` refuses to install anything on GraalPy. This is
currently blocking GraalPy testing with cibuildwheel, since manylinux
includes both `uv` and `graalpy` (but doesn't test with `uv`), whereas
cibuildwheel defaults to `uv`. See e.g.
https://github.com/pypa/cibuildwheel/actions/runs/9956369360/job/27506182952?pr=1538
where it gives
```
      + python -m build /project/sample_proj --wheel --outdir=/tmp/cibuildwheel/built_wheel --installer=uv
  * Creating isolated environment: venv+uv...
  * Using external uv from /usr/local/bin/uv
  * Installing packages in isolated environment:
    - setuptools >= 40.8.0
  > /usr/local/bin/uv pip install "setuptools >= 40.8.0"
  < error: Unknown implementation: `graalpy`
```

## Test Plan

I simply based the GraalPy support on PyPy and added some small tests.
I'm open to discussing how to test this. GraalPy is available for
manylinux images and with setup-python, so we should be able to add
tests against it to the CI. I locally confirmed by installing `uv` into
a GraalPy venv and then trying things like `uv pip install Pillow` and
testing those extensions.
2024-07-18 19:28:28 -05:00
Charlie Marsh f74235bb56
Validate docs in CI (#5158)
## Summary

Closes https://github.com/astral-sh/uv/issues/5155.
2024-07-17 14:14:04 -04:00
Charlie Marsh c9e66bf8c8
Add `publish-docs` to release workflow (#5153)
## Summary

Forgot to add this here. Just kicked it off manually for the last
release.
2024-07-17 17:49:09 +00:00
Charlie Marsh a86eebd6c3
Add uv to docs Pull Request titles (#5115) 2024-07-16 17:17:17 +00:00
Charlie Marsh 74ae910ec0
Fix lingering site reference (#5114) 2024-07-16 13:00:50 -04:00
Charlie Marsh e51ae191cd
Fix missing closing bracket in `publish-docs.yml` (#5113)
Oops.
2024-07-16 12:59:11 -04:00
Charlie Marsh 3cbdb884dc
Change docs to publish at site (#5112)
## Summary

Since it's no longer publishing with GitHub Pages, we can use `site`
instead of `docs` (which matches the name we build under in `uv`).
2024-07-16 12:57:59 -04:00
Charlie Marsh 81ee17f8e5
Auto-merge docs PRs on release (#5101)
Based on:
dbebcecf4e/.github/workflows/build-docs.yaml (L334C1-L341C11)
2024-07-16 13:28:55 +00:00
Charlie Marsh 0e7df9623d
Add documentation publishing workflow to standalone repo (#5081)
## Summary

This approach is based on https://github.com/PrefectHQ/docs. Rather than
publishing docs in the uv repo, we push to an independent repo that's
used solely to house the docs. In Prefect's case, this allows them to
publish versioned documentation (we should do that too). For us, though,
the benefit is that we can publish the Ruff and uv docs as a single site
(docs.astral.sh).

Prefect clones the source repo and builds the documentation from the
`docs` repo (i.e., the action runs in the `docs` repo). In our case,
I've instead set it up such that the action runs in `uv` (and later in
`ruff` too), clones the `docs` repo, and puts up a PR in that separate
repo. Because of these requirements, we have to use a PAT rather than a
deploy key (as PATs cannot do GitHub-specific things like create PRs --
they can only operate over the Git CLI).

See: https://github.com/astral-sh/docs/pull/2.
2024-07-16 13:14:54 +00:00
Charlie Marsh e61a221fef
Migrate from MdBook to MkDocs (#5062)
## Summary

We want to have consistency between the Ruff and uv documentation for
the upcoming release. We don't love the Ruff docs, but we'd rather have
consistency and then work towards improving them both, rather than have
two very-different documentation sites that both have weaknesses.

The setup here is simpler than in Ruff as: (1) we don't yet generate any
docs from Rust and (2) we don't try to reuse the README in the uv
documentation (which adds a lot of complexity in Ruff). So the change
here is mostly a 1-to-1 port to MkDocs.

## Test Plan

![Screenshot 2024-07-14 at 9 49
15 PM](https://github.com/user-attachments/assets/8bfb5b06-08ff-4329-b368-d9087b78996e)
2024-07-15 22:22:07 +00:00
Silvano Cerza 0b106908aa
Add job to test PyPy venv creation on Windows (#5079)
## Summary

This PR adds a new job to test that PyPy venvs are correctly created on
Windows and they contain all the expected binaries.

## Test Plan

Just let CI run.
2024-07-15 16:20:19 -05:00
Silvano Cerza c2ef825d7b
Add `pypy` executables when calling `uv venv` (#5047)
## Summary

Should fix #2092.

This PR changes `uv venv` so it also creates symlinks to `pypy` on Unix
and copies executables on Windows when creating a new environment using
PyPy.

I found a bit of discrepancy between creation of a venv using `python`
and `uv`, as using `python` brings all the executables with it. While
`uv` brings only those without any version number, at least on Windows.
The behaviour is different on Unix as we take the versioned symlinks
too.

Some examples below.

`python -m venv` generates the following `Scripts` folder.
```
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         7/14/2024     15:41           2031 activate
-a----         7/14/2024     15:41           1029 activate.bat
-a----         7/14/2024     15:41           9033 Activate.ps1
-a----         7/14/2024     15:41            393 deactivate.bat
-a----         7/14/2024     15:40          27648 libffi-8.dll
-a----         7/14/2024     15:41       44290560 libpypy3.10-c.dll
-a----         7/14/2024     15:41         108424 pip.exe
-a----         7/14/2024     15:41         108424 pip3.10.exe
-a----         7/14/2024     15:41         108424 pip3.exe
-a----         7/14/2024     15:41          79360 pypy.exe
-a----         7/14/2024     15:41          79360 pypy3.10.exe
-a----         7/14/2024     15:41          79360 pypy3.10w.exe
-a----         7/14/2024     15:41          79360 pypy3.exe
-a----         7/14/2024     15:41          79360 pypyw.exe
-a----         7/14/2024     15:41          79360 python.exe
-a----         7/14/2024     15:41          79360 python3.10.exe
-a----         7/14/2024     15:41          79360 python3.exe
-a----         7/14/2024     15:41          79360 pythonw.exe
```

`uv venv` instead generates this. 
```
-a----         7/14/2024     16:27           3360 activate
-a----         7/14/2024     16:27           2251 activate.bat
-a----         7/14/2024     16:27           2627 activate.csh
-a----         7/14/2024     16:27           4191 activate.fish
-a----         7/14/2024     16:27           3875 activate.nu
-a----         7/14/2024     16:27           2766 activate.ps1
-a----         7/14/2024     16:27           2378 activate_this.py
-a----         7/14/2024     16:27           1728 deactivate.bat
-a----         7/13/2024     19:19          27648 libffi-8.dll
-a----         7/13/2024     19:19       44290560 libpypy3.10-c.dll
-a----         7/14/2024     16:27           1215 pydoc.bat
-a----         7/13/2024     19:19          79360 pypy.exe
-a----         7/13/2024     19:19          79360 pypyw.exe
-a----         7/13/2024     19:19          79360 python.exe
-a----         7/13/2024     19:19          79360 pythonw.exe
```

## Test Plan

To verify the correct behaviour:

1. Download and install PyPy from [official
website](https://www.pypy.org/download.html)
2. Call `uv venv -p <path_to_pypy_>`
3. Run `.\.venv\Scripts\activate` on Windows or
`./.venv/Scripts/activate` on Unix
4. Run `pypy`

I thought of writing some automated tests but I couldn't rely on `uv
python install` command to install PyPy as it's not in the list of
installable Python builds.
2024-07-15 13:28:31 -05:00
Zanie Blue 09ae7a93d1
Add integration test for PyPy (#5048) 2024-07-15 11:11:51 -05:00
Charlie Marsh b629ab89c5
Set absolute URLs prior to uploading to PyPI (#5038)
## Summary

Closes https://github.com/astral-sh/uv/issues/5030.
2024-07-13 17:29:21 +00:00
Jo 4bdcec9622
Fix Fedora system test (#5034)
Seems like the latest
[`fedora:41`](https://hub.docker.com/layers/library/fedora/rawhide/images/sha256-c037a87094660ceda037ee319b17f59559241d2a3580d1d0f414e72b0a8f3827?context=explore)
(pushed at Jul 12, 2024 at 22:05 UTC) docker image has removed the
`python3` package, causing our current [CI
failure](https://github.com/astral-sh/uv/actions/runs/9917708846/job/27401528178).
2024-07-13 10:25:03 -05:00
Ibraheem Ahmed a4e9b63d5b
Fix benchmarks CI job (#5023) 2024-07-12 17:57:12 -04:00
Ibraheem Ahmed aff9c9bd91
Switch to Current-Thread Tokio Runtime (#4934)
## Summary

Move completely off tokio's multi-threaded runtime. We've slowly been
making changes to be smarter about scheduling in various places instead
of depending on tokio's general purpose work-stealing, notably
https://github.com/astral-sh/uv/pull/3627 and
https://github.com/astral-sh/uv/pull/4004. We now no longer benefit from
the multi-threaded runtime, as we run on all I/O on the main thread.
There's one remaining instance of `block_in_place` that can be swapped
for `rayon::spawn`.

This change is a small performance improvement due to removing some
unnecessary overhead of the multi-threaded runtime (e.g. spawning
threads), but nothing major. It also removes some noise from profiles.

## Test Plan

```
Benchmark 1: ./target/profiling/uv (resolve-warm)
  Time (mean ± σ):      14.9 ms ±   0.3 ms    [User: 3.0 ms, System: 17.3 ms]
  Range (min … max):    14.1 ms …  15.8 ms    169 runs
 
Benchmark 2: ./target/profiling/baseline (resolve-warm)
  Time (mean ± σ):      16.1 ms ±   0.3 ms    [User: 3.9 ms, System: 18.7 ms]
  Range (min … max):    15.1 ms …  17.3 ms    162 runs
 
Summary
  ./target/profiling/uv (resolve-warm) ran
    1.08 ± 0.03 times faster than ./target/profiling/baseline (resolve-warm)
```
2024-07-09 18:21:16 -04:00
samypr100 eee90a340c
feat: re-enable std in uv-trampoline (#4722)
## Summary

Partially closes #1917

This PR picks up on some of the great work from #1864 and opted to keep
`panic_immediate_abort` (for size reasons). I split the PR in different
isolated commits in case we want to separate/cherry-pick them out.

1. The first commit ports mostly all std changes from that PR into this
PR. Binary sizes stayed the same ~16kb.
2. The second commit migrates our existing usage of windows-sys to
windows for a safer ffi calls with Results!. It also changes all large
unsafe blocks to be isolated to the actual unsafe calls, and switches
some areas to use std such as getenv port ( which seemed buggy! ) from
launcher.c. In addition, this also adds more error checking in order to
match some missing assertions from distlib's launcher.c. Note, due to
the additional .text data, the binary sizes increased to ~20.5kb, but we
can cut back on some of the added error msgs as needed.
3. The third commit switches to using xwin for building on all 3
supported trampoline targets for sanity, and adds a CI bloat check for
core::fmt and panic as a precaution. Sadly, this will invalidate the
xwin cache on the first run.

## Test Plan

Most changes were tested on a couple of local GUI apps and console apps,
also tested some of the error states manually by using SetLastError at
different points in the code and/or passing in invalid handles.

I'm not sure how far we can get with migrating some of the other calls
without increasing binary size substantially. An initial attempt at
using std::path didn't seem so bad size wise when I tried it (~1k). On
other cases, such as std::process::exit added ~10k to the total binary
size.

---------

Co-authored-by: konstin <konstin@mailbox.org>
2024-07-06 20:38:45 +00:00
Charlie Marsh 1e8f5926e6
Upgrade to cargo-dist v0.18.0 (#4792)
## Summary

This enables us to get rid of `allow-dirty`!
2024-07-03 22:39:51 +00:00
Zanie Blue dd7da6af5f
Change "toolchain" to "python" (#4735)
Whew this is a lot.

The user-facing changes are:

- `uv toolchain` to `uv python` e.g. `uv python find`, `uv python
install`, ...
- `UV_TOOLCHAIN_DIR` to` UV_PYTHON_INSTALL_DIR`
- `<UV_STATE_DIR>/toolchains` to `<UV_STATE_DIR>/python` (with
[automatic
migration](https://github.com/astral-sh/uv/pull/4735/files#r1663029330))
- User-facing messages no longer refer to toolchains, instead using
"Python", "Python versions" or "Python installations"

The internal changes are:

- `uv-toolchain` crate to `uv-python`
- `Toolchain` no longer referenced in type names
- Dropped unused `SystemPython` type (previously replaced)
- Clarified the type names for "managed Python installations"
- (more little things)
2024-07-03 07:44:29 -05:00
konsti 42415997b1
Reactivate python 3.13 in CI (#4761)
https://github.com/actions/setup-python/issues/888#issuecomment-2205466950
2024-07-03 11:28:45 +02:00
samypr100 f43a8bbd6f
Upgrade to Rust 1.79 (#4754)
## Summary

Updates default toolchain to
[1.79](https://blog.rust-lang.org/2024/06/13/Rust-1.79.0.html).
There didn't seem to be any breaking changes besides xwin now requiring
lld llvm linker.

## Test Plan

Existing tests.
2024-07-02 23:50:47 -05:00
Zanie Blue 88c2a8e30f
Add `uvx.exe` binary to Windows artifacts (#4756)
Closes https://github.com/astral-sh/uv/issues/4755
2024-07-02 23:16:20 -05:00
Zanie Blue 9d58c2a810
Add test cases for `uvx` in binary build workflow (#4744) 2024-07-02 18:21:37 -05:00
Zanie Blue 66a4b8e6b7
Add `uvx` to binary artifacts (#4743) 2024-07-02 17:15:28 -05:00
Zanie Blue 948c0f151b
Add retries to `system-test-opensuse` setup which flakes during database updates (#4622)
e.g. failure at
https://github.com/astral-sh/uv/actions/runs/9714929523/job/26815318110

Seems to be some sort of issue where they're updating their package
repository / database causing a spurious failure. I've seen this fail a
lot lately.
2024-06-28 15:24:43 -05:00
Charlie Marsh 6b45c41d76
Update `cargo-dist` to v0.17.0 (#4608)
## Summary

See: https://github.com/axodotdev/cargo-dist/releases/tag/v0.17.0.

Relevant:

> The only reason you might want to override this setting is if you're
using [dispatch-releases =
true](https://opensource.axo.dev/cargo-dist/book/reference/config.html#dispatch-releases)
and you really want your git tag to be the last operation in your
release process (because creating a GitHub Release necessarily creates
the git tag if it doesn't yet exist, and many organizations really don't
like when you delete/change git tags). In this case setting
github-release = "announce" will accomplish that, but the above race
conditions would then apply.

We _do_ use `dispatch-releases = true`, and we _do_ want the git tag to
be the last operation, so we need to set `github-release = "announce"`
to preserve our current behavior.
2024-06-28 10:59:09 -04:00
Zanie Blue 1ee201da5a
Add structured documentation (#4426)
A ton of work remaining here, pushing so I can preview things rendered.

Here's the [latest rendered
documentation](https://astral-sh.github.io/uv/).
2024-06-26 11:28:42 -05:00