ndev-workflows
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.
Metadata
Release files for ndev-workflows 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ndev_workflows-0.0.1.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ndev_workflows-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / ndev_workflows-0.0.1.tar.gz
| Download URL | ndev_workflows-0.0.1.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5744e08e95bde60c7acda2082a3b7496647bc43c406564d85b18b93d5eb1a8cc
|
|
BLAKE2b-256 checksum How to use checksums |
67b8409e20f1338a9a14db7e667c67628da9ce421c3b526d1678be63ba0cb7c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 22, 2025.
Transparency logRelease files / ndev_workflows-0.0.1-py3-none-any.whl
| Download URL | ndev_workflows-0.0.1-py3-none-any.whl |
|---|---|
| Size | 27.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bfc597666f5126760ad31dda062b3e76675cd7f75989a5f31882e67e4a0191d3
|
|
BLAKE2b-256 checksum How to use checksums |
b936974b88b4b379e3ac03e3a8da2986223bce0007cedf8492742c6ebbdada74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 22, 2025.
Transparency log