Skip to content

Replace pip and uv pip in the dev tooling with uv-native commands - #125

Merged
tae898 merged 2 commits into
mainfrom
chore/uv-dev-tooling
Oct 29, 2026
Merged

tae898 merged 2 commits into
mainfrom
chore/uv-dev-tooling

Conversation

@tae898

@tae898 tae898 commented Oct 28, 2026

Copy link
Copy Markdown
Collaborator

Closes #124

Replaces every pip, uv pip, uv venv and python -m pip in the CI workflows, scripts, Dockerfile, CLAUDE.md and the development docs with uv-native commands. Job names and matrices are unchanged. pyproject.toml stays a non-uv package definition (managed = false); only its comments changed.

Where Before After
test-jvm.yml Bandit job python -m pip install bandit==1.9.4, python -m bandit ... uv install step, uvx bandit==1.9.4 ...
test-jvm.yml floor audit python -m pip install pip-audit==2.10.1, uv pip compile --resolution lowest-direct --python-version V, pip-audit --disable-pip uv lock --resolution lowest-direct on a throwaway project per Python (requires-python = "==V.*"), uv export, uvx pip-audit==2.10.1 --disable-pip
test-jvm.yml build job uv pip install --system build wheel setuptools removed (build tools come from uvx in the scripts)
test-jvm.yml test job uv pip install --system <wheel> <hand list>, pytest tests/ uv run --no-project --python $PYVER --with "<wheel>[test]" python -m pytest tests/; the hand list is replaced by the test extra, which already mirrors it
test-jvm.yml manylinux step python -m venv, pip install --only-binary=:all: mounted runner uv, uv run --no-project --no-build --python /opt/python/$PYTAG/bin/python --with <wheel>
test-native.yml glibc 2.28 gate python -m venv, pip install --no-index mounted runner uv, uv run --no-project --no-index --python ... --with <wheel>
test-python-examples.yml uv pip install --system of the build tools, wheel, torch (CPU index), example dependencies, tqdm, py7zr, lxml; examples ran with the system python build tools step removed; a uv sync project in examples-env/ (torch from an explicit CPU index), examples run with that environment's interpreter ($EX_PY)
all uv installs astral.sh/uv/install.sh (latest) astral.sh/uv/0.12.0/install.sh
scripts/Dockerfile.build uv pip install --system build wheel setuptools, python3 -m build, uv pip install --system <wheel> pytest pytest-cov uvx --from "build[uv]==1.6.1" pyproject-build --installer uv --wheel, uv run --no-project --with <wheel> --with pytest --with pytest-cov, uv version as ARG UV_VERSION=0.12.0
scripts/build-native.sh looked for a Python with build, python -m build requires uv, runs the same uvx --from "build[uv]==1.6.1" pyproject-build
scripts/after_tag_verify.sh uvx pip download --platform ... for each platform picks the wheel of each platform from the PyPI JSON, curls it and compares the sha256 PyPI lists
scripts/ensure-build-tools.sh uv pip install build into the system Python (referenced nowhere) deleted
scripts/build.sh hint, CLAUDE.md Test section uv venv, uv pip install --reinstall-package uv run --no-project --with "<wheel>[test]" python -m pytest

Dependabot keeps package-ecosystem: "pip": the uv ecosystem reads a uv.lock, which this repo does not have. A comment now says so.

What after_tag_verify.sh no longer proves: pip's platform-tag resolution for manylinux_2_34 and the like. It still proves each platform has exactly one py3-none wheel on PyPI that downloads and matches its listed sha256, and the fresh uv run --with smoke on 3.12 and 3.14 is unchanged.

Not done here: the helper scripts still run with python3 (stdlib only), and docs/superpowers/ and native/wheel/build_wheel.py keep their text (the latter only says "pip hints" for extras strings).

Please confirm in CI: the floor audit job (a uv lock per classifier; uv downloads CPython 3.11, 3.13 and 3.14 if the runner lacks them), the manylinux steps (the mounted uv binary runs on glibc 2.28), the examples legs (uv sync of torch from the CPU index on all four platforms, then $EX_PY runs), the Build arcadedb-jvm wheel and native build legs on macOS and Windows (uvx pyproject-build), and the Docker build (uvx build, tester stage uv run).

🤖 Generated with Claude Code

Tools run through uvx (bandit 1.9.4, pip-audit 2.10.1, build 1.6.1), wheel tests
through uv run --no-project --with "<wheel>[test]" python -m pytest, the example
dependencies through a uv sync project, the dependency floor audit through uv lock
on a throwaway project instead of uv pip compile, the manylinux containers through
a mounted uv, and every uv install URL pins 0.12.0. after_tag_verify.sh replaces
pip download with a curl of the wheel of each platform from the PyPI JSON plus a
sha256 check. ensure-build-tools.sh (unused, installed build with uv pip) is removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tae898
tae898 merged commit ddc16bb into main Oct 29, 2026
37 checks passed
@tae898
tae898 deleted the chore/uv-dev-tooling branch October 29, 2026 01:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Replace pip and uv pip in the dev tooling with uv-native commands

1 participant