Building and packaging

This page covers building distributions and the planned conda-forge submission. The end-to-end release procedure is in Release checklist.

Building distributions

$ python -m pip install -e ".[dev]"
$ python -m build           # writes sdist + wheel to dist/
$ twine check dist/*        # validates package metadata

The build is warning-free, and the sdist is self-contained: it ships the complete test suite, the golden corpus, and the documentation source, so the tests can be run from an unpacked sdist.

Wheel smoke test

$ python -m venv /tmp/wheel-env
$ /tmp/wheel-env/bin/python -m pip install dist/*.whl
$ /tmp/wheel-env/bin/python -c "import pyiecwind; print(pyiecwind.__version__)"
$ /tmp/wheel-env/bin/pyiecwind template /tmp/smoke.ipt

Conda-forge submission

A conda-forge-style recipe lives in recipe/meta.yaml. It is configured as noarch: python with a runtime dependency on numpy >=1.24 and the pyiecwind CLI entry point.

Important

The sha256 in recipe/meta.yaml is the hash of the tagged source archive and must be recomputed whenever the version tag changes, because the archive contents (and therefore the hash) are fixed only once the tag exists:

$ curl -sL https://github.com/SMI-Lab-Inha/pyIECWind/archive/refs/tags/vX.Y.Z.tar.gz | sha256sum

(substitute the release version for vX.Y.Z). Update both recipe/meta.yaml and any documentation referencing the hash with the result on every release.

Submission workflow:

  1. Confirm the GitHub tag (vX.Y.Z) exists and the source URL resolves.

  2. Recompute and set the sha256 as above.

  3. Fork conda-forge/staged-recipes and add recipes/pyiecwind/meta.yaml from this repository’s recipe.

  4. Open a PR (a suggested body is in recipe/STAGED_RECIPES_PR_BODY.md) and let conda-forge CI and linting run.

  5. After merge, conda-forge creates the pyiecwind-feedstock; future version bumps happen there rather than in staged-recipes.

The intended recipe-maintainers entry is the GitHub handle SMI-Lab-Inha.