catopt-query-category-theor.../catopt_query/protocol.py

47 lines
980 B
Python

from __future__ import annotations
from dataclasses import dataclass, field, asdict
from typing import Dict, List, Any
@dataclass
class LocalProblem:
shard_id: str
projected_attributes: List[str]
predicates: List[str]
costs: Dict[str, float]
constraints: Dict[str, Any] = field(default_factory=dict)
def to_dict(self) -> Dict[str, Any]:
return asdict(self)
@dataclass
class SharedVariables:
version: int
payload: Dict[str, Any] = field(default_factory=dict)
@dataclass
class DualVariables:
version: int
payload: Dict[str, Any] = field(default_factory=dict)
@dataclass
class PlanDelta:
delta_id: str
timestamp: float
changes: Dict[str, Any] = field(default_factory=dict)
@dataclass
class DataContract:
schemas: Dict[str, Any] = field(default_factory=dict)
encryption_rules: Dict[str, Any] = field(default_factory=dict)
@dataclass
class AuditLog:
entries: List[str] = field(default_factory=list)