29 lines
961 B
Python
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)
|