Skip to content

Commit 289cec3

Browse files
authored
VER: Release 0.70.0
See release notes.
2 parents 201d05b + d8ab7d1 commit 289cec3

File tree

11 files changed

+110
-41
lines changed

11 files changed

+110
-41
lines changed

CHANGELOG.md

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,23 @@
11
# Changelog
22

3+
## 0.70.0 - 2026-01-27
4+
5+
#### Enhancements
6+
- Added new off-market publisher for Cboe Futures Exchange (`XCBF_PITCH_XOFF`)
7+
- Upgraded `databento-dbn` to 0.48.0:
8+
- Changed the `__repr__` implementation of all records in Python to be more Pythonic
9+
- Added new `StatType` variants to be used by `XCBF.PITCH` dataset:
10+
- `UPPER_PRICE_LIMIT`
11+
- `LOWER_PRICE_LIMIT`
12+
- `BLOCK_VOLUME`
13+
- `VENUE_SPECIFIC_VOLUME_1`
14+
- Added new publisher for Blue Ocean ATS (`OCEA_MEMOIR_OCEA`)
15+
- Reduced the log level of end-of-interval `SystemMsg` records to the debug level
16+
317
## 0.69.0 - 2026-01-13
418

519
#### Enhancements
6-
- Upgraded `databento-dbn` to 0.46.0
20+
- Upgraded `databento-dbn` to 0.46.0:
721
- Added `DBNRecord` union type to Python which includes all record types
822
- Removed `Record` class from Python type stubs to match code: the record classes don't
923
share a base class. Use `DBNRecord` instead.
@@ -28,7 +42,7 @@ This release adds support for Python 3.14.
2842
#### Enhancements
2943
- Added support for Python 3.14
3044
- Functions which accept a path as an argument now expand user directories
31-
- Upgraded `databento-dbn` to 0.45.0
45+
- Upgraded `databento-dbn` to 0.45.0:
3246
- Added support for Python 3.14
3347

3448
## 0.67.0 - 2025-12-02
@@ -50,7 +64,7 @@ This release adds support for Python 3.14.
5064
- Added a property `Live.session_id` which returns the streaming session ID when the client is connected
5165
- Streams added with `Live.add_stream()` which do not define an exception handler will now emit a warning if an exception is raised while executing the callback
5266
- Callback functions added with `Live.add_callback()` which do not define an exception handler will now emit a warning if an exception is raised while executing the callback
53-
- Upgraded `databento-dbn` to 0.44.0
67+
- Upgraded `databento-dbn` to 0.44.0:
5468
- Added logic to set `code` when upgrading version 1 `SystemMsg` to newer versions
5569

5670
#### Bug fixes
@@ -63,7 +77,7 @@ This release adds support for Python 3.14.
6377

6478
#### Enhancements
6579
- Added export of `CBBOMsg` and `BBOMsg` from `databento_dbn` to the root `databento` package
66-
- Upgraded `databento-dbn` to 0.43.0
80+
- Upgraded `databento-dbn` to 0.43.0:
6781
- Added export of `F_PUBLISHER_SPECIFIC` constant to Python
6882
- Added explicit `Unset` variant for `SystemCode` and `ErrorCode`
6983
- Changed Python getters for enum fields to return the underlying type when no known variant can be found. As a result, these getters no longer raise an exception
@@ -74,7 +88,7 @@ This release adds support for Python 3.14.
7488
## 0.64.0 - 2025-09-30
7589

7690
#### Enhancements
77-
- Upgraded `databento-dbn` to 0.42.0
91+
- Upgraded `databento-dbn` to 0.42.0:
7892
- Added `ts_index` and `pretty_ts_index` properties for records in Python which provides the timestamp that is most appropriate for indexing
7993
- Fixed type stub for `channel_id` to allow None
8094

@@ -99,7 +113,7 @@ This release delivers a number of breaking changes to the Python interface for D
99113

100114
#### Breaking changes
101115
- Removed `bill_id` from the response of `batch.list_jobs()` and `batch.submit_job()`
102-
- Upgraded `databento-dbn` to 0.40.0
116+
- Upgraded `databento-dbn` to 0.40.0:
103117
- Removed `hd` property from records in Python. Header fields are accessible
104118
directly from the record
105119
- Removed ability to directly instantiate most enums from an `int` in Python and coercion
@@ -142,7 +156,7 @@ This release delivers a number of breaking changes to the Python interface for D
142156

