Release workflow

  1. Fill the CHANGELOG.md with the new version. You can write it manually or use the auto-generated release notes by Github:

    1. Go to project’s releases and click on Draft a new release

    2. In Choose a tag, enter the new tag (obviously complying with SemVer)

    3. Click on Generate release notes

    4. Copy/paste the generated text from ## What's changed until the line before **Full changelog**:... in the CHANGELOG.md replacing What's changed with the tag and the publication date

  2. Change the version number in __about__.py

  3. Commit changes with a message like release: bump version to X.x.x to the main branch

  4. Apply a git tag with the relevant version: git tag -a 0.3.0 {git commit hash} -m "New awesome feature"

  5. Push commit and tag to main branch: git push --tags

If things go wrong (failed CI/CD pipeline, missed step…), here comes the fix process:

git tag -d old
git push origin :refs/tags/old
git push --tags

And try again!


Manual upload to PyPi

This method requires an API token on PyPi

If the CI/CD fails for any reason, here comes the manual procedure:

  1. Install required packages:

    python -m pip install -U build twine wheel
    
  2. Install package in editable mode:

    python -m pip install -e .
    
  3. Clean previous builds and build package artifacts:

    rm -rf dist/
    python -m build --no-isolation --sdist --wheel --outdir dist/ .
    
  4. Upload built artifacts to PyPi:

    twine upload -u __token__ dist/*