First of all, thank you very much for looking into how to contribute!
We are delighted to have everyone involved in the project and would like you to feel welcome!
I am defining contributing in a very broad way, so any form of input that helps the project in the future is a contribution.
There are many ways to help the project:
- Reporting problems
- Suggesting improvement
- Discussing design decisions
- Adding training data
- Testing the software
- Adding code
- ...
In general it is a great idea to start the contribution with an issue. In the issue the general idea is to specify what the expected outcome would be (start a discussion, fix an error, offer help writting a tutorial ...). After this we will reply and get on the same page on the best way to get it done!
No issue is too small, even an issue saying "I do not understand how to use this project" is a valuable source of feedback.
We have several tools that check for the code standards, most of them are automated using pre-commit. If you want to run all the tools on all the files use this:
pipx install pre-commit
pre-commit install
pre-commit --all-filesWe intend to maintain a fairly high code coverage (Ideally 100% but there are exceptions). The coverage can be checked using:
pytest --cov-report htmlThis will generate a directory named htmlcov which contains the coverage report.
Please note that 100% coverage is not a perfect proxy for a piece of software without bugs. In general, adding functionality needs to be in conjunction with tests that check for that functionality explicitly.
We use semantic versioning
bumpver update --minorPublishing is handled using github actions but the underlying commands for it are these (you should never have to run this manually)
rm -rf dist/*
python -m build
twine upload dist/*TODO
Since the project right now is fairly small in scope, most of the documentation is done either in-code in the form of dosctrings or directly on the README.qmd.
Note that the readme is rendered using quarto, therefore edits should be done on that file, which gets executed and generated as the final readme in github and pypi.