Skip to content

Migrate dependency management from pip/venv to uv - #107

Merged
randileeharper merged 2 commits into
mainfrom
migrate-pip-to-uv
Jun 28, 2026
Merged

Migrate dependency management from pip/venv to uv#107
randileeharper merged 2 commits into
mainfrom
migrate-pip-to-uv

Conversation

@randileeharper

Copy link
Copy Markdown
Owner

Summary

Switches Vesper's dependency management and command workflow from pip/venv to uv, generating a committed uv.lock and updating all documentation and CI to use uv commands. No change to runtime behavior or dependencies.

Closes #106.

Motivation

  • Reproducible environments: a committed uv.lock pins exact versions for all contributors, which pip-based editable installs do not guarantee.
  • Faster, stricter resolution: uv's resolver is significantly faster and surfaces transitive conflicts that pip may resolve loosely.
  • Consistency: a single tool (uv) handles environment creation, locking, syncing, and command execution.

Changes

  • uv.lock — new, committed at repo root (63 packages resolved). Not gitignored.
  • README.mduv added to Requirements with install pointer; venv/pip install block replaced with uv sync --extra dev.
  • docs/development.md — Environment section rewritten to use uv sync and uv run; all .venv/bin/python -m invocations replaced with uv run equivalents; stale venv prose rewritten.
  • AGENTS.md.venv/bin/python commands replaced with uv run; surrounding prose, PR-workflow line, and Notes section updated.
  • .github/workflows/ci.yml — replaced pip install -e "..[dev]" with astral-sh/setup-uv@v8 + uv python install 3.12 + uv sync --extra dev; ruff/mypy/pytest now run via uv run so CI honors uv.lock.

Test commands run

uv lock --check                              # exit 0
rm -rf .venv && uv sync --extra dev          # exit 0
uv run pytest -q                             # 270 passed
uv run python -m compileall vesper tests     # exit 0
uv run ruff check vesper tests               # all checks passed
uv run mypy vesper                           # success, 0 issues in 37 files

Repo-wide grep confirms no stale pip install / venv / .venv/bin/ references remain (except the expected .gitignore heading that still ignores .venv/).

Notes

  • Dev dependencies stay in [project.optional-dependencies] dev (installed via uv sync --extra dev); converting to PEP 735 dependency groups is optional future polish.

- Add committed uv.lock (63 packages resolved)
- README.md: add uv requirement, replace venv/pip install with uv sync
- docs/development.md: rewrite Environment section, uv run for all commands
- AGENTS.md: uv run commands, updated PR-workflow and Notes prose
- .github/workflows/ci.yml: setup-uv action, uv sync, uv run for tool steps

Closes #106
CI failed resolving 'astral-sh/setup-uv@v8' — the action publishes only
exact release tags (e.g. v8.2.0), not a moving major tag. Pin to v8.2.0.
@randileeharper
randileeharper merged commit 473455a into main Jun 28, 2026
1 check passed
@randileeharper
randileeharper deleted the migrate-pip-to-uv branch June 28, 2026 20:39
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.

Migrate dependency management from pip/venv to uv

1 participant