Add your description here.
src/python_template/— your library/package code (importable aspython_template)main.py— CLI entry point; run withuv run python main.pytests/— pytest tests
- Install:
uv sync - Tests:
uv run pytest tests - Lint/format:
uv run ruff check src tests/uv run ruff format src tests - Type check:
uv run ty check src
This project uses Conventional Commits, python-semantic-release for tag/release creation, and uv-dynamic-versioning to derive the package version from git tags at build time.
- Commit format:
type(scope): description— e.g.feat: add X,fix: correct Y,BREAKING CHANGE:for major bumps. - Version is derived from git tags by
uv-dynamic-versioningat build time — no version is stored inpyproject.toml. Types:feat→ minor,fix/perf→ patch, breaking change → major. - Releases run on push (and can be triggered manually):
- main → full release (e.g.
v1.0.0,v1.1.0) - dev → release candidate (e.g.
v1.0.0-rc.1,v1.1.0-rc.2) - feat/ → alpha (e.g.
v1.2.0-alpha.1; build metadata includes branch name so tags don't clash)
- main → full release (e.g.
- Publish (PyPI): After a release from main, run the Publish workflow with the tag and set
PYPI_API_TOKEN. - Local dry run:
uv run semantic-release --noop versionto see the next version without changing anything. - Build:
uv build(wheels and sdist indist/)