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.toml metadata, URLs, and keywords are current.

  • Confirm the version in recipe/meta.yaml matches pyproject.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.

  1. Update the changelog: move Unreleased entries under the new version and date.

  2. Commit and merge to the default branch.

  3. Tag and push (substitute the release version for vX.Y.Z throughout):

    $ git tag -a vX.Y.Z -m "pyIECWind X.Y.Z"
    $ git push origin vX.Y.Z
    
  4. Recompute the source archive hash from the final GitHub release archive and update recipe/meta.yaml (a local dist hash 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
    
  5. Create the GitHub release for the tag (gh release create vX.Y.Z --generate-notes or curated notes). Pushing the v* tag triggers .github/workflows/release.yml, which builds the distributions, attaches a build-provenance attestation, and uploads the sdist/wheel as release assets.

  6. 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 pyiecwind resolves the new version.

  • Verify the source URL in recipe/meta.yaml resolves and its sha256 matches the published release archive.

  • Re-run this checklist if the tagged archive is re-cut for any reason.