guardrail-space-verifiable-.../src/guardrail_space/contracts.py

37 lines
996 B
Python

import json
from dataclasses import dataclass
from typing import List, Dict, Any, Optional
@dataclass
class SafetyContract:
name: str
pre: Optional[str]
post: Optional[str]
budgets: Dict[str, float]
collision_rules: List[Dict[str, Any]]
trust_policy: Dict[str, Any]
def parse_safety_contract_from_json(text: str) -> SafetyContract:
data = json.loads(text)
return SafetyContract(
name=data.get("name", "contract"),
pre=data.get("pre"),
post=data.get("post"),
budgets=data.get("budgets", {}),
collision_rules=data.get("collision_rules", []),
trust_policy=data.get("trust_policy", {}),
)
def contract_to_minimal_dict(contract: SafetyContract) -> Dict[str, Any]:
return {
"name": contract.name,
"pre": contract.pre,
"post": contract.post,
"budgets": contract.budgets,
"collision_rules": contract.collision_rules,
"trust_policy": contract.trust_policy,
}