"""CityGrid: Lightweight, production-ready MVP for policy-driven federated optimization across cross-utility districts. This package provides core primitives, a minimal Graph-of-Contracts (GoC) registry, a lightweight EnergiaBridge for interoperability, and two toy adapters to bootstrap a 2-domain MVP (DER and water pumps). """ from __future__ import annotations from dataclasses import dataclass from typing import Any, Dict, List __version__ = "0.1.0" @dataclass class LocalProblem: id: str domain: str assets: List[str] objective: Dict[str, Any] constraints: Dict[str, Any] solver_hint: Dict[str, Any] | None = None @dataclass class SharedVariables: version: int signals: Dict[str, Any] priors: Dict[str, Any] | None = None @dataclass class DualVariables: multipliers: Dict[str, float] @dataclass class PlanDelta: delta: Dict[str, Any] timestamp: float author: str contract_id: str signature: str | None = None @dataclass class PrivacyBudget: signal: str budget: float expiry: float | None = None @dataclass class AuditLog: entry: str signer: str timestamp: float contract_id: str version: str @dataclass class PolicyBlock: safety: Dict[str, Any] exposure_rules: Dict[str, Any] __all__ = [ "__version__", "LocalProblem", "SharedVariables", "DualVariables", "PlanDelta", "PrivacyBudget", "AuditLog", "PolicyBlock", # Policy DSL utilities "policy_to_constraints", "PolicyDSL", ] # Lightweight policy-to-constraint utilities (DSL sketch) from .policy.dsl import policy_to_constraints, PolicyDSL # noqa: E402,F401