Migrate from pip to uv across all workflows - #60
Conversation
- Add bootstrap step after Setup Python in every workflow - Replace / with - Replace with - Replace with pip @ file:///build/pip-26.1.2-py3-none-any.whl - Remove (uv manages itself) - Update docs references (maintenance.md, release-flow.md, workflow-reference.md) uv resolves dependencies 10-100x faster than pip, reducing CI cycle time.
|
Warning Review limit reached
More reviews will be available in 1 minute and 47 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (28)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…reter uv pip refuses to install into a non-venv interpreter without --system / UV_SYSTEM_PYTHON. actions/setup-python provides no active venv, so every 'uv pip install' step would fail on the runner. Declare UV_SYSTEM_PYTHON=1 at workflow level in each uv workflow. Also correct locale-check's 'uv build' flags: --no-isolation/--outdir are python-build flags; uv uses --no-build-isolation/--out-dir (silently masked by continue-on-error, leaving SOURCES.txt ungenerated). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Validates the pip->uv migration inside this PR with no downstream consumers: a runtime matrix (3.10-3.14) exercising every uv verb the migration uses against a throwaway package, plus a static guard that every uv workflow declares UV_SYSTEM_PYTHON. Delete before merging to dev. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a throwaway root package (pyproject.toml + selftest_pkg/) so the uv self-test invokes the actual build-tests/coverage/type-check/license-check/ pip-audit reusable workflows against an installable target, exercising uv build + uv pip install/-e/freeze end to end across 3.10-3.14. All calls use pr_comment:false and run on push to this branch only, so nothing posts to PR #60. Remove with _selftest-uv.yml before merging to dev. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The called workflows' jobs declare pull-requests/contents/security-events write; a caller granting only contents:read startup-fails at compile time. Grant the union so the reusable calls compile (features stay disabled).
Both steps declared 'continue-on-error: true' twice. PyYAML keeps the last,
but GitHub Actions rejects duplicate mapping keys, so type-check.yml and
docs-check.yml fail to compile ('workflow file issue') on dev — breaking
every downstream caller of these reusable workflows. Pre-existing, unrelated
to the uv migration. Semantics unchanged (continue-on-error stays true).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Replace pip with uv across all workflows and docs - Add bootstrap step after Setup Python in every workflow - Replace / with - Replace with - Replace with pip @ file:///build/pip-26.1.2-py3-none-any.whl - Remove (uv manages itself) - Update docs references (maintenance.md, release-flow.md, workflow-reference.md) uv resolves dependencies 10-100x faster than pip, reducing CI cycle time. * fix: set UV_SYSTEM_PYTHON so uv installs into the setup-python interpreter uv pip refuses to install into a non-venv interpreter without --system / UV_SYSTEM_PYTHON. actions/setup-python provides no active venv, so every 'uv pip install' step would fail on the runner. Declare UV_SYSTEM_PYTHON=1 at workflow level in each uv workflow. Also correct locale-check's 'uv build' flags: --no-isolation/--outdir are python-build flags; uv uses --no-build-isolation/--out-dir (silently masked by continue-on-error, leaving SOURCES.txt ungenerated). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * test: add temporary uv-migration self-test harness Validates the pip->uv migration inside this PR with no downstream consumers: a runtime matrix (3.10-3.14) exercising every uv verb the migration uses against a throwaway package, plus a static guard that every uv workflow declares UV_SYSTEM_PYTHON. Delete before merging to dev. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * test: drive real reusable workflows with an in-repo dummy package Adds a throwaway root package (pyproject.toml + selftest_pkg/) so the uv self-test invokes the actual build-tests/coverage/type-check/license-check/ pip-audit reusable workflows against an installable target, exercising uv build + uv pip install/-e/freeze end to end across 3.10-3.14. All calls use pr_comment:false and run on push to this branch only, so nothing posts to PR #60. Remove with _selftest-uv.yml before merging to dev. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * test: grant caller the union of reusable-workflow permissions The called workflows' jobs declare pull-requests/contents/security-events write; a caller granting only contents:read startup-fails at compile time. Grant the union so the reusable calls compile (features stay disabled). * test: bisect — call only build-tests to isolate startup failure * test: bisect step 2 — add type-check + license-check * test: bisect — type-check only (drop license-check) * fix: remove duplicate continue-on-error key in type-check/docs-check Both steps declared 'continue-on-error: true' twice. PyYAML keeps the last, but GitHub Actions rejects duplicate mapping keys, so type-check.yml and docs-check.yml fail to compile ('workflow file issue') on dev — breaking every downstream caller of these reusable workflows. Pre-existing, unrelated to the uv migration. Semantics unchanged (continue-on-error stays true). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * test: restore full self-test (all 5 reusable calls) after dup-key fix * fix(uv): allow prereleases so OVOS alpha floor-pins resolve The shared workflows moved to uv. uv's default prerelease mode only accepts a prerelease when ALL of a package's versions are prereleases — so a TRANSITIVE prerelease floor-pin against a package that also has a stable release fails, e.g. ovos-PHAL[extras]'s ovos-phal-plugin-ipgeo>=0.1.9a1 (stable 0.1.7 coexists): Because only ovos-phal-plugin-ipgeo<0.1.9a1 is available and ovos-phal[extras]==0.2.16a1 depends on ovos-phal-plugin-ipgeo>=0.1.9a1, we can conclude that ovos-phal[extras]==0.2.16a1 cannot be used. pip honoured these floor-pins implicitly; the OVOS ecosystem is built entirely on pre-1.0 alphas and relies on that. Set UV_PRERELEASE=allow on every uv-based reusable workflow to restore pip-parity. Version caps (<X.0.0) still bound resolution, so this does not pull in unintended majors. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(uv): make prerelease mode a workflow_call input (uv_prerelease) Each reusable workflow now exposes a 'uv_prerelease' input (default 'allow') wired to UV_PRERELEASE, so a caller can override it (e.g. 'disallow' to assert a repo resolves on stables only, or 'if-necessary'). The all-alpha default keeps pip parity out of the box. test.yml is gh-automations' own self-test (not workflow_call) so it keeps the literal. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
_selftest-uv.yml, the root pyproject.toml and selftest_pkg/ were the pip->uv migration's validation harness (PR #60). Its own header says to delete all three before merging to dev; they landed anyway and are the only source of the repo's lingering red run history (Docs Check / Type Check on the migrate-to-uv branch, 2026-06-27). No downstream consumers. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Replaces all
pip install/python -m pip install/python -m build/pip freezecalls with the equivalentuv pip install/uv build/uv pip freezecommands, which resolve dependencies 10-100x faster.Each workflow gets a
pip install uvbootstrap step after Setup Python so the caller repos don't need any changes on their side.Closes #!