Release checklist
Run through this list before tagging and publishing a release.
Package readiness
Confirm README and the docs reflect the current CLI and input format.
Confirm
pyproject.tomlmetadata, URLs, and keywords are current.Confirm the version in
recipe/meta.yamlmatchespyproject.toml.Confirm the example input file (
examples/sample_case.ipt) runs.Confirm no local machine paths or usernames remain in tracked files.
Quality gates
Install the dev and docs extras (python -m pip install -e ".[dev,docs]") and
run the full set:
$ ruff check .
$ ruff format --check .
$ mypy
$ pytest --cov=pyiecwind
$ sphinx-build -W -b html docs docs/_build/html
$ python -m build
$ twine check dist/*
Then smoke-test the built wheel in a clean environment (see Building and packaging).
Tag and source archive
Important
Do these in order - the conda sha256 is only valid once the tag exists.
Update the changelog: move
Unreleasedentries under the new version and date.Commit and merge to the default branch.
Tag and push (substitute the release version for
vX.Y.Zthroughout):$ git tag -a vX.Y.Z -m "pyIECWind X.Y.Z" $ git push origin vX.Y.Z
Recompute the source archive hash from the final GitHub release archive and update
recipe/meta.yaml(a localdisthash is not sufficient – it must match the archive conda-forge will download):$ curl -sL https://github.com/SMI-Lab-Inha/pyIECWind/archive/refs/tags/vX.Y.Z.tar.gz | sha256sum
Create the GitHub release for the tag (
gh release create vX.Y.Z --generate-notesor curated notes). Pushing thev*tag triggers.github/workflows/release.yml, which builds the distributions, attaches a build-provenance attestation, and uploads the sdist/wheel as release assets.Proceed with the conda-forge submission in Building and packaging.
Note
PyPI publishing is not yet enabled (the package is not on PyPI). When ready,
configure a PyPI Trusted Publisher for this repository and re-enable the publish
step in .github/workflows/release.yml.
Post-release
When PyPI publishing is enabled: verify
pip install pyiecwindresolves the new version.Verify the source URL in
recipe/meta.yamlresolves and itssha256matches the published release archive.Re-run this checklist if the tagged archive is re-cut for any reason.