nebulaforge-offline-resilie.../nebulaforge/contracts.py

40 lines
740 B
Python

from __future__ import annotations
from dataclasses import dataclass, asdict
from typing import Any, Dict
import json
@dataclass
class LocalProblem:
id: str
domain: str
description: str
version: int = 1
@dataclass
class SharedVariables:
variables: Dict[str, Any]
version: int = 1
@dataclass
class PlanDelta:
delta: Dict[str, Any]
timestamp: float
version: int = 1
@dataclass
class PrivacyBudget:
lambda_privacy: float
@dataclass
class AuditLog:
entry: str
signer: str
timestamp: float
contract_id: str
version: int = 1
def to_json(obj: Any) -> str:
if hasattr(obj, "__dict__"):
return json.dumps(asdict(obj), default=str)
return json.dumps(obj, default=str)