Maintaining the Package

This document contains information for the software developers and maintainers. Issues can be posted at `https://github.com/TopSBM/topsbm/issues`_.

Travis CI

When a commit is made to any branch of the repository, or a pull request is made, Travis CI pulls in the changes and runs the tests. It will give a green tick if the tests run successfully.

Anyone listed in GitHub as a repository owner can administrate Travis too.

Building the Documentation

You can build the documentation on your own machine by installing sphinx and nbsphinx. Then, in the doc/ directory, run make html.

Recompiling the documentation will re-run examples in Jupyter notebooks only if all cells’ output has been cleared. Otherwise, the documentation will show the output already in the notebook.

Note that the ReadTheDocs service currently refuses to re-run the example notebook, as it takes longer than that service allows.

ReadTheDocs

ReadTheDocs recompiles the documentation when any commit is made to the master branch, and publishes it to `https://topsbm.readthedocs.io`_.

?Anyone listed in GitHub as a repository owner can administrate ReadTheDocs too.

Releasing to PyPI

When you are ready to release a new version of the software, you should first make sure that you are authorised to maintain the PyPI package (it lists maintainers on that page).

Then follow these steps:

  1. Make sure the version is correct in the __version__ variable in [topsbm/__init__.py](https://github.com/TopSBM/topsbm/blob/master/topsbm/__init__.py). For releases, remove suffixes like dev0. Commit that change.
  2. Tag the commit with the version number, with a command such as git tag v0.2.
  3. Push the tags to github. git push --tags

4. Make sure setuptools and twine are installed. pip install setuptools twine 4. Remove any files from previous releases in the dist directory: rm dist/*.tar.gz 5. Run python setup.py sdist to create new entries in dist/ 6. Ensure your PyPI credentials are stored in ~/.pypirc. 7. Run twine upload dist/*.tar.gz. 8. If you want, create a corresponding GitHub release