143157
#### Enhancements
144158
- Added `parquet_schema` option to `DBNStore.to_parquet()` for overriding the pyarrow schema.
145-
- Upgraded `databento-dbn` to 0.39.0
159+
- Upgraded `databento-dbn` to 0.39.0:
146160
- Added `side()` and `unpaired_side()` methods to `ImbalanceMsg` that convert the fields
147161
of the same name to the `Side` enum
148162
- Added `pretty_auction_time` property in Python for `ImbalanceMsg`
@@ -163,7 +177,7 @@ Python
163177
## 0.59.0 - 2025-07-15
164178

165179
#### Enhancements
166-
- Upgraded `databento-dbn` to 0.37.1
180+
- Upgraded `databento-dbn` to 0.37.1:
167181
- Fix buffer growth in `DbnFsm::write_all()`, which is used by `DBNDecoder.write()`
168182

169183
#### Breaking changes
@@ -178,7 +192,7 @@ Python
178192
#### Enhancements
179193
- Changed the `tz` parameter in `DBNStore.to_df()` to accept `datetime.tzinfo` instead of `pytz.BaseTzInfo` explicitly
180194
- Modified the dependency specification for `databento_dbn` to allow for compatible patch versions
181-
- Upgraded `databento-dbn` to 0.36.2
195+
- Upgraded `databento-dbn` to 0.36.2:
182196
- Fixed change in behavior where Python `DBNDecoder.decode()` wouldn't always decode all available data on the first call
183197

184198
## 0.57.1 - 2025-06-17
@@ -187,7 +201,7 @@ Python
187201
- Changed the following Venue, Publisher, and Dataset descriptions:
188202
- "ICE Futures Europe (Financials)" renamed to "ICE Europe Financials"
189203
- "ICE Futures Europe (Commodities)" renamed to "ICE Europe Commodities"
190-
- Upgraded `databento-dbn` to 0.36.1
204+
- Upgraded `databento-dbn` to 0.36.1:
191205
- Fixed setting of `ts_out` property of DbnFsm based on decoded metadata. This
192206
was preventing `ts_out` from being correctly decoded in the Python DBNDecoder
193207
- Fixed decoding of `ts_out` with first records in DBNDecoder
@@ -198,7 +212,7 @@ was preventing `ts_out` from being correctly decoded in the Python DBNDecoder
198212
## 0.57.0 - 2025-06-10
199213

200214
#### Enhancements
201-
- Upgraded `databento-dbn` to 0.36.0
215+
- Upgraded `databento-dbn` to 0.36.0:
202216
- Added missing Python type stubs for several leg properties of `InstrumentDefMsg`
203217

204218
#### Bug fixes
@@ -273,7 +287,7 @@ was preventing `ts_out` from being correctly decoded in the Python DBNDecoder
273287
- Added `exchanges` parameter to `Reference.corporate_actions.get_range(...)`
274288
- Added `is_last` field to live subscription requests which will be used to improve
275289
the handling of split subscription requests
276-
- Upgraded `databento-dbn` to 0.35.0
290+
- Upgraded `databento-dbn` to 0.35.0:
277291
- This version delivers DBN version 3 (DBNv3), which is the new default
278292
- Improved the performance of the Python `DBNDecoder`
279293

@@ -290,7 +304,7 @@ was preventing `ts_out` from being correctly decoded in the Python DBNDecoder
290304
## 0.53.0 - 2025-04-29
291305

292306
#### Enhancements
293-
- Upgraded `databento-dbn` to 0.33.1
307+
- Upgraded `databento-dbn` to 0.33.1:
294308
- Added `SystemCode` and `ErrorCode` enums to indicate types of system and error messages
295309
- Added `code()` methods to SystemMsg and ErrorMsg to retrieve the enum value if one exists and equivalent properties in Python
296310

@@ -301,7 +315,7 @@ was preventing `ts_out` from being correctly decoded in the Python DBNDecoder
301315

302316
#### Enhancements
303317
- Added new optional `id` field to `SubscriptionRequest` class which will be used for improved error messages
304-
- Upgraded `databento-dbn` to 0.32.0
318+
- Upgraded `databento-dbn` to 0.32.0:
305319
- Fixed `RType` variant names in Python to match `Schema`
306320
- Added missing Python type declarations for `RType` variants
307321
- Fixed issue with Python `_hidden_fields` definition that caused `KeyError: _reserved1_00`
@@ -310,7 +324,7 @@ was preventing `ts_out` from being correctly decoded in the Python DBNDecoder
310324
## 0.51.0 - 2025-04-08
311325

