Source code for tensortrade.feed.core.feed



from typing import List

from tensortrade.feed.core.base import Stream, T


[docs]class DataFeed(Stream[T]): """A stream the compiles together streams to be run in an organized manner. Parameters ---------- streams : `List[Stream]` A list of streams to be used in the data feed. """ def __init__(self, streams: "List[Stream]") -> None: super().__init__() self.process = None self.compiled = False if streams: self.__call__(*streams)
[docs] def compile(self) -> None: """Compiles all the given stream together. Organizes the order in which streams should be run to get valid output. """ edges = self.gather() self.process = self.toposort(edges) self.compiled = True self.reset()
[docs] def run(self) -> None: """Runs all the streams in processing order.""" if not self.compiled: self.compile() for s in self.process: s.run() super().run()
[docs] def forward(self) -> dict: return {s.name: s.value for s in self.inputs}
[docs] def next(self) -> dict: self.run() return self.value
[docs] def has_next(self) -> bool: return all(s.has_next() for s in self.process)
[docs] def reset(self) -> None: for s in self.process: s.reset()