Skip to content

Commit dee7c64

Browse files
ADD: Add OCEA Publisher definition
1 parent 69ab3b3 commit dee7c64

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
- `LOWER_PRICE_LIMIT`
1212
- `BLOCK_VOLUME`
1313
- `VENUE_SPECIFIC_VOLUME_1`
14+
- Added new publisher for Blue Ocean ATS (`OCEA_MEMOIR_OCEA`)
1415

1516
## 0.69.0 - 2026-01-13
1617

databento/common/publishers.py

Lines changed: 31 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

@@ -1118,6 +1136,8 @@ class Publisher(StringyMixin, str, Enum):
11181136
Cboe Futures Exchange.
11191137
XCBF_PITCH_XOFF
11201138
Cboe Futures Exchange - Off-Market Trades.
1139+
OCEA_MEMOIR_OCEA
1140+
Blue Ocean ATS MEMOIR.
11211141
11221142
"""
11231143

@@ -1227,6 +1247,7 @@ class Publisher(StringyMixin, str, Enum):
12271247
XEEE_EOBI_XOFF = "XEEE.EOBI.XOFF"
12281248
XCBF_PITCH_XCBF = "XCBF.PITCH.XCBF"
12291249
XCBF_PITCH_XOFF = "XCBF.PITCH.XOFF"
1250+
OCEA_MEMOIR_OCEA = "OCEA.MEMOIR.OCEA"
12301251

12311252
@classmethod
12321253
def from_int(cls, value: int) -> Publisher:
@@ -1445,6 +1466,8 @@ def from_int(cls, value: int) -> Publisher:
14451466
return Publisher.XCBF_PITCH_XCBF
14461467
if value == 106:
14471468
return Publisher.XCBF_PITCH_XOFF
1469+
if value == 107:
1470+
return Publisher.OCEA_MEMOIR_OCEA
14481471
raise ValueError(f"Integer value {value} does not correspond with any Publisher variant")
14491472

14501473
def to_int(self) -> int:
@@ -1663,6 +1686,8 @@ def to_int(self) -> int:
16631686
return 105
16641687
if self == Publisher.XCBF_PITCH_XOFF:
16651688
return 106
1689+
if self == Publisher.OCEA_MEMOIR_OCEA:
1690+
return 107
16661691
raise ValueError("Invalid Publisher")
16671692

16681693
@property
@@ -1882,6 +1907,8 @@ def venue(self) -> Venue:
18821907
return Venue.XCBF
18831908
if self == Publisher.XCBF_PITCH_XOFF:
18841909
return Venue.XOFF
1910+
if self == Publisher.OCEA_MEMOIR_OCEA:
1911+
return Venue.OCEA
18851912
raise ValueError("Unexpected Publisher value")
18861913

18871914
@property
@@ -2101,6 +2128,8 @@ def dataset(self) -> Dataset:
21012128
return Dataset.XCBF_PITCH
21022129
if self == Publisher.XCBF_PITCH_XOFF:
21032130
return Dataset.XCBF_PITCH
2131+
if self == Publisher.OCEA_MEMOIR_OCEA:
2132+
return Dataset.OCEA_MEMOIR
21042133
raise ValueError("Unexpected Publisher value")
21052134

21062135
@property
@@ -2320,4 +2349,6 @@ def description(self) -> str:
23202349
return "Cboe Futures Exchange"
23212350
if self == Publisher.XCBF_PITCH_XOFF:
23222351
return "Cboe Futures Exchange - Off-Market Trades"
2352+
if self == Publisher.OCEA_MEMOIR_OCEA:
2353+
return "Blue Ocean ATS MEMOIR"
23232354
raise ValueError("Unexpected Publisher value")

0 commit comments

Comments
 (0)