Contributions to KvikIO fall into the following three categories.
- To report a bug, request a new feature, or report a problem with documentation, please file an issue describing in detail the problem or new feature. The RAPIDS team evaluates and triages issues, and schedules them for a release. If you believe the issue needs priority attention, please comment on the issue to notify the team.
- To propose and implement a new Feature, please file a new feature request issue. Describe the intended feature and discuss the design and implementation with the team and community. Once the team agrees that the plan looks good, go ahead and implement it, using the code contributions guide below.
- To implement a feature or bug-fix for an existing outstanding issue, please Follow the code contributions guide below. If you need more context on a particular issue, please ask in a comment.
As contributors and maintainers to this project, you are expected to abide by KvikIO's code of conduct. More information can be found at: Contributor Code of Conduct.
KvikIO uses pre-commit to execute all code linters and formatters. These tools ensure a consistent code format throughout the project. Using pre-commit ensures that linter versions and options are aligned for all developers. Additionally, there is a CI check in place to enforce that committed code follows our standards.
To use pre-commit
, install via conda
or pip
:
conda install -c conda-forge pre-commit
pip install pre-commit
Then run pre-commit hooks before committing code:
pre-commit run
By default, pre-commit runs on staged files (only changes and additions that will be committed). To run pre-commit checks on all files, execute:
pre-commit run --all-files
Optionally, you may set up the pre-commit hooks to run automatically when you make a git commit. This can be done by running:
pre-commit install
Now code linters and formatters will be run each time you commit changes.
You can skip these checks with git commit --no-verify
or with the short version git commit -n
.
The following section describes some of the core pre-commit hooks used by the repository.
See .pre-commit-config.yaml
for a full list.
C++/CUDA is formatted with clang-format
.
Python code runs several linters including Black, isort, and flake8.
Codespell is used to find spelling
mistakes, and this check is run as a pre-commit hook. To apply the suggested spelling fixes,
you can run codespell -i 3 -w .
from the repository root directory.
This will bring up an interactive prompt to select which spelling fixes to apply.
- Portions adopted from https://github.com/pytorch/pytorch/blob/master/CONTRIBUTING.md
- Portions adopted from https://github.com/dask/dask/blob/master/docs/source/develop.rst