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, }