Contributing
This document briefly describes how to contribute to psm_utils.
Before you begin
If you have an idea for a feature, use case to add or an approach for a bugfix, you are welcome to communicate it with the community by opening a thread in GitHub Discussions or in GitHub Issues.
Development setup
Local install
Setup Python 3, and preferably create a virtual environment.
Clone the psm_utils repository.
Use pip in editable mode to setup the development environment:
pip install --editable .[dev,doc]
Unit tests
Run tests with pytest
:
pytest ./tests
Documentation
To work on the documentation and get a live preview, install the requirements
and run sphinx-autobuild
:
pip install .[doc]
sphinx-autobuild --watch ./psm_utils ./docs/source/ ./docs/_build/html/
Then browse to http://localhost:8000 to watch the live preview.
How to contribute
Fork psm_utils on GitHub to make your changes.
Commit and push your changes to your fork.
Ensure that the tests and documentation (both Python docstrings and files in
/docs/source/
) have been updated according to your changes. Python docstrings are formatted in the numpydoc style.Open a pull request with these changes. You pull request message ideally should include:
A description of why the changes should be made.
A description of the implementation of the changes.
A description of how to test the changes.
The pull request should pass all the continuous integration tests which are automatically run by GitHub Actions.
Release workflow
When a new version is ready to be published:
Change the
__version__
inpsm_utils/__init__.py
following semantic versioning.Update the changelog (if not already done) in
CHANGELOG.md
according to Keep a Changelog.Merge all final changes with the
main
branch.Create a new release on GitHub.
When a new GitHub release is made, the Publish GitHub Action is automatically triggered to build the Python package and publish it to PyPI. Upon a new PyPI release, the Bioconda automations will automatically update the Bioconda package. However, if dependencies are changed, the conda recipe will have to be updated accordingly.