Commit Graph

133 Commits

Author SHA1 Message Date
Zanie Blue
d2108bf360 Separate CI test runs from the matrix (#4518)
So we can skip them when there are not code changes and still enforce
our required checks (xref #4438)

Otherwise, the names are dynamic and they are forever expected (see
#4426 for example)
2024-06-25 10:29:30 -05:00
renovate[bot]
8a0a3b47db Update docker/build-push-action action to v6 (#4462) 2024-06-24 00:14:16 +00:00
Zanie Blue
7e574f5e20 Avoid running most of CI for non-code changes (#4438)
Running these test suites is both expensive and wasteful when there
aren't relevant changes.
2024-06-21 16:42:01 +00:00
Zanie Blue
b412a53e85 Add mdbook to docs workflow (#4437)
Based on
https://github.com/rust-lang/mdBook/wiki/Automated-Deployment%3A-GitHub-Actions
2024-06-21 16:33:55 +00:00
Zanie Blue
baa86f2edf Fix the documentation branch target (#4428)
Doh.
2024-06-20 17:35:56 +00:00
Zanie Blue
30eedb35c6 Add documentation publishing workflow (#4427)
Exploring publishing documentation to GitHub Pages. Not intended for
public consumption yet.
2024-06-20 12:24:20 -05:00
Zanie Blue
76c26db444 Move virtual environment test context into main context (#4370)
It was becoming problematic that the virtual environment test context
diverged from the other one i.e. we had to implement filtering twice.
This combines the contexts and tweaks the `TestContext` API and
filtering mechanisms for Python versions. Combined with my previous
changes to the test context at #4364 and
https://github.com/astral-sh/uv/pull/4368 this finally unblocks the
snapshots for test cases in #4360 and
https://github.com/astral-sh/uv/pull/4362.
2024-06-18 09:11:47 -05:00
Zanie Blue
631994c485 Remove cargo dev fetch-python (#4337)
This has been fully replaced by `uv toolchain install`
2024-06-17 18:49:06 +00:00
Charlie Marsh
1f2ad8faa2 Re-add aarch64-unknown-linux-gnu binary to release assets (#4254)
This PR re-adds the `aarch64-unknown-linux-gnu` binary, which will also
add the `manylinux_2_28` wheel for `aarch64` (in addition to the now
dual-tagged `musllinux_1_1` and `manylinux_2_217` wheel for `aarch64`).
We can consider dropping that _wheel_, but in my assessment removing a
release asset should now be treated as a breaking change -- so removing
it in a patch release was incorrect.

Closes https://github.com/astral-sh/uv/issues/4122.
2024-06-11 19:46:09 -04:00
konsti
bbd961c251 Fix python3.13 on windows CI job by pinning older version (#4192)
See https://github.com/actions/setup-python/issues/888

---------

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2024-06-10 11:49:24 +00:00
Charlie Marsh
e7c573cfcb Fix existing typos and enable typos in CI (#4184) 2024-06-10 01:50:54 +00:00
konsti
f92447772e Support x86 windows (#3873)
Add trampolines for x86 windows.

Closes https://github.com/astral-sh/uv/issues/3660.
2024-05-28 16:07:39 +00:00
Zanie Blue
30e780e1dd Add persistent storage of installed toolchains (#3797)
Extends #3726 

Moves toolchain storage out of `UV_BOOTSTRAP_DIR` (`./bin`) into the
proper user data directory as defined by #3726.

Replaces `UV_BOOTSTRAP_DIR` with `UV_TOOLCHAIN_DIR` for customization.
Installed toolchains will be discovered without opt-in, but the idea is
still that these are not yet user-facing.
2024-05-27 03:54:49 +00:00
Zanie Blue
c2a58cd303 Add integration test for GitHub Actions CI patterns (#3805) 2024-05-23 23:25:06 -05:00
Ibraheem Ahmed
0d2f3fc4e4 Add airflow benchmark (#3643)
## Summary

This seems to be one of the most consistent benchmark cases we have in
terms of standard deviation:
```
➜  hyperfine "target/profiling/main pip compile scripts/requirements/airflow.in" --runs 200
Benchmark 1: target/profiling/main pip compile scripts/requirements/airflow.in
  Time (mean ± σ):     292.6 ms ±   6.6 ms    [User: 414.1 ms, System: 194.2 ms]
  Range (min … max):   282.7 ms … 320.1 ms    200 runs
```

For smaller benchmarks, scispacy and dtlssocket seem to be a bit more
consistent than our current jupyter benchmark, but it hasn't given us
any problems so I'll leave it for now.
2024-05-23 13:25:54 -04:00
Charlie Marsh
bb61c2d534 Revert "Revert "ci: drop native manylinux wheel for dual-tagged one (#3685)" (#3762)" (#3778)
Now that we have https://github.com/astral-sh/uv/pull/3761, it should be
safe to drop these.
2024-05-22 20:02:30 -04:00
Zanie Blue
17ec349437 Add test case for Conda CI (#3773)
Integration test coverage for #3769 

Failure against `main` on
https://github.com/astral-sh/uv/actions/runs/9198224186/job/25300510016?pr=3773

Rebased against #3771 to check for fix
2024-05-22 21:37:26 +00:00
Charlie Marsh
dc4f63d2e5 Revert "ci: drop native manylinux wheel for dual-tagged one (#3685)" (#3762)
## Summary

Reverts https://github.com/astral-sh/uv/pull/3685. We need to figure out
how to update the installer to handle this correctly.
2024-05-22 15:53:17 -04:00
Zanie Blue
845d788c91 Drop Python patch test flag from default features (#3746) 2024-05-22 17:19:25 +00:00
Charlie Marsh
472ab144d5 Remove maturin_editable test (#3718)
## Summary

I personally think this isn't worth continuing to maintain.
2024-05-22 11:10:04 +02:00
Zanie Blue
d540d0f28b Rewrite Python interpreter discovery (#3266)
Updates our Python interpreter discovery to conform to the rules
described in #2386, please see that issue for a full description of the
behavior. Briefly, we now will search for interpreters that satisfy a
requested version without stopping at the first Python executable.
Additionally, if retrieving information about an interpreter fails we
will continue to search for a working interpreter. We also add the
plumbing necessary to request Python implementations other than CPython,
though we do not add support for other implementations at this time.

A major internal goal of this work is to prepare for user-facing managed
toolchains i.e. fetching a requested version during `uv run`. These APIs
are not introduced, but there is some managed toolchain handling as
required for our test suite.

Some noteworthy implementation changes:

- The `uv_interpreter::find_python` module has been removed in favor of
a `uv_interpreter::discovery` module.
- There are new types to help structure interpreter requests and track
sources
- Executable discovery is implemented as a big lazy iterator and is a
central authority for source precedence
- `uv_interpreter::Error` variants were split into scoped types in each
module
- There's much more unit test coverage, but not for Windows yet

Remaining work:

- [x] Write new test cases
- [x] Determine correct behavior around executables in the current
directory
- _Future_: Combine `PythonVersion` and `VersionRequest`
- _Future_: Consider splitting `ManagedToolchain` into local and remote
variants
- _Future_: Add Windows unit test coverage
- _Future_: Explore behavior around implementation precedence (i.e.
CPython over PyPy)

Refactors split into:

- #3329 
- #3330 
- #3331
- #3332

Closes #2386
2024-05-21 14:37:23 -05:00
Zanie Blue
dfd6ccf0f9 Move maturin test coverage into CI (#3714)
This test can take over 60s to run, which is too much for a unit test.
We'll run it in a separate CI job to retain coverage.
2024-05-21 19:17:48 +00:00
Henry Schreiner
906f653062 ci: drop native manylinux wheel for dual-tagged one (#3685)
<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

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

## Summary

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

Followup to #3624. Drops the native manylinux wheel in favor of the
statically linked musl one with a manylinux2014 tag.

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

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-05-21 11:55:08 +02:00
Henry Schreiner
a0c5948a0b ci: retag the musl aarch64 for manylinux2014 (#3624)
<!--
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

Fix #3439 by retagging the statically linked musl binary for
manylinux2014. This is the most conservative option;
the regular manylinux one could be removed as well, and I expect other
archs could probably do this as well.

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

## Test Plan

Testing on manylinux.

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

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-05-17 10:54:43 +02:00
samypr100
d88bef9704 feat: move to cargo-xwin for clippy (#3600)
## Summary

Move to cargo-xwin for clippy

Closes #3507
2024-05-16 21:15:03 -05:00
Henry Schreiner
f7b9ca9533 ci: add musl ppc64le (#3537)
## Summary

Working on followup to #3523. I expect some changes will be required to
match the glibc versions above.
2024-05-14 23:39:37 -04:00
Zanie Blue
759d40ceb9 Revert "Use manylinux: auto for aarch64 builds (#3444)" (#3576)
This reverts #3444 which appears to be the cause of SSL failures when
building aarch64 Linux images on macOS hosts (see
https://github.com/astral-sh/uv/issues/3570)

Closes https://github.com/astral-sh/uv/issues/3570
2024-05-14 08:51:07 -05:00
samypr100
790206beb1 feat: speed up windows jobs using ReFS (#3522)
## Summary

Switch to using Virtual HD + ReFS to speed up windows jobs.

Closes #3508
2024-05-13 11:15:54 -05:00
Charlie Marsh
aa6b853d78 Run cargo shear in CI (#3534) 2024-05-12 21:44:58 -04:00
Henry Schreiner
df43dc9e70 ci: build musllinux_1_1 wheels (#3523)
This is needed to include uv in manylinux, which has both the
musllinux_1_1 and musllinux_1_2 images.

## Summary

We are looking into including uv in the `pypa/manylinux` docker images,
so that cibuildwheel will be able to use it. But to do so, we need all
actively supported images to be able to take it, including
musllinux_1_1.

## Test Plan

The test was updated to make sure Alpine 3.12, which musllinux was based
on, can run uv.

The binary build does need to be triggered on this PR to make sure it
works. Ah,
5b6040184d/.github/workflows/build-binaries.yml (L15-L20)
is a good idea, nice.

Will need a followup to fill out the other platforms `pypa/manylinux`
supports for musllinux.

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2024-05-11 12:35:40 -04:00
Charlie Marsh
8bcb2365bf Use manylinux: auto for aarch64 builds (#3444)
See: https://github.com/astral-sh/uv/issues/3439
2024-05-08 23:58:03 -04:00
Charlie Marsh
e9490b92b5 Upgrade cargo-dist to v0.14.0 (#3414) 2024-05-06 13:48:41 -04:00
konsti
714adebbd7 Avoid stack overflows on more windows tests (#3344)
Fix windows CI by increasing the debug stack size on windows:
*
https://github.com/astral-sh/uv/actions/runs/8938560618/job/24553000399?pr=3340
*
https://github.com/astral-sh/uv/actions/runs/8937835055/job/24550949991
*
https://github.com/astral-sh/uv/actions/runs/8937835055/job/24550949261
*
https://github.com/astral-sh/uv/actions/runs/8937835055/job/24550810405
2024-05-03 12:21:00 +00:00
Ibraheem Ahmed
1d2c57a259 Run resolve/install benchmarks in ci (#3281)
## Summary

Runs resolver benchmarks in CI with CodSpeed.
2024-04-30 13:39:42 -04:00
Charlie Marsh
71ffb2eabc Build a separate ARM wheel for macOS (#3268)
## Summary

See: https://github.com/astral-sh/ruff/pull/11149
2024-04-25 19:13:27 -04:00
Charlie Marsh
23bef9a691 Use macos-12 to build release wheels (#3264)
## Summary

GitHub has started to change `macos-latest` to `macos-14`. But
executables built on `macos-14` don't work on macOS 11 (see:
https://github.com/astral-sh/uv/issues/3261). This PR explicitly uses
`macos-12` instead (which is what we _intended_ to be using anyway).

Closes https://github.com/astral-sh/uv/issues/3261.
2024-04-25 12:07:30 -04:00
samypr100
430ac7c45c ci: add system test for rocky 9 (#3224)
## Summary

Adding rockylinux:9 per discussion in
https://github.com/astral-sh/uv/pull/3178

## Test Plan

More CI system tests.
2024-04-23 18:12:27 -04:00
Charlie Marsh
2c52111006 Fix failing system-test-macos-x86_64 test (#3218)
## Summary

GitHub recently changed `macos-latest` to `macos-12`, so the x86 test
started failing. I've migrated the tests to use dedicated labels, rather
than the aliases.

See:
https://github.blog/changelog/2024-01-30-github-actions-macos-14-sonoma-is-now-available/
2024-04-23 14:37:26 -04:00
Zanie Blue
2a9cbdb11f Upgrade to cargo-dist 0.13.3 (#3217) 2024-04-23 18:18:21 +00:00
Zanie Blue
ccf4a85f89 Fix Docker publish permissions in release pipeline (#3195) 2024-04-22 19:05:21 -04:00
Zanie Blue
11c6a07bb5 Regenerate with cargo-dist 0.13.2 (#3194) 2024-04-22 19:15:14 +00:00
Charlie Marsh
41b29b2dc4 Add support for embedded Python on Windows (#3161)
## Summary

References:
-
cad550030a/src/virtualenv/create/via_global_ref/builtin/cpython/cpython3.py (L58-L68)
- https://github.com/pypa/virtualenv/pull/2353
- https://github.com/pypa/virtualenv/issues/2368

Closes https://github.com/astral-sh/uv/issues/1656.
2024-04-22 13:34:27 -04:00
Charlie Marsh
1bf9d879ab Re-add Docker image to release pipeline (#3155)
## Summary

I already re-created and pushed the image, and set its visibility to
public (it defaults to private) -- see:
https://github.com/astral-sh/uv/pkgs/container/uv.

Closes https://github.com/astral-sh/uv/issues/2774.
2024-04-21 12:02:48 -04:00
Zanie Blue
52472cef6e Run Windows tests with a subset of features (#3040)
Separates Windows tests from the rest because it's a pain and drops the
`python-patch` feature from testing so we can use the GitHub Actions
Python versions which bootstrap in 0 seconds instead of 2 minutes.
2024-04-16 08:14:19 -05:00
Zanie Blue
4ea909bfc2 Use the larger runner for Windows clippy runs (#3044)
Running clippy can apparently be longer than the tests in
https://github.com/astral-sh/uv/pull/3040
2024-04-15 21:16:40 -05:00
Charlie Marsh
ab9cc78b7a Deduplicate symbolic links between purelib and platlib (#3002)
## Summary

This PR adds system install tests to verify the behavior described in
#2798. It turns out this behavior _also_ affects Fedora and Amazon
Linux, we just didn't have the right conditions enabled (specifically,
you need to create the virtualenv with `python -m venv` to get these
symlinks), so the test suite was expanded to capture that.

The issue itself is also fixed by way of deduplicating the
`site-packages` entries.

Closes: https://github.com/astral-sh/uv/issues/2798
2024-04-12 17:08:56 -04:00
samypr100
98fd9d7d14 ci: re-enable centos compatible testing (#3005)
## Summary

Closes #2915

## Test Plan

Rocky Linux is a viable and more stable alternative to test
compatibility with Centos and RHEL systems.
2024-04-12 03:52:03 +00:00
Zanie Blue
520cd4689b Add ecosystem test for flask (#2971)
Alternative to:

- https://github.com/astral-sh/uv/pull/2967
- #2946 

Both of those are big and fail.

I'd like to generalize this coverage though.
2024-04-10 16:51:40 +00:00
Zanie Blue
44e39bdca3 Replace Python bootstrapping script with Rust implementation (#2842)
See https://github.com/astral-sh/uv/issues/2617

Note this also includes:
- #2918 
- #2931 (pending)

A first step towards Python toolchain management in Rust.

First, we add a new crate to manage Python download metadata:

- Adds a new `uv-toolchain` crate
- Adds Rust structs for Python version download metadata
- Duplicates the script which downloads Python version metadata
- Adds a script to generate Rust code from the JSON metadata
- Adds a utility to download and extract the Python version

I explored some alternatives like a build script using things like
`serde` and `uneval` to automatically construct the code from our
structs but deemed it to heavy. Unlike Rye, I don't generate the Rust
directly from the web requests and have an intermediate JSON layer to
speed up iteration on the Rust types.

Next, we add add a `uv-dev` command `fetch-python` to download Python
versions per the bootstrapping script.

- Downloads a requested version or reads from `.python-versions`
- Extracts to `UV_BOOTSTRAP_DIR`
- Links executables for path extension

This command is not really intended to be user facing, but it's a good
PoC for the `uv-toolchain` API. Hash checking (via the sha256) isn't
implemented yet, we can do that in a follow-up.

Finally, we remove the `scripts/bootstrap` directory, update CI to use
the new command, and update the CONTRIBUTING docs.

<img width="1023" alt="Screenshot 2024-04-08 at 17 12 15"
src="https://github.com/astral-sh/uv/assets/2586601/57bd3cf1-7477-4bb8-a8e9-802a00d772cb">
2024-04-10 11:22:41 -05:00
Zanie Blue
ee9059978a Add ecosystem test for Prefect (#2942)
Reproduced https://github.com/astral-sh/uv/issues/2941 and confirmed
fix.

We probably ought to have some ecosystem test coverage — this seems like
a good starting point we can extend to other projects in the future.
2024-04-09 21:29:39 -05:00