Workflow for Maintainers

This page is for maintainers who can merge our own or other peoples’ changes into the upstream repository.

Seeing as how you’re a maintainer, you should be completely on top of the basic git workflow in Developer’s Guide and Astropy’s git workflow.

Issue Milestones and Labels

Current milestone guidelines:

  • Only confirmed issues or pull requests that are release critical or for some other reason should be addressed before a release, should have a milestone. When in doubt about which milestone to use for an issue, do not use a milestone and ask other the maintainers.

Current labelling guidelines:

  • Issues that require fixing in main, but that also are confirmed to apply to supported stable version lines should be marked with a “Affects Release” label.

  • All open issues should have a “Priority <level>”, “Effort <level>” and “Package <level>”, if you are unsure at what level, pick higher ones just to be safe. If an issue is more of a question or discussion, you can omit these labels.

  • If an issue looks to be straightforward, you should add the “Good first issue” and “Hacktoberfest” label.

  • For other labels, you should add them if they fit, like if an issue affects the net submodule, add the “net” label or if it is a feature request etc.

Updating and Maintaining the Changelog

The changelog will be read by users, so this description should be aimed at SOLARNET users instead of describing internal changes which are only relevant to the developers.

The current changelog is kept in the file “CHANGELOG.rst” at the root of the repository.

Releases

We have a description of the release process in the version guidelines in Version Guidelines for SOLARNET Metadata Recommendations.

This section describes the process which should used to create an official package release. Releases should be performed frequently as changes add up.

Tagging

You need to create a tag in the git history. A tag is simply a marker at a particular point in the list of commits in the git history.

We will be using light weight tags. To create a tag:

git tag v1.4.1

You then have to push the tag to the server with:

git push origin v1.4.1

On github, click on the tags link and just select Releases. Select the right tag and then fill out the form. The title of the release should be same as your tag. In the body, title the page with your tag and the release date like so # v1.4.1 (2022-01-06). Below that list each of the changes in the following categories, new features, bug fixes, documentation, internal changes. See the following link for a good example.

Build

To build and upload your package to PyPI, you’ll use two tools called Build and Twine. You can install them using pip as usual:

python3 -m pip install build twine

Next, build the package:

python3 -m build

This creates a source archive and a wheel. You can find them in a newly created dist directory.

Before uploading your newly built distribution packages, you should check that they contain the files you expect. The wheel file is really a zip file with a different extension. You can unzip it and inspect its contents.