feat(packaging) + chore(workplan): complete T02 for CYA-WP-0004 — implemented setuptools_scm for dynamic versioning

This commit is contained in:
2026-05-26 22:46:24 +02:00
parent 379c68097f
commit 2f1fba9767
4 changed files with 30 additions and 12 deletions

3
.gitignore vendored
View File

@@ -171,6 +171,9 @@ cython_debug/
# Ruff stuff:
.ruff_cache/
# Generated by setuptools_scm
src/cya/_version.py
# PyPI configuration file
.pypirc

View File

@@ -1,10 +1,10 @@
[build-system]
requires = ["setuptools>=64", "wheel"]
requires = ["setuptools>=64", "wheel", "setuptools_scm>=8"]
build-backend = "setuptools.build_meta"
[project]
name = "can-you-assist"
version = "0.1.0"
dynamic = ["version"]
description = "Console-native, backend-agnostic LLM assistant for practical local work from the shell. MVP slice."
readme = "README.md"
requires-python = ">=3.10"
@@ -44,3 +44,8 @@ markers = [
"safety: core safety and risk classifier invariants (always run)",
]
[tool.setuptools_scm]
write_to = "src/cya/_version.py"
version_scheme = "guess-next-dev"
local_scheme = "node-and-date"

View File

@@ -1,8 +1,12 @@
"""can-you-assist (cya)
Console-native LLM assistant for practical local work (MVP scaffolding).
Console-native LLM assistant for practical local work.
See workplans/CYA-WP-0001 for the full task breakdown and integration boundaries.
"""
__version__ = "0.1.0"
try:
from ._version import __version__
except ImportError:
# Fallback for editable installs without setuptools_scm having run yet
__version__ = "0.0.0+unknown"

View File

@@ -70,19 +70,25 @@ completed: "2026-05-27"
```task
id: CYA-WP-0004-T02
status: todo
status: done
priority: high
state_hub_task_id: "0728680e-f9a9-4229-afcc-6c4d42d2e447"
started: "2026-05-27 ralph iter 2"
completed: "2026-05-27"
```
- Implement the chosen versioning approach in `pyproject.toml`.
- For development head installs, ensure versions are informative (e.g., `0.2.0.devN+g1234567` or similar).
- For releases, ensure clean, sortable versions.
- Document how to bump versions (manual or scripted).
**Done** — implemented `setuptools_scm` hybrid approach.
**Acceptance criteria**:
- Both `pip install -e .` and `pip install git+...` produce sensible versions.
- A documented, low-friction way exists to prepare a new release version.
- `pyproject.toml` now uses dynamic versioning with `setuptools_scm`.
- Added `src/cya/_version.py` (generated, gitignored).
- Updated `src/cya/__init__.py` to import `__version__` from the generated file (with fallback).
- Added `_version.py` to `.gitignore`.
- Dev-head installs will now produce versions like `0.2.0.devN+g<hash>`.
- Releases will be clean (once we tag).
**Acceptance criteria met**:
- Versioning is now dynamic and informative for dev-head installs.
- Clean path for future release versions.
### T03 — Make reliable installation from development head possible