Releasing¶
This guide covers the current PyPI release workflow for nyc-mesh.
Release discipline¶
- Current release line:
0.1.x - Version source: git tags via Hatch VCS
- Preferred publish trigger: GitHub Release publication
Patch releases in the 0.1.x line should stay backward-compatible. Cut a new
minor release when the documented extraction workflow, dependency expectations,
or public export surface expands in a meaningful way.
Pre-release checks¶
Before tagging a release, run:
make ci
make audit
make docs-build
make smoke-dist
That covers:
- lint, typing, and public API checks
- docs build validation
- source and wheel builds
- installed-wheel smoke testing for the CLI and a known-good local CityGML workflow
Publishing configuration¶
This repo publishes through .github/workflows/cd.yml using GitHub trusted
publishing and the pypi environment.
Repository-admin setup such as PyPI project creation, trusted publisher registration, and Read the Docs project linking is managed manually outside the repo and is intentionally not duplicated here.
Release path¶
The standard production path is:
- create the final release tag, for example
0.1.0 - push the tag
- optionally run the
CDworkflow against TestPyPI first - publish the matching GitHub Release
- let the
release.publishedtrigger publish to real PyPI
If you prefer the manual route, run the CD workflow from the same tag with:
publish=truerepository=pypi
Post-release verification¶
After the release lands on PyPI:
- Install
nyc-meshfrom PyPI in a clean environment. - Run
nyc-mesh --help. - Run
nyc-mesh export-geojson --input "C:/path/to/DA_WISE_GML.zip" --output buildings.geojsonwith a known-good official or pinned local CityGML input. - Confirm the PyPI project page renders the README correctly.
- Confirm the docs site, GitHub release notes, and repo sidebar links reflect the release.