312326
#### Enhancements
313-
- Upgraded `databento-dbn` to 0.31.0
327+
- Upgraded `databento-dbn` to 0.31.0:
314328
- Fixed Python type annotation for `SystemMsg.is_heartbeat()` method that was previously annotated as a property
315329

316330
## 0.50.0 - 2025-03-18
@@ -336,7 +350,7 @@ was preventing `ts_out` from being correctly decoded in the Python DBNDecoder
336350
- `UNDEF_STAT_QUANTITY`
337351
- `UNDEF_TIMESTAMP`
338352
- Added export of `BidAskPair` and `ConsolidatedBidAskPair` from `databento_dbn` to the root `databento` package
339-
- Upgraded `databento-dbn` to 0.29.0
353+
- Upgraded `databento-dbn` to 0.29.0:
340354
- Added `COMMODITY_SPOT` `InstrumentClass` variant
341355
- Improved handling of `datetime` and `date` objects in `start` and `end` parameters
342356

@@ -358,7 +372,7 @@ was preventing `ts_out` from being correctly decoded in the Python DBNDecoder
358372
- Added export of `TradingEvent` enum from `databento_dbn` to the root `databento` package
359373
- Added new dataset `EQUS.MINI` and new publishers `EQUS.MINI.EQUS`, `XNYS.TRADES.EQUS`
360374
- Removed upper bound for supported `python` versions; the constraint is now `^3.9`
361-
- Upgraded `databento-dbn` to 0.27.0
375+
- Upgraded `databento-dbn` to 0.27.0:
362376
- Fixed export of `InstrumentDefMsgV3` to Python
363377

364378
#### Bug fixes
@@ -368,7 +382,7 @@ was preventing `ts_out` from being correctly decoded in the Python DBNDecoder
368382
## 0.47.0 - 2024-12-17
369383

370384
#### Enhancements
371-
- Upgraded `databento-dbn` to 0.25.0
385+
- Upgraded `databento-dbn` to 0.25.0:
372386
- Added type aliases for `TBBOMsg`, `BBO1SMsg`, `BBO1MMsg`, `TCBBOMsg`, `CBBO1SMsg`,
373387
`CBBO1MMsg` in Python
374388
- Removed exports for `CBBOMsg` and `BBOMsg` in the root `databento` package in favor of aliased versions from `databento-dbn`
@@ -377,7 +391,7 @@ was preventing `ts_out` from being correctly decoded in the Python DBNDecoder
377391

378392
#### Enhancements
379393
- Removed deprecated `packaging` parameter from `Historical.batch.submit_job`. Job files can be downloaded individually or as zip files after the job completes
380-
- Upgraded `databento-dbn` to 0.24.0
394+
- Upgraded `databento-dbn` to 0.24.0:
381395
- Added handling for `UNDEF_TIMESTAMP` in `pretty_` timestamp getters for Python. They now return `None` in the case of `UNDEF_TIMESTAMP`
382396

383397
## 0.45.0 - 2024-11-12
@@ -387,7 +401,7 @@ This release adds support for Python 3.13.
387401
#### Enhancements
388402
- Added support for Python 3.13
389403
- Added new IntelligentCross venues `ASPN`, `ASMT`, and `ASPI`
390-
- Upgraded `databento-dbn` to 0.23.1
404+
- Upgraded `databento-dbn` to 0.23.1:
391405
- Fixed `pretty_activation` getter in `databento_dbn` returning `expiration` instead
392406
- Fixed some `pretty_` getters in `databento_dbn` didn't correctly handle `UNDEF_PRICE`
393407

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ The library is fully compatible with distributions of Anaconda 2023.x and above.
3232
The minimum dependencies as found in the `pyproject.toml` are also listed below:
3333
- python = "^3.10"
3434
- aiohttp = "^3.8.3"
35-
- databento-dbn = "~0.46.0"
35+
- databento-dbn = "~0.48.0"
3636
- numpy = ">=1.23.5"
3737
- pandas = ">=1.5.3"
3838
- pip-system-certs = ">=4.0" (Windows only)

