Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## 0.76.0 - 2026-04-21

#### Enhancements
- Added new publisher values for OPRA MEMX MX2 Options and IEX Options
- Upgraded `databento-dbn` to 0.55.0:
- Performance improvements to `DBNDecoder`

## 0.75.0 - 2026-04-07

#### Enhancements
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ The library is fully compatible with distributions of Anaconda 2023.x and above.
The minimum dependencies as found in the `pyproject.toml` are also listed below:
- python = "^3.10"
- aiohttp = "^3.8.3"
- databento-dbn = "~0.53.0"
- databento-dbn = "~0.55.0"
- numpy = ">=1.23.5"
- pandas = ">=1.5.3"
- pip-system-certs = ">=4.0" (Windows only)
Expand Down
44 changes: 44 additions & 0 deletions databento/common/publishers.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,10 @@ class Venue(StringyMixin, str, Enum):
Cboe Futures Exchange.
OCEA
Blue Ocean ATS.
MXTO
MX2 Options.
IEXO
IEX Options LLC.

"""

Expand Down Expand Up @@ -178,6 +182,8 @@ class Venue(StringyMixin, str, Enum):
XEEE = "XEEE"
XCBF = "XCBF"
OCEA = "OCEA"
MXTO = "MXTO"
IEXO = "IEXO"

@classmethod
def from_int(cls, value: int) -> Venue:
Expand Down Expand Up @@ -290,6 +296,10 @@ def from_int(cls, value: int) -> Venue:
return Venue.XCBF
if value == 53:
return Venue.OCEA
if value == 54:
return Venue.MXTO
if value == 55:
return Venue.IEXO
raise ValueError(f"Integer value {value} does not correspond with any Venue variant")

def to_int(self) -> int:
Expand Down Expand Up @@ -402,6 +412,10 @@ def to_int(self) -> int:
return 52
if self == Venue.OCEA:
return 53
if self == Venue.MXTO:
return 54
if self == Venue.IEXO:
return 55
raise ValueError("Invalid Venue")

@property
Expand Down Expand Up @@ -515,6 +529,10 @@ def description(self) -> str:
return "Cboe Futures Exchange"
if self == Venue.OCEA:
return "Blue Ocean ATS"
if self == Venue.MXTO:
return "MX2 Options"
if self == Venue.IEXO:
return "IEX Options LLC"
raise ValueError("Unexpected Venue value")


Expand Down Expand Up @@ -1138,6 +1156,10 @@ class Publisher(StringyMixin, str, Enum):
Cboe Futures Exchange (CFE) - Off-Market Trades.
OCEA_MEMOIR_OCEA
Blue Ocean ATS MEMOIR.
OPRA_PILLAR_MXTO
OPRA - MEMX MX2 Options.
OPRA_PILLAR_IEXO
OPRA - IEX Options LLC.

"""

Expand Down Expand Up @@ -1248,6 +1270,8 @@ class Publisher(StringyMixin, str, Enum):
XCBF_PITCH_XCBF = "XCBF.PITCH.XCBF"
XCBF_PITCH_XOFF = "XCBF.PITCH.XOFF"
OCEA_MEMOIR_OCEA = "OCEA.MEMOIR.OCEA"
OPRA_PILLAR_MXTO = "OPRA.PILLAR.MXTO"
OPRA_PILLAR_IEXO = "OPRA.PILLAR.IEXO"

@classmethod
def from_int(cls, value: int) -> Publisher:
Expand Down Expand Up @@ -1468,6 +1492,10 @@ def from_int(cls, value: int) -> Publisher:
return Publisher.XCBF_PITCH_XOFF
if value == 107:
return Publisher.OCEA_MEMOIR_OCEA
if value == 108:
return Publisher.OPRA_PILLAR_MXTO
if value == 109:
return Publisher.OPRA_PILLAR_IEXO
raise ValueError(f"Integer value {value} does not correspond with any Publisher variant")

def to_int(self) -> int:
Expand Down Expand Up @@ -1688,6 +1716,10 @@ def to_int(self) -> int:
return 106
if self == Publisher.OCEA_MEMOIR_OCEA:
return 107
if self == Publisher.OPRA_PILLAR_MXTO:
return 108
if self == Publisher.OPRA_PILLAR_IEXO:
return 109
raise ValueError("Invalid Publisher")

@property
Expand Down Expand Up @@ -1909,6 +1941,10 @@ def venue(self) -> Venue:
return Venue.XOFF
if self == Publisher.OCEA_MEMOIR_OCEA:
return Venue.OCEA
if self == Publisher.OPRA_PILLAR_MXTO:
return Venue.MXTO
if self == Publisher.OPRA_PILLAR_IEXO:
return Venue.IEXO
raise ValueError("Unexpected Publisher value")

@property
Expand Down Expand Up @@ -2130,6 +2166,10 @@ def dataset(self) -> Dataset:
return Dataset.XCBF_PITCH
if self == Publisher.OCEA_MEMOIR_OCEA:
return Dataset.OCEA_MEMOIR
if self == Publisher.OPRA_PILLAR_MXTO:
return Dataset.OPRA_PILLAR
if self == Publisher.OPRA_PILLAR_IEXO:
return Dataset.OPRA_PILLAR
raise ValueError("Unexpected Publisher value")

@property
Expand Down Expand Up @@ -2351,4 +2391,8 @@ def description(self) -> str:
return "Cboe Futures Exchange (CFE) - Off-Market Trades"
if self == Publisher.OCEA_MEMOIR_OCEA:
return "Blue Ocean ATS MEMOIR"
if self == Publisher.OPRA_PILLAR_MXTO:
return "OPRA - MEMX MX2 Options"
if self == Publisher.OPRA_PILLAR_IEXO:
return "OPRA - IEX Options LLC"
raise ValueError("Unexpected Publisher value")
2 changes: 1 addition & 1 deletion databento/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.75.0"
__version__ = "0.76.0"
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "databento"
version = "0.75.0"
version = "0.76.0"
description = "Official Python client library for Databento"
readme = "README.md"
requires-python = ">=3.10"
Expand All @@ -10,7 +10,7 @@ dynamic = [ "classifiers" ]
dependencies = [
"aiohttp>=3.8.3,<4.0.0; python_version < '3.12'",
"aiohttp>=3.9.0,<4.0.0; python_version >= '3.12'",
"databento-dbn~=0.53.0",
"databento-dbn~=0.55.0",
"numpy>=1.23.5; python_version < '3.12'",
"numpy>=1.26.0; python_version >= '3.12'",
"pandas>=1.5.3,<4.0.0",
Expand Down
Loading