Adopt uv for dependency management #1

Merged
drawblank merged 1 commit from feat/uv-project into main 2026-08-20 09:36:28 +00:00
Owner

Replaces requirements.txt with a pyproject.toml that uv resolves from.

What changes

  • Runtime dependencies move to [project.dependencies], same pins as before.
  • pytest added as a dev-group dependency, ready for the test suite that follows.
  • package = false, since the bot runs from a checkout and is never built as a distribution. Without this, uv sync tries to build the project and fails on this layout.
  • requires-python >= 3.10, matching the tomli fallback in config.py.

uv.lock stays untracked

Deliberate: the lock is regenerated on the deployment server and kept private, so the version bounds in pyproject.toml are the contract rather than a checked-in resolution. .claude/ and PROJECT_INDEX.* are ignored in the same commit.

Verification

Checked out on its own in a clean worktree, isolated from any later work:

uv sync                -> resolves, installs 20 packages
import bot, commands, config, titles  -> all modules import OK

No behaviour change to the bot; this is packaging only.

Replaces `requirements.txt` with a `pyproject.toml` that uv resolves from. ## What changes - Runtime dependencies move to `[project.dependencies]`, same pins as before. - `pytest` added as a dev-group dependency, ready for the test suite that follows. - `package = false`, since the bot runs from a checkout and is never built as a distribution. Without this, `uv sync` tries to build the project and fails on this layout. - `requires-python >= 3.10`, matching the `tomli` fallback in `config.py`. ## uv.lock stays untracked Deliberate: the lock is regenerated on the deployment server and kept private, so the version bounds in `pyproject.toml` are the contract rather than a checked-in resolution. `.claude/` and `PROJECT_INDEX.*` are ignored in the same commit. ## Verification Checked out on its own in a clean worktree, isolated from any later work: ``` uv sync -> resolves, installs 20 packages import bot, commands, config, titles -> all modules import OK ``` No behaviour change to the bot; this is packaging only.
Replace requirements.txt with a pyproject.toml that uv resolves from,
declaring the same runtime pins plus a dev group for pytest.

- package = false, since the bot runs from a checkout rather than being
  built and installed as a distribution.
- requires-python >=3.10, matching the tomli fallback in config.py.
- uv.lock is gitignored on purpose: it is regenerated on the deployment
  server and kept private, so version bounds here are the contract.

Also ignore .claude/ and PROJECT_INDEX.* while in the file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
slopnode/bot!1
No description provided.