Source code for pytwinnet.ingestion.mock


from __future__ import annotations
import random
from dataclasses import dataclass
from typing import Iterable, List, Tuple
from .base import DataSource

[docs] @dataclass class MockNodeUpdate: node_id: str new_position: Tuple[float, float, float]
[docs] class MockDataSource(DataSource): def __init__(self, node_ids: List[str], step_size_m: float = 1.0, seed: int = 0) -> None: self.node_ids = node_ids self.step = step_size_m self.rng = random.Random(seed)
[docs] def connect(self) -> None: return None
[docs] def read_data(self) -> Iterable[MockNodeUpdate]: for nid in self.node_ids: dx = (self.rng.random() - 0.5) * 2.0 * self.step dy = (self.rng.random() - 0.5) * 2.0 * self.step dz = 0.0 yield MockNodeUpdate(node_id=nid, new_position=(dx, dy, dz))