Release checklist
Before tagging
uv sync --extra dev
uv run ruff check .
uv run ruff format --check .
uv run mypy src/telespec
uv run pytest
uv run python benchmarks/run_all.py
uv build
Confirm that benchmarks/results/results.json, the SVG plots, and the README
results block changed in the same run.
Build the dashboard and verify the bundled assets:
cd frontend
npm ci
npm test -- --run
npm run build
cd ..
telespec view
Cutting a release
- Bump
versioninpyproject.toml,__version__insrc/telespec/__init__.py, andversion/date-releasedinCITATION.cff. - Move the
Unreleasedentries inCHANGELOG.mdunder the new version. - Commit, then tag and push:
bash
git tag v0.2.0
git push origin main v0.2.0
The Release workflow then:
- checks that the tag matches the package version,
- builds the sdist and wheel,
- publishes them to PyPI via trusted publishing
(GitHub environment
pypi; no API token is stored), and - creates the GitHub release with generated notes and the built files.
Zenodo archives every published GitHub release and mints a version DOI. The concept DOI in the README always resolves to the latest version.
Do not upload releases to Zenodo manually; the GitHub integration already creates a record for each release, and a manual upload would produce a separate, unrelated record.