Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 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
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ jobs:
shell: bash

- name: Test (release)
timeout-minutes: 2
timeout-minutes: 3
if: ${{ github.ref == 'refs/heads/main' }}
run: scripts/test.sh --release
shell: bash

- name: Test
timeout-minutes: 2
timeout-minutes: 3
if: ${{ github.ref != 'refs/heads/main' }}
run: scripts/test.sh
shell: bash
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# Changelog

## 0.50.0 - 2025-03-18

#### Enhancements
- Added new venues, datasets, and publishers for ICE Futures US, ICE Futures Europe (Financial products), Eurex, and European Energy Exchange (EEX)
- Added export of the following enums from `databento_dbn` to the root `databento` package:
- `Action`
- `InstrumentClass`
- `MatchAlgorithm`
- `RType`
- `SecurityUpdateAction`
- `Side`
- `StatUpdateAction`
- `TriState`
- `UserDefinedInstrument`
- `VersionUpgradePolicy`
- Added export of the following constants from `databento_dbn` to the root `databento` package:
- `DBN_VERSION`
- `FIXED_PRICE_SCALE`
- `UNDEF_ORDER_SIZE`
- `UNDEF_PRICE`
- `UNDEF_STAT_QUANTITY`
- `UNDEF_TIMESTAMP`
- Added export of `BidAskPair` and `ConsolidatedBidAskPair` from `databento_dbn` to the root `databento` package
- Upgraded `databento-dbn` to 0.29.0
- Added `COMMODITY_SPOT` `InstrumentClass` variant

## 0.49.0 - 2025-03-04

#### 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 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.27.0"
- databento-dbn = "0.29.0"
- numpy= ">=1.23.5"
- pandas = ">=1.5.3"
- pip-system-certs = ">=4.0" (Windows only)
Expand Down
36 changes: 36 additions & 0 deletions databento/__init__.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,35 @@
import logging
import warnings

from databento_dbn import DBN_VERSION
from databento_dbn import FIXED_PRICE_SCALE
from databento_dbn import UNDEF_ORDER_SIZE
from databento_dbn import UNDEF_PRICE
from databento_dbn import UNDEF_STAT_QUANTITY
from databento_dbn import UNDEF_TIMESTAMP
from databento_dbn import Action
from databento_dbn import BidAskPair
from databento_dbn import CMBP1Msg
from databento_dbn import Compression
from databento_dbn import ConsolidatedBidAskPair
from databento_dbn import Encoding
from databento_dbn import ErrorMsg
from databento_dbn import ImbalanceMsg
from databento_dbn import InstrumentClass
from databento_dbn import InstrumentDefMsg
from databento_dbn import MatchAlgorithm
from databento_dbn import MBOMsg
from databento_dbn import MBP1Msg
from databento_dbn import MBP10Msg
from databento_dbn import Metadata
from databento_dbn import OHLCVMsg
from databento_dbn import RType
from databento_dbn import Schema
from databento_dbn import SecurityUpdateAction
from databento_dbn import Side
from databento_dbn import StatMsg
from databento_dbn import StatType
from databento_dbn import StatUpdateAction
from databento_dbn import StatusAction
from databento_dbn import StatusMsg
from databento_dbn import StatusReason
Expand All @@ -23,6 +38,9 @@
from databento_dbn import SystemMsg
from databento_dbn import TradeMsg
from databento_dbn import TradingEvent
from databento_dbn import TriState
from databento_dbn import UserDefinedInstrument
from databento_dbn import VersionUpgradePolicy
from databento_dbn.v2 import BBO1MMsg
from databento_dbn.v2 import BBO1SMsg
from databento_dbn.v2 import CBBO1MMsg
Expand Down Expand Up @@ -60,16 +78,25 @@

