GitHub Workflow for a Python package
 On pull-request
  - Run lint
  - Run tests with coverage on the main platform & version (e.g., Ubuntu latest + Python 3.12)
  - Publish the coverage report to Codecov
  
 On push to main branch
  - Run lint
  - Run tests with coverage on all supported platforms & versions ((Ubuntu latest, macOS) * (Python 3.11, Python 3.12))
  - Publish the coverage report to Codecov
  
 On push to semver tag
  - (if branch main contains the tag) Create GitHub Release (TBD)
  - Build Python package
  - Build documentation & publish to GitHub Pages. (TBD: how to maintain multiple versions of documentation, e.g., tagged releases + HEAD)
  - Publish package to TestPyPi
  - (if tag is strictly MAJOR.MINOR.PATCH, i.e., not rc or dev build) Publish package to PyPi