mltrail-verifiable-provenan.../mltrail_verifiable_provenan.../adapters.py

29 lines
961 B
Python

from __future__ import annotations
from typing import Dict, Any, Optional
from .ledger import Ledger
class Adapter:
def __init__(self, ledger: Ledger):
self.ledger = ledger
def publish(self, payload: Dict[str, Any]) -> None:
raise NotImplementedError
class MLFlowAdapter(Adapter):
"""A tiny MLFlow-like adapter that publishes experiments to the ledger."""
def publish(self, payload: Dict[str, Any]) -> None:
# expect payload to contain contract_type and payload
contract_type = payload.get("type", "Experiment")
data = payload.get("payload", {})
self.ledger.add_record(contract_type, data)
class WandBAdapter(Adapter):
"""A tiny WandB-like adapter for provenance publishing."""
def publish(self, payload: Dict[str, Any]) -> None:
contract_type = payload.get("type", "Experiment")
data = payload.get("payload", {})
self.ledger.add_record(contract_type, data)