__all__ = [
"API_VERSION",
"DBN_VERSION",
"FIXED_PRICE_SCALE",
"UNDEF_ORDER_SIZE",
"UNDEF_PRICE",
"UNDEF_STAT_QUANTITY",
"UNDEF_TIMESTAMP",
"Action",
"BBO1MMsg",
"BBO1SMsg",
"BentoClientError",
"BentoError",
"BentoHttpError",
"BentoServerError",
"BidAskPair",
"CBBO1MMsg",
"CBBO1SMsg",
"CMBP1Msg",
"Compression",
"ConsolidatedBidAskPair",
"DBNRecord",
"DBNStore",
"Dataset",
Expand All @@ -80,25 +107,31 @@
"Historical",
"HistoricalGateway",
"ImbalanceMsg",
"InstrumentClass",
"InstrumentDefMsg",
"InstrumentMap",
"Live",
"MBOMsg",
"MBP1Msg",
"MBP10Msg",
"MatchAlgorithm",
"Metadata",
"OHLCVMsg",
"Packaging",
"Publisher",
"RType",
"ReconnectPolicy",
"RecordFlags",
"Reference",
"RollRule",
"SType",
"Schema",
"SecurityUpdateAction",
"Side",
"SplitDuration",
"StatMsg",
"StatType",
"StatUpdateAction",
"StatusAction",
"StatusMsg",
"StatusReason",
Expand All @@ -110,7 +143,10 @@
"TCBBOMsg",
"TradeMsg",
"TradingEvent",
"TriState",
"UserDefinedInstrument",
"Venue",
"VersionUpgradePolicy",
]

# Setup logging
Expand Down
62 changes: 62 additions & 0 deletions databento/common/publishers.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,10 @@ class Venue(StringyMixin, str, Enum):
ICE Futures US.
IFLL
ICE Futures Europe (Financials).
XEUR
Eurex Exchange.
XEER
European Energy Exchange.

"""

Expand Down Expand Up @@ -166,6 +170,8 @@ class Venue(StringyMixin, str, Enum):
EQUS = "EQUS"
IFUS = "IFUS"
IFLL = "IFLL"
XEUR = "XEUR"
XEER = "XEER"

@classmethod
def from_int(cls, value: int) -> Venue:
Expand Down Expand Up @@ -270,6 +276,10 @@ def from_int(cls, value: int) -> Venue:
return Venue.IFUS
if value == 49:
return Venue.IFLL
if value == 50:
return Venue.XEUR
if value == 51:
return Venue.XEER
raise ValueError(f"Integer value {value} does not correspond with any Venue variant")

def to_int(self) -> int:
Expand Down Expand Up @@ -374,6 +384,10 @@ def to_int(self) -> int:
return 48
if self == Venue.IFLL:
return 49
if self == Venue.XEUR:
return 50
if self == Venue.XEER:
return 51
raise ValueError("Invalid Venue")

@property
Expand Down Expand Up @@ -479,6 +493,10 @@ def description(self) -> str:
return "ICE Futures US"
if self == Venue.IFLL:
return "ICE Futures Europe (Financials)"
if self == Venue.XEUR:
return "Eurex Exchange"
if self == Venue.XEER:
return "European Energy Exchange"
raise ValueError("Unexpected Venue value")


Expand Down Expand Up @@ -562,6 +580,10 @@ class Dataset(StringyMixin, str, Enum):
ICE Futures US iMpact.
IFLL_IMPACT
ICE Futures Europe (Financials) iMpact.
XEUR_EOBI
Eurex EOBI.
XEER_EOBI
European Energy Exchange EOBI.

"""

Expand Down Expand Up @@ -602,6 +624,8 @@ class Dataset(StringyMixin, str, Enum):
EQUS_MINI = "EQUS.MINI"
IFUS_IMPACT = "IFUS.IMPACT"
IFLL_IMPACT = "IFLL.IMPACT"
XEUR_EOBI = "XEUR.EOBI"
XEER_EOBI = "XEER.EOBI"

@classmethod
def from_int(cls, value: int) -> Dataset:
Expand Down Expand Up @@ -682,6 +706,10 @@ def from_int(cls, value: int) -> Dataset:
return Dataset.IFUS_IMPACT
if value == 37:
return Dataset.IFLL_IMPACT
if value == 38:
return Dataset.XEUR_EOBI
if value == 39:
return Dataset.XEER_EOBI
raise ValueError(f"Integer value {value} does not correspond with any Dataset variant")

def to_int(self) -> int:
Expand Down Expand Up @@ -762,6 +790,10 @@ def to_int(self) -> int:
return 36
if self == Dataset.IFLL_IMPACT:
return 37
if self == Dataset.XEUR_EOBI:
return 38
if self == Dataset.XEER_EOBI:
return 39
raise ValueError("Invalid Dataset")

@property
Expand Down Expand Up @@ -843,6 +875,10 @@ def description(self) -> str:
return "ICE Futures US iMpact"
if self == Dataset.IFLL_IMPACT:
return "ICE Futures Europe (Financials) iMpact"
if self == Dataset.XEUR_EOBI:
return "Eurex EOBI"
if self == Dataset.XEER_EOBI:
return "European Energy Exchange EOBI"
raise ValueError("Unexpected Dataset value")


