https://github.com/andrsd/kuristo

Automation tool in python

https://github.com/andrsd/kuristo

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.7%) to scientific vocabulary

Keywords

automation python python3 runner test-automation
Last synced: 6 months ago · JSON representation

Repository

Automation tool in python

Basic Info
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 5
  • Releases: 3
Topics
automation python python3 runner test-automation
Created 10 months ago · Last pushed 6 months ago
Metadata Files
Readme License

README.md

Kuristo

qa build codecov License Scc Count Badge PyPI

Kuristo is a flexible, plugin-enabled automation framework designed for scientific and HPC workflows. It supports sequential and parallel job execution, workflow definition via YAML, resource-aware scheduling, custom step and action definitions, and rich output with optional headless mode.

Demo

Features

  • YAML-based workflows (GitHub Actions style)
  • Custom steps and actions via Python plugins
  • Job dependency graph with parallel execution
  • Resource-aware scheduling with core-aware limits
  • Step & job timeouts
  • ANSI-rich output or plain mode for CI
  • Environment variable passing and output capture
  • Output validation (regex, float comparisons, CSV diffing)
  • Composite steps for reusable action pipelines
  • Built-in log directory and run tracking
  • Test coverage with pytest
  • MPI support via configurable launcher (mpirun, mpiexec, etc.)

Install

Install from PyPI:

bash pip install kuristo

Or clone the repo and install locally:

bash git clone https://github.com/andrsd/kuristo.git cd kuristo pip install -e .

Usage

Run all tests in a directory:

bash kuristo run tests/assets/

Run a specific test set:

bash kuristo run tests/assets/tests1

Check your environment:

bash kuristo doctor

Headless/CI-safe mode

bash kuristo run tests --no-ansi

Workflow YAML Example

```yaml jobs: test-matrix: strategy: matrix: include: - os: ubuntu version: 20.04 - os: ubuntu version: 22.04

steps:
  - name: Run simulation
    id: simulation
    run: ./simulate --config=${{ matrix.version }}

  - name: Check output
    uses: checks/regex
    with:
      input: ${{ steps.simulation.output }}
      pattern: "SUCCESS"

```

Writing Custom Actions

Create a plugin in .kuristo/actions.py:

```python import kuristo

@kuristo.action("my/special-step") class MyAction(kuristo.ProcessAction): def init(self, name, context: kuristo.Context, *kwargs): super().init(name, context, *kwargs) self.input = kwargs["input"]

def create_command(self):
    return f"echo Hello {self.input}"

```

Then, use in the workflow as:

yaml jobs: test: steps: - name: My special test uses: my/special-step with: input: "world"

Kuristo will auto-discover .py files in .kuristo/.

Logging & Output

All logs and run data are saved in:

bash .kuristo-out/ ├── runs/ │ ├── latest → 20250620_101500/ │ └── 20250620_101500/

Set logging retention and cleanup in config.yaml:

yaml log: dir-name: .kuristo-out history: 5 cleanup: on_success

Configuration

You can define a global config at .kuristo/config.yaml:

```yaml resources: num-cores: 8

runner: mpi-launcher: mpiexec ```

Or override via environment variable:

bash KURISTO_MPI_LAUNCHER=mpiexec2 kuristo run tests/

Testing & Coverage

Run tests:

bash pytest -v

With coverage:

bash pytest --cov=kuristo --cov-report=term-missing

Philosophy

Kuristo is inspired by the structure of GitHub Actions but tailored for local and HPC workflows. It aims to be lightweight, extensible, and scriptable — with strong support for reproducibility and numerical simulation validation.

License

MIT

Fun Fact

"Kuristo" means "runner" in Esperanto. Because that’s what it does — it runs your stuff.

Owner

  • Name: David Andrs
  • Login: andrsd
  • Kind: user
  • Location: Idaho Falls, Idaho, United States

GitHub Events

Total
  • Create event: 40
  • Release event: 2
  • Issues event: 14
  • Delete event: 29
  • Issue comment event: 21
  • Push event: 123
  • Pull request review comment event: 25
  • Pull request review event: 25
  • Pull request event: 51
Last Year
  • Create event: 40
  • Release event: 2
  • Issues event: 14
  • Delete event: 29
  • Issue comment event: 21
  • Push event: 123
  • Pull request review comment event: 25
  • Pull request review event: 25
  • Pull request event: 51

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 12
  • Total pull requests: 36
  • Average time to close issues: 17 days
  • Average time to close pull requests: 33 minutes
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.42
  • Merged pull requests: 20
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 12
  • Pull requests: 36
  • Average time to close issues: 17 days
  • Average time to close pull requests: 33 minutes
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.42
  • Merged pull requests: 20
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • andrsd (12)
Pull Request Authors
  • andrsd (34)
Top Labels
Issue Labels
enhancement (11) bug (1)
Pull Request Labels
enhancement (19) ignore-for-release (9) doco (3) bug-fix (2)