NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3365 most downloaded on PyPI
Python bindings for encoding and decoding Databento Binary Encoding (DBN)
Last release 5 days ago
29 Sep 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
102 releases · first in 2023
One column per quarter.
Deprecated dbn::dbn::async_decode_record_ref_with_fsm ; DbnFsm can be used directly
cargo test with defaultdbn::decode::dbn::async_decode_record_ref_with_fsm; DbnFsm can beAdded DbnDecoder_process_many to the C API for decoding a batch of records in a single call, which is significantly faster than calling DbnDecoder_pro
DbnDecoder_process_many to the C API for decoding a batch of records in aDbnDecoder_process for eachDbnDecoder_take_metadata to the C API for taking ownership of the metadataMetadata resultdecode_ref() and decode_record_ref() on the sync and async recordDbnFsm::process_batch() for decoding a batch of records in a single call,has_buffered_record() and next_buffered_record() for draining theRecord::header() with a method per header field: raw_rtype(),publisher_id(), instrument_id(), and raw_ts_event(), joining the existingrecord_size(), rtype(), and publisher(). RecordRef, RecordRefMut,RecordBuf, RecordEnum, and RecordRefEnum keep a header() method of their own,hd fieldRecord::raw_rtype() returns u16 and Record::instrument_id() returns u64, widerRecordHeader fields, which are unchangedRType::try_into_schema() takes a u16 and returns None for values outside theRecordHeader rtype fieldread_more and metadata out parameters from DbnDecoder_process. CallDbnDecoder_take_metadata after a Metadata resultDbnFsm::process_all() and DbnFsm::process_many() returning Record with noReadMore when the buffer held no complete recordRecordRefMut accessors, which returned references outliving the borrowself and let safe code hold two mutable references to the same record, or aget_mut() and get_mut_unchecked() now&mut self, and header() returns a reference borrowing selfRecordRefMut, where theDbnFsm::process_all() and DbnFsm::process_many() discarding the recordsDbnFsm::process()Added UnsubscribeAck to the SystemCode enum for acknowledging unsubscribe requests
UnsubscribeAck to the SystemCode enum for acknowledging unsubscribe requestsAsRef<[u8]> for RecordBuf, which produced a slice longer than thelength written through raw_buf_mut() exceeded the capacityAdded MetadataEncoder::encoded_len() for the number of bytes encode() will write
MetadataEncoder::encoded_len() for the number of bytes encode() will writeDbnMetadata_encode and DbnMetadata_encoded_size to the C API for encodingSType to the generated C headermin_price_increment_amount and inst_attrib_valueencode_metadata from the C API. Use DbnMetadata_encode, which takes aDbnMetadataRef describing the full metadata rather than only the dataset, schema,Added LISTING_ID , ISSUER_ID , and SECURITY_ID variants to SType , for use with the reference data API
LISTING_ID, ISSUER_ID, and SECURITY_ID variants to SType, for useDbnDecoder_reset to the C API for decoding another stream with the sametokio version to 1.47, which was released one year agoImproved performance of record field accessors that convert a raw value to an enum, such as side() , action() and rtype() , by no longer copying the d
side(), action() and rtype(), by no longer copying the description whenRecord::raw_index_ts() for records with an unrecognized rtypeFrom<&R> for RecordRef from R: HasRType to R: Record, so aRecordRef can be constructed from any record type, including RecordRef itselfpyo3 to 0.29.2Added ReplayDataAgedOut variant to ErrorCode for when the data for a replay subscription is no longer retained and the schema is incompatible with ski
ReplayDataAgedOut variant to ErrorCode for when the data for a replayzstd feature, enabled by default, gating Zstandard compression andDyn readers, writers, decoders, andDBN_C_HEADER_DIR environment variable to control where the generateddbn.h is writtennative-static-libs.txt to the C static library release archives, recordinglibdbn_c release archivestime to 0.3.55pyo3 to 0.29.1DbnMetadata_end in the C API returning 0 for an unset query end instead ofUNDEF_TIMESTAMP, the value it's encoded with on the wireAdded a push-based decoder to the C API, where the caller owns the read loop and any decompression, feeding bytes in and draining decoded metadata and
finish() method to DynWriter to flush data and finalize thefinish() method to the Python Transcoder and a context managertime to 0.3.54DbnDecoder_* C API with the newDbnDecoder_create now takes a DbnDecoderOptions andDbnDecoderError out parameterAsRef<[u8]> for concrete record types encoding onlysize_of::<Self>() bytes instead of the full record_size() from the headerts_out bytes and corrupted output whents_outAdded an integer representation for VersionUpgradePolicy : the enum is now repr(u8) with discriminants starting at 1, derives TryFromPrimitive and Int
VersionUpgradePolicy: the enum is nowrepr(u8) with discriminants starting at 1, derives TryFromPrimitive andIntoPrimitive, and in Python gained a value property, a from_intAdded new publisher values for Cboe Titanium Cboe Global Indices Feed
StatType variants MwcbLevel1, MwcbLevel2, and MwcbLevel3StatType variants AuctionCollarReferencePrice, AuctionCollarUpperPrice,AuctionCollarLowerPricetime to 0.3.53CGIF to MAINCGIF.TITANIUM to MAIN.CGIFCGIF.TITANIUM.CGIF to MAIN.CGIF.MAINsize field to 0 in MboMsg, TradeMsg, Mbp1Msg, Mbp10Msg,BboMsg, Cmbp1Msg, and CbboMsgAdded MatchAlgorithm variant Allocation
MatchAlgorithm variant Allocationtime version to 0.3.49pyo3 to 0.29.0Added RecordDecoder::seek_to for absolute byte-offset seeking
RecordDecoder::seek_to for absolute byte-offset seekingis_compressed helpers for dynamic DBN readersAdded encode_record_ref_with_ts_out and encode_record_refs_with_ts_out methods to the EncodeRecordRef and AsyncEncodeRecordRef traits. The DBN encoder
encode_record_ref_with_ts_out and encode_record_refs_with_ts_out methods toEncodeRecordRef and AsyncEncodeRecordRef traits. The DBN encoder uses vectoredts_out timestamp without copying the record body, whileRelaxed TsSymbolMap::insert to accept impl Into > for the symbol parameter, allowing callers to pass a String directly
TsSymbolMap::insert to accept impl Into<Arc<String>> for the symbol
parameter, allowing callers to pass a String directlybid_px_00, pretty_ask_px_03, etc.) to the
Python MBP1Msg, MBP10Msg, BBOMsg, CMBP1Msg, and CBBOMsg record classes
for parity with the DataFrame layoutTsSymbolMap::insert to accept impl Into<Arc<String>> for the symbolString directlybid_px_00, pretty_ask_px_03, etc.) to theMBP1Msg, MBP10Msg, BBOMsg, CMBP1Msg, and CBBOMsg record classesAdded INDEX InstrumentClass variant
INDEX InstrumentClass variantStatType variants INDICATIVE_CLOSE_PRICE and VENUE_SPECIFIC_PRICE_1Added DecodeRecordRef::decode_buf_iter() for lazily iterating owned RecordBufs via a standard Iterator
DecodeRecordRef::decode_buf_iter() for lazily iterating owned RecordBufs
via a standard IteratorAsyncDecodeRecordRef::decode_stream() for lazily decoding owned RecordBufs
via a futures::Stream
async-stream and futures-core dependencies (gated on async feature)DbnFsm decode throughput by making AlignedBuffer shifts lazy,
deferring the internal move to buffer refill boundaries (credit: @wtn)TimeSplitterDBNDecoder.decode() performance with pre-allocated output buffersDBNDecoder.write_and_decode() to combine write and decode in a single callpyo3 to 0.28.3
databento_dbn extension module. Not
yet building free-threaded wheels in CIAdded new publisher values for OPRA MEMX MX2 Options and IEX Options
DbnFsm decode throughput on current-version data and AsIs workloads by
caching whether the upgrade policy-version combination requires upgrading, skipping
the per-record upgrade_record dispatch on the fast path (credit: @wtn)Copy and Clone implementations for RecordRefMutAdded RecordBuf, an owned stack-allocated buffer for holding a DBN record of dynamic type. Complements RecordRef (borrowed, dynamic) and concrete type
RecordBuf, an owned stack-allocated buffer for holding a DBN record of
dynamic type. Complements RecordRef (borrowed, dynamic) and concrete types
(owned, static). Supports get(), try_get(), set(), upgrade(), and
cross-capacity PartialEqRecordRefMut for mutable non-owning references to DBN recordsRecordRef::to_owned() and RecordRefMut::to_owned() for converting
borrowed records to an owned RecordBufHash, PartialEq, and Eq for RecordRef, including cross-type equality
between RecordBuf and RecordRefRecordHeader to be CopyRecordBuf, an owned stack-allocated buffer for holding a DBN record of
dynamic type. Complements RecordRef (borrowed, dynamic) and concrete types
(owned, static). Supports get(), try_get(), set(), upgrade(), and
cross-capacity PartialEqRecordRefMut for mutable non-owning references to DBN recordsRecordRef::to_owned() and RecordRefMut::to_owned() for converting
borrowed records to an owned RecordBufHash, PartialEq, and Eq for RecordRef, including cross-type equality
between RecordBuf and RecordRefRecordHeader to be CopyMade ts_out a permanent field on all Python record types, replacing the dynamic __dict__ attribute. ts_out returns an int (UNDEF_TIMESTAMP when not se
ts_out a permanent field on all Python record types, replacing the
dynamic __dict__ attribute. ts_out returns an int (UNDEF_TIMESTAMP when
not set)__dict__ from all Python record classes, eliminating a separate
per-instance allocationFlagSet setter methods are now const, making it easier to define constants, e.g.
const FLAGS: FlagSet = FlagSet::empty().set_snapshot().set_last()record.ts_out now returns UNDEF_TIMESTAMP instead of raising AttributeError
when ts_out is not set. Code using hasattr(record, "ts_out") should check
record.ts_out != UNDEF_TIMESTAMP insteadbytes(record) now includes the 8-byte ts_out suffix when the record was
created with ts_out. Code that separately appends ts_out bytes after
bytes(record) should be updated to avoid double-writingts_out assignmentts_out a permanent field on all Python record types, replacing the
dynamic __dict__ attribute. ts_out returns an int (UNDEF_TIMESTAMP when
not set)__dict__ from all Python record classes, eliminating a separate
per-instance allocationFlagSet setter methods are now const, making it easier to define constants, e.g.
const FLAGS: FlagSet = FlagSet::empty().set_snapshot().set_last()record.ts_out now returns UNDEF_TIMESTAMP instead of raising AttributeError
when ts_out is not set. Code using hasattr(record, "ts_out") should check
record.ts_out != UNDEF_TIMESTAMP insteadbytes(record) now includes the 8-byte ts_out suffix when the record was
created with ts_out. Code that separately appends ts_out bytes after
bytes(record) should be updated to avoid double-writingts_out assignmentAdded __index__ to all int-representable and char-backed Python enums, enabling use with int(), hex(), and as sequence indices
__index__ to all int-representable and char-backed Python enums, enabling
use with int(), hex(), and as sequence indicespyo3 0.28 regression in #[pyclass(dict)] deallocation. Downgraded
pyo3 to 0.27.2dict from BidAskPair and ConsolidatedBidAskPair Python
classesrecord_size() is a method, not a propertypublisher_id, instrument_id, price, size) and added @setter stubs
for enum fields (e.g. action, side)Added SYMBOL_CSTR_LEN constant and versioned variants (SYMBOL_CSTR_LEN_V1, SYMBOL_CSTR_LEN_V2, SYMBOL_CSTR_LEN_V3) to Python, including in each versio
SYMBOL_CSTR_LEN constant and versioned variants (SYMBOL_CSTR_LEN_V1,
SYMBOL_CSTR_LEN_V2, SYMBOL_CSTR_LEN_V3) to Python, including in each versioned
module (v1, v2, v3) as SYMBOL_CSTR_LENv1, v2, and v3 submodule imports to databento_dbn.__init__ so they are
accessible as attributes (e.g. databento_dbn.v1)pyo3 version to 0.28.2Added logic to set code when upgrading version 1 ErrorMsg to newer versions
code when upgrading version 1 ErrorMsg to newer versionsasync-compression dependency version to 0.4.41time version to 0.3.47DbnFsmAdded SkippedRecordsAfterSlowReading to the ErrorCode enum for gateway errors originating from slow client catch-up
SkippedRecordsAfterSlowReading to the ErrorCode enum for gateway errors
originating from slow client catch-upAdded encode_records to EncodeRecord and AsyncEncodeRecord traits for more efficient batch encoding
encode_records to EncodeRecord and AsyncEncodeRecord traits for more
efficient batch encodingencode_record_refs to EncodeRecordRef and AsyncEncodeRecordRef traits with
more efficient vectored I/O implementation for DBNDBNDecoder and new optional
compression parameterencode_records method from the EncodeDbn trait to EncodeRecordAdded initial support for splitting DBN files:
SplitEncoder that supports synchronous and asynchronous encodingSplitter trait that allows for extensible splitting of files while
reusing the SplitEncoder boilerplate.SchemaSplitter, SymbolSplitter, and TimeSplitter which allow for
different methods of splitting DBN filesdbn mbo.dbn --split-by week --output-pattern '{date}.json' --jsonOCEA_MEMOIR_OCEA)AsyncDynReader instances created from with_buffer() would only
decode the first frame of multi-frame Zstandard filesChanged the __repr__ implementation of all records in Python to be more Pythonic
__repr__ implementation of all records in Python to be more PythonicXCBF_PITCH_XOFF)StatType variants to be used by XCBF.PITCH dataset:
UpperPriceLimitLowerPriceLimitBlockVolumeVenueSpecificVolume1pyo3 version to 0.27.2time version to 0.3.45Added DBNRecord union type to Python which includes all record types
DBNRecord union type to Python which includes all record typesRecord class from Python type stubs to match code: the record classes don't
share a base class. Use DBNRecord instead._DBNRecord union type alias which only existed in typestub and wasn't
importable. Use DBNRecord | Metadata insteadAdded new venue, dataset, and publisher for Cboe Futures Exchange (XCBF.PITCH)
XCBF.PITCH)databento_dbnAdded logic to set code when upgrading version 1 SystemMsg to newer versions
code when upgrading version 1 SystemMsg to newer versionsMergeRecordDecoder::with_hints that allows hinting the minimum timestamp from
each decoderDataset::publishers() method to retrieve all Publisher values for a datasettokio version to 1.41, which was released one year agoDbnFsm::consume, though it should have no impactAdded export of F_PUBLISHER_SPECIFIC constant to Python
F_PUBLISHER_SPECIFIC constant to Pythondatabento-dbn due to end of lifeUnset variant for SystemCode and ErrorCodeDefault implementation for SystemCode and ErrorCodeAdded ts_index and pretty_ts_index properties for records in Python which provides the timestamp that is most appropriate for indexing
ts_index and pretty_ts_index properties for records in Python which provides
the timestamp that is most appropriate for indexingpyo3 version to 0.26.0channel_id in Python to allow Nonerecord::TcbboMsgAdded interval method RType and Schema to get the duration for subsample schemas like Ohlcv1H and Cbbo1S
interval method RType and Schema to get the duration for subsample schemas
like Ohlcv1H and Cbbo1Schannel_id to be u8::MAX in MboMsg and u16::MAX
elsewhere since 0 is a valid channel IDinst_attrib_value value from 0 to i32::MAX to match Rustinterval method to RType and Schema to get the duration for subsampled
schemas like Ohlcv1H and Cbbo1Schannel_id to be u8::MAX in MboMsg and u16::MAX
elsewhere since 0 is a valid channel IDinst_attrib_value value from 0 to i32::MAX to match RustMarked ErrorCode and SystemCode non-exhaustive to allow adding future variants without a breaking change
instrument_id and publisher_id setters to all records in PythonDbnVersion new typehd property from records in Python. Header fields are accessible
directly from the recordint in Python and coercion
from int in __eq__. They can still be instantitated with the from_int class method.
Write Side.from_int(66) instead of Side(66) and Side.BID == Side.from_int(66)
instead of Side.BID == 66. Affected enums:
SideActionInstrumentClassMatchAlgorithmUserDefinedInstrumentSecurityUpdateActionSTypeSchemaEncodingCompressionTriState__init__ and __eq__ for RType, SystemCode, and
ErrorCode enums in Python. It can still be instantiated from a str with the
from_str class method. Write RType.from_str("mbo") instead of RType("mbo")
and RType.TRADES == RType.from_str("trades") instead of RType.TRADES == "trades"__init__ type signatures for ErrorMsg and SystemMsg in Python__init__ type signatures in Python__init__ type stub for enums in Python__hash__ implementation for Python enums to match that of their char or int
representationErrorCode and SystemCode non-exhaustive to allow adding future variants
without a breaking changeEndOfInterval variant to SystemCode to notify when all OHLCV bars and
subsampled BBO records have been published for a time intervalImproved JSON encoding performance
PUBLISHER_SPECIFIC flagDefault implementation for SecurityUpdateActionAdded side() and unpaired_side() methods to ImbalanceMsg that convert the fields of the same name to the Side enum
side() and unpaired_side() methods to ImbalanceMsg that convert the fields
of the same name to the Side enumpretty_auction_time property in Python for ImbalanceMsgDefault implementation for StatUpdateActionaction and ts_in_delta getters to BboMsgts_recv getter to StatusMsgInstrumentDefMsg record types from all
DBN versionsImbalanceMsgStatMsg and v1::StatMsg__init__ type signaturesasync-compression dependency version to 0.4.27SystemMsg::code() and ErrorMsg::code() methods to return a Result
instead of an Option to be consistent with other enum conversion methodsauction_time field in ImbalanceMsg to be formatted as a timestampDBNError in
PythonRecordHeader's rtype docstringErrorMsg::new because the function never returns an
errorRenamed Compression::ZStd to Zstd for consistency
Compression::ZStd to Zstd for consistencyflags constants in enums module. Use the top-level flags
constants insteadSCHEMA_COUNT to Schema::COUNTinput_version parameter to the Python Transcoder to only
be required when transcoding to CSV without Metadata, where previously it was always
required when transcoding data without MetadataStatUpdateAction enumCompression::ZStd to Zstd for consistencyflags constants in enums module. Use the top-level flags
constants insteadSCHEMA_COUNT to Schema::COUNTSystemMsg::code() and ErrorMsg::code() methods to return a Result
instead of an Option to be consistent with other enum conversion methodsauction_time field in ImbalanceMsg to be formatted as a timestampinput_version parameter to the Python Transcoder to only
be required when transcoding to CSV without Metadata, where previously it was always
required when transcoding data without MetadataStatUpdateAction enumFixed issue where RecordHeader fields weren't accessible from Python
RecordHeader fields weren't accessible from PythonRenamed the following Venue, Dataset, and Publishers:
XEER to XEEEXEER.EOBI to XEEE.EOBIXEER.EOBI.XEER to XEEE.EOBI.XEEEXEER.EOBI.XOFF to XEEE.EOBI.XOFFCMBP1 constant to CMBP_1 for consistency with MBP_1 and MBP_10DbnFsm::write_all(), which is used by Python
DBNDecoder.write()Upgraded async-compression version to 0.4.25
async-compression version to 0.4.25pyo3 version to 0.25.1DBNDecoder.decode() wouldn't always decode all
available data on the first callUpdated conversion error messages in TryFrom for RecordRefEnum for release of DBN version 3
TryFrom<RecordRef> for RecordRefEnum for
release of DBN version 3TryFrom<RecordRef> for RecordRefEnum for versioning of StatMsg,
SystemMsg, and ErrorMsgBboMsg in TryFrom<RecordRef> for RecordRefEnumAsyncDecodeRecordRef and AsyncDecodeRecord for AsyncDecoder and
AsyncRecordDecoderts_out property of DbnFsm based on decoded metadata. This
was preventing ts_out from being correctly decoded in the Python DBNDecoderts_out with first records in DBNDecoderAdded support for width, fill, and padding when formatting pretty::Ts
pretty::Tspretty::PxAsyncDecodeRecordRef and AsyncDecodeRecordAsyncEncodeRecord, AsyncEncodeRecordRef, and
AsyncEncodeRecordTextExtInstrumentDefMsgDocumented AsyncMetadataDecoder::decode, AsyncDecoder::new, and AsyncDecoder::with_upgrade_policy() as now being cancellation safe
AsyncMetadataDecoder::decode, AsyncDecoder::new, and
AsyncDecoder::with_upgrade_policy() as now being cancellation safeDbnFsm::reset() method that resets state to facilitate reuseDbnFsm::has_decoded_metadata() method to check the internal
stateversionDbnFsm::data() to exclude all processed dataMetadata::upgrade() behavior with UpgradeToV2This version marks the release of DBN version 3 (DBNv3), which is the new default. Decoders support decoding all versions of DBN and the DBN encoders
This version marks the release of DBN version 3 (DBNv3), which is the new default. Decoders support decoding all versions of DBN and the DBN encoders default to upgrading the input to DBNv3.
UpgradeToV3 VersionUpgradePolicy variantDbnFsm internallyBufReader is no
longer recommendedwith_upgrade_policy() construction methods to MetadataDecoder and
AsyncMetadataDecoder to match other decodersRecordRef to IoSlice for use with
Write::write_vectoredDBNDecoder by batching acquisition of the GIL for
multiple recordsversion() setter to CsvEncoderBuilder to configure the output versionpyo3 version to 0.25.0InstrumentDefMsg with new leg_ fields to support multi-leg strategy
definitions.asset to 11 bytes and ASSET_CSTR_LEN to matchraw_instrument_id to 64 bits to support more venues. Like other 64-bit
integer fields, its value will now be quoted in JSONtrading_reference_date, trading_reference_price, and
settl_price_type fields which will be normalized in the statistics schemamd_security_trading_status better served by the status schemaStatMsg has an expanded 64-bit quantity field. Like other 64-bit
integer fields, its value will now be quoted in JSONStatMsg has been moved to v2::StatMsg or StatMsgV2VersionUpgradePolicy to UpgradeToV3From traitversion parameter to the encode_header_for_schema() method on CsvEncoder
and DynEncoder to handle change in definition schema fields between versionsDbnDecoder::from_file and AsyncDbnDecoder::from_file to
no longer include a BufReaderset_upgrade_policy() methods on DbnDecoder, AsyncDbnDecoder,
DbnRecordDecoder, AsyncDbnRecordDecoder now return a Resultcompat::decode_record_ref. It's recommended to use DbnFsm or the decoders
directlytokio version to 1.38, which was released one year agov1::StatMsg to v3::StatMsgupgrade_policy of synchronous DbnRecordTranscoder not writing CSV header when has_metadata=Falsesequence and depth Python type stubs for CMBP1Msg and CBBOMsgMbp1Msg and Mbp10Msg from v1, v2, and v3 modulesAdded a v3::StatMsg record with an expanded 64-bit quantity field
v3::StatMsg record with an expanded 64-bit quantity fieldwith_compression_level methods to DynWriter, AsyncDynWriter, and
AsyncDynBufWriterDBN_VERSION constants to each version module: v1, v2, and v3UNDEF_STAT_QUANTITY constants to each version moduleStatRec for generalizing across different
versions of the statistics recordAsRef<[u8]> implementations for RecordEnum and RecordRefEnumRecord a subtrait of AsRef<[u8]> as all records should be convertible to
bytesAdded with_compression_level methods to DynWriter, AsyncDynWriter, and AsyncDynBufWriter
with_compression_level methods to DynWriter, AsyncDynWriter, and
AsyncDynBufWriterAsyncDynBufWriter interfaceAdded InstitutionalPrioritization variant to MatchAlgorithm
InstitutionalPrioritization variant to MatchAlgorithmInstitutionalPrioritization variant to MatchAlgorithmInstitutionalPrioritization variant to MatchAlgorithmAdded SystemCode and ErrorCode enums to indicate types of system and error messages
SystemCode and ErrorCode enums to indicate types of system and error
messagescode() methods to SystemMsg and ErrorMsg to retrieve the enum value if
one exists and equivalent properties in Pythonv1::SystemMsg to a v2::SystemMsg now sets to code to the heartbeat
valueASSET_CSTR_LEN constants for the size of asset field in InstrumentDefMsg
in different DBN versionsencode_record_with_sym() method to AsyncJsonEncoder which encodes a record
along with its text symbol to match the sync encodercode parameter to SystemCode::new() and ErrorMsg::new()rtype_dispatch and schema_dispatch macro invocations to look more like
function invocationasset field in v3::InstrumentDefMsg from 7 to 11. The
InstrumentDefMsgV3 message size remains 520 bytes.Deprecated macros rtype_async_dispatch, rtype_ts_out_dispatch, rtype_dispatch_with_ts_out, rtype_ts_out_async_dispatch, rtype_ts_out_method_dispatch,…
rtype_dispatch macro to be more flexible: it supports ts_out
dispatching, async functions and methods, and now always verifies the record lengthschema_dispatch macro to be more flexible: it supports ts_out
dispatching and async functions and methodsrtype_dispatch and schema_dispatch macro invocations to look more like
function invocationrtype_async_dispatch, rtype_ts_out_dispatch,
rtype_dispatch_with_ts_out, rtype_ts_out_async_dispatch,
rtype_ts_out_method_dispatch, and rtype_ts_out_async_method_dispatch in favor of
an updated, more flexible rtype_dispatch macroRType variant names in Python to match SchemaRType variants_hidden_fields definition that caused KeyError: _reserved1_00
with CMBP1Msg and other records with ConsolidatedBidAskPairRemoved deprecated dataset module. The top-level Dataset enum and its const as_str() method provide the same functionality for all datasets
Ord and PartialOrd implementations for all enums and FlagSet to allow
for use in ordered containers like BTreeMapdecode_records() method to AsyncDbnDecoder and AsyncDbnRecordDecoder
which is similar to the sync decoder methods of the same namepyo3 version to 0.24.1time version to 0.3.41dataset module. The top-level Dataset enum and its const as_str()
method provide the same functionality for all datasetsSymbolIndex::get_for_rec_ref() methodSystemMsg::is_heartbeat() method that was previously
annotated as a propertyAdded support for mapping symbols from instrument definitions to PitSymbolMap with a new on_instrument_def() method
PitSymbolMap
with a new on_instrument_def() methodInstrumentDefRec for generalizing
across different versions of the instrument definition recordpyo3 version to 0.24.0Deprecated AsyncRecordDecoder::get_mut() and AsyncDecoder::get_mut() as modifying the inner reader after decoding any records could lead to a corrupte…
SkipBytes and AsyncSkipBytes traits which are a subset of the Seek
and AsyncSeek traits respectively, only supporting seeking forward from the current
positionAsyncRecordDecoder::get_mut() and AsyncDecoder::get_mut() as modifying
the inner reader after decoding any records could lead to a corrupted stream and
decoding errors-s/--map-symbols help text (credit: @wtn)Updated enumerations for unreleased US equities datasets and publishers
EQUS for consolidated US equitiesEQUS.MINI and new publishers EQUS.MINI.EQUS and XNYS.TRADES.EQUSpyo3 version to 0.23.4 with improved support for Python 3.13InstrumentDefMsgV3 to PythonAdded v3 namespace in preparation for future DBN version 3 release. DBN version 2 remains the current and default version
v3 namespace in preparation for future DBN version 3 release. DBN version 2
remains the current and default versionv3::InstrumentDefMsg record with new fields to support normalizing multi-leg
strategy definitions
trading_reference_price,
trading_reference_date, and settl_price_typemd_security_trading_statusfrom_instrument_def_v1_to_v3 and from_instrument_def_v2_to_v3 conversion
functions to the C APIMAX_RECORD_LEN constant for the changes to
InstrumentDefMsg in version 3MergeDecoder and MergeRecordDecoder structsMergeDecoder struct and Metadata::merge() methodDecodeRecord trait constraint on StreamIterDecoder's inner decoderDbnMetadata implementation for StreamInnerDecoder if the inner decoder
implements DbnMetadataunsafe in From implementations for record structs from different versionsDeprecated dataset module. The top-level Dataset enum and its const as_str() method provide the same functionality for all datasets. This module will…
VersionUpgradePolicy::Upgrade to UpgradeToV2 in preparation for a future
DBN version 3v1 and v2 modules to allow unambiguously referring to the record types for
a given DBN version regardless of whether the record type has changed. Previously
versioned aliases only existed for record types that have changed between DBN versions
databento_dbn Python packagedataset() method on MetadataBuilder to accept an impl ToString so now
Dataset and &str can be passed directlyTBBOMsg, BBO1SMsg, BBO1MMsg, TCBBOMsg, CBBO1SMsg,
CBBO1MMsg in Pythondataset module. The top-level Dataset enum and its const as_str()
method provide the same functionality for all datasets. This module will be removed in
a future versionUpgraded async-compression version to 0.4.18
async-compression version to 0.4.18proc-macro2 version to 1.0.92Ok(None) when an incomplete record remains in
the stream. This matches the existing behavior of sync DBN decodingUNDEF_TIMESTAMP in pretty_ timestamp getters for Python. They
now return None in the case of UNDEF_TIMESTAMPAdded floating-point getters for price fields
ASPN, ASMT, and ASPIthiserror version to 2.0pyo3 version to 0.22.6pretty_activation getter in databento_dbn returning expiration instead
of activationpretty_ getters in databento_dbn didn't correctly handle UNDEF_PRICEAdded new None Action variant that will be gradually rolled out to historical and live GLBX.MDP3 data
None Action variant that will be gradually rolled out
to historical and live GLBX.MDP3 datac_char fieldsDefault for Action and Sidedatabento_dbnSerialize for (with serde feature enabled) for Venue,
Dataset, Publisher, Compression, SType, Schema, and EncodingRemoved support for Python 3.8 in databento-dbn due to end of life
databento-dbn due to end of lifec_chars_to_str on non-null terminated inputAdded Python type stubs for Record __init__ methods
__init__ methods_reserved3 and _reserved4 fields in CbboMsgchar Record fields to accept a single-character stringsrtype and length to no longer be settable from Python. Users should
use the Record type __init__ methods to initialize recordsCMBP_1 variant in SchemaAdded --omit-header option to dbn CLI to skip encoding the header row when encoding CSVs
--omit-header option to dbn CLI to skip encoding the header row when
encoding CSVsts_event on all recordspyo3 version to 0.22.3XNAS.BASIC and DBEQ.MAXwrite_header parameter for CsvEncoder and DynEncoder. It
now determines whether a header is written automatically in general, not only during
instantiation of the encoder. This makes it possible to use encode_records and
encode_decoded without writing a headerCsvEncoder::new creates an encoder that will always try to write a header. Use the builder with
write_header(false) to create an encoder that won't write a header rowschema is now always optional for the CsvEncoder builder and no longer returns a ResultCbboMsg to better match BboMsgSchema::Cbbo to Schema::Cmbp1debug_assert! on rtype in RecordRef::get_unchecked that was too strict.
The method is already marked unsafe and it's okay to interpret one record type as another type
as long as latter type's size is not greater than the former'sYour coding agent can read these notes before it upgrades. Set up the MCP server →