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.yamlfile.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.