ndev Workflows
reproducible processing workflows with napari
Reproducible processing workflows with napari
A re-implementation of napari-workflows with backwards compatibility.
This [napari] plugin was generated with [copier] using the [napari-plugin-template] (2.0.1).
What is ndev-workflows?
ndev-workflows is the workflow backend for napari image processing pipelines. It's a drop-in replacement for napari-workflows by Robert Haase, with these key improvements:
- Safe YAML loading — Uses
yaml.safe_load()(no arbitrary code execution) - Backwards compatible — Automatically loads and migrates legacy napari-workflows files, and detects missing dependencies
- Same API — Most code works without changes
- Future-ready — Designed for upcoming npe2 workflow contributions (WIP), without relying on npe1, napari-time-slicer, and napari-tools-menu for interactivity
Installation
pip install ndev-workflows
If napari is not already installed, you can install ndev-workflows with napari and Qt via:
pip install "ndev-workflows[all]"
Quick Start
from ndev_workflows import Workflow, save_workflow, load_workflow
from skimage.filters import gaussian
# Create workflow
workflow = Workflow()
workflow.set("blurred", gaussian, "input_image", sigma=2.0)
workflow.set("input_image", my_image)
# Execute
result = workflow.get("blurred")
# Save
save_workflow("pipeline.yaml", workflow, name="My Pipeline")
# Load and reuse
loaded = load_workflow("pipeline.yaml")
loaded.set("input_image", new_image)
result = loaded.get("blurred")
YAML Format
Saved workflows use a safe, human-readable format:
name: Nucleus Segmentation
description: Gaussian blur and thresholding
modified: '2025-12-22'
inputs:
- raw_image
outputs:
- labels
tasks:
blurred:
function: skimage.filters.gaussian
params:
arg0: raw_image
sigma: 2.0
labels:
function: skimage.measure.label
params:
arg0: blurred
Key features:
- No
!python/objecttags (safe to share) - Functions imported by module path
- Params use
arg0,arg1, etc. for positional args and keyword names for kwargs
Legacy format: Old napari-workflows YAML files are automatically detected and migrated when loaded.
Important Notes
Function Dependencies
⚠️ Workflows don't bundle functions — they only store module paths. Recipients need the same packages installed.
If loading fails with WorkflowNotRunnableError, install the missing package:
pip install scikit-image # for skimage functions
pip install napari-segment-blobs-and-things-with-membranes # for that plugin
Lazy Loading
Inspect workflows without importing functions:
workflow = load_workflow("untrusted.yaml", lazy=True)
print(workflow.tasks) # Safe - doesn't execute
Integration
Front-end plugins for interactive workflow building:
Works with processing plugins:
Contributing
git clone https://github.com/ndev-kit/ndev-workflows.git
cd ndev-workflows
uv venv
.venv\Scripts\activate
uv pip install -e . --group dev
pytest
License
Distributed under the terms of the [BSD-3] license, "ndev-workflows" is free and open source software Fork of napari-workflows by Robert Haase.
Issues
File an issue with your environment details, YAML file (if applicable), and error messages.
Version:
- 0.0.1
Last updated:
- 2025-12-22
First released:
- 2025-12-22
License:
- Unavailable
Python versions supported:
Operating system:
- Information not submitted
Requirements:
- napari
- nbatch>=0.0.4
- ndevio>=0.6.0
- magicgui
- magic-class
- numpy
- dask
- pyyaml
- napari[all]; extra == "all"

