We welcome contributions to scikit-surgery.
Please create a new issue on https://github.com/UCL/scikit-surgery/issues/new
When reporting a bug, please include: * The version of scikit-surgery you are using * Your OS version (for example Windows 10 64-bit, macOS High Sierra, Ubuntu 16.04) * Detailed steps to reproduce the bug.
The easiest way to contribute is to follow these guidelines:
- Look through the issues on https://github.com/UCL/scikit-surgery/issues and assign the relevant issue to yourself. If there is not an existing issue that covers your work, please create one: https://github.com/UCL/scikit-surgery/issues/new
- Read the design considerations below.
- Fork the repository: https://github.com/UCL/scikit-surgery/forks/new
- Create a branch for your changes. The branch name should start with the issue number, followed by hyphen separated words describing the issue. For example: 1-update-contribution-guidelines
- Make your changes following the coding guidelines below.
- Commit and push your changes to your fork. The commit message should start with Issue #<issue number>, for example: "Issue #1: Fixed typo". Commit in small, related chunks. Review each commit and explain its purpose in the commit message.
- Submit a merge request: https://github.com/UCL/scikit-surgery/merge_requests/new
- As few dependencies as possible. Try to stick to standard scipy packages like numpy and pandas.
- Discuss extra dependencies with the team and maybe the outcome will be to create a new separate package, where you can be more specific and more modular.
- Unit test well, using pytest, with good coverage.
- All errors as exceptions rather than return codes.
- Please follow PEP8 guidelines https://www.python.org/dev/peps/pep-0008/
- Create a python virtual environment (virtualenv) for development
- Make sure that pylint passes. You may disable specific warnings within the code where it is reasonable to do so
- Add unit tests for new and modified code
- Make sure all existing and new tests pass
- Make sure all docstrings have been added
- Make sure all dependencies have been added to requirements
- Make sure your code works for all required versions of Python
- Make sure your code works for all required operating systems