Quick Start

This example demonstrates the basic operations of the Pacha registry.

Running the Example

cargo run --example quick_start

What It Does

  1. Creates a temporary registry - Uses tempfile for isolated testing
  2. Registers a model - Creates a fraud detector with metrics and documentation
  3. Registers a dataset - Adds transaction data with a datasheet
  4. Queries artifacts - Retrieves and displays model information
  5. Transitions stages - Promotes the model from development to staging
  6. Shows statistics - Displays registry usage metrics

Code Walkthrough

Creating the Registry

let temp_dir = TempDir::new().expect("Failed to create temp dir");
let config = RegistryConfig::new(temp_dir.path());
let registry = Registry::open(config)?;

Registering a Model

let card = ModelCard::builder()
    .description("Fraud detection model")
    .metrics([("auc", 0.95), ("f1", 0.88)])
    .primary_uses(["Fraud detection in payment transactions"])
    .build();

let model_id = registry.register_model(
    "fraud-detector",
    &ModelVersion::new(1, 0, 0),
    model_data,
    card,
)?;

Registering a Dataset

let datasheet = Datasheet::builder()
    .purpose("Transaction data for fraud detection")
    .creators(["Data Engineering Team"])
    .instance_count(1_000_000)
    .license("Internal Use Only")
    .build();

let dataset_id = registry.register_dataset(
    "transactions",
    &DatasetVersion::new(1, 0, 0),
    dataset_data,
    datasheet,
)?;

Stage Transition

registry.transition_model_stage(
    "fraud-detector",
    &ModelVersion::new(1, 0, 0),
    ModelStage::Staging,
)?;

Expected Output

=== Pacha Quick Start ===

1. Registering a model...
   Registered model ID: 1cd6809b-6b55-48f5-b619-a5ac4930339b

2. Registering a dataset...
   Registered dataset ID: b6cd66ab-5b48-4e7d-ab75-4dd229edc6c8

3. Querying the model...
   Model: fraud-detector:1.0.0
   Stage: development

4. Promoting model to staging...
   New stage: staging

5. Registry statistics:
   Models: 1
   Datasets: 1
   Objects: 2
   Total size: 89 bytes

✅ Quick start complete!