Skip to content

propose: add uv support alongside pip workflow#86

Draft
HumanBean17 wants to merge 1 commit into
masterfrom
propose/uv-support
Draft

propose: add uv support alongside pip workflow#86
HumanBean17 wants to merge 1 commit into
masterfrom
propose/uv-support

Conversation

@HumanBean17
Copy link
Copy Markdown
Owner

Summary

Add uv as a first-class developer-workflow option alongside the existing pip install -r requirements.txt path. Neither is removed; the two ecosystems coexist with explicit non-coupling.

Locked decisions

# Decision
1 uv coexists with pip; nothing is removed
2 requirements.txt stays hand-maintained and authoritative for pip installs — it is NOT regenerated from uv export
3 uv.lock is the authoritative lockfile for uv sync installs; committed to repo
4 The two lockfiles are independent and may legitimately diverge on transitive pins; CI does not enforce coherence
5 Dev deps (pytest, ruff, pytest-asyncio, unidiff) live in [dependency-groups.dev] in pyproject.toml
6 No [tool.uv] table — uv defaults apply
7 No CI changes (no .github/workflows/ exists today)

Full list: 12 locked decisions in §7.

Why two-track instead of single-source-of-truth

The current requirements.txt is a battle-tested freeze (144 pinned transitive deps including cocoindex==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 edit requirements.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)

Site Change
pyproject.toml Add [dependency-groups.dev] table
uv.lock New file, generated by uv lock, committed
README.md §1 Add parallel "Install with uv" subsection; document two-track policy explicitly
requirements.txt No change
.gitignore No change (.venv/ already on line 7)
.github/workflows/ No change (doesn't exist)

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 from uv 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) and requirements.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 review on first feedback and locked once merged.

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).
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.

1 participant