Skip to content

Commit ee6fb90

Browse files
authored
Update README.md
1 parent df6870b commit ee6fb90

1 file changed

Lines changed: 44 additions & 16 deletions

File tree

README.md

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,98 @@
11
# CANARY
22

3-
`canary` is a python package providing an application testing framework designed to test scientific applications.
3+
`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.
44

55
- **Documentation:** https://canary-wm.readthedocs.io/en/production/
66

7-
`canary` is inspired by [vvtest](https://github.com/sandialabs/vvtest) and designed to run tests on diverse hardware from laptops to super computing clusters. `canary` not only validates the functionality of your application but can also serve as a workflow manager for analysts. A "test" is an executable script with extension `.pyt` or `.vvt`. If the exit code upon executing the script is `0`, the test is considered to have passed, otherwise a non-passing status will be assigned. `canary`'s methodology is simple: given a path on the filesystem, `canary` recursively searches for test scripts, sets up the tests described in each script, executes them, and reports the results.
87

9-
`canary` offers several advantages over similar testing tools:
8+
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.
109

11-
**Speed**: Hierarchical parallelism is used to run tests asynchronously, optimizing resource utilization and speeding up the testing process.
1210

13-
**Python**: Test files are written in [Python](python.org), giving developers access to the full Python ecosystem.
11+
`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.
1412

15-
**Integration**: `canary` integrates with popular developer tools like [CMake](cmake.org), [CDash](cdash.org) and [GitLab](gitlab.com), streamlining the testing and continuous integration (CI) processes.
1613

17-
**Extensibility**: `canary` can be extended through user plugins, allowing developers to customize their test sessions according to their specific needs.
14+
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.
15+
16+
17+
`canary` offers several advantages:
18+
19+
20+
**Scalable Execution**: Hierarchical parallelism enables efficient utilization of available resources, allowing large collections of jobs to execute concurrently across diverse hardware platforms.
21+
22+
23+
**Workflow and Testing**: The same framework supports both automated software testing and general workflow orchestration, reducing the need for separate tools.
24+
25+
26+
**Python-Based Definitions**: Python-based plugins provide access to the full Python ecosystem while enabling concise and expressive workflow descriptions.
27+
28+
29+
**Integration**: `canary` integrates with common development and automation tools such as CMake, CDash, and GitLab, simplifying testing and continuous integration workflows.
30+
31+
32+
**Extensibility**: A plugin architecture allows users to customize discovery, scheduling, execution, reporting, job-definition formats, and other aspects of a `canary` session.
33+
1834

1935
## Requirements
2036

2137
Python 3.10+
2238

39+
2340
## Install
2441

25-
`canary` is distributed as a python library and is most easily installed via `pip` (or other compatible tool):
42+
`canary` is distributed as a Python package and is most easily installed using `pip` (or another compatible package manager).
43+
2644

27-
To install the latest production version, execute:
45+
To install the latest production release:
2846

2947
```console
3048
python3 -m pip install canary-wm
3149
```
3250

33-
To install the latest development version, execute:
51+
52+
To install the latest development version:
3453

3554
```console
3655
python3 -m pip install "canary-wm@git+ssh://git@github.com/sandialabs/canary"
3756
```
3857

39-
> **NOTE:** Installing from the main development branch depends on floating git refs to one or more dependencies. For stable installs, install a published release.
58+
59+
> **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.
4060
4161

4262
## Developers
4363

44-
For developers wanting to make modifications and/or contributions to `canary`, install in editable mode:
64+
For developers wishing to modify or contribute to `canary`, install in editable mode:
4565

4666
```console
4767
python3 -m pip install -e git+https://github.com/sandialabs/canary#egg=canary-wm[dev]
4868
```
4969

50-
which will leave a copy of `canary` in your Python distribution's `$prefix/src` directory. Edits made to the source will be immediately visible by the Python interpreter. Alternatively, the source can be cloned and then installed in editable mode:
70+
71+
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.
72+
73+
74+
Alternatively:
5175

5276
```console
5377
git clone git@github.com:sandialabs/canary
5478
cd canary
5579
python3 -m pip install --editable .[dev]
5680
```
5781

58-
To format code and run `canary`'s internal tests, execute
82+
83+
To format code and run `canary`'s internal test suite:
5984

6085
```console
6186
canary check
6287
```
6388

89+
6490
## License
6591

66-
Canary is distributed under the terms of the MIT license, see [LICENSE](https://github.com/sandialabs/canary/blob/main/LICENSE) and [COPYRIGHT](https://github.com/sandialabs/canary/blob/main/COPYRIGHT).
92+
Canary is distributed under the terms of the MIT license. See `LICENSE` and `COPYRIGHT` for details.
93+
6794

6895
SPDX-License-Identifier: MIT
6996

70-
SCR#:3170.0
97+
98+
SCR#:3170.0

0 commit comments

Comments
 (0)