Skip to main content

CANARY

canary is a Python package for defining, scheduling, and executing jobs across a wide range of computing environments, from developer laptops to large-scale HPC systems.

Originally developed for application testing, canary has evolved into a general-purpose workflow execution framework. Today it is used to automate software testing, manage analysis workflows, execute computational pipelines, and coordinate collections of dependent jobs.

canary is inspired by vvtest and retains its strengths in scalable test execution while providing a flexible foundation for broader workflow automation. Built on pluggy, canary uses a plugin-based architecture for job discovery and execution. Common plugins support Python-based job definitions in .pyt and .vvt files, while others provide integration with frameworks such as CMake/CTest. Given one or more filesystem paths, canary recursively discovers job definitions, constructs the execution graph, schedules work according to available resources and dependencies, executes jobs, and reports results.

Testing remains a primary use case, but it is no longer the defining purpose of the project. A canary job may represent a software test, simulation, data-processing stage, analysis task, validation check, or any other executable unit of work.

canary offers several advantages:

Scalable Execution: Hierarchical parallelism enables efficient utilization of available resources, allowing large collections of jobs to execute concurrently across diverse hardware platforms.

Workflow and Testing: The same framework supports both automated software testing and general workflow orchestration, reducing the need for separate tools.

Python-Based Definitions: Python-based plugins provide access to the full Python ecosystem while enabling concise and expressive workflow descriptions.

Integration: canary integrates with common development and automation tools such as CMake, CDash, and GitLab, simplifying testing and continuous integration workflows.

Extensibility: A plugin architecture allows users to customize discovery, scheduling, execution, reporting, job-definition formats, and other aspects of a canary session.

Requirements

Python 3.10+

Install

canary is distributed as a Python package and is most easily installed using pip (or another compatible package manager).

To install the latest production release:

python3 -m pip install canary-wm

To install the latest development version:

python3 -m pip install "canary-wm@git+ssh://git@github.com/sandialabs/canary"

NOTE: Installing from the main development branch may depend on floating git references in one or more dependencies. For stable installations, use a published release.

Developers

For developers wishing to modify or contribute to canary, install in editable mode:

python3 -m pip install -e git+https://github.com/sandialabs/canary#egg=canary-wm[dev]

This places a working copy of the source in your Python distribution's $prefix/src directory, allowing changes to become immediately visible to the interpreter.

Alternatively:

git clone git@github.com:sandialabs/canary
cd canary
python3 -m pip install --editable .[dev]

To format code and run canary's internal test suite:

canary check

License

Canary is distributed under the terms of the MIT license. See LICENSE and COPYRIGHT for details.

SPDX-License-Identifier: MIT

SCR#:3170.0

Metadata

Release files for canary-wm 26.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for canary-wm 26.9.2
File Size Uploaded
canary_wm-26.9.2.tar.gz 12.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for canary-wm 26.9.2
File Interpreter ABI Platform
canary_wm-26.9.2-py3-none-any.whl Python 3 none any Details

Total release size: 15.1 MB

Release files / canary_wm-26.9.2.tar.gz

Download URL canary_wm-26.9.2.tar.gz
Size 12.3 MB
Tags Source
SHA-256 checksum
How to use checksums
19c57ec57e5347cdddb7950e602cdbdd6625324b652552df0330458125e2f05a
BLAKE2b-256 checksum
How to use checksums
6be3b8569d8493b9ea2dd0ac3eb9581706495ba9c4428d4d9e98de51ea0753a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 2, 2026.

Transparency log

Release files / canary_wm-26.9.2-py3-none-any.whl

Download URL canary_wm-26.9.2-py3-none-any.whl
Size 2.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
febdc0f478f37da1543ffa413c0c61ab53701983649d85560789a582f7c8889b
BLAKE2b-256 checksum
How to use checksums
eb4decff57e4f23b13b9abb92b0a9c3b8c237534033baf90e9535d0b94536e42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

26.9.2 This release

2 release files

25.6.26

1 release file

25.5.27

1 release file

25.5.7

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page