# Release Guidelines for the CaosDB Python Client Library

This document specifies release guidelines in addition to the generel release
guidelines of the CaosDB Project
([RELEASE_GUIDELINES.md](https://gitlab.com/caosdb/caosdb/blob/dev/RELEASE_GUIDELINES.md))

## General Prerequisites

* All tests are passing.
* FEATURES.md is up-to-date and a public API is being declared in that document.
* CHANGELOG.md is up-to-date.
* DEPENDENCIES.md is up-to-date.

## Steps

1. Create a release branch from the dev branch. This prevents further changes
   to the code base and a never ending release process. Naming: `release-<VERSION>`

2. Check all general prerequisites.

3. Prepare [setup.py](./setup.py): Update the `MAJOR`, `MINOR`, `MICRO`, `PRE`
   variables and set `ISRELEASED` to `True`. Use the possibility to issue
   pre-release versions for testing.

4. Merge the release branch into the master branch.

5. Tag the latest commit of the master branch with `v<VERSION>`.

6. Delete the release branch.

7. Remove possibly existing `./dist` directory with old release.

8. Publish the release by executing `./release.sh` with uploads the caosdb
   module to the Python Package Index [pypi.org](https://pypi.org).

9. Merge the master branch back into the dev branch.