databento/common/dbnstore.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1528,8 +1528,7 @@ def _format_px(
15281528

15291529
if price_type == PriceType.DECIMAL:
15301530
df[px_fields] = (
1531-
df[px_fields].replace(UNDEF_PRICE, np.nan).applymap(decimal.Decimal)
1532-
/ FIXED_PRICE_SCALE
1531+
df[px_fields].replace(UNDEF_PRICE, np.nan).map(decimal.Decimal) / FIXED_PRICE_SCALE
15331532
)
15341533
elif price_type == PriceType.FLOAT:
15351534
df[px_fields] = df[px_fields].replace(UNDEF_PRICE, np.nan) / FIXED_PRICE_SCALE

databento/common/publishers.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ class Venue(StringyMixin, str, Enum):
120120
European Energy Exchange.
121121
XCBF
122122
Cboe Futures Exchange.
123+
OCEA
124+
Blue Ocean ATS.
123125
124126
"""
125127

@@ -175,6 +177,7 @@ class Venue(StringyMixin, str, Enum):
175177
XEUR = "XEUR"
176178
XEEE = "XEEE"
177179
XCBF = "XCBF"
180+
OCEA = "OCEA"
178181

179182
@classmethod
180183
def from_int(cls, value: int) -> Venue:
@@ -285,6 +288,8 @@ def from_int(cls, value: int) -> Venue:
285288
return Venue.XEEE
286289
if value == 52:
287290
return Venue.XCBF
291+
if value == 53:
292+
return Venue.OCEA
288293
raise ValueError(f"Integer value {value} does not correspond with any Venue variant")
289294

290295
def to_int(self) -> int:
@@ -395,6 +400,8 @@ def to_int(self) -> int:
395400
return 51
396401
if self == Venue.XCBF:
397402
return 52
403+
if self == Venue.OCEA:
404+
return 53
398405
raise ValueError("Invalid Venue")
399406

400407
@property
@@ -506,6 +513,8 @@ def description(self) -> str:
506513
return "European Energy Exchange"
507514
if self == Venue.XCBF:
508515
return "Cboe Futures Exchange"
516+
if self == Venue.OCEA:
517+
return "Blue Ocean ATS"
509518
raise ValueError("Unexpected Venue value")
510519

511520

@@ -595,6 +604,8 @@ class Dataset(StringyMixin, str, Enum):
595604
European Energy Exchange EOBI.
596605
XCBF_PITCH
597606
Cboe Futures Exchange PITCH.
607+
OCEA_MEMOIR
608+
Blue Ocean ATS MEMOIR Depth.
598609
599610
"""
600611

@@ -638,6 +649,7 @@ class Dataset(StringyMixin, str, Enum):
638649
XEUR_EOBI = "XEUR.EOBI"
639650
XEEE_EOBI = "XEEE.EOBI"
640651
XCBF_PITCH = "XCBF.PITCH"
652+
OCEA_MEMOIR = "OCEA.MEMOIR"
641653

642654
@classmethod
643655
def from_int(cls, value: int) -> Dataset:
@@ -724,6 +736,8 @@ def from_int(cls, value: int) -> Dataset:
724736
return Dataset.XEEE_EOBI
725737
if value == 40:
726738
return Dataset.XCBF_PITCH
739+
if value == 41:
740+
return Dataset.OCEA_MEMOIR
727741
raise ValueError(f"Integer value {value} does not correspond with any Dataset variant")
728742

729743
def to_int(self) -> int:
@@ -810,6 +824,8 @@ def to_int(self) -> int:
810824
return 39
811825
if self == Dataset.XCBF_PITCH:
812826
return 40
827+
if self == Dataset.OCEA_MEMOIR:
828+
return 41
813829
raise ValueError("Invalid Dataset")
814830

815831
@property
@@ -897,6 +913,8 @@ def description(self) -> str:
897913
return "European Energy Exchange EOBI"
898914
if self == Dataset.XCBF_PITCH:
899915
return "Cboe Futures Exchange PITCH"
916+
if self == Dataset.OCEA_MEMOIR:
917+
return "Blue Ocean ATS MEMOIR Depth"
900918
raise ValueError("Unexpected Dataset value")
901919

902920

@@ -1116,6 +1134,10 @@ class Publisher(StringyMixin, str, Enum):
11161134
European Energy Exchange EOBI - Off-Market Trades.
11171135
XCBF_PITCH_XCBF
11181136
Cboe Futures Exchange.
1137+
XCBF_PITCH_XOFF
1138+
Cboe Futures Exchange - Off-Market Trades.
1139+
OCEA_MEMOIR_OCEA
1140+
Blue Ocean ATS MEMOIR.
11191141
11201142
"""
11211143

@@ -1224,6 +1246,8 @@ class Publisher(StringyMixin, str, Enum):
12241246
XEUR_EOBI_XOFF = "XEUR.EOBI.XOFF"
12251247
XEEE_EOBI_XOFF = "XEEE.EOBI.XOFF"
12261248
XCBF_PITCH_XCBF = "XCBF.PITCH.XCBF"
1249+
XCBF_PITCH_XOFF = "XCBF.PITCH.XOFF"
1250+
OCEA_MEMOIR_OCEA = "OCEA.MEMOIR.OCEA"
12271251

12281252
@classmethod
12291253
def from_int(cls, value: int) -> Publisher:
@@ -1440,6 +1464,10 @@ def from_int(cls, value: int) -> Publisher:
14401464
return Publisher.XEEE_EOBI_XOFF
14411465
if value == 105:
14421466
return Publisher.XCBF_PITCH_XCBF
1467+
if value == 106:
1468+
return Publisher.XCBF_PITCH_XOFF
1469+
if value == 107:
1470+
return Publisher.OCEA_MEMOIR_OCEA
14431471
raise ValueError(f"Integer value {value} does not correspond with any Publisher variant")
14441472

14451473
def to_int(self) -> int:
@@ -1656,6 +1684,10 @@ def to_int(self) -> int:
16561684
return 104
16571685
if self == Publisher.XCBF_PITCH_XCBF:
16581686
return 105
1687+
if self == Publisher.XCBF_PITCH_XOFF:
1688+
return 106
1689+
if self == Publisher.OCEA_MEMOIR_OCEA:
1690+
return 107
16591691
raise ValueError("Invalid Publisher")
16601692

16611693
@property
@@ -1873,6 +1905,10 @@ def venue(self) -> Venue:
18731905
return Venue.XOFF
18741906
if self == Publisher.XCBF_PITCH_XCBF:
18751907
return Venue.XCBF
1908+
if self == Publisher.XCBF_PITCH_XOFF:
1909+
return Venue.XOFF
1910+
if self == Publisher.OCEA_MEMOIR_OCEA:
1911+
return Venue.OCEA
18761912
raise ValueError("Unexpected Publisher value")
18771913

18781914
@property
@@ -2090,6 +2126,10 @@ def dataset(self) -> Dataset:
20902126
return Dataset.XEEE_EOBI
20912127
if self == Publisher.XCBF_PITCH_XCBF:
20922128
return Dataset.XCBF_PITCH
2129+
if self == Publisher.XCBF_PITCH_XOFF:
2130+
return Dataset.XCBF_PITCH
2131+
if self == Publisher.OCEA_MEMOIR_OCEA:
2132+
return Dataset.OCEA_MEMOIR
20932133
raise ValueError("Unexpected Publisher value")
20942134

20952135
@property
@@ -2307,4 +2347,8 @@ def description(self) -> str:
23072347
return "European Energy Exchange EOBI - Off-Market Trades"
23082348
if self == Publisher.XCBF_PITCH_XCBF:
23092349
return "Cboe Futures Exchange"
2350+
if self == Publisher.XCBF_PITCH_XOFF:
2351+
return "Cboe Futures Exchange - Off-Market Trades"
2352+
if self == Publisher.OCEA_MEMOIR_OCEA:
2353+
return "Blue Ocean ATS MEMOIR"
23102354
raise ValueError("Unexpected Publisher value")

databento/historical/api/batch.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ def submit_job(
135135
The input symbology type to resolve from.
136136
stype_out : SType or str, default 'instrument_id'
137137
The output symbology type to resolve to.
138+
Must be a valid symbology combination with `stype_in`.
139+
See `symbology combinations`. https://www.databento.com/standards-and-conventions/symbology#supported-symbology-combinations
138140
limit : int, optional
139141
The maximum number of records to return. If `None` then no limit.
140142

databento/historical/api/symbology.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ def resolve(
5050
The input symbology type to resolve from.
5151
stype_out : SType or str, default 'instrument_id'
5252
The output symbology type to resolve to.
53+
Must be a valid symbology combination with `stype_in`.
54+
See `symbology combinations`. https://www.databento.com/standards-and-conventions/symbology#supported-symbology-combinations
5355
start_date : date or str
5456
The inclusive UTC start date of the request range.
5557
end_date : date or str, optional

0 commit comments

Comments
 (0)