From de0e53d01449320d642ed7962269926a9dace382 Mon Sep 17 00:00:00 2001 From: Peter Dekkers Date: Sun, 4 Aug 2024 09:09:55 +0200 Subject: [PATCH] Improved naming --- roboquant/__init__.py | 2 +- roboquant/feeds/__init__.py | 10 +++--- roboquant/feeds/{avrofeed.py => avro.py} | 0 roboquant/feeds/collect.py | 33 ------------------- .../feeds/{parquetfeed.py => parquet.py} | 0 roboquant/feeds/{sqllitefeed.py => sql.py} | 0 roboquant/feeds/{aggregate.py => util.py} | 29 ++++++++++++++++ samples/alpaca_record_avro.py | 2 +- samples/parquet_recording.py | 3 +- samples/sb3_strategy_quotes.py | 2 +- tests/unit/test_aggregator.py | 2 +- tests/unit/test_avrofeed.py | 2 +- tests/unit/test_parquetfeed.py | 2 +- 13 files changed, 42 insertions(+), 45 deletions(-) rename roboquant/feeds/{avrofeed.py => avro.py} (100%) delete mode 100644 roboquant/feeds/collect.py rename roboquant/feeds/{parquetfeed.py => parquet.py} (100%) rename roboquant/feeds/{sqllitefeed.py => sql.py} (100%) rename roboquant/feeds/{aggregate.py => util.py} (77%) diff --git a/roboquant/__init__.py b/roboquant/__init__.py index 322c1ff..011bc26 100644 --- a/roboquant/__init__.py +++ b/roboquant/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.7.0" +__version__ = "0.7.1" import logging diff --git a/roboquant/feeds/__init__.py b/roboquant/feeds/__init__.py index 05b5b30..c62b300 100644 --- a/roboquant/feeds/__init__.py +++ b/roboquant/feeds/__init__.py @@ -1,13 +1,13 @@ -from .aggregate import AggregatorFeed -from .collect import CollectorFeed +from .util import AggregatorFeed, CollectorFeed from .csvfeed import CSVFeed from .eventchannel import EventChannel from .feed import Feed from .historic import HistoricFeed from .randomwalk import RandomWalk -from .sqllitefeed import SQLFeed -from .parquetfeed import ParquetFeed -from .avrofeed import AvroFeed +from .sql import SQLFeed + +# from .parquetfeed import ParquetFeed +# from .avrofeed import AvroFeed try: from .yahoo import YahooFeed diff --git a/roboquant/feeds/avrofeed.py b/roboquant/feeds/avro.py similarity index 100% rename from roboquant/feeds/avrofeed.py rename to roboquant/feeds/avro.py diff --git a/roboquant/feeds/collect.py b/roboquant/feeds/collect.py deleted file mode 100644 index 1dc096f..0000000 --- a/roboquant/feeds/collect.py +++ /dev/null @@ -1,33 +0,0 @@ - -from roboquant.event import Event -from .eventchannel import EventChannel -from .feed import Feed - - -class CollectorFeed(Feed): - """Collect events that occur close after ech other into a single new event. - - Close to eachother is defined by the timeout in seconds. If there is no new - event in the specified timeout, all the previously collected event items will - be bundled together and put on the channel as a single event. - """ - - def __init__( - self, - feed: Feed, - timeout=5.0, - ): - super().__init__() - self.feed = feed - self.timeout = timeout - - def play(self, channel: EventChannel): - src_channel = self.feed.play_background(channel.timeframe, channel.maxsize) - items = [] - while event := src_channel.get(self.timeout): - if event.is_empty() and items: - new_event = Event(event.time, items) - channel.put(new_event) - items = [] - - items.extend(event.items) diff --git a/roboquant/feeds/parquetfeed.py b/roboquant/feeds/parquet.py similarity index 100% rename from roboquant/feeds/parquetfeed.py rename to roboquant/feeds/parquet.py diff --git a/roboquant/feeds/sqllitefeed.py b/roboquant/feeds/sql.py similarity index 100% rename from roboquant/feeds/sqllitefeed.py rename to roboquant/feeds/sql.py diff --git a/roboquant/feeds/aggregate.py b/roboquant/feeds/util.py similarity index 77% rename from roboquant/feeds/aggregate.py rename to roboquant/feeds/util.py index 7a86c75..6b43ca3 100644 --- a/roboquant/feeds/aggregate.py +++ b/roboquant/feeds/util.py @@ -86,3 +86,32 @@ def play(self, channel: EventChannel): items = list(bars.values()) evt = Event(next_time, items) channel.put(evt) + + +class CollectorFeed(Feed): + """Collect events that occur close after ech other into a single new event. + + Close to eachother is defined by the timeout in seconds. If there is no new + event in the specified timeout, all the previously collected event items will + be bundled together and put on the channel as a single event. + """ + + def __init__( + self, + feed: Feed, + timeout=5.0, + ): + super().__init__() + self.feed = feed + self.timeout = timeout + + def play(self, channel: EventChannel): + src_channel = self.feed.play_background(channel.timeframe, channel.maxsize) + items = [] + while event := src_channel.get(self.timeout): + if event.is_empty() and items: + new_event = Event(event.time, items) + channel.put(new_event) + items = [] + + items.extend(event.items) diff --git a/samples/alpaca_record_avro.py b/samples/alpaca_record_avro.py index 3d69a49..4d32192 100644 --- a/samples/alpaca_record_avro.py +++ b/samples/alpaca_record_avro.py @@ -1,6 +1,6 @@ # %% from roboquant.alpaca import AlpacaHistoricStockFeed -from roboquant.feeds.avrofeed import AvroFeed +from roboquant.feeds.avro import AvroFeed # %% print("The retrieval of historical data will take some time....") diff --git a/samples/parquet_recording.py b/samples/parquet_recording.py index ae23381..8044713 100644 --- a/samples/parquet_recording.py +++ b/samples/parquet_recording.py @@ -1,11 +1,12 @@ # %% import roboquant as rq +from roboquant.feeds.parquet import ParquetFeed # %% yahoo_feed = rq.feeds.YahooFeed("JPM", "IBM", "F", "MSFT", "TSLA", start_date="2000-01-01") # %% -feed = rq.feeds.ParquetFeed("/tmp/stocks.parquet") +feed = ParquetFeed("/tmp/stocks.parquet") if not feed.exists(): feed.record(yahoo_feed) diff --git a/samples/sb3_strategy_quotes.py b/samples/sb3_strategy_quotes.py index 8e520ad..bda9f32 100644 --- a/samples/sb3_strategy_quotes.py +++ b/samples/sb3_strategy_quotes.py @@ -5,7 +5,7 @@ from roboquant.asset import Stock from roboquant.ml.features import EquityFeature, QuoteFeature from roboquant.ml.rl import TradingEnv, SB3PolicyStrategy -from roboquant.feeds.parquetfeed import ParquetFeed +from roboquant.feeds.parquet import ParquetFeed from roboquant.timeframe import Timeframe # %% diff --git a/tests/unit/test_aggregator.py b/tests/unit/test_aggregator.py index 6725bc5..5e698e7 100644 --- a/tests/unit/test_aggregator.py +++ b/tests/unit/test_aggregator.py @@ -1,7 +1,7 @@ import unittest from datetime import timedelta -from roboquant.feeds.aggregate import AggregatorFeed +from roboquant.feeds.util import AggregatorFeed from roboquant.feeds.randomwalk import RandomWalk from tests.common import run_price_item_feed diff --git a/tests/unit/test_avrofeed.py b/tests/unit/test_avrofeed.py index d91a053..793b186 100644 --- a/tests/unit/test_avrofeed.py +++ b/tests/unit/test_avrofeed.py @@ -2,7 +2,7 @@ import unittest from pathlib import Path -from roboquant.feeds.avrofeed import AvroFeed +from roboquant.feeds.avro import AvroFeed from tests.common import get_feed, run_price_item_feed diff --git a/tests/unit/test_parquetfeed.py b/tests/unit/test_parquetfeed.py index 8a5c62f..80c37a7 100644 --- a/tests/unit/test_parquetfeed.py +++ b/tests/unit/test_parquetfeed.py @@ -2,7 +2,7 @@ import unittest from pathlib import Path -from roboquant.feeds.parquetfeed import ParquetFeed +from roboquant.feeds.parquet import ParquetFeed from tests.common import get_feed, run_price_item_feed