Skip to content

Development getting started

  • Open in VS Code
  • Rebuild and Reopen in Container
  • Run hashfields -h in the devcontainer, review the usage notes

Run the tests

Use the Testing window in VS Code.

Package an executable

The app is packaged as a standalone, self-contained executable with pyinstaller.


Package a version of hashfields for a Linux-based Docker container:

docker compose build dist

Now run dist just like you would hashfields:

$ docker compose run dist -v
hashfields <version>


Or package the app for your current system:

pip install -e .[dist]

pyinstaller --onefile --name hashfields

The resulting executable is located at ./dist/hashfields:

$ ./dist/hashfields -v
hashfields <version>

Make a release

Releases run automatically with GitHub Actions.

Push a tag

The release process starts by pushing a calver version tag of the form YYYY.0M.N where:

  • YYYY is the 4 digit year
  • 0M is the 0-prefixed month, e.g. 01 for January, 10 for October
  • N is the 1-based release number for the given month, incremented with each release that year and month

Pushing a new tag runs the release.yml workflow.

A new GitHub Release is created automatically, with pre-build binaries for each platform attached as Release Assets. Edit the release notes as-needed.

Publish to PyPI

When a new release is published from the workflow above, the pypi.yaml runs to publish the new package to PyPI.