Skip to main content

A domain-agnostic pipeline framework with provenance tracking

Project description

Artisan

A domain-agnostic pipeline framework with automatic provenance tracking. Artisan gives computational tools a common interface and chains them into tracked, repeatable workflows. Every result is automatically linked back to the inputs and parameters that produced it.

Status: This project is in active development (v0.1). APIs may change between releases.


Why Artisan?

Simple — Define steps, connect outputs to inputs, run. No boilerplate, just Python.

Extensible — Wrap any tool as an OperationDefinition. Declare inputs/outputs, implement three methods, and the framework handles the rest.

Reproducible — Content-addressed artifacts and dual provenance mean every result traces back to its inputs. Same content = same ID, always.

Scale-invariant — The same pipeline code runs on a laptop or an HPC cluster. Switch from local to SLURM execution with a single parameter — the framework handles batching, job arrays, and resource management automatically.

Structured data — All artifacts, metrics, and provenance are collected in a single store and accessible as dataframes. No parsing log files, no hunting through directory trees — query your results directly.


Quick Start

Prerequisites: Python 3.12+, Pixi

# Install Pixi (if needed)
curl -fsSL https://pixi.sh/install.sh | bash

# Clone and install
git clone https://github.com/dexterity-systems/artisan.git
cd artisan

pixi install

# Verify
pixi run python -c "import artisan; print('Artisan installed successfully')"

# Start the Prefect server (orchestrates pipeline execution)
pixi run prefect-start

IDE Setup (VSCode)

Python Interpreter

Set the Pixi environment as your VSCode Python interpreter:

pixi run which python
# Example output: /home/user/artisan/.pixi/envs/default/bin/python

In VSCode: Ctrl+Shift+P → "Python: Select Interpreter" → paste the path above.

Jupyter Kernel

Register the Pixi environment as a Jupyter kernel so notebooks use the correct packages:

pixi run install-kernel

In VSCode: open a .ipynb file → click "Select Kernel" → choose Artisan.


Quick Example

from artisan.orchestration import PipelineManager
from artisan.operations.examples import DataGenerator, DataTransformer, MetricCalculator
from artisan.operations.curator import Filter

pipeline = PipelineManager.create(
    name="my_pipeline",
    delta_root="runs/delta",
    staging_root="runs/staging",
    working_root="runs/working",
)

# Generate datasets -> transform -> compute metrics -> filter by score
step0 = pipeline.run(DataGenerator, params={"count": 5, "seed": 42})
step1 = pipeline.run(
    DataTransformer,
    inputs={"dataset": step0.output("datasets")},
    params={"scale_factor": 2.0},
)
step2 = pipeline.run(
    MetricCalculator,
    inputs={"dataset": step1.output("dataset")},
)
step3 = pipeline.run(
    Filter,
    inputs={
        "passthrough": step1.output("dataset"),
        "metrics": step2.output("metrics"),
    },
    params={
        "criteria": [
            {"metric": "metrics.mean_score", "operator": "gt", "value": 0.5},
        ]
    },
)

result = pipeline.finalize()

Development Setup

Environments

Pixi manages three environments, all sharing a single dependency solve:

Environment Activate with Purpose
default pixi run … Core runtime — everything needed to run pipelines
dev pixi run -e dev … Testing, linting, formatting, notebooks
docs pixi run -e docs … Documentation building (Jupyter Book 2)

Running Tests

pixi run -e dev test              # Unit (sequential) + integration (parallel)
pixi run -e dev test-unit         # Unit tests only
pixi run -e dev test-integration  # Integration tests only (parallel)
pixi run -e dev test-seq          # All tests sequentially (for debugging)

Formatting and Linting

pixi run -e dev fmt               # Ruff format + lint with auto-fix

Shell Completions

Enable tab-completion for pixi commands and tasks:

# Bash — add to ~/.bashrc
echo 'eval "$(pixi completion --shell bash)"' >> ~/.bashrc

# Zsh — add to ~/.zshrc
echo 'eval "$(pixi completion --shell zsh)"' >> ~/.zshrc

Restart your shell or source the file to activate.


Documentation

pixi run -e docs docs-build       # Build HTML docs
pixi run -e docs docs-serve       # Serve locally at http://localhost:8000
pixi run -e docs docs-clean       # Remove build artifacts
  • Getting Started — Installation and your first pipeline
  • Tutorials — Interactive notebooks from first steps through advanced patterns
  • How-to Guides — Task-oriented guides for building pipelines, writing operations, and more
  • Concepts — Architecture, design principles, and system internals
  • Reference — API reference and coding conventions

Architecture

Artisan is a domain-agnostic pipeline framework. It handles execution, orchestration, storage, provenance tracking, and the base operation interface. Domain-specific operations extend it by subclassing OperationDefinition.

See Architecture Overview for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dexterity_artisan-0.1.1.tar.gz (637.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dexterity_artisan-0.1.1-py3-none-any.whl (212.4 kB view details)

Uploaded Python 3

File details

Details for the file dexterity_artisan-0.1.1.tar.gz.

File metadata

  • Download URL: dexterity_artisan-0.1.1.tar.gz
  • Upload date:
  • Size: 637.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dexterity_artisan-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a68e604fd82c73d8e48cae588b4e3c52e024de33a11b0d152bc397825e0ddabe
MD5 5f2ad98fa74601e1f52a831676fcf041
BLAKE2b-256 ca4dcea827ce759969c5251f03cba66c88efd55095cf89e4832ff9254757d260

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexterity_artisan-0.1.1.tar.gz:

Publisher: release.yml on dexterity-systems/artisan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dexterity_artisan-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for dexterity_artisan-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c9a99941ed6a27f696bbcace2e52c1a6ee69e25c6fafa9dbfc3c972ef569ff9a
MD5 c73af983a840417b45d1eba03a8bd2b9
BLAKE2b-256 a611a37e614c4ac58adc8b35c70750c3b10ed8ee1fffdeeb7253ae2e2802d0e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for dexterity_artisan-0.1.1-py3-none-any.whl:

Publisher: release.yml on dexterity-systems/artisan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page