from __future__ import annotations from dataclasses import dataclass from typing import Any, Dict @dataclass class KlineMessage: type: str source: str symbol: str interval: str event_time: int open_time: int close_time: int open: str high: str low: str close: str volume: str trade_num: int final: bool @classmethod def from_dict(cls, payload: Dict[str, Any]) -> "KlineMessage": return cls( type=str(payload["type"]), source=str(payload["source"]), symbol=str(payload["symbol"]), interval=str(payload["interval"]), event_time=int(payload["event_time"]), open_time=int(payload["open_time"]), close_time=int(payload["close_time"]), open=str(payload["open"]), high=str(payload["high"]), low=str(payload["low"]), close=str(payload["close"]), volume=str(payload["volume"]), trade_num=int(payload["trade_num"]), final=bool(payload["final"]), ) def to_dict(self) -> Dict[str, Any]: return { "type": self.type, "source": self.source, "symbol": self.symbol, "interval": self.interval, "event_time": self.event_time, "open_time": self.open_time, "close_time": self.close_time, "open": self.open, "high": self.high, "low": self.low, "close": self.close, "volume": self.volume, "trade_num": self.trade_num, "final": self.final, }