NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3313 most downloaded on PyPI
Python bindings for encoding and decoding Databento Binary Encoding (DBN)
Last release 4 days ago
18 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
101 releases · first in 2023
One column per quarter.
Added new SType variants for reference data: Isin, UsCode, BbgCompId, BbgCompTicker, Figi, FigiTicker
SType variants for reference data: Isin, UsCode, BbgCompId, BbgCompTicker, Figi, FigiTickerDBEQ.SUMMARYSType::Nasdaq variant to SType::NasdaqSymbolSType::Cms variant to SType::CmsSymbolFixed issue where AsyncDynReader would only decode the first frame of multi-frame Zstandard files
AsyncDynReader would only decode the first frame of multi-frame
Zstandard filesUpdate rtype_dispatch and schema_dispatch macros for BboMsg
rtype_dispatch and schema_dispatch macros for BboMsgRecordEnum and RecordRefEnum for BboMsgAdded BboMsg record struct for future bbo-1m and bbo-1s schemas
BboMsg record struct for future bbo-1m and bbo-1s schemaspyo3 version to 0.22.1json-writer to 0.4Default trait implementation for Mbp1Msg due to it no longer needing
to support multiple rtype values. The default_for_schema function has been removedBbo1sMsg and Bbo1mMsg to be aliases for BboMsgside fields to Side::NoneMetadata initializer to match
required arguments in RustFixed issue where DBN encoders would permit symbols in the metadata that left no space for a null terminator
symbol_cstr_len field rather than
inferring the length from versionAdded new shutdown method to async encoders to more easily ensure the end of output is written and I/O cleaned up. Previously this required a call to
shutdown method to async encoders to more easily ensure the end
of output is written and I/O cleaned up. Previously this required a call to
.get_mut().shutdown().awaitAsyncDynWriter and AsyncDbnEncoder::with_zstd to use a zstd checksum like
the sync equivalentsXNAS.BASIC and XNAS.NLSAsIs to
DbnDecoder::set_upgrade_policy and AsyncDbnDecoder::set_upgrade_policyAdded new stat_type for UncrossingPrice
stat_type for UncrossingPriceXNAS.BASICIFEU.IMPACT and NDEX.IMPACTFINN and FINY publishers.Removed write_dbn_file function deprecated in version 0.14.0 from Python interface. Please use Transcoder instead
InstrumentClass::is_option, is_future, and is_spread
to make it easier to work with multiple instrument class variantsDecodeRecord for DbnRecordDecodernew_inferred, with_buffer, inferred_with_buffer, from_file, get_mut,
and get_ref methods to AsyncDynReader for parity with the sync DynReaderDBNError Python exception that's now the primary exception raised by
databento_dbnStatMsg::ts_in_delta() method that returns a time::Duration for consistency
with other records with a ts_in_delta fieldflags in MboMsg, TradeMsg, Mbp1Msg, Mbp10Msg, and CbboMsg
from u8 to a new FlagSet type with predicate methods for the various bit flags
as well as setters. The u8 value can still be obtained by calling the raw() method.
Debug formattingwrite_dbn_file function deprecated in version 0.14.0 from Python interface.
Please use Transcoder insteadDecodeStream from streaming_iterator crate to fallible_streaming_iterator
to allow better notification of errorsEncodeDbn::encode_stream from accepting an impl StreamingIterator to
accepting an FallibleStreamingIterator to allow bubbling up of decoding errorsstype_in and stype_out in SymbolMappingMsg to
u8::MAX to match C++ client and to reflect an unknown value. This also changes the
value of these fields when upgrading a SymbolMappingMsgV1 to DBNv2CbboMsg to CBBOMsg in Python for consistency with other schemasdisplay_factor to be affected by pretty_px.
While it's not a price, it uses the same fixed-price decimal format as other pricesunit_of_measure_qty in InstrumentDefMsgV1 to be
affected by pretty_px to match behavior of InstrumentDefMsgV2InstrumentClass::is_option, is_future, and is_spread
to make it easier to work with multiple instrument class variantsDecodeRecord for DbnRecordDecodernew_inferred, with_buffer, inferred_with_buffer, from_file, get_mut,
and get_ref methods to AsyncDynReader for parity with the sync DynReaderDBNError Python exception that's now the primary exception raised by
databento_dbnStatMsg::ts_in_delta() method that returns a time::Duration for consistency
with other records with a ts_in_delta fieldflags in MboMsg, TradeMsg, Mbp1Msg, Mbp10Msg, and CbboMsg
from u8 to a new FlagSet type with predicate methods for the various bit flags
as well as setters. The u8 value can still be obtained by calling the raw() method.
Debug formattingwrite_dbn_file function deprecated in version 0.14.0 from Python interface.
Please use Transcoder insteadDecodeStream from streaming_iterator crate to fallible_streaming_iterator
to allow better notification of errorsEncodeDbn::encode_stream from accepting an impl StreamingIterator to
accepting an FallibleStreamingIterator to allow bubbling up of decoding errorsstype_in and stype_out in SymbolMappingMsg to
u8::MAX to match C++ client and to reflect an unknown value. This also changes the
value of these fields when upgrading a SymbolMappingMsgV1 to DBNv2CbboMsg to CBBOMsg in Python for consistency with other schemasdisplay_factor to be affected by pretty_px.
While it's not a price, it uses the same fixed-price decimal format as other pricesunit_of_measure_qty in InstrumentDefMsgV1 to be
affected by pretty_px to match behavior of InstrumentDefMsgV2Added missing Python type stub for StatusMsg
StatusMsgMade Dataset, Venue, and Publisher non-exhaustive to allow future additions without breaking changes
CbboMsg, new rtypes and schema types for Cbbo, Cbbo1s,
Cbbo1m, Tcbbo, Bbo1s, and Bbo1mVolatility and Delta StatType variantsUndefined and TimeProRata MatchAlgorithm variantsActionInstrumentClassMatchAlgorithmSecurityUpdateActionSideStatTypeStatUpdateActionStatusActionStatusReasonTradingEventTriStateUserDefinedInstrumentDefault trait implementation for Mbp1Msg due to it now having multiple
permissible rtype values. Users should use default_for_schema insteadmatch_algorithm for InstrumentDefMsg and InstrumentDefMsgV1
from Fifo to UndefinedDataset, Venue, and Publisher non-exhaustive to allow future additions
without breaking changesXNAS.NLS
and XNYS.TRADES respectively)FINN.NLS and FINY.TRADESMappingIntervalDict was not exportedVersionUpgradePolicy and STypeMade StatType and VersionUpgradePolicy non-exhaustive to allow future additions without breaking changes
StatusMsg and made it public in preparation for releasing a status schemaStatusAction, StatusReason, TradingEvent, and TriState enums for use in
the status schema-t and --tsv flags to DBN CLI to encode tab-separated values (TSV)delimiter method to builders for DynEncoder and CsvEncoder to customize the
field delimiter character, allowing DBN to be encoded as tab-separated values (TSV)AsyncRecordDecoder::decode_ref (credit: @yongqli)ErrorMsgV1 to ErrorMsg and SystemMsgV1
to SystemMsgside field and Side enumasync-compression to 0.4.6strum to 0.26VersionUpgradePolicy to Upgradeupgrade_policy for DbnDecoder, AsyncDbnDecoder, and Python
DBNDecoder to Upgrade so by default the primary record types can always be usedStatusMsg record typeunit_of_measure_qty to be affected by pretty_px. While
it's not a price, it uses the same fixed-price decimal format as other pricesStatType and VersionUpgradePolicy non-exhaustive to allow future additions
without breaking changes_dummy field in ImbalanceMsg and StatMsg to _reservedts_out parameter to RecordDecoder and AsyncRecordDecoder
with_upgrade_policy methodsts_out when upgrading DBNv1 records to version 2StatType::Vwap variant used in the ICE datasetsErrorMsgV1 and SystemMsgV1 in rtype dispatch macrosFixed an import error in the Python type stub file
Improved Debug implementation for all record types
Debug implementation for all record types
Debug implementation for RecordRef to show RecordHeader--schema option to dbn CLI tool to filter a DBN to a particular schema. This
allows outputting saved live data to CSV--limit option to dbn CLI tool with --metadata flagdbn CLI toolCsvEncoder, DynEncoder, and JsonEncoder to assist with the
growing number of customizations
CsvEncoder to make it harder
to forget-s/--map-symbols flag to CLI to create a symbol field in the output with
the text symbol mapped from the instrument IDversion param to Python Metadata contructor choose between DBNv1 and DBNv2EncodeRecordTextExt for DynEncoderDeserialize and Serialize for all records and enums (with serde
feature enabled). This allows serializing records with additional encodings not
supported by the DBN crateHash for all record typesMetadata.__init__metadata_mut method to decoders to get a mutable reference to the decoded
metadataRecordRef::get when length doesn't match expected to be
actionableencode::ZSTD_COMPRESSION_LEVEL constantSystemMsg and ErrorMsg to provide better messages from Live
gateway
err and msg fields for more detailed messagesis_last field to ErrorMsg to indicate the last error in a chaincode field to SystemMsg and ErrorMsg, although currently unusedis_last parameter to ErrorMsg::newcompat::ErrorMsgV1 and compat::SystemMsgV1DecodeDbn trait into DecodeRecord and DbnMetadata traits for more
flexibility. DecodeDbn continues to exist as a trait aliasdecode_stream out of DecodeDbn to its own separate trait DecodeStreamEncodeDbn::encode_decoded and encode_decoded_with_limit to
DecodeRecordRef + DbnMetadataTsSymbolMap when start_date == end_date__eq__ and __ne__ implementations for BidAskPairsize_hint return value for InstrumentDefMsgV1 and
SymbolMappingMsgV1dbn CLI tool would write a broken pipe error to standard error
such as when piping to headMetadataEncoders where version was used to determine
the encoded length of fixed-length symbols instead of the symbol_cstr_len fieldAdded set_upgrade_policy setters to DbnDecoder, DbnRecordDecoder, AsyncDbnDecoder, and AsyncDbnRecordDecoder
set_upgrade_policy setters to DbnDecoder, DbnRecordDecoder,
AsyncDbnDecoder, and AsyncDbnRecordDecoderfrom_schema classmethod for Python RType enumvalue from data.Added new trait compat::SymbolMappingRec for code reuse when working with both versions of SymbolMappingMsg
compat::SymbolMappingRec for code reuse when working with
both versions of SymbolMappingMsgPitSymbolMap::on_symbol_mapping to accept either version of
SymbolMappingMsgPitSymbolMap::on_recordVersionUpgradePolicyInstrumentDefMsgV1 and
SymbolMappingMsgV1DbnDecoder and Transcoder would throw exceptions
when attempting to decode partial metadataThis allows adding additional error variants in the future without a breaking change
SymbolMappingMsg, InstrumentDefMsg, and Metadata. All other record
types and market data schemas are unchangedFrom traitsymbol_cstr_len field to Metadata to indicate the length of fixed symbol
stringsstype_in and stype_out fields to SymbolMappingMsg to provide more context
with live symbology updatesdbn CLI help outputrtype_dispatch family of macros to check record length to handle both
versions of records. This is temporary during the transition periodVersionUpgradePolicy enum and associated methods to the decoders to
allow specifying how to handle decoding records from prior DBN versionsMetadata::upgrade() method to update Metadata from a prior DBN version to
the latest version-u/--upgrade flags to dbn CLI that when passed upgrades DBN data from
previous versions. By default data is decoded as-isAsyncDbnDecoder::decode_record, AsyncDbnDecoder::decode_record_ref,
dbn::AsyncRecordDecoder::decode, and dbn::AsyncRecordDecoder::decode_ref
cancellation safe. This makes them safe to use within a
tokio::select!(https://docs.rs/tokio/latest/tokio/macro.select.html) statementTOB flag to denote top-of-book messagesMAX_RECORD_LEN constant for the length of the largest record typedatabento_dbn with F_ prefixRTypeInstrumentDefMsg is now compat::InstrumentDefMsgV1compat::InstrumentDefMsgV2 is now an alias for InstrumentDefMsgSymbolMappingMsg is now compat::SymbolMappingMsgV1compat::SymbolMappingMsgV2 is now an alias for SymbolMappingMsgSYMBOL_CSTR_LEN constant to 71. Previous value is now in
compat::SYMBOL_CSTR_V1DBN_VERSION constant to 2security_update_action was converted to a raw c_char to safely support adding
variants in the future_dummy in InstrumentDefMsg to _reserved_reserved2, _reserved3, and _reserved5 from InstrumentDefMsg_dummy from SymbolMappingMsgstrike_price within InstrumentDefMsg but left text serialization
order unchangedError non-exhaustive, meaning it can no longer be exhaustively matched against.
This allows adding additional error variants in the future without a breaking changeupgrade_policy parameter to RecordDecoder::with_version constructor to
control whether records of previous versions will be upgradedupgrade_policy parameter to DynDecoder constructors to control whether
records of previous versions will be upgradedsymbol_map parameter for Python Transcoder to symbol_interval_map to
better reflect the date intervals it containswrite_dbn_file function from Python interface. Please use
Transcoder insteadInstrumentDefMsg.pretty_high_limit_priceMetadata.stype_in and Metadata.stype_out Python methodspyproject.tomlDeprecated SymbolIndex::get_for_rec_ref, which was made redundant by loosening the trait bound on SymbolIndex::get_for_rec to accept RecordRefs
SymbolMappingMsgV2::new methodRecord trait for all types beginning with a RecordHeader
index_ts and raw_index_ts methods to Record trait, which returns the
primary timestamp for a recordRecordMut trait for accessing a mutable reference to a RecordHeaderPartialOrd for all record types, based on raw_index_tsDbnEncodable from requiring HasRType to only requiring Record. This means
RecordRefs and concrete records can be encoded with the same methodsHasRType into new Record and RecordMut traits, which are object-
safe: they can be used in Box<dyn>. RecordRef also implements Record, so it's
easier to write code that works for both concrete records as well as RecordRefRecordRef methods made redundant by it implementing Recordinput_compression parameter from Python TranscoderSymbolIndex::get_for_rec_ref, which was made redundant by loosening the
trait bound on SymbolIndex::get_for_rec to accept RecordRefsTsSymbolMap not always using the correct timestamp for getting the mapped
symbolAdded map_symbols support to Python Transcoder
map_symbols support to Python Transcoderfrom_dataset_venue function to Publisher to facilitate destructuringDefault for most records to make testing easierfrom_zstd function to AsyncDbnEncoder to match synchronous encoderenums::flags, enums::rtype, record::BidAskPair,
record::RecordHeader, and record::WithTsOut to simplify imports--fragment CLI flag for writing DBN without the metadata header--input-dbn-version CLI option for specifying the DBN version of a DBN
fragmentserde::Deserialize implementations for Dataset, Venue, and Publisherdatabento_dbnRecordDecoder::with_version for future use when dealing with compatibility
between different DBN versionsrtype_ts_out_method_dispatch,
rtype_ts_out_async_method_dispatch, rtype_method_dispatch, and
schema_ts_out_method_dispatchInstrumentDefMsgV2 and SymbolMappingMsgV2 for forward compatibility with a
version of DBNTsSymbolMap and PitSymbolMap to aid with both historical and live symbology
stype_in=InstrumentIdMetadata::symbol_map to return TsSymbolMapMetadata::symbol_map_for_date to return PitSymbolMapDefault implementation for BidAskPair by setting prices to UNDEF_PRICEts_out parameter to encode_header_for_schema in CsvEncoder and
DynEncoder to allow controlling whether "ts_out" is in the headerfrom_dataset_venue function to Publisher to facilitate
destructuring.Upgraded async-compression to 0.4.3
async-compression to 0.4.3csv to 1.3num_enum to 0.7Added new EncodeRecordTextExt trait which is implemented for the CSV and JSON encoders. It adds two methods for encoding a symbol field along side the
EncodeRecordTextExt trait which is implemented for the CSV and JSON
encoders. It adds two methods for encoding a symbol field along side the rest of the
record fields, matching the behavior of map_symbols in the historical APIencode_header and encode_header_for_schema methods to CsvEncoder and
DynEncoder to give more flexibility for encoding CSV headersfrom_file and from_zstd_file functions to AsyncDbnDecoder to match
synchronous decoderCopy for RecordRef to make it behave more like a referenceAsyncDbnEncoder for simpler DBN encoding and to match sync APIRecordEnum and RecordRefEnum to more easily be able to pattern match on
records of different typesARCX.PILLAR.ARCX publisherFrom DBN records for RecordRefClosePrice and NetChange StatTypes used in the OPRA.PILLAR datasetencode_record_ref into a safe method with no arguments and an unsafe method
with a ts_out parameter to reduce unsafe usage when not working with live data
that may contain ts_outdbn CLI not writing CSV header when using --fragment and --zstd-fragment
flagsRecordRef::get_uncheckedstype_out before building Metadata symbology mapsFixed query range checking in Metadata::symbol_map_for_date
Metadata::symbol_map_for_datedebug_assert_eq! check for alignment in RecordRef::newChanged Metadata::symbol_map and symbol_map_for_date to return String values instead of &str, which made it difficult to use
Metadata::symbol_map and symbol_map_for_date to return String values
instead of &str, which made it difficult to useAdded start and end getters to Metadata that return time::OffsetDateTime
start and end getters to Metadata that return time::OffsetDateTimesymbol_map and symbol_map_for_date methods to Metadata to aid historical
symbology mapping from the instrument IDs in recordsDynReader struct for being agnostic about whether an input stream is
zstd-compressedRecordRef::get by adding length checkTranscoder class for converting DBN to JSON and CSV with optional
zstd compressionhas_metadata parameter to Python DBNDecoder to allow
decoding plain records by passing False. By default DBNDecoder expects a complete
DBN stream, which begins with metadataget_ref methods to dbn::Decoder and dbn::RecordDecoder which return a
reference to the inner readerUNDEF_PRICE, UNDEF_ORDER_SIZE, UNDEF_STAT_QUANTITY, and UNDEF_TIMESTAMP
constants to databento_dbn Python package to make it easier to filter null valuesMetadata::builder() function to create a new builder instanceEncodeRecordRef trait from EncodeDbn to have a boxable trait (i.e.
Box<dyn EncodeRecordRef>) for dynamic encodingEncodeRecord trait from EncodeDbnDecodeRecordRef trait from DecodeDbn to have a boxable trait (i.e.
Box<dyn DecodeRecordRef>) for dynamic decodingDynWriter from an enum to a struct with only private fieldsBATY.PITCH.BATY publisherREADME.md (credit: @thomas-k-cameron)Added publisher method to RecordHeader and all record types for converting the publisher_id to an enum
publisher method to RecordHeader and all record types for converting
the publisher_id to an enumtime::OffsetDateTime for the following fields:
ts_event, ts_recv, ts_ref, activation, expiration, start_ts, end_ts,
ts_outts_in_delta that return time::DurationFixed missing raw_instrument_id field in Python InstrumentDefMsg
raw_instrument_id field in Python InstrumentDefMsgOHLCV_EOD variant in Python Schema type hintAdded new OhlcvEod schema variant for future use with OHLCV bars based around the end of the trading session
OhlcvEod schema variant for future use with OHLCV bars based around the
end of the trading sessionstd::fmt::Display for publisher enums (Publisher, Dataset, and
Venue)Encoding.variants()Added new OHLCV_EOD rtype for future daily OHLCV schema based on the trading session
OHLCV_EOD rtype for future daily OHLCV schema based on the trading
sessionSType::Nasdaq and SType::Cms to support querying US equities datasets
using either convention, regardless of the original convention of the dataset.pyo3, tokio, and zstd dependency version requirementsraw_instrument_id field to InstrumentDefMsg (definition schema) for use in
future datasets consolidated from multiple publishersOHLCV_EOD rtype for future daily OHLCV schema based on the trading
sessionSType::Nasdaq and SType::Cms to support querying US equities datasets
using either convention, regardless of the original convention of the datasetpyo3, tokio, and zstd dependency version requirementsFIXED_PRICE_SCALE constant to databento_dbn Python packagesize_hint class method to class attribute for Python recordsSwitched from anyhow::Error to custom dbn::Error for all public fallible functions and methods. This should make it easier to disambiguate between err
anyhow::Error to custom dbn::Error for all public fallible functions
and methods. This should make it easier to disambiguate between error types.EncodeDbn::encode_record and EncodeDbn::record_record_ref no longer treat a
BrokenPipe error differentlyAsyncDbnDecoderpretty::Px and pretty::Ts newtypes to expose price and timestamp formatting
logic outside of CSV and JSON encodingrtype to encoded JSON and CSV to aid differeniating between different record types.
This is particularly important when working with live data.pretty_ Python attributes for DBN price fieldspretty_ Python attributes for DBN UTC timestamp fieldsdbn::Error instead of an anyhow::Errorts_recv and ts_event firstrtype, publisher_id, instrument_id, and ts_event) to
nested object under the key hd in JSON encoding to match structure definitionsMboMsg serialization order to serialize action, side, and channel_id
earlier given their importanceMbp1Msg, Mbp10Msg, and TradeMsg serialization order to serialize
action, side, and depth earlier given their importanceInstrumentDefMsg serialization order to serialize raw_symbol,
security_update_action, and instrument_class earlier given their importancebool return value from EncodeDbn::encode_record and
EncodeDbn::record_record_ref. These now return dbn::Result<()>.dbn CLI toolAdded Python variants method to return an iterator over the enum variants for Compression, Encoding, Schema, and SType
variants method to return an iterator over the enum variants for
Compression, Encoding, Schema, and STypeCompression, Encoding, Schema, and STypeAdded export to Python for Compression, Encoding, SType, and Schema enums
Compression, Encoding, SType, and Schema
enumsErrorMsg and SystemMsgCompression, Encoding, SType, and Schema
enumsErrorMsg and SystemMsgAdded --fragment and --zstd-fragment CLI arguments to read DBN streams without metadata
--fragment and --zstd-fragment CLI arguments to read DBN streams
without metadatacsv::Decoder::get_ref that returns reference to the underlying writerInstrumentDefMsg::groupc_char fields to be exposed to Python as strAdded --limit NUM CLI argument to output only the first NUM records
--limit NUM CLI argument to output only the first NUM recordsAsRef<[u8]> implementation for RecordRefsize_hint classmethod for DBN recordsRecordRefsuse_pretty_px for price formatting and use_pretty_ts for datetime formatting
to CSV and JSON encodersUNDEF_TIMESTAMP constant for when timestamp fields are unsetbooklevel MBP field to levels for brevity and consistent naming--pretty-json CLI flag to --pretty and added support for CSV. Passing this
flag now also enables use_pretty_px and use_pretty_tsopen_interest_qty and cleared_volume fields that were always unset from
definition schemaDBNDecoder.decode to return records with a ts_out attribute, instead
of a tupleDbnDecoder to DBNDecoderAction conversion methods (credit: @thomas-k-cameron)Added Fill action type for MBO messages
Fill action type for MBO messagesStatMsgDeprecated SType::Smart to split into SType::Parent and SType::Continuous
RType enum for exhaustive pattern matching&str getters for more c_char array record fieldsDbnDecoder.decode to always return a list of tuplesschema and stype_in to optional in Metadata to support live dataSType::ProductId to SType::InstrumentId and SType::Native to SType::RawSymbolRecordHeader::product_id to instrument_idInstrumentDefMsg::symbol to raw_symbolSymbolMapping::native_symbol to raw_symbolSType::Smart to split into SType::Parent and SType::ContinuousSide::NoneDbnDecoderFixed typo in Python type stubs
Fixed support for ErrorMsg, SystemMsg, and SymbolMappingMsg in Python
ErrorMsg, SystemMsg, and SymbolMappingMsg in PythonAdded enums MatchAlgorithm, UserDefinedInstrument
MatchAlgorithm, UserDefinedInstrumentUNDEF_PRICE and UNDEF_ORDER_SIZEdatabento_dbn packageMetadata.__bytes__ method to return valid DBNDbnDecoderImbalanceMsg in Python DbnDecoderAdded support for Imbalance schema
InstrumentDefMsg to include options-related fields and instrument_classts_outts_out to MetadataRecordRef::new to be mutableDecodeDbn methodsSystemMsg recordMetadata to PythonRecordRef implement Sync and Sendrecord_count from Metadatac_char fields to strings instead of intsdbn::RecordDecoder::decode_record to decodedbn::RecordDecoder::decode_record_ref to decode_refHasRType::size to record_size to avoid confusion with order size fieldsrelated and related_security_id fields in InstrumentDefMsgAdded records and Metadata as exports of databento_dbn Python package
Metadata as exports of databento_dbn Python packageMetadata appears in Python and added __repr__dbn CLI tool didn't truncate existing filesAdded improved Python bindings for decoding DBN
start, end, and limitencode_metadata Python functionAdded ability to migrate legacy DBZ to DBN through CLI
databento-defsdbn CLIMetadataBuilder to assist with defaultsdatabento-dbnYour coding agent can read these notes before it upgrades. Set up the MCP server →