Developer tools#
This guide explains the different types of tools that can help you develop and test your code.
This guide covers:#
General tools#
All of these are optional. Many are very helpful, but they do take a little time to learn. The more time you spend coding, the greater the return-on-investment for using them. It’s a personal decision on whether the time saved by using these outweighs the time required to understand the tools.
Linting tools#
These check your code.
ruff - checks various code style conventions, unused variables, line spacings, etc…
-
Static type checker: enforces proper usage of types.
Super useful once you get the hang of it, but definitely an intermediate-advanced tool.
Along with high test coverage, probably the best time-saver and project robustness tool.
Formatting tools#
These auto-modify your code.
ruff-formatter Forces code to follow specific style, indentations, etc…
Pre-commit tools#
pre-commit, runs all your checks each time you run git commit, preventing bad code from ever getting checked in.
$ pip install pre-commit
# install the pre-commit "hook"
$ pre-commit install
# then configure in .pre-commit-config.yaml
# (optionally) Run hooks on demand
$ pre-commit run --all-files
-
Runs all your pre-commit hooks on CI (Continuous Integration).
Useful even if contributors don’t install and run your pre-commit hooks locally before they open a PR.
Napari plugin-specific tools#
-
This is a pre-commit hook. It is intended to be added to your
.pre-commit-config.yaml
file.It statically (without importing) checks various best practices about your plugin:
repo: https://github.com/tlambert03/napari-plugin-action
rev: v0.2.0
hooks: id: napari-plugin-checks
Plugin check GitHub action (work in progress)
It is intended to be added to your GitHub workflow.
It (currently) checks that your plugin is installable, and performs a few sanity checks about Qt backends and dock widgets.
uses: tlambert03/napari-plugin-action@main
with: package_name: <your-package-name>
The next topic in this series is the Survey/Q&A.