fix(packaging): make openjarvis-rust a uv-only group to unblock pip install openjarvis[desktop]#624
Merged
Merged
Conversation
…ock pip[desktop]) #615 added openjarvis-rust to the published `desktop` extra so `uv sync --extra desktop` builds the native PyO3 extension for the desktop app. But openjarvis-rust is not on PyPI and `[tool.uv.sources]` is stripped from published wheel metadata, so `pip install openjarvis[desktop]` from PyPI failed at install trying to resolve openjarvis-rust from PyPI (#584). Move openjarvis-rust into a uv `desktop-native` dependency group (PEP 735 — excluded from wheel metadata) and sync it in the desktop app via `uv sync --group desktop-native`. The extension is still built from the local path source; only the published metadata changes. Verified: the built wheel no longer lists openjarvis-rust in any Requires-Dist (nowhere in the metadata), and uv.lock still resolves it from the local path source under the group. Adds tests/deployment/test_packaging.py to guard the split (not in the published extra, present in the group, path source, and the desktop app syncs the group). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Problem
#615 added
openjarvis-rustto the publisheddesktopoptional-dependency souv sync --extra desktopbuilds the native PyO3 extension for the desktop app. Butopenjarvis-rustisn't on PyPI, and[tool.uv.sources](the local path) is stripped from published wheel metadata. So the wheel'sdesktopextra carriedRequires-Dist: openjarvis-rust; extra == 'desktop', andpip install openjarvis[desktop]from PyPI failed at install trying to resolveopenjarvis-rust(the #584 PyPI-rust gap surfacing at install time).Fix
Move
openjarvis-rustfrom the publisheddesktopextra into a uvdesktop-nativedependency group (PEP 735). Dependency groups are excluded from wheel metadata, so pip installs from PyPI never see it — whileuv syncfrom a source checkout still builds it from the local path source. The desktop app now runsuv sync --extra desktop --group desktop-native.Only the packaging metadata changes; the extension is still built the same way for the desktop app.
Verification
openjarvis-rustis nowhere in the published metadata — thedesktopextra'sRequires-Distis now just fastapi/uvicorn/pydantic/python-multipart/faster-whisper. Sopip install openjarvis[desktop]installs cleanly.uv.lockstill resolvesopenjarvis-rustunder thedesktop-nativegroup with its local path source (directory = "rust/crates/openjarvis-python").tests/deployment/test_packaging.pyguards the split; deployment suite: 29 passed; ruff clean.Scope note
This unblocks
pip install openjarvis[desktop]. It does not putopenjarvis-ruston PyPI, so basepip install openjarvisstill lacks the extension at runtime — that deeper #584 closure (publishing multi-platform maturin wheels) is a separate, larger effort.🤖 Generated with Claude Code