Expand Down Expand Up @@ -1052,6 +1088,10 @@ class Publisher(StringyMixin, str, Enum):
ICE Futures Europe (Financials).
IFLL_IMPACT_XOFF
ICE Futures Europe (Financials) - Off-Market Trades.
XEUR_EOBI_XEUR
Eurex EOBI.
XEER_EOBI_XEER
European Energy Exchange EOBI.

"""

Expand Down Expand Up @@ -1155,6 +1195,8 @@ class Publisher(StringyMixin, str, Enum):
IFUS_IMPACT_XOFF = "IFUS.IMPACT.XOFF"
IFLL_IMPACT_IFLL = "IFLL.IMPACT.IFLL"
IFLL_IMPACT_XOFF = "IFLL.IMPACT.XOFF"
XEUR_EOBI_XEUR = "XEUR.EOBI.XEUR"
XEER_EOBI_XEER = "XEER.EOBI.XEER"

@classmethod
def from_int(cls, value: int) -> Publisher:
Expand Down Expand Up @@ -1361,6 +1403,10 @@ def from_int(cls, value: int) -> Publisher:
return Publisher.IFLL_IMPACT_IFLL
if value == 100:
return Publisher.IFLL_IMPACT_XOFF
if value == 101:
return Publisher.XEUR_EOBI_XEUR
if value == 102:
return Publisher.XEER_EOBI_XEER
raise ValueError(f"Integer value {value} does not correspond with any Publisher variant")

def to_int(self) -> int:
Expand Down Expand Up @@ -1567,6 +1613,10 @@ def to_int(self) -> int:
return 99
if self == Publisher.IFLL_IMPACT_XOFF:
return 100
if self == Publisher.XEUR_EOBI_XEUR:
return 101
if self == Publisher.XEER_EOBI_XEER:
return 102
raise ValueError("Invalid Publisher")

@property
Expand Down Expand Up @@ -1774,6 +1824,10 @@ def venue(self) -> Venue:
return Venue.IFLL
if self == Publisher.IFLL_IMPACT_XOFF:
return Venue.XOFF
if self == Publisher.XEUR_EOBI_XEUR:
return Venue.XEUR
if self == Publisher.XEER_EOBI_XEER:
return Venue.XEER
raise ValueError("Unexpected Publisher value")

@property
Expand Down Expand Up @@ -1981,6 +2035,10 @@ def dataset(self) -> Dataset:
return Dataset.IFLL_IMPACT
if self == Publisher.IFLL_IMPACT_XOFF:
return Dataset.IFLL_IMPACT
if self == Publisher.XEUR_EOBI_XEUR:
return Dataset.XEUR_EOBI
if self == Publisher.XEER_EOBI_XEER:
return Dataset.XEER_EOBI
raise ValueError("Unexpected Publisher value")

@property
Expand Down Expand Up @@ -2188,4 +2246,8 @@ def description(self) -> str:
return "ICE Futures Europe (Financials)"
if self == Publisher.IFLL_IMPACT_XOFF:
return "ICE Futures Europe (Financials) - Off-Market Trades"
if self == Publisher.XEUR_EOBI_XEUR:
return "Eurex EOBI"
if self == Publisher.XEER_EOBI_XEER:
return "European Energy Exchange EOBI"
raise ValueError("Unexpected Publisher value")
3 changes: 2 additions & 1 deletion databento/historical/api/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,8 @@ def get_dataset_range(
dataset: Dataset | str,
) -> dict[str, str]:
"""
Request the available range for the dataset from Databento.
Request the available range for the dataset given the user's
entitlements.

Makes a GET `/metadata.get_dataset_range` HTTP request.

Expand Down
2 changes: 1 addition & 1 deletion databento/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.49.0"
__version__ = "0.50.0"
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "databento"
version = "0.49.0"
version = "0.50.0"
description = "Official Python client library for Databento"
authors = [
"Databento <support@databento.com>",
Expand Down Expand Up @@ -32,7 +32,7 @@ aiohttp = [
{version = "^3.8.3", python = "<3.12"},
{version = "^3.9.0", python = "^3.12"}
]
databento-dbn = "0.27.0"
databento-dbn = "0.29.0"
numpy = [
{version = ">=1.23.5", python = "<3.12"},
{version = ">=1.26.0", python = "^3.12"}
Expand Down