From 1ef8c34c9453baef2303cc78f9580183420dce54 Mon Sep 17 00:00:00 2001 From: Nick Macholl Date: Wed, 14 May 2025 15:22:54 -0700 Subject: [PATCH 1/9] MOD: Change `metadata.get_cost` for flat rate --- databento/historical/api/metadata.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/databento/historical/api/metadata.py b/databento/historical/api/metadata.py index deaf4c4..573663f 100644 --- a/databento/historical/api/metadata.py +++ b/databento/historical/api/metadata.py @@ -407,7 +407,8 @@ def get_cost( ) -> float: """ Request the cost in US dollars for historical streaming or batched - files from Databento. + files from Databento. This cost respects any discounts provided by flat + rate plans. Makes a `GET /metadata.get_cost` HTTP request. From df9dd18e93a37307327f8850d73f372064aafd5e Mon Sep 17 00:00:00 2001 From: Carter Green Date: Wed, 30 Apr 2025 16:57:34 -0500 Subject: [PATCH 2/9] ADD: Add client support for is_last --- CHANGELOG.md | 6 ++++++ databento/live/gateway.py | 1 + databento/live/protocol.py | 4 +++- tests/test_live_client.py | 3 ++- tests/test_live_gateway_messages.py | 13 ++++++++++--- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20c513e..20f0270 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.55.0 - TBD + +#### Enhancements +- Added `is_last` field to live subscription requests which will be used to improve + the handling of split subscription requests + ## 0.54.0 - 2025-05-13 #### Enhancements diff --git a/databento/live/gateway.py b/databento/live/gateway.py index 307afcb..414683b 100644 --- a/databento/live/gateway.py +++ b/databento/live/gateway.py @@ -133,6 +133,7 @@ class SubscriptionRequest(GatewayControl): start: int | None = None snapshot: int = 0 id: int | None = None + is_last: int = 1 @dataclasses.dataclass diff --git a/databento/live/protocol.py b/databento/live/protocol.py index 0458acb..f8d7046 100644 --- a/databento/live/protocol.py +++ b/databento/live/protocol.py @@ -325,7 +325,8 @@ def subscribe( subscriptions: list[SubscriptionRequest] = [] chunked_symbols = list(chunk(symbols_list, SYMBOL_LIST_BATCH_SIZE)) - for batch in chunked_symbols: + last_chunk_idx = len(chunked_symbols) - 1 + for i, batch in enumerate(chunked_symbols): batch_str = ",".join(batch) message = SubscriptionRequest( schema=validate_enum(schema, Schema, "schema"), @@ -334,6 +335,7 @@ def subscribe( start=optional_datetime_to_unix_nanoseconds(start), snapshot=int(snapshot), id=subscription_id, + is_last=int(i == last_chunk_idx), ) subscriptions.append(message) diff --git a/tests/test_live_client.py b/tests/test_live_client.py index cc7af67..714f559 100644 --- a/tests/test_live_client.py +++ b/tests/test_live_client.py @@ -581,10 +581,11 @@ async def test_live_subscribe_large_symbol_list( ) reconstructed: list[str] = [] - for _ in range(8): + for i in range(8): message = await mock_live_server.wait_for_message_of_type( message_type=gateway.SubscriptionRequest, ) + assert int(message.is_last) == int(i == 7) reconstructed.extend(message.symbols.split(",")) # Assert diff --git a/tests/test_live_gateway_messages.py b/tests/test_live_gateway_messages.py index 3deaada..6183520 100644 --- a/tests/test_live_gateway_messages.py +++ b/tests/test_live_gateway_messages.py @@ -352,7 +352,11 @@ def test_parse_subscription_request( stype_in=SType.INSTRUMENT_ID, symbols="1234,5678,90", ), - b"schema=mbo|" b"stype_in=instrument_id|" b"symbols=1234,5678,90|" b"snapshot=0\n", + b"schema=mbo|" + b"stype_in=instrument_id|" + b"symbols=1234,5678,90|" + b"snapshot=0|" + b"is_last=1\n", ), pytest.param( SubscriptionRequest( @@ -361,12 +365,14 @@ def test_parse_subscription_request( symbols="UNI,TTE,ST", start=1671717080706865759, snapshot=0, + is_last=0, ), b"schema=mbo|" b"stype_in=raw_symbol|" b"symbols=UNI,TTE,ST|" b"start=1671717080706865759|" - b"snapshot=0\n", + b"snapshot=0|" + b"is_last=0\n", ), pytest.param( SubscriptionRequest( @@ -381,7 +387,8 @@ def test_parse_subscription_request( b"stype_in=instrument_id|" b"symbols=1234,5678,90|" b"snapshot=1|" - b"id=5\n", + b"id=5|" + b"is_last=1\n", ), ], ) From d5e540d4da53a937c4466e06c9daffd023c86ced Mon Sep 17 00:00:00 2001 From: Zach Banks Date: Tue, 27 May 2025 19:08:51 +0000 Subject: [PATCH 3/9] ADD: Add `exchanges` param to CA `.get_range` --- CHANGELOG.md | 3 ++- databento/reference/api/corporate.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20f0270..375fa23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,9 @@ # Changelog -## 0.55.0 - TBD +## TBD #### Enhancements +- Added `exchanges` parameter to `Reference.corporate_actions.get_range(...)` - Added `is_last` field to live subscription requests which will be used to improve the handling of split subscription requests diff --git a/databento/reference/api/corporate.py b/databento/reference/api/corporate.py index df34869..57d1c9a 100644 --- a/databento/reference/api/corporate.py +++ b/databento/reference/api/corporate.py @@ -39,6 +39,7 @@ def get_range( stype_in: SType | str = "raw_symbol", events: Iterable[str] | str | None = None, countries: Iterable[str] | str | None = None, + exchanges: Iterable[str] | str | None = None, security_types: Iterable[str] | str | None = None, flatten: bool = True, pit: bool = False, @@ -84,6 +85,11 @@ def get_range( Takes any number of two letter ISO 3166-1 alpha-2 country codes per request. If not specified then will select **all** listing countries by default. See [CNTRY](https://databento.com/docs/standards-and-conventions/reference-data-enums#cntry) enum. + exchanges : Iterable[str] or str, optional + The (listing) exchanges to filter for. + Takes any number of exchanges per request. + If not specified then will select **all** exchanges by default. + See [EXCHANGE](https://databento.com/docs/standards-and-conventions/reference-data-enums#exchange) enum. security_types : Iterable[str] or str, optional The security types to filter for. Takes any number of security types per request. @@ -108,6 +114,7 @@ def get_range( symbols_list = optional_symbols_list_to_list(symbols, SType.RAW_SYMBOL) events = optional_string_to_list(events) countries = optional_string_to_list(countries) + exchanges = optional_string_to_list(exchanges) security_types = optional_string_to_list(security_types) data: dict[str, object | None] = { @@ -122,6 +129,10 @@ def get_range( "compression": str(Compression.ZSTD), # Always request zstd } + # Only add the `exchanges` param if it is supplied, for compatibility + if exchanges: + data["exchanges"] = ",".join(exchanges) + response = self._post( url=self._base_url + ".get_range", data=data, From fbc568fa2d6516bd5388cbda3ae66652697ca5c4 Mon Sep 17 00:00:00 2001 From: Carter Green Date: Wed, 28 May 2025 11:50:16 -0500 Subject: [PATCH 4/9] DOC: Fix spelling in docstrings --- databento/live/protocol.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/databento/live/protocol.py b/databento/live/protocol.py index f8d7046..b10ca82 100644 --- a/databento/live/protocol.py +++ b/databento/live/protocol.py @@ -175,7 +175,7 @@ def connection_made(self, transport: asyncio.BaseTransport) -> None: See Also -------- - asycnio.BufferedProtocol.connection_made + asyncio.BufferedProtocol.connection_made """ logger.debug("established connection to gateway") @@ -190,7 +190,7 @@ def connection_lost(self, exc: Exception | None) -> None: See Also -------- - asycnio.BufferedProtocol.connection_lost + asyncio.BufferedProtocol.connection_lost """ super().connection_lost(exc) @@ -216,7 +216,7 @@ def eof_received(self) -> bool | None: See Also -------- - asycnio.BufferedProtocol.eof_received + asyncio.BufferedProtocol.eof_received """ logger.info("received EOF from remote") @@ -228,7 +228,7 @@ def get_buffer(self, sizehint: int) -> bytearray: See Also -------- - asycnio.BufferedProtocol.get_buffer + asyncio.BufferedProtocol.get_buffer """ if len(self.__buffer) < sizehint: @@ -241,7 +241,7 @@ def buffer_updated(self, nbytes: int) -> None: See Also -------- - asycnio.BufferedProtocol.buffer_updated + asyncio.BufferedProtocol.buffer_updated """ logger.debug("read %d bytes from remote gateway", nbytes) From b4898838b8ef26d7ca96733459b2dd6b26279baa Mon Sep 17 00:00:00 2001 From: Nick Macholl Date: Wed, 28 May 2025 12:10:49 -0700 Subject: [PATCH 5/9] FIX: Fix live client test flakiness --- tests/test_live_client.py | 46 ++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/tests/test_live_client.py b/tests/test_live_client.py index 714f559..dc22c15 100644 --- a/tests/test_live_client.py +++ b/tests/test_live_client.py @@ -358,8 +358,9 @@ async def test_live_start( assert message.start_session -def test_live_start_twice( +async def test_live_start_twice( live_client: client.Live, + mock_live_server: MockLiveServerInterface, ) -> None: """ Test that calling start() twice raises a ValueError. @@ -373,6 +374,10 @@ def test_live_start_twice( # Act live_client.start() + _ = await mock_live_server.wait_for_message_of_type( + message_type=gateway.SessionStart, + ) + # Assert with pytest.raises(ValueError): live_client.start() @@ -389,8 +394,9 @@ def test_live_start_before_subscribe( live_client.start() -def test_live_iteration_after_start( +async def test_live_iteration_after_start( live_client: client.Live, + mock_live_server: MockLiveServerInterface, ) -> None: """ Test that iterating the Live client after it is started raises a @@ -405,13 +411,18 @@ def test_live_iteration_after_start( # Act live_client.start() + _ = await mock_live_server.wait_for_message_of_type( + message_type=gateway.SessionStart, + ) + # Assert with pytest.raises(ValueError): iter(live_client) -def test_live_async_iteration_after_start( +async def test_live_async_iteration_after_start( live_client: client.Live, + mock_live_server: MockLiveServerInterface, ) -> None: """ Test that async-iterating the Live client after it is started raises a @@ -426,6 +437,10 @@ def test_live_async_iteration_after_start( # Act live_client.start() + _ = await mock_live_server.wait_for_message_of_type( + message_type=gateway.SessionStart, + ) + # Assert with pytest.raises(ValueError): live_client.__aiter__() @@ -759,9 +774,10 @@ def test_live_block_for_close( assert not live_client.is_connected() -def test_live_block_for_close_timeout( +async def test_live_block_for_close_timeout( live_client: client.Live, monkeypatch: pytest.MonkeyPatch, + mock_live_server: MockLiveServerInterface, ) -> None: """ Test that block_for_close terminates the session when the timeout is @@ -778,15 +794,20 @@ def test_live_block_for_close_timeout( ) # Act, Assert + _ = await mock_live_server.wait_for_message_of_type( + message_type=gateway.SubscriptionRequest, + ) + live_client.block_for_close(timeout=0) live_client.terminate.assert_called_once() # type: ignore @pytest.mark.usefixtures("mock_live_server") -def test_live_block_for_close_timeout_stream( +async def test_live_block_for_close_timeout_stream( live_client: client.Live, monkeypatch: pytest.MonkeyPatch, tmp_path: pathlib.Path, + mock_live_server: MockLiveServerInterface, ) -> None: """ Test that block_for_close flushes user streams on timeout. @@ -805,6 +826,10 @@ def test_live_block_for_close_timeout_stream( live_client.add_stream(stream) # Act, Assert + _ = await mock_live_server.wait_for_message_of_type( + message_type=gateway.SubscriptionRequest, + ) + live_client.block_for_close(timeout=0) stream.flush.assert_called() # type: ignore [attr-defined] @@ -837,6 +862,7 @@ async def test_live_wait_for_close( async def test_live_wait_for_close_timeout( live_client: client.Live, monkeypatch: pytest.MonkeyPatch, + mock_live_server: MockLiveServerInterface, ) -> None: """ Test that wait_for_close terminates the session when the timeout is @@ -853,6 +879,11 @@ async def test_live_wait_for_close_timeout( symbols="ALL_SYMBOLS", start=None, ) + + _ = await mock_live_server.wait_for_message_of_type( + message_type=gateway.SubscriptionRequest, + ) + await live_client.wait_for_close(timeout=0) # Assert @@ -864,6 +895,7 @@ async def test_live_wait_for_close_timeout_stream( live_client: client.Live, monkeypatch: pytest.MonkeyPatch, tmp_path: pathlib.Path, + mock_live_server: MockLiveServerInterface, ) -> None: """ Test that wait_for_close flushes user streams on timeout. @@ -883,6 +915,10 @@ async def test_live_wait_for_close_timeout_stream( live_client.add_stream(stream) # Act + _ = await mock_live_server.wait_for_message_of_type( + message_type=gateway.SubscriptionRequest, + ) + await live_client.wait_for_close(timeout=0) # Assert From ee6186283b902674abeebef9d3716fb8526d19ab Mon Sep 17 00:00:00 2001 From: Nick Macholl Date: Thu, 29 May 2025 10:20:03 -0700 Subject: [PATCH 6/9] MOD: Change JSONDecodeError import to use requests --- CHANGELOG.md | 3 +++ databento/common/http.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 375fa23..9f4ad54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ - Added `is_last` field to live subscription requests which will be used to improve the handling of split subscription requests +#### Bug fixes +- Fixed an issue where `JSONDecodeError` would not be caught when using `simplejson` with `requests` (credit: @xuanqing94) + ## 0.54.0 - 2025-05-13 #### Enhancements diff --git a/databento/common/http.py b/databento/common/http.py index 5908e1b..629cd2a 100644 --- a/databento/common/http.py +++ b/databento/common/http.py @@ -5,7 +5,6 @@ from collections.abc import Iterable from collections.abc import Mapping from io import BytesIO -from json.decoder import JSONDecodeError from os import PathLike from typing import IO from typing import Any @@ -15,6 +14,7 @@ import requests from aiohttp import ClientResponse from aiohttp import ContentTypeError +from requests import JSONDecodeError from requests import Response from requests.auth import HTTPBasicAuth From 130cb8a576a7a039f5e14528f13d2da09dcf0725 Mon Sep 17 00:00:00 2001 From: Nick Macholl Date: Wed, 28 May 2025 12:57:18 -0700 Subject: [PATCH 7/9] MOD: Upgrade python client for DBN v3 --- CHANGELOG.md | 5 ++++- README.md | 2 +- databento/common/dbnstore.py | 5 ++++- databento/common/types.py | 3 ++- databento/live/protocol.py | 2 +- pyproject.toml | 2 +- tests/data/EQUS.MINI/test_data.bbo-1m.dbn.zst | Bin 223 -> 224 bytes tests/data/EQUS.MINI/test_data.bbo-1s.dbn.zst | Bin 213 -> 212 bytes .../EQUS.MINI/test_data.definition.dbn.zst | Bin 198 -> 205 bytes tests/data/EQUS.MINI/test_data.mbp-1.dbn.zst | Bin 249 -> 252 bytes .../data/EQUS.MINI/test_data.ohlcv-1d.dbn.zst | Bin 146 -> 148 bytes .../data/EQUS.MINI/test_data.ohlcv-1h.dbn.zst | Bin 247 -> 249 bytes .../data/EQUS.MINI/test_data.ohlcv-1m.dbn.zst | Bin 208 -> 209 bytes .../data/EQUS.MINI/test_data.ohlcv-1s.dbn.zst | Bin 196 -> 198 bytes tests/data/EQUS.MINI/test_data.tbbo.dbn.zst | Bin 252 -> 256 bytes tests/data/EQUS.MINI/test_data.trades.dbn.zst | Bin 209 -> 213 bytes tests/data/GLBX.MDP3/test_data.bbo-1m.dbn.zst | Bin 297 -> 299 bytes tests/data/GLBX.MDP3/test_data.bbo-1s.dbn.zst | Bin 261 -> 257 bytes .../GLBX.MDP3/test_data.definition.dbn.zst | Bin 290 -> 288 bytes tests/data/GLBX.MDP3/test_data.mbo.dbn.zst | Bin 189 -> 191 bytes tests/data/GLBX.MDP3/test_data.mbp-1.dbn.zst | Bin 254 -> 256 bytes tests/data/GLBX.MDP3/test_data.mbp-10.dbn.zst | Bin 420 -> 422 bytes .../data/GLBX.MDP3/test_data.ohlcv-1d.dbn.zst | Bin 145 -> 146 bytes .../data/GLBX.MDP3/test_data.ohlcv-1h.dbn.zst | Bin 258 -> 260 bytes .../data/GLBX.MDP3/test_data.ohlcv-1m.dbn.zst | Bin 215 -> 214 bytes .../data/GLBX.MDP3/test_data.ohlcv-1s.dbn.zst | Bin 169 -> 169 bytes .../GLBX.MDP3/test_data.statistics.dbn.zst | Bin 222 -> 224 bytes tests/data/GLBX.MDP3/test_data.status.dbn.zst | Bin 188 -> 188 bytes tests/data/GLBX.MDP3/test_data.tbbo.dbn.zst | Bin 258 -> 256 bytes tests/data/GLBX.MDP3/test_data.trades.dbn.zst | Bin 215 -> 217 bytes .../data/IFEU.IMPACT/test_data.bbo-1m.dbn.zst | Bin 335 -> 306 bytes .../data/IFEU.IMPACT/test_data.bbo-1s.dbn.zst | Bin 331 -> 310 bytes .../IFEU.IMPACT/test_data.definition.dbn.zst | Bin 260 -> 265 bytes tests/data/IFEU.IMPACT/test_data.mbo.dbn.zst | Bin 218 -> 222 bytes .../data/IFEU.IMPACT/test_data.mbp-1.dbn.zst | Bin 214 -> 216 bytes .../data/IFEU.IMPACT/test_data.mbp-10.dbn.zst | Bin 256 -> 258 bytes .../IFEU.IMPACT/test_data.ohlcv-1d.dbn.zst | Bin 163 -> 165 bytes .../IFEU.IMPACT/test_data.ohlcv-1h.dbn.zst | Bin 259 -> 261 bytes .../IFEU.IMPACT/test_data.ohlcv-1m.dbn.zst | Bin 238 -> 240 bytes .../IFEU.IMPACT/test_data.ohlcv-1s.dbn.zst | Bin 235 -> 237 bytes .../IFEU.IMPACT/test_data.statistics.dbn.zst | Bin 229 -> 234 bytes tests/data/IFEU.IMPACT/test_data.tbbo.dbn.zst | Bin 213 -> 215 bytes .../data/IFEU.IMPACT/test_data.trades.dbn.zst | Bin 201 -> 203 bytes tests/data/LIVE/test_data.live.dbn.zst | Bin 1101 -> 1099 bytes .../data/NDEX.IMPACT/test_data.bbo-1m.dbn.zst | Bin 352 -> 341 bytes .../data/NDEX.IMPACT/test_data.bbo-1s.dbn.zst | Bin 270 -> 258 bytes .../NDEX.IMPACT/test_data.definition.dbn.zst | Bin 265 -> 268 bytes tests/data/NDEX.IMPACT/test_data.mbo.dbn.zst | Bin 236 -> 242 bytes .../data/NDEX.IMPACT/test_data.mbp-1.dbn.zst | Bin 277 -> 279 bytes .../data/NDEX.IMPACT/test_data.mbp-10.dbn.zst | Bin 351 -> 354 bytes .../NDEX.IMPACT/test_data.ohlcv-1d.dbn.zst | Bin 162 -> 164 bytes .../NDEX.IMPACT/test_data.ohlcv-1h.dbn.zst | Bin 267 -> 267 bytes .../NDEX.IMPACT/test_data.ohlcv-1m.dbn.zst | Bin 224 -> 224 bytes .../NDEX.IMPACT/test_data.ohlcv-1s.dbn.zst | Bin 215 -> 214 bytes .../NDEX.IMPACT/test_data.statistics.dbn.zst | Bin 223 -> 228 bytes tests/data/NDEX.IMPACT/test_data.tbbo.dbn.zst | Bin 244 -> 246 bytes .../data/NDEX.IMPACT/test_data.trades.dbn.zst | Bin 207 -> 209 bytes .../OPRA.PILLAR/test_data.cbbo-1m.dbn.zst | Bin 293 -> 294 bytes .../OPRA.PILLAR/test_data.cbbo-1s.dbn.zst | Bin 296 -> 297 bytes .../OPRA.PILLAR/test_data.definition.dbn.zst | Bin 257 -> 265 bytes .../data/OPRA.PILLAR/test_data.mbp-1.dbn.zst | Bin 220 -> 223 bytes .../OPRA.PILLAR/test_data.ohlcv-1d.dbn.zst | Bin 235 -> 234 bytes .../OPRA.PILLAR/test_data.ohlcv-1h.dbn.zst | Bin 244 -> 244 bytes .../OPRA.PILLAR/test_data.ohlcv-1m.dbn.zst | Bin 226 -> 231 bytes .../OPRA.PILLAR/test_data.ohlcv-1s.dbn.zst | Bin 213 -> 216 bytes .../OPRA.PILLAR/test_data.statistics.dbn.zst | Bin 192 -> 195 bytes tests/data/OPRA.PILLAR/test_data.tbbo.dbn.zst | Bin 277 -> 276 bytes .../data/OPRA.PILLAR/test_data.trades.dbn.zst | Bin 242 -> 241 bytes .../XNAS.ITCH/test_data.definition.dbn.zst | Bin 215 -> 223 bytes .../XNAS.ITCH/test_data.imbalance.dbn.zst | Bin 217 -> 222 bytes tests/data/XNAS.ITCH/test_data.mbo.dbn.zst | Bin 246 -> 249 bytes tests/data/XNAS.ITCH/test_data.mbp-1.dbn.zst | Bin 268 -> 270 bytes tests/data/XNAS.ITCH/test_data.mbp-10.dbn.zst | Bin 289 -> 291 bytes .../data/XNAS.ITCH/test_data.ohlcv-1d.dbn.zst | Bin 144 -> 149 bytes .../data/XNAS.ITCH/test_data.ohlcv-1h.dbn.zst | Bin 235 -> 239 bytes .../data/XNAS.ITCH/test_data.ohlcv-1m.dbn.zst | Bin 190 -> 187 bytes .../data/XNAS.ITCH/test_data.ohlcv-1s.dbn.zst | Bin 168 -> 169 bytes tests/data/XNAS.ITCH/test_data.tbbo.dbn.zst | Bin 268 -> 270 bytes tests/data/XNAS.ITCH/test_data.trades.dbn.zst | Bin 228 -> 229 bytes tests/test_historical_bento.py | 14 +++++++------- 80 files changed, 20 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f4ad54..577c422 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,14 @@ # Changelog -## TBD +## 0.55.0 - TBD #### Enhancements - Added `exchanges` parameter to `Reference.corporate_actions.get_range(...)` - Added `is_last` field to live subscription requests which will be used to improve the handling of split subscription requests +- Upgraded `databento-dbn` to 0.35.0 + - This version delivers DBN version 3 (DBNv3), which is the new default + - Improved the performance of the Python `DBNDecoder` #### Bug fixes - Fixed an issue where `JSONDecodeError` would not be caught when using `simplejson` with `requests` (credit: @xuanqing94) diff --git a/README.md b/README.md index c0eb42b..1587f8f 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ The library is fully compatible with the latest distribution of Anaconda 3.9 and The minimum dependencies as found in the `pyproject.toml` are also listed below: - python = "^3.9" - aiohttp = "^3.8.3" -- databento-dbn = "0.34.0" +- databento-dbn = "0.35.0" - numpy= ">=1.23.5" - pandas = ">=1.5.3" - pip-system-certs = ">=4.0" (Windows only) diff --git a/databento/common/dbnstore.py b/databento/common/dbnstore.py index 6cc0d9c..dc8cf80 100644 --- a/databento/common/dbnstore.py +++ b/databento/common/dbnstore.py @@ -380,7 +380,7 @@ def __init__(self, data_source: DataSource) -> None: def __iter__(self) -> Generator[DBNRecord, None, None]: reader = self.reader decoder = DBNDecoder( - upgrade_policy=VersionUpgradePolicy.UPGRADE_TO_V2, + upgrade_policy=VersionUpgradePolicy.UPGRADE_TO_V3, ) while True: raw = reader.read(DBNStore.DBN_READ_SIZE) @@ -394,6 +394,9 @@ def __iter__(self) -> Generator[DBNRecord, None, None]: self._instrument_map.insert_symbol_mapping_msg(record) yield record else: + # This call to decode is required to seek past the decoded records + # This behavior will be fixed in the next version of databento_dbn + _ = decoder.decode() if len(decoder.buffer()) > 0: warnings.warn( BentoWarning("DBN file is truncated or contains an incomplete record"), diff --git a/databento/common/types.py b/databento/common/types.py index a34fbc4..55214c5 100644 --- a/databento/common/types.py +++ b/databento/common/types.py @@ -21,8 +21,9 @@ databento_dbn.ImbalanceMsg, databento_dbn.InstrumentDefMsg, databento_dbn.InstrumentDefMsgV1, - databento_dbn.InstrumentDefMsgV3, + databento_dbn.InstrumentDefMsgV2, databento_dbn.StatMsg, + databento_dbn.StatMsgV1, databento_dbn.StatusMsg, databento_dbn.SymbolMappingMsg, databento_dbn.SymbolMappingMsgV1, diff --git a/databento/live/protocol.py b/databento/live/protocol.py index b10ca82..e36db93 100644 --- a/databento/live/protocol.py +++ b/databento/live/protocol.py @@ -82,7 +82,7 @@ def __init__( self._heartbeat_interval_s = heartbeat_interval_s self._dbn_decoder = databento_dbn.DBNDecoder( - upgrade_policy=VersionUpgradePolicy.UPGRADE_TO_V2, + upgrade_policy=VersionUpgradePolicy.UPGRADE_TO_V3, ) self._gateway_decoder = GatewayDecoder() diff --git a/pyproject.toml b/pyproject.toml index 46e19db..cb01dfd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ aiohttp = [ {version = "^3.8.3", python = "<3.12"}, {version = "^3.9.0", python = "^3.12"} ] -databento-dbn = "0.34.0" +databento-dbn = "0.35.0" numpy = [ {version = ">=1.23.5", python = "<3.12"}, {version = ">=1.26.0", python = "^3.12"} diff --git a/tests/data/EQUS.MINI/test_data.bbo-1m.dbn.zst b/tests/data/EQUS.MINI/test_data.bbo-1m.dbn.zst index c40910b20ff8877bf966f50663f07384e22298b1..32a3fad718082c2055935300d7c6eeb39c1665fa 100644 GIT binary patch delta 82 zcmV-Y0ImPu0pI};D77#B1XzRy0K^GILQVrZ#<0l)#^_fkaz@_-8-q(v*B00GJkjs`F@fG`0702Ui83-DtW#Q*>R delta 81 zcmV-X0IvVw0p9@-D77#B1Xz3q0K^GILQVo%kr0Z#<0l)#^_fkc}$>%{@v;qncpxoeS05by!0|5X43V3pe_N5rh diff --git a/tests/data/EQUS.MINI/test_data.bbo-1s.dbn.zst b/tests/data/EQUS.MINI/test_data.bbo-1s.dbn.zst index f12e109773b76b6abdb357d69298d2e5e51fdc4f..c0b6749bf38d5a94be9111347f5fe70e81585a6c 100644 GIT binary patch delta 71 zcmV-N0J#6v0n`ByD77#B1Xv^n0OSZnLQVr!EE%K# diff --git a/tests/data/EQUS.MINI/test_data.definition.dbn.zst b/tests/data/EQUS.MINI/test_data.definition.dbn.zst index c43ff562382d03ae08e8e0a569f2383f9401780a..7c6e8bb09e44b7d1f24c4b4cafc3bae5fca16f62 100644 GIT binary patch literal 205 zcmV;;05bn5wJ-eySnLG=@&_F!fK3_$Gk^?0fg0Qq0&zeB7DJ`5Fo=qKp4oflK_AK5C8_^hF!S^vh^SVS^>2PP;PKEfSCb=0RaF2 HYBO4}!pl-< literal 198 zcmV;%06G6CwJ-eyShNKIVn-Y&fK3_$Gk^?0ff`IL0F*G`VxWO%FpVY$e)w!i!R8O- zI4c}r8 z$>V}bGo2WquQUxpMEM6_*@Y!4mIryf05ZoT8~_Ykg=?$3D77#B1XxUw2O$Ksn^i-RELH*Lk%K4(2#rQn0UeRCBqT@};h|U| hU?}1{Z;Bh%gS2P`6d*vk!O;L_1`q}T001R0r5XPH8A|{F diff --git a/tests/data/EQUS.MINI/test_data.ohlcv-1d.dbn.zst b/tests/data/EQUS.MINI/test_data.ohlcv-1d.dbn.zst index c8764ca0d63d923cf08a8ad98786a8f52e225030..c609a39f35ce730d9d483f4feb2e5252e48aa400 100644 GIT binary patch delta 60 zcmbQlIE7I_W2^pOmIxIVh7>jzCqL$di2{kr+zbjFEP=PYH-#BaXk^d4$fe=XP}IDb Q@eGdw4jzCqJghi2{j=Tnq{vERwgpmxLwCEpgRez`%Hlw~x)h OxWRytf#JY`Z94(Ks1Skx diff --git a/tests/data/EQUS.MINI/test_data.ohlcv-1h.dbn.zst b/tests/data/EQUS.MINI/test_data.ohlcv-1h.dbn.zst index 43a6b5490f7a66166e329a05323242c855cd6b09..e9ae8bd5a7aa530e47ee39eb90c15177afa926d2 100644 GIT binary patch delta 67 zcmV-J0KEVA0r>$CD77#B1XxT500av}LQVr&;Aj9d0|)~F003}?{W{<46{r9J delta 66 zcmV-I0KNbD0rvqAD77#B1Xw%=02B*ELQVo%kq}z}N0Dn#0T_|I8y{MN9R@s;N5FCq Y(xMemfB@wNM+2A{Ko|i40K+UuJEO!Ci2wiq diff --git a/tests/data/EQUS.MINI/test_data.ohlcv-1m.dbn.zst b/tests/data/EQUS.MINI/test_data.ohlcv-1m.dbn.zst index c2e00e76e088e91b765d343f2e27ebc949af3c9b..5e1737fd96542f67f558cdaf5fd0b5cbde6b9211 100644 GIT binary patch delta 100 zcmcb>c#%;+W2^pOmIxj;h9?{@PJYY@69vk=Gukw*CI*N%u*Du=V`KmWQHBLf0yU`u zYzYTnZGUC(V9O+iFAUw=E;X!XWcG_tWH$P(pc}==$`O!PVA3#?v4s(+uPgFWHvkkK BABO+{ delta 99 zcmcb}c!5zsW2^pOmIxL$hA$j0PJT?069vk=7&6*4ttJMDH?YMXU}Ize0}&t@@i$DC yi6h}_bg4u^lqW+~gKMT3iZJ2Guy$`V{~=RpR8F*64;`443r-QK1Bmh&zFJ6s_)SRtF8| zhnk3r$o`wj6#qY_1YM?9lyy8@=tMJ3t@xV7%8i54crH>477&yqkN diff --git a/tests/data/EQUS.MINI/test_data.tbbo.dbn.zst b/tests/data/EQUS.MINI/test_data.tbbo.dbn.zst index c6cb743e454be1f903f8f5c6f06c97a8e37505de..53d3c567a3ba140c6209d627769cab7598364a78 100644 GIT binary patch delta 69 zcmeyv*uW&9u~q*sOGFDhLkpLSlOJ=!M1dq01|XPNl%`@b!Res4ppnSOw|n@FJ}Br$ YF|u+5 delta 64 zcmV-G0Kfl$0{j6GD77#B1XyGT07MEzLQVo%kq}~$c4j0VP#B1pdSs|4u)uZ-??GC$ W0tyhI+~8;cGXn?%0RRBQ@o(F$3>Fap diff --git a/tests/data/EQUS.MINI/test_data.trades.dbn.zst b/tests/data/EQUS.MINI/test_data.trades.dbn.zst index 29351936dd3f20250b9eb2847006404e4a8ccb87..bc315c88f36f5bd7494c2a205ae0626f1c095680 100644 GIT binary patch delta 61 zcmcb}c$HB=W2^pOmIxg-h89j2CqL$di2_M13_vik$XO<9+h*H>gUwqqSVa^Zb{@RQ Qkj5s!#>l|1;cQJf06Rev^Z)<= delta 56 zcmV-80LTB;0nq^vD77#B1Xv6P07MByLQVo%kq}~$c0(LGz`%C4??GC$0tyhI+~8;c OGXn?%0RR9^?QFaYnG(GK diff --git a/tests/data/GLBX.MDP3/test_data.bbo-1m.dbn.zst b/tests/data/GLBX.MDP3/test_data.bbo-1m.dbn.zst index abd773f241e85f2a335c88de5b3ade1b828bb257..fd5d96db22aee65480353d6d24aa4da522eb693f 100644 GIT binary patch delta 242 zcmVWHD77#B1X$b%00Iv-kqjGuXbC)u`2=bFq-}1c%_BQO_^_iJAy>wK zp*34dnF9azYirVyKn`fYhaRo>_ ze}a>b$Up4}N9W~)E49!KWzw016-yqRtT}zhuzBLHLZ68rGNxQ z|ACW`$Up4}$LFPl>r-f{KJ;SAi3OzfejJa^O7?3%=chd&*ub9{F{K!|bZC7_Cx2Qz z0T63i?*vRnOTvFTjxZ0XfeS@Wq(x2?@W&YEjui(zw7}PwOph4}a&aVq{uS qc@(6NpFDY^k>o5JYRg(6zyMG{E1>oOdJK*RFf)KK0RR9AMm*<4)@vmI diff --git a/tests/data/GLBX.MDP3/test_data.bbo-1s.dbn.zst b/tests/data/GLBX.MDP3/test_data.bbo-1s.dbn.zst index 040d758dfaa80470edf6f9150b897d62eecbdeb2..586823bcefab5c9bd7a52a9822b5476e4643f44a 100644 GIT binary patch delta 223 zcmV<503iQ`0)Ya5D77#B1Xzp*07A879a&Evi8BdYtcYf&_JuEoB%=Y2~L$h>x zdE&{)ms%%A5r+Ap3JwTVY%=SonADcgrMkK?<=`*`Z;Rm>a*d7WdGzacCte&<7k-ID&o7};UTgE{K Z0HBLjK*0g@7#s~?W&mLU008h5ic_zvVG95N delta 227 zcmZo z*+Ruw7(fa@1cPg^has53V{gL93&f@-7Dgh685y!f85mSACH(RN>1#CNi(_VBU~*i+ zz|d~V#L#fg`+qD@put#DHjbIs251nMy|8eew^I`X!>L<&epXBjOpN@s`^y;}fg)2% zR~1=_02OfqG0(|oMb{YP1fG582J4-ZFlXkl{^8V@L!# JusHI8767ZYIGz9i diff --git a/tests/data/GLBX.MDP3/test_data.definition.dbn.zst b/tests/data/GLBX.MDP3/test_data.definition.dbn.zst index 235ea8a61c591ed5b04dadf8205ce92f889bdd47..d75a6426afa103d193479c523dfbd2438bb9b91c 100644 GIT binary patch literal 288 zcmV+*0pI>8wJ-eyScC`wVofqPKyT9+M7{hCbf1qMG*yqmGd|+Vz#$*CSH%L_exR64%{P7ebW191#5Tb|>wn`{)Wya&v z2>5RhlLA^@$w@~lqx2k(H9_P-;)2l2Q=pfJ;MW~2IPKR#uUD2A;KE{hs|!UP>=(F0 z%0>;}=K}Pq5w}kkAs|2l3Ki%GJ1;B&d_(8b2|Hkw2L%osqgc(r7M=o~ZyMN}v2=YG mJ6LWv8Y6`7czV6CWHSH|U9?be(c?#hnL&gB0RR9i=c?Z^_=4d8 literal 290 zcmV+-0p0#6wJ-eySd<6=0**8|Fptw1h*cqMP9GR7azXrftT8V`z=tZ_12l5gte_Pm zfJN{J^jrPh6Z*1Oe3DiKj2%GVo;G9(JEymMT?j0;yHbK4DFlXc@e@N*b|Vb&>$orc zT?|GkK&v@*jq2b20*8dTbN?}s()MdkEJproL*oIZ9wn>)YG|=q{wqZyb9(c_ph^)b zoS9hT%1p>9)cB7OqcUco2?|Jy!}Obvb)iF|LYq*nbD&zs;MXHSU-#>u*8{R}z=h@X z8K@F*wx3`Qi5o$Po{Z0H3BdDk0U7|X+E%UvP8|UO^&|)!00R>4!T<{ZPJz3xFb2-R oShR~cFdDeQ1wr6WT8jVxP(Ul7_5gYejs`F@fG`070LC`x(S-bd4FCWD diff --git a/tests/data/GLBX.MDP3/test_data.mbo.dbn.zst b/tests/data/GLBX.MDP3/test_data.mbo.dbn.zst index e836c74e69f88f5918e58ff8275d223fc0160d2d..7d3851a6d57d41d157ee32c1951367d53f283423 100644 GIT binary patch delta 74 zcmV-Q0JZPx# delta 72 zcmV-O0Js0Y0lfhbD77#B1XyeZ05k|hLQVo%kq~|_5deS@Fd#@602v4ak^{*=WN?kG eoBt$w?VLuBK(^WLsXe*;lR#!p9tdb5l_^$bM)m;mm7Ja}(Qu5YIX>woZ{f5QLz zE0kz1{~H`|vT(uA`dxp846xaH>VoD`S~^d%i96j5Hhany=g4xuOW}8r8KOs~fL|>! zCOiRl)|M+J#|LOB gWE<`pP04zF7QoO&3koiJe6*Mua2Npq0MfW@0Y}uDG5`Po delta 332 zcmV-S0ki(51Ed3gD77#B1X!dD0H#t#J@90!H9%;gg=H&OBgY(nbZg!jSXLeA6o`9z z&AU#4FWx)Z!&Pn};P1)<0?6Tc$MtFaS6Jt0`ZBkqHV~?b33r zOUtePyG#QlbkTx>iyj{>W(FJv0RRBehC4@tMVn** diff --git a/tests/data/GLBX.MDP3/test_data.ohlcv-1d.dbn.zst b/tests/data/GLBX.MDP3/test_data.ohlcv-1d.dbn.zst index 3369763f176f37ffcfffe35b238460fcddb643ab..6368e6c641e3b3331e12f7b940eae87b24911141 100644 GIT binary patch delta 56 zcmbQpIEhg}W2^pOmIx6Rh88v#CqL$di2}*;oDAtarxzV{U}IR&9p-S5@r#5EZ$cVF MA|nGsp68wl0L3H_RsaA1 delta 55 zcmbQlIFV66W2^pOmIxjeh88v#CqJghi2})T91Q6^lNYrzHt0n$va(-DE--1B$=Jfk L$iR^EM>ZG$p1Thq diff --git a/tests/data/GLBX.MDP3/test_data.ohlcv-1h.dbn.zst b/tests/data/GLBX.MDP3/test_data.ohlcv-1h.dbn.zst index f8828a338ef8aaf100b024c0372d0d55de8fb0c5..937aefcd0e57fa1a7fbfd417bb369621bd5461ba 100644 GIT binary patch literal 260 zcmV+f0sHXCeuFe;BA7OmuW+VrUEF9(iE zr~al8M6Q2lcCgj4kRih*A>um7jR+t&8u;N66d9%;etLK)YFIlnDIeua#YXx8-Y`6r zwo$S;J*0b4@&XY6LlFk_0Y-okU?sQeV<@s)l^_@|YZU_-0Dvx90R;!pV{kNpnE`|W K0RR9VaNXQ$Aa4Tz literal 258 zcmV+d0sa0cwJ-eySd<3Uw z{aq!HVE;}HfvaaD!v<`E)Qwfr!!+LQVrrVXay7;K##%E0A>ad1_1y7DM{ljJ!~09 delta 83 zcmV-Z0IdJk0oMT#D77#B1Xw%<0JI21LQVo%kq~GB0FihpH9%kv1wafCkgYndPyj(d pn5hVWKwAsA!+_0jCPfPa09~{K3J##h;Aj9d0|)~F001xFrFbH)87}|; diff --git a/tests/data/GLBX.MDP3/test_data.ohlcv-1s.dbn.zst b/tests/data/GLBX.MDP3/test_data.ohlcv-1s.dbn.zst index 7e960659927da315d948b9f7d11cfff23484223e..037ca385d16987acbe03c02475553fe509107b35 100644 GIT binary patch delta 60 zcmZ3IL7i?0p$rfdnWN6TfVq|5%kX&HW QFq5%`k&%JnOu@%#03O>C0{{R3 delta 60 zcmV-C0K@;O0jU8HD77#B1X#=j0K^7FLQVo%kq~wxn5_lukX^vZig2k_7y#&^6;N;h SJqAYum>EDA0RR9(Ecr%IIk#0OV7670Ma4!M$0FD4A vz#_mYfD<6Fx;_OW0CNF+xV%?d0M`OQ7p;JT1L!e08o_C*}t delta 87 zcmV-d0I2`q0p0-+D77#B1Xy$i0Q3n&LQVo%kq|!t5Rp(E0soO}Jv0;mzzE1L!8zb1 tfC;b&Pz4YI1XkCFKw)qPF2$8L06+n)fZ7A-F*q8)%mBgx003mg8$9RN9K!$r diff --git a/tests/data/GLBX.MDP3/test_data.status.dbn.zst b/tests/data/GLBX.MDP3/test_data.status.dbn.zst index 1ef5d7adf7e3a14cbf7216e3fa8451f144fe36b0..b1c7d5df3ce1bb3e8843b24a100c595bffee089d 100644 GIT binary patch delta 58 zcmdnPxQ9_dW2^pOmWUKq1{Dq$CqL$di2~h$0w2(S* OhT#w+0|VQ`Ze;)i{1O}h diff --git a/tests/data/GLBX.MDP3/test_data.tbbo.dbn.zst b/tests/data/GLBX.MDP3/test_data.tbbo.dbn.zst index a870bfea2acfa5b21a1997b22507ff3abd2eb73a..0aa257687a911e1ec2b10f67986f859423bdaa09 100644 GIT binary patch literal 256 zcmV+b0ssCewJ-eyScC@v0!u11P*2ksAbmT(S!%5 zxqHEIYGH6;kbr?E%zb8B>H&e$gdVKAyT{lXw3chsM$Z5kU9_U$pvOmxnE{3Y0RR9U GxoC7sE_9~= literal 258 zcmV+d0sa0cwJ-eySd<3<0t+fLKu^>dm_j%Z_+%lKOWLEl6IYUdBR{2g2M;$CH@LGw zdgNU(HU$gQW z3jIht%8@ZeXFgV`@_1(<7#RGIy_l zVUQYx!G(b#0D-13_X(K>sX;)1(i9%7xVyvHQnYri;o_kIKo_lmf&=I=I2ypr0Kx$P I05CaY3VMofaR2}S diff --git a/tests/data/GLBX.MDP3/test_data.trades.dbn.zst b/tests/data/GLBX.MDP3/test_data.trades.dbn.zst index 49a9eeb93f06dd8627afc85cd2ec0961e7dcf3a3..8107cf301e215dd5148e5bb23651441e04fba14a 100644 GIT binary patch delta 78 zcmV-U0I~nq0oef%D77#B1XxT40F((tLQVrwJ-eySQH5WQcpNIFp;wcSJ0lKa4d(utVLjgJaw+gLGaZhs}`CJB$$xl z;lA4bch<3LwOUg@X%~$zdJ6j8NJx_@Kj^1_z`xOPU@F_FS7fz#{PtskxI{uws9?pe z!EB~64)uyF7cS+kx9To23H{nHfS>}tMlqVoTJ?$|LbUDk1N=Bhg%?)t_V56(4(M+RM%d*)w6%3`jANihCIwmnwGX6aa5R971(*Q<04M;K E+*6N}jQ{`u literal 335 zcmV-V0kHlkwJ-f-VE`oq0MrCTLQVo%0RR9=MnzRFNlj2eLsS400001_r}Rgw7XSeB zIEj|47X$zS002h-0RR91LQ+m3MomgEFfueD0QS~20r%E40W~%;H!?CY2mpWp3Rh07 zi&jAG18Er?4IpCyCiqc;{V26B{bWD@eFgwh2_!IJb+ZO=fe&$p$Y&FOF=v(kJqfn8 ziHy?nR7Rx=fBg{-7x?uO*`}puiX3!c^H&3sDoLsS8}}O^A?|(vcfttW3Y=(V!C%by z4}QiY;In6n8P=vaCt=~1StA($XA8g-#_VJbAf3YaWMNN4Oc7vZ2n=<8$7b{lK!d3q hz|twauyVJD2Y_`ze^VfNmwG89L$&9w^9c=#8G~OcgYWKZ5GHG7-!YT7I#JTfC4u&!gxjB=(d2>?ia2_l3_Zl`hDX zLfJa~`}jMpr-?`f&)0M8NkRFyT__NPR7JeRl-WzLk8 z;Z;axRAbY#JFWq;(SaeBjo}H0$YDzc*KMH;yXBtpS$nS*|6dO>HpH)qfg$U=Fza&` zhF8i!kv(E!Aa^jlbQfm^QY<;zi(E`5`D;96VQ@8MWDu*A5aM8Uxv;;@*Rg?t;h#?T z{_`vhg8qyQ4XSmb4MFS0xR_2~c3$b|2sHP^@nf84SQy%)fadl;72yV&#|FeqKrGE5 zFU)X&Q-WDKSg^q%*kHTYKZ(r;I5x2K96WYF04y>|^2zp=TM7~%GPzjv85^#I_1w(- M#Vr|J+t0Q~GFaQoRxUe9v^Kk}M zTKZQU8EVRJphLqg|8){~3jeCcH2|3Q9YPC^+a!z{wX`7iR1auC4R2}#&4I$n39!&rh?KNMs@QPco2EIjFQ@}!H&|3;9a=ZVPRLDZ=K zef>MYsdO3+Bkxo$k`Ir6;0vj^Oej zkaE349SSC(QP)7g$~EThAGl475_pY(WmpR~496u|Mx0x9C(Ho2nH)lkRtmJB_LG($ PEi#s30s#O3-A_y*A}w=& literal 260 zcmV+f0sHa7(oYF(0%k#V8B z5Fs7^)xr|rhJ#>}xOlo1-Nf9mRseW-APC_(Fo4lF0;5mlhYv)M<1A!RKx)$uzaBnm zypAH_;~Vb+(ZKjCZ05=H{OaK4? delta 56 zcmV-80LTB{0onl&D77#B1XxrC0CWjNLQVo%kq}&wa8exD!8KUficAW$0%{*f%iw4L OF9cu$0RRB7+~1cUcN4P! diff --git a/tests/data/IFEU.IMPACT/test_data.mbp-1.dbn.zst b/tests/data/IFEU.IMPACT/test_data.mbp-1.dbn.zst index bfe53e169421c0a398aafa17812bcf3be1272c63..b9cf92f7733f00f116bc3041dad7262bda75d823 100644 GIT binary patch delta 58 zcmV-A0LA~-0oVZ$D77#B1Xx4{02B#CLQVr0oDN!D77#B1Xwf%02B#CLQVo%kr0dl7LlDF8f28Q6}=Q_1=K!}mch{g OG8SM00RR97H^sW`I1z*Z diff --git a/tests/data/IFEU.IMPACT/test_data.mbp-10.dbn.zst b/tests/data/IFEU.IMPACT/test_data.mbp-10.dbn.zst index e44499e195b6f0a93c1afb077d1c4b77b7b93bd4..9ff7c17ba0bee4887aff22e3703538a9ee92f9ba 100644 GIT binary patch delta 56 zcmZo*YGM-5*sA}RC1MIYg9xXKlOJ=!M1dYg>xpx{rPh?Ey=qCgL$)x^2p5+&uw!c>+zXlKPo*+r%39AIH& KVBk61vlsxhA`qVd diff --git a/tests/data/IFEU.IMPACT/test_data.ohlcv-1d.dbn.zst b/tests/data/IFEU.IMPACT/test_data.ohlcv-1d.dbn.zst index 85c7d55c66c7aa9b9b469f10997478f253863edc..cfbbc9bec9e71074af7f9dfee53014f9e045d8d3 100644 GIT binary patch literal 165 zcmV;W09yYjwJ-eySgZs90>~aKaBUg`z;?`?{C~ZX9&iHU5UYXW2$+ZnX+^`H{xG`5 z?ts>lLY1FIvP=R0Q=!ivtA+CYl}Kj3KUOe<|5%MUp9jij7zA=og-jrphNq>W>E8=< zUKfO`gieC}yY@T40ymlk=`Bzzc{+dKiK7wWwu6_|?e{`;*dqu4S*sX6fEJk)Xa&?h Tke0#G05TR}0s#O3UwL0!@$5=| literal 163 zcmV;U09^klwJ-eySeyg^0>~aKaBUg`z;?`?{C~ZX9&iHU5UT+sSP+RCK#GPv{b6*A z-2ts9g(^S8M=}Nf2S%Yk*39MmE0WxNf5d1C|FJ50K2MbGKoI1d47pG&4O2@))W09- zye4IKshckOq91$H2N diff --git a/tests/data/IFEU.IMPACT/test_data.ohlcv-1h.dbn.zst b/tests/data/IFEU.IMPACT/test_data.ohlcv-1h.dbn.zst index b9673c3774121446ce3d8418129b2dcacdf71108..96c3ba78cb88e21ccfa6abddf14e2d191a73cde6 100644 GIT binary patch delta 102 zcmZo>YGo48*sA}RC1MRb!xnBACqL$di2{jS3_wuFq{I;Jm_s8&y=JS%zy@fuq5xRmTEZL#gD_?e20=o=R%BA36;S&?S_Vf0$XI|00RRAY G-r~MPTp~#T diff --git a/tests/data/IFEU.IMPACT/test_data.ohlcv-1m.dbn.zst b/tests/data/IFEU.IMPACT/test_data.ohlcv-1m.dbn.zst index eac6cac9763f642638bca0118e17e8c9a24ea59b..4b6b68a4342419e60923d182b4f820e118375e43 100644 GIT binary patch delta 101 zcmaFI_<>PCW2^pOmIxMhh7v9pCqL$di2{jS3_x(oR+b}3aALW+odiR)@tMGcWR8Xd z+nsnWHJLRC2vl51JiuGP%#yPD*a5bTX3>W~7@|^w7KjG?c8FqgXFd_pz{$wKATnKl FG5|GCAe{gJ delta 99 zcmV-p0G$8u0qy}1D77#B1X%P205l3jLQVo%kq}`9$~_$t2vU)IH$WKxTQkg2U}Fe? zz_&uYk`}Z9gn+<<4g+q08z9iu0_HFngfVk42oeIeB9j8GfZ7MrGB_GQ#sW+M003X> FroxPjB3u9f diff --git a/tests/data/IFEU.IMPACT/test_data.ohlcv-1s.dbn.zst b/tests/data/IFEU.IMPACT/test_data.ohlcv-1s.dbn.zst index 250b8132c64f02d08d0732c1a386d78e4077f457..9731edf05b57c54f0891b2876bc2c7d445bd97a1 100644 GIT binary patch delta 78 zcmaFO_?A&XW2^pOmWVfO3{N;+ocx#*CJH2SF#y3!cX5s&!HMO1j8YSqDJtFKy6eZK iz@~luBjc76OB}Qpd~4jo)5kVpBZDv_1H-bG$&vu|9vVXc delta 76 zcmV-S0JHz?0qX$}D77#B1X$b#0Hg^-LQVo%kq}`9=|>k52vU)IE&&^nsv#t8Eg*+{ iJ1NXO42%Set;nQ6E1>p)v6f+5|t`C6%0&rN?W-yu=Vyx&TLo1-`fdmZB1MsrI9RUCU0X2tohh`qU diff --git a/tests/data/IFEU.IMPACT/test_data.tbbo.dbn.zst b/tests/data/IFEU.IMPACT/test_data.tbbo.dbn.zst index c08410f65b92bd48f84046c1925fd2b0019fec3c..4cf68faedf266c62d184d2bbbea5189082f087e8 100644 GIT binary patch delta 57 zcmcc0c%4x|W2^pOmIxa*1`$pdCqL$di2^;0;uGh}OPikS;a}jY#u~-Am48WUfk{IT N>kLK)hGpgjfdKEj5h(xw delta 55 zcmcc4c$HB=W2^pOmIxg-1`$pdCqJghi2^;0ViV`eOX{WNxazY;F>d8wl3HNW(8D@| Lk%3|B<=-9vzH1Q% diff --git a/tests/data/IFEU.IMPACT/test_data.trades.dbn.zst b/tests/data/IFEU.IMPACT/test_data.trades.dbn.zst index 8c0798647d24cfc5d01374e6b0734fd8db4c3950..75a7bc2a23484d86b08bfc48e060c297285d7060 100644 GIT binary patch delta 76 zcmV-S0JHze0m}gpD77#B1X$b!0MrOXLQVrceZ5BwKSL0JiP^$yC=7!03li&3G^wj!X~q}~fX zXRE;*_C@thd?-}KR)7#572;tqMvQ0v`<{W%9HzJ$r*z*sOt8t`DVPA30G|LWbV{Wf z56;?#l(g^OzcR!BJSJw-4td_UcDm12dEeT}YuGps2vXvvajft>%7t&E+ z!~Y#sg7*&IwliXEh(eg@Er?0{FIOelV0+%Lh{`;%9|rnyHA5a@t#bj`{k`x7x#{Y8 ziS2-IG@)AGytDOaO_Wjc@sT0_!=Zov-+%voe-X7QJ%D9KpZ}lDO_|L`xa(%+#Di-Q=*3u?ywf_HR^~%cvC%0R8-tqrT|9|uUFBfzE zd09|Q|39B4X~9%wKK@_+?$ZhTUq%roBZ@ub3Sq%am%|fvw7_aaAXy6g_q}2BE}M<< zU5~uWW?g*KDsYf1WjG@Nlt(=jlU{-0Tn3EDOm?TM6V7kO+Q!0 z3ff?DkksA(T=BmN$2)J0Xoe6Nlg?pXsTlG9Iwd$YU>M<@w?^CvG?jl}&uO`&@mk87 z_pahq0~Rg2-1ltw|84%8ZU4S_m!*kR5AWQaByL%5$m73K>?`DnfR3 zV?m^Ve+F@16u_KsKbmZx0K6l$SGq{_z%lTjG+Ls8vJykY=6wpo(UK66=x582F7hu& z(|%<3zZ_kId+^_2Uh=;b4_V=Wxl^g^^ubB?d7rAHLE!1jO@*A2*MES&sBxKNij9cK zNRp&A00Wtkk+uU8z|c^Z6EVh!fFMGMKtvKqjD!-1j07@)v;zc^RS30F+-iywanh?K zOZ*OEFOl}(zlz3YC_{CaF!ohGJJb{whSIe$SqbGc2)9NOd zve~iA?_iUCqiPOzJ^%a+B5hTpl+`Z!cZBAFjD@10nP!nxJ&g)X8@(n}j)sT+dSPOk z4&|w)OG1X92;rPoBoueCn_aC_P_|FP5yDDl<*>r6JghV;0xQo7L1i|3WX`sLYM!bF Rer7!^o`DJh0062guC`dWECv7o literal 1101 zcmV-T1hV@mwJ-eySnMGHX0EbGVBDDwe+(Wo7*JgeupAT2`?~MedhqW7R8R{BfQWK5 zk1@cz0GWqn6rO=X7{W(`JTTU8^PXXy{N^2UxW7s_?~sG*tm$6&|8M_K`aecP_ul_u2x%@t)SDv} zDUjj6W2M-9gBC3go1LJ~m0CNx^8Ulp2tm$%b1$VgTIzR=dYcYV2x$J<@@0EAcuaW4 zb|Y5ge9t67I`_@bhOjE$RQXqmlYd~+GynVd@BNpe%IAS<(#ib)>kCaP0|1(yXd2o( zPsa6I?|r$PLZi(ob@^3kwYgl* _(R!XV=z3a%hMrRkAc4H&|FZKUC{|^g&=&l31 zlKTG`$5Yt`3hd*n@qW*_lnCQW!28sYt0ZvxK2Y<@AWkDZ|7j@J=x8F+!kHZ89kB*AJ-8g1GD*u zow7|oAVEY(hm)57m`?P_&{`8`tysPDsnKEbpZ^C~i+vYkmB_Bv7lJf1#E5?cc$5rV8vLnjoIw@Y07iUR%_w2_!lV!5VdswN7sc@ZmS3u@q875hFB&L=ulgA|e#YL_SjB z{EcyM9+sJ5l-LfW?Ipu)SA3qP*{D6cfLYrH9WhGoJ@U4`ql9ZOTob3E)LNhg)1HcY zXZWGy{L@_n6SB&In?mHke^uv5F*DcqZZnjg%x-kD)+lmns>>N`lU%NzS_-gv7?pl|$Ea3#KA3Vk_D8GNhrQcj>Q=mB8lA3NA&IQ*VRu80f>2 z{}|&NXo)A%3K zVVD*{+dv<>+w(QBt8IQci-6rFwocBSm3NF_R{a&yN@&GjA+3Z~{1uW4)J#=2*aB+# T{tX5~MTJBv4FLcER0dHv7Uv|$ diff --git a/tests/data/NDEX.IMPACT/test_data.bbo-1m.dbn.zst b/tests/data/NDEX.IMPACT/test_data.bbo-1m.dbn.zst index 2ebf6b7f187109ac54b35e3b78da1089a148e11f..38a7c07ace1ef325f8b73933e06d3cf3e1f574f4 100644 GIT binary patch delta 145 zcmaFBbd^a!W2^pOmIxg#hAjdvPJYY@69p}W85tNDzFjk6{0_vX=ElaRMwS!nOnBIU z!VJM~y&!txHhm5d-SG0B$ix@&jI5K{8I|qD85%emWECEY1a?i^{h(JNDWz*}mw^J~ s&vhQhG)3<-krM?hO}G9bZ%<13A i@+3C#V@soE)s~j01vSA63DeV$a`1XPGTJ*l)&c<7E<*+Y diff --git a/tests/data/NDEX.IMPACT/test_data.bbo-1s.dbn.zst b/tests/data/NDEX.IMPACT/test_data.bbo-1s.dbn.zst index aec1a46501fce8779ad974bcd82ee6135349acc8..754384cf2fa651b3652224354b473fd48fb1a297 100644 GIT binary patch delta 109 zcmeBUYGM-5*sA}RC1MIYg9?v}lOJ=!L_teoMg|6kZ`Vv1zXP$Uxv{aSk>$iXGZr?W z@Wd_VrXmaq3@i*BjNABU=s2u7P^h4=!LBv&fZ^LYdN>hB>@t&XknlRY+!3 L0~*GzAfEyNcB39t delta 102 zcmZo->SGer*sA|GC6Pgunc)hHi<2KyxZj%Y zFo(CynUXTR3dxLWo4krnfHgZXl(H~fVVf9ZHgTFcBj3bxVmuq?cCT9_&g{K2om~?E DWJDnz diff --git a/tests/data/NDEX.IMPACT/test_data.definition.dbn.zst b/tests/data/NDEX.IMPACT/test_data.definition.dbn.zst index 40187ad16e865096620006f99d6018d364bd3ff0..9728a5292a45189670c46241e7d11501a346019d 100644 GIT binary patch literal 268 zcmV+n0rUPSwJ-eySmXx)@`@@lU`^8)gn0rkX-lx6z>dbD2BlF3#6dsEO(_7W4FtB^ zd|LWvs;<>UF=o@vy@aWVZKv{8m3!b=`wn3S7v}~eoLjIXKQv+bEd)cO)PM?;}z&f}*`{g$6OF;qimPhC@V25(D)n&B~iJD*roSiXdnrLWBtC z|IYp$@L)PP8aDr6vXqdIpWrEBSwxBj3wFtW7yvTj3M3%l0+J$jWb^U~bR!!N;Bp+n zJk;QYQ8u@A=E2w$i5I!aF@OMDt}V(L+1%ngVF#GaXb3H;6ljgw SFD*M7$XJ010RR9qj`9fw9C#@J literal 265 zcmV+k0rvhVwJ-eySj-0i5=$yFU`^8)gn0rkX-lx6a8YoOh0Ql00)CMDFfo|squFlr zX{of-(x@hiF`I7gCCnLXG6ky|x4^0P+^zR8E|7chZDX)2LKPhLy8)eZqNxD;>+Y&U z$H=<6-3Gzrza#k=c%P6G5ftrpC$xu42FDEq7Yq?4NeWa>nw6Y1Dt~@3MGzDLp8z>bbZX&A>m zM=Pm*CghwZF9d PXppfm69E7KlxgrY{hWE4 diff --git a/tests/data/NDEX.IMPACT/test_data.mbo.dbn.zst b/tests/data/NDEX.IMPACT/test_data.mbo.dbn.zst index d333ecea35f41ee44542db962f177dc6b9ac19cc..36dde4d1ffeedfd69d672d13acd037caab7fa6ca 100644 GIT binary patch delta 71 zcmaFE_=!NSwjC%wcI2jojmd@dF0sy0OSiqLQVrkxSO5S3 diff --git a/tests/data/NDEX.IMPACT/test_data.mbp-10.dbn.zst b/tests/data/NDEX.IMPACT/test_data.mbp-10.dbn.zst index 30fcd4a62700de2b134c278285fd639ff1049e63..b21ce4726a4f39139f09fceda7bbf45101d049e1 100644 GIT binary patch delta 295 zcmV+?0oeZE0^$OHD77#B1Xz>`0KyMEIv|s?2E*>gc33d)XiWe#bOewj*th{pQ0X(O zMh?QlI|HW44P4t-`+L<(23kE9F-LG?pyc;SibSRze?AiyARJP7XEBDRs%U-^rXGeK$r+UZx0YnHP<6Z;1AhK=wPs*$XdHpv-?Fe! zw}wBs(`mu|V5_8t`>U;q%DX30@b_~Q)0l2lM#2|0fBSQ_0-UUq2v8qmjg!GB{JOzpncFC#JTV1I~-7DrZII_kKl~u5-lzL!HpC t7yzj06fGc;{Y4*3&0>KN7)XE{LW@WWw4nA&%a0Zr%P;`}000I$>*Y2QhhG2y delta 293 zcmV+=0owlJ0^b6ED77#B1Xz3u0K(5ZIv}yL2E*quA6((ircD8WI|wXVWV?`MAj{Wd zNkFJn5ZB0JBXGRy|K}$D10vL$2nJ;KH^aCQdPJrge>xJc4v?L3l#E`m!adn&TTNBS zN*E(aAn68V3V$;gDS_P=J!dR259UG6+W|z9%-!e-_&+s&51RXbE0~u189`k4w<#*q zt>F*qY*cPPxDuh={%UEU^6q^Q{O#Dp6qeg$f$&Am-~M21BDa{rUU)`aOs2@NJqjxv zMCCX#l$FHcR1$ad*9}NfC=_v?3eHpOucN;HiD`}2Q1fDn+M%5M-Yp1|b*2_vrV{$~ r<)NffEFd6}|3n=<&0>KN7)ZbskrZe_?U$AxEi#s20s#O3F$wMTj|+%~ diff --git a/tests/data/NDEX.IMPACT/test_data.ohlcv-1d.dbn.zst b/tests/data/NDEX.IMPACT/test_data.ohlcv-1d.dbn.zst index acfd89272baf5cd9600943d62d36231c23d6b647..da99a496f99e5a4cd5e083591be8378093026172 100644 GIT binary patch delta 59 zcmV-B0L1^I0i*#CD77#B1X!d50CWdLLQVr=0CWdLLQVo%kq~kq2>>95naiZ8Fe`c~&5n23aEV` SErX*0WGui00RRBG{DirDIu;fH diff --git a/tests/data/NDEX.IMPACT/test_data.ohlcv-1m.dbn.zst b/tests/data/NDEX.IMPACT/test_data.ohlcv-1m.dbn.zst index 90012ee1c8d1924181ab3151c9308c0ac4516281..713fc0a1243b6b25bb69f17b9967a1f240259a67 100644 GIT binary patch delta 56 zcmV-80LTB}0pI};D77#B1XzRy02B&DLQVrp)v-Yd#WKy6N VQ2Rhy21f(PSbzxu006=gM!2i`6_o%0 delta 64 zcmV-G0Kfm%0oMT#D77#B1Xw%<0E7udLQVo%kr1FKcm*t2zEy`D@_`&P39!1{icAW$ W0%{*f%iw4L84EB00RR9UA*ph)_!N8q diff --git a/tests/data/NDEX.IMPACT/test_data.statistics.dbn.zst b/tests/data/NDEX.IMPACT/test_data.statistics.dbn.zst index 9ae5f3419c7be55b016c7ff42d14f8aa250bbca1..925fee72c17c463295f7503746b5100e69ed64b7 100644 GIT binary patch delta 100 zcmV-q0Gt2c0ptM?D77#B1X!d705l0iLQVrv)Mj8NM;}mGjd|*XDfW#@# znEAkpfWVn4P?-6^O5hX<00c57D=r79h|Z*NO%<003FptKD|_ BA8!Bv diff --git a/tests/data/NDEX.IMPACT/test_data.tbbo.dbn.zst b/tests/data/NDEX.IMPACT/test_data.tbbo.dbn.zst index 2530efded77290ebdf12f98ac95916415086924c..1044113cdcd31bd0c212808ac677152beadb7e56 100644 GIT binary patch delta 63 zcmV-F0KotB0rmk9D77#B1Xwf&0Q3q(LQVrRfA(TvZEyZg)+v6B$kx7A8 VK!CzuQVj zV^#4Yr}-a_y5?a6m-Z1cd`1f*kAh+n3W}|MT}mlKos=a{*U3=F;e6nnzwW($SuVqP zXuq55qBHVmr{?#WK!uqCQLhmJCz3;v+8Z&=V1(v(%D@FhBRRzeQIHp4EEon(ii%rs bt!nIKv;qn=IETS`0A3cj0|5X4r=$pNQpJ4+ delta 276 zcmV+v0qg#z0;K|fD77#B1X!#H0OE}^H$bh@7tv|oa6WL(U-w?WESF(8 zwBOBD(FyspQ}g>wAi_+6sMiL|iNp|*+8Z#H!K>zX%D@FaBRK^Ekbw#1f`J9Yz)1mj asm9JjE1*k*6C0cd;AMe30RRBPopg@PK{U7x3&S!H*r+>=T7`UL&{0eyg#Zi8s8X-mVOb&nE zslhaoq*sO{y)b^cwbqt8Ya>QoXG>kJUwH2?mw5T43I&^q_LNiUNMQLvr|$PngbX(o zQoOtX03lETARu7FNa{-h0#Amn7}tP58;yJO*AlOpT7yT{)~~SV-E2`WC&Lht7skRc e7*f=2xmGnf8LcSL=kW93W#u~o000C&;e9{}SbuN; delta 279 zcmV+y0qFjz0;mEDD77#B1X#of0K$%u3mktMkZ*h27krVcLP3q}uFuoXthLK?ujCtZ zmLi%=0e}5PfA)W}5Y2BZ7YK&Y$y_aun2d&>`@P>2z(IkPd^|{_s#YNrU?PF_p*psI z!i=!~JvT0oy@>pxl@sQ$GY}TijlLvOd=xbnW d7?dLJQccc7E4uWF?L2r{?+yU~0M7#*ruFG5hGYN$ diff --git a/tests/data/OPRA.PILLAR/test_data.definition.dbn.zst b/tests/data/OPRA.PILLAR/test_data.definition.dbn.zst index cfb96844e0e1b955d20a095ebe481e2628912786..40c55992d6462234679f424bf8dabd8b9af08a41 100644 GIT binary patch literal 265 zcmV+k0rvhVwJ-eySj-0iV#+2gaBVvL*Xe)idi}rkPd*q8z96Z8Vv}vTvXWy)U=yJ| zdL>1-F`l3=AR3th;rrgOyK8s1#Kf)=#_wCz>(M4gW z1qaKVf55yVgtQK#Jse%eTj}Ag?EL4?IVVTw^fF2(M=cAqwf^T%etv*L3=E{gPhlm| zW%@7pSV53t8+Eke&l*4|`2r~*umYQ+Zp?ea02nX}R~^`U5Y1pQPthF6H(~;4UD!zm z0p%M)!J;>k4Vsi;K5zzyi(&hr%_R5QuuB|c4Ip`OJ{E5Dh|3!)n`c2aJQ*!epq;~? PCteo50|5X46$eeVO6_^k literal 257 zcmV+c0sj6dwJ-eySd0e%LP{qva7)t|{O79bXPv8R1rRG79nvSzv5enjTVYAbYDj1| zp*>!41ocMk1q{Yl(;6#N@0{80#&xXUL27Z6T0}6B!C`P$!^8T`+}%Hc61d*Ea|1RW z2KpGNfF#y05jPYHsX~wr45~<{?n0-|;@97MkAm-65rmI|j)Tb&&a8#aw zIy4@SU-A|)j6oK}O=_d%SZ; diff --git a/tests/data/OPRA.PILLAR/test_data.mbp-1.dbn.zst b/tests/data/OPRA.PILLAR/test_data.mbp-1.dbn.zst index f0301d712e5884f0708e2c6eca6c7aaa6977a68f..4cb524f61656b3058e3f5c3b30091d1cd6d6f405 100644 GIT binary patch delta 70 zcmV-M0J;C%0p9@-D77#B1Xz3q0F((tLQVrxXjJ-$<f=K*+G;0^%*03F-7>SKo)-v9sr delta 67 zcmcc5c!yCyW2^pOmWUKKh7wK}CqJghi2~IVd$rUrG%%}WL?|X`JhIO3lIE5S=$+dW X=FrIY+`xkWz-gv(Mh1oy>1{~>^6M5T diff --git a/tests/data/OPRA.PILLAR/test_data.ohlcv-1d.dbn.zst b/tests/data/OPRA.PILLAR/test_data.ohlcv-1d.dbn.zst index 76cb6d9fc7c015234b912c1e4bb9a04122d16b34..45f540222ca0683c6ca7fa573c169c53fb816a57 100644 GIT binary patch delta 105 zcmaFO_=-_LW2^pOmWV5C3@ltOPJYY@69u{gq#3kIMH%?i+1pqdz(A5gL7_p-qCAzu zd4Z__gW&Xo(4xx(c=e7AsQ= zfc_y0CXo(4xx(c=e4k8vSQwxCp zAqpr601hINlrS&0I-=FZofJSo05`Uh10V)AKpQ{^5EwF`8ao-SfC3H9VQ?ORmj&(t J004-nr9xjrAC&+A diff --git a/tests/data/OPRA.PILLAR/test_data.ohlcv-1m.dbn.zst b/tests/data/OPRA.PILLAR/test_data.ohlcv-1m.dbn.zst index c442da21b00aa57d31210a8ced8c88a5deaa5e82..ba6376213e6e2aa01691a3bdb6dd2acab316c0ca 100644 GIT binary patch delta 65 zcmaFF_?%HdW2^pOmWVxU3@w~4PJYY@69sZv7=U16t($_)WS)7`Lya8RLXy=Niv}z> VXvuSq`NO6IvWyH2`TJ|<0sx%R6;A*F delta 59 zcmV-B0L1_20pbA=D77#B1Xz>?07MByLQVo%kq~W>fkq#kNdd$FE<*-XV<)2(P@us% R49)}avcMey006n-?RG^<6xaX& diff --git a/tests/data/OPRA.PILLAR/test_data.ohlcv-1s.dbn.zst b/tests/data/OPRA.PILLAR/test_data.ohlcv-1s.dbn.zst index 91f0a3427a7824e1665799452678b4deb4e7f82c..d8f1544b33f5778547070a7569706c84635c12c9 100644 GIT binary patch delta 87 zcmV-d0I2`f0oVZ$D77#B1Xx4{0Q3k%LQVrqnIAX}jTuCet@ t>LLID0LuYpTNScW0iJ?YGC&4YV<)2(P@us%49)}avcMey002kYjJnMD9c2Ij delta 84 zcmV-a0IUDl0o4HzD77#B1XwHv0Q3k%LQVo%kr0YI7XSc(r4WEHU>qnIAX}jTuCeuu q=pq0B0LuYpTNScW0U#JMpc*?Ft$+dz&S7vKfR_dC0RRA<~U7$1}ul^B*30H6_pd0=D$Q((MK!5l!4F*kq_&=OAGD;N0;b4J~ zIU$5*myh8_@FVWZ7)+Qjze_Iuh+k_!jHwOt3jyoP7>JlXUSOC3)yTcoVbqwgN(RV)YV2gR W0tz%ZhrxLOUKY3m0RR9Jp=fBtycLxI delta 92 zcmV-i0Hgo$0rCM5D77#B1XvUY0K^JJLQVo%kq~MG0RR91k$O2h7yy6}$S&Xm=7N9$ yA&?jJ0BZm^z$4%ntO3NBYM`CtfxwUf)!4~s1r%s-4ukUmyex1B0RRAg8!wrQUmzX; diff --git a/tests/data/XNAS.ITCH/test_data.definition.dbn.zst b/tests/data/XNAS.ITCH/test_data.definition.dbn.zst index 72940b55bdc2baf4d059ca0650b49e4dabc7fea5..2ad81413e26862b0c189cee15734542edf03f90a 100644 GIT binary patch delta 143 zcmcc4c%M-~W2^pOmWUcQ1{V$&CqL$di30YFO%ns;3b`ff>;I?J|Bq5AsK`q!)-~{U z`ws+;K9nu&VbcZ<{Wc(r_!<&%CkjTiuuq>;^7yx%9HGBX7 delta 135 zcmV;20C@l30oMT#D77#B1Xw%<08|J>LQVo%kq|!tWRXxFX@39!0Doive_9}Lcy3{H zEihP4K~n%rMo#}h|Ns9^e}DfQ0AE-RETRA@j>8v(5$-|&3;PDfQUX98*szB(K;Q@h pLnQb^O92M}3O!O;L_1`q}T003gp>w&SNEOh_? diff --git a/tests/data/XNAS.ITCH/test_data.imbalance.dbn.zst b/tests/data/XNAS.ITCH/test_data.imbalance.dbn.zst index 8d47c7f5e904cc9c03badf57654bf1a1c5b6e024..270082a3533a9a5058c51e85c341c1be5ab29be6 100644 GIT binary patch delta 79 zcmV-V0I>hr0p0-+D77#B1Xy$i0F($sLQVr$CD77#B1XxT503-`ULQVrt<8 delta 86 zcmV-c0IC1^0rmk9D77#B1Xwf&02B*ELQVo%kq}OiUtT&E07D0!gVA81t#%n|3@{ED s2$%*pV1dhI1<62jTj_nMv4SB0Kmo0Q+5_k@I2ypq2EqXV0M&!yPSCF&egFUf diff --git a/tests/data/XNAS.ITCH/test_data.mbp-1.dbn.zst b/tests/data/XNAS.ITCH/test_data.mbp-1.dbn.zst index 10e37031e3b2e1e82a1f1ab2ba751c0b5902206e..70b77bb98ab754b02d7a2f880d6869b3f06e80cc 100644 GIT binary patch delta 208 zcmV;>05AWH0*(TID77#B1X%P30HO;mG(c0+7ziUeYl}fN*7fv?iI@xf&W{Y7z#WP> zTSD{@*|SXYanyH$cFQAL%j{fIAllYs3P+RhsVrk5BXNp)1pXb%k)Id}0;3nd8WC;C0w0mVG#Pl10RZTt6;N;hJqAYum>EDA K0RRA2*28&U09!2p delta 206 zcmV;<05SiL0*nHGD77#B1X$z;0HO;mG(c0+7ziV}=30drt?TI(6EPR|ogW!Efjbm& zw&-|5vuBy);O!2$Fb91UP*0AT?D I0GcS~Hxe>k3;+NC diff --git a/tests/data/XNAS.ITCH/test_data.mbp-10.dbn.zst b/tests/data/XNAS.ITCH/test_data.mbp-10.dbn.zst index bc7d230abed83dd09ed46cf0fd5e61324280dc55..e2cb6d1c68d0ccf54137ba21ea10a04f12d6d096 100644 GIT binary patch delta 54 zcmZ3;w3taiW2^pOmWVkV3@zL)PJYY@69qOiYEC@jE|EPmoq=aphU-DcetBMFXFg^| K28LtT8^Zz98xZmU delta 52 zcmV-40L%ZQ0-*vBD77#B1Xzp+0E7!fLQVo%kr1;1D3QcR7GxO%jV@YIaM0sN!_1Jw K0RRBDF60@&KN3>_ diff --git a/tests/data/XNAS.ITCH/test_data.ohlcv-1d.dbn.zst b/tests/data/XNAS.ITCH/test_data.ohlcv-1d.dbn.zst index 07f8ea6a03d884776386685628119900bd03533d..71d490c5ad38fa720d22e3e63f6a9de9eca9312a 100644 GIT binary patch literal 149 zcmdPcs{fZILWhN63Y&|QA9DgD14D$LW3ZlQh_eR+2Ll6xgR%FH5HSXZ{v-F&wJ-eySOf$Bl13RMfG;!#01S}=B8Gr9?JP1>{&cy2VTi4uWO3f@A#II( zWL#UO{~t`D|HBp}PfEl%tvdgp4J1YoUJAo|4v0EfPzTwsN2%Fgr@Rhm8G#Bl`Zi0K yN8}$|nM_Lq6L<5>9->UycQ835>_6;N;hJqAYum>EDA0RRAnfEPLEpEhm) diff --git a/tests/data/XNAS.ITCH/test_data.ohlcv-1h.dbn.zst b/tests/data/XNAS.ITCH/test_data.ohlcv-1h.dbn.zst index d4037e3973db42d751e99975a7cf46f2336fd136..40d6609c1eb03f06eff931c93c51609e35e880f8 100644 GIT binary patch delta 71 zcmaFO_?}TfW2^pOmWV%W3@%(QPJYY@69q!p8GyhuclpGOL}jgp)dv+WoMBmG!mh{A apclo+%6=iaz@%X&V+$iA1H;qT4d(zZZWlxV delta 67 zcmV-J0KEV20qX$}D77#B1X$b#02B&DLQVo%kq}e_No}Wjk!xWh7I25bAkfSNz(`;* Z0O+C>P;dY}21f&!89*2T000^x5|{!z6wv?x diff --git a/tests/data/XNAS.ITCH/test_data.ohlcv-1m.dbn.zst b/tests/data/XNAS.ITCH/test_data.ohlcv-1m.dbn.zst index fcb1e3876d895c432ed2ff21fccc1d720d0f664d..f13c04582852d8bca7edfc7f8ba9a437d1799117 100644 GIT binary patch literal 187 zcmV;s07U;NwJ-eySX>1FGKe25aBUg`{Ph6}1eV*C47~wC0%Fx=tRCSW*0NyV_KpQP z2vxVQAGF@bMq~>A|B^J`1a%IVN2EH^x{YMGArmLk`Y5eH#=n_?#F19PY4QDt!Ir|H zX^zNdvap#X{5#iW=D$;Z2Sf~(LVZ5c&;r?h?8=0CjSDxwU+|ieE)oEs0w4nfv=wpy p0$6=3gaNQXz^#zW3K-y80O+C>P;dY}21f&!89*2T007;dxv}^QQa1nq literal 190 zcmdPcs{fZIqJ))!g~P?kk13Lofg!@rF<8$t#My&^je&u|!Pt98h!_Jy|B?G_p<*ly zKn3m~g26A$#SzTlu{UAl1!6NpQ&T=gCI)T^plpQFVUBA+eNwD`m6{1ZRvQ614IAb% z?yz6t01|&Pzmr*@eU6`J?sAY}ARx@JfJuRwWs7JL15-q;c1w5zE7Nwd4bElSqD<2m Z9mLl*G%>$0w2(S*hT#xU&$B5n`T?t$FYf>V diff --git a/tests/data/XNAS.ITCH/test_data.ohlcv-1s.dbn.zst b/tests/data/XNAS.ITCH/test_data.ohlcv-1s.dbn.zst index 1dbdefb8250ba911a9bfee63409ac42f22ce58c5..9dca6c51b6ca25410f267d45424fc4490458b8d1 100644 GIT binary patch delta 94 zcmZ3%xROyoW2^pOmWVSf3?l3eka`o0PZ>qk?fEc}ZC;9wh#0&IIjb7v9wP-I(UL2^o>g mA|Wf8{47O)b`AoW1%NJE0R;!pV{kNpnE`|W0RRC1!O!oTZ94b> delta 130 zcmV-|0Db?C0*nF&D77#B1X$#e2O%53f^qPrIeTar(T Date: Thu, 29 May 2025 11:08:09 -0700 Subject: [PATCH 8/9] MOD: Increase GitHub test runner timeout --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 22d4c01..9323965 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,13 +30,13 @@ jobs: shell: bash - name: Test (release) - timeout-minutes: 3 + timeout-minutes: 5 if: ${{ github.ref == 'refs/heads/main' }} run: scripts/test.sh -vvv --release shell: bash - name: Test - timeout-minutes: 3 + timeout-minutes: 5 if: ${{ github.ref != 'refs/heads/main' }} run: scripts/test.sh -vvv shell: bash From f3e2a059cbbaffdcc2065e3a21a0e286d75e28f9 Mon Sep 17 00:00:00 2001 From: Nick Macholl Date: Thu, 29 May 2025 11:46:07 -0700 Subject: [PATCH 9/9] VER: Release 0.55.0 --- CHANGELOG.md | 2 +- databento/version.py | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 577c422..302546a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 0.55.0 - TBD +## 0.55.0 - 2025-05-29 #### Enhancements - Added `exchanges` parameter to `Reference.corporate_actions.get_range(...)` diff --git a/databento/version.py b/databento/version.py index 450ee12..8b19221 100644 --- a/databento/version.py +++ b/databento/version.py @@ -1 +1 @@ -__version__ = "0.54.0" +__version__ = "0.55.0" diff --git a/pyproject.toml b/pyproject.toml index cb01dfd..a91ee9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "databento" -version = "0.54.0" +version = "0.55.0" description = "Official Python client library for Databento" authors = [ "Databento ",