propose: add uv support alongside pip workflow#86
Draft
HumanBean17 wants to merge 1 commit into
Draft
Conversation
Add uv as a first-class developer-workflow option without disturbing the existing pip-based reproducible install. requirements.txt stays hand-maintained and authoritative for pip installs; uv.lock is the authoritative lockfile for uv sync; the two lockfiles are independent and may legitimately diverge on transitive pins. Adds [dependency-groups.dev] for pytest/ruff/etc. Ships in 2 PRs (PR-2 optional, deferred).
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.
Summary
Add
uvas a first-class developer-workflow option alongside the existingpip install -r requirements.txtpath. Neither is removed; the two ecosystems coexist with explicit non-coupling.Locked decisions
requirements.txtstays hand-maintained and authoritative for pip installs — it is NOT regenerated fromuv exportuv.lockis the authoritative lockfile foruv syncinstalls; committed to repopytest,ruff,pytest-asyncio,unidiff) live in[dependency-groups.dev]inpyproject.toml[tool.uv]table — uv defaults apply.github/workflows/exists today)Full list: 12 locked decisions in §7.
Why two-track instead of single-source-of-truth
The current
requirements.txtis a battle-tested freeze (144 pinned transitive deps includingcocoindex==1.0.0a43, the LanceDB / sentence-transformers / tree-sitter-java triplet). Re-resolving it via uv's SAT solver risks shifting transitive pins in ways that would need re-validation against the test suite and runtime behaviour on pre-release deps.The cost of "two artefacts to maintain" is bounded — uv contributors edit
pyproject.toml's ranges, pip contributors editrequirements.txt's pins, neither workflow consumes the other's output — and far smaller than an unscheduled dependency-resolver migration.Blast radius (from §3 surface + §6 plan)
pyproject.toml[dependency-groups.dev]tableuv.lockuv lock, committedREADME.md§1requirements.txt.gitignore.venv/already on line 7).github/workflows/Net: 3 files modified, 1 new file. PR-2 (optional CONTRIBUTING.md) deferred.
What this deliberately does NOT do
10 explicit out-of-scope items in §4 including: delete
requirements.txt, regenerate it fromuv export, add CI for pip↔uv equivalence, migrate to uv-only, switch build backend.Use-case re-walk
15 scenarios in §5. Three (UC3, UC5, UC11) surface the same accepted cost: contributors adding/bumping a runtime dep must edit both
pyproject.toml(for uv) andrequirements.txt(for pip). Documented as developer responsibility in the README install subsection.Open for review
Status: draft. Per the propose-doc-author skill, this is the iterate-and-amend stage — comments inline on the file, force-push amendments on the same commit, status flips to
under reviewon first feedback andlockedonce merged.