build: migrate from pip to uv#32
Merged
thunderbiscuit merged 3 commits intobitcoindevkit:masterfrom Feb 19, 2026
Merged
Conversation
reez
approved these changes
Feb 17, 2026
Collaborator
reez
left a comment
There was a problem hiding this comment.
Concept ACK
Nice PR! Directionally correct and right sized/scoped migration to uv per discussion on #29.
Only blocker is ci failures, i think uv pip install steps need --system (currently failing with “No virtual environment found”), I added some comments in the places I think that is. After that fix + green checks, this is good to merge.
.github/workflows/test-python.yaml
Outdated
| - name: "Install wheel and run tests" | ||
| run: | | ||
| pip3 install ./dist/*.whl | ||
| uv pip install --python python3 ./dist/*.whl |
.github/workflows/test-python.yaml
Outdated
|
|
||
| - name: "Install wheel" | ||
| run: pip3 install ./dist/*.whl | ||
| run: uv pip install --python python3 ./dist/*.whl |
.github/workflows/test-python.yaml
Outdated
|
|
||
| - name: "Install dependencies" | ||
| run: Get-ChildItem 'D:\a\bdk-python\bdk-python\dist\*.whl' | ForEach-Object {pip install $_.FullName} | ||
| run: Get-ChildItem 'D:\a\bdk-python\bdk-python\dist\*.whl' | ForEach-Object {uv pip install --python python $_.FullName} |
| - name: "Install wheel" | ||
| run: pip3 install ./dist/*.whl | ||
| run: uv pip install --python python3 ./dist/*.whl |
|
|
||
| - name: "Install wheel" | ||
| run: pip3 install ./dist/*.whl | ||
| run: uv pip install --python python3 ./dist/*.whl |
|
|
||
| - name: "Install dependencies" | ||
| run: Get-ChildItem 'D:\a\bdk-python\bdk-python\dist\*.whl' | ForEach-Object {pip install $_.FullName} | ||
| run: Get-ChildItem 'D:\a\bdk-python\bdk-python\dist\*.whl' | ForEach-Object {uv pip install --python python $_.FullName} |
CI installs wheels into the runner/toolcache interpreter (no project venv), so uv pip install must opt in via --system. Also update local helper/docs to prefer installing into a project venv.
thunderbiscuit
requested changes
Feb 18, 2026
Member
thunderbiscuit
left a comment
There was a problem hiding this comment.
Great stuff! I tested locally and it worked really well (plus it builds and runs the tests in about a tenth of the usual time).
I have just a few comments/requested changes, and we're good to go.
Use long-form flags across workflows, remove unused from dev deps (and refresh ), and update api-docs to run before Sphinx.
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Migrate the repo from pip/build-based workflows to uv:
astral-sh/setup-uv+uv build/uv pip install/uvxpyproject.tomldependency groups;requirements.txtandrequirements-dev.txtare removeduv.lockis committed; docs CI usesuv sync --frozen --group devfor reproducible buildsscripts/generate-*no longer install Python deps (generation is Rust-side; build happens viauv build)Notes to the reviewers
pypa/gh-action-pypi-publish@release/v1to avoid changing release semantics beyond the pip→uv migration.--outdir dist:uv buildoutputs todist/by default.pypa/gh-action-pypi-publish@release/v1to avoid changing:Tests run locally:
uv sync --frozen --group devuv run python -m unittest discover --start-directory ./tests --pattern "test_offline_*.py" --verboseuv build --wheel -vChangelog notice
Build/CI: migrate from pip to uv for packaging and dependency management.
Checklists
All Submissions:
cargo fmtandcargo clippybefore committing