Contributing to Argh

Argh would not be so good without the FOSS community.

Your contributions matter!

This document describes how to contribute to Argh.

Issues, Bug reports, Feature requests

If you have a question, a bug report or a feature request, please create an issue.

Please include, if possible:

  • a minimal reproducible example;

  • a description of the expected and observed behaviour;

  • a description of your environment (OS, Python version, etc.).

Code changes

Starting work on a new release

  • Assign tasks to the release milestone.

  • Create a release branch (e.g. release/v0.30.4) from master.

  • Bump version in pyproject.toml.

  • Create section in CHANGES.rst for the new version.

  • Create a pull request from the release branch to master.

Contributing to the release

  • Create a feature branch from the release branch.

  • Make changes, commit, push, create a pull request (target branch = release).

  • Make sure the pipeline is green.

  • Ask for review.

  • Merge the pull request.

    • Default strategy: squash. Fast-forward or rebase if:

      • there are multiple commits from different authors;

      • there are commits which are important to keep separate.

Finalising the release

  • Make sure the pipeline is green.

  • Make sure all tasks in the release milestone are “ready for release”.

  • Update CHANGES.rst, then proof-read on RTD:

    • make sure all merged PRs are mentioned;

    • add current date in section title.

  • Create a GitHub release: https://github.com/neithere/argh/releases/new

    • based on the release branch;

    • new tag in the format v0.30.4;

    • tick “Set as the latest release” checkbox;

    • click the “Generate release notes” button;

    • add link to RTD changelog.

  • Monitor the release pipeline: https://github.com/neithere/argh/actions

    • if it failed, fix and re-create the release with the same tag.

  • Merge the release branch into master.

    • don’t squash!