from __future__ import annotations # Lightweight, permissive DSL primitives to support MVP tests. class Asset: def __init__(self, **kwargs): self.__dict__.update(kwargs) class MarketSignal: def __init__(self, asset=None, price=0.0, timestamp=0.0, delta=None, meta=None): self.asset = asset self.price = price self.timestamp = timestamp self.delta = delta self.meta = meta or {} class StrategyDelta: def __init__(self, **kwargs): self.__dict__.update(kwargs) class PlanDelta: def __init__(self, **kwargs): self.__dict__.update(kwargs) # Backwards-compat: expose both 'deltas' and 'delta' if hasattr(self, "deltas") and not hasattr(self, "delta"): self.delta = self.deltas if hasattr(self, "delta") and not hasattr(self, "deltas"): self.deltas = self.delta