40 lines
740 B
Python
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)
|