Skip to content

Releases: databento/dbn

0.18.1

04 Jun 00:03
a4ef81e
Compare
Choose a tag to compare

Release notes

Enhancements

  • Added new stat_type for UncrossingPrice
  • Added new publisher values for XNAS.BASIC
  • Added new off-market publisher values for IFEU.IMPACT and NDEX.IMPACT

Bug fixes

  • Fix descriptions for FINN and FINY publishers.

0.18.0

21 May 20:48
ba9951c
Compare
Choose a tag to compare

Release notes

Enhancements

  • Added links to example usage in documentation
  • Added new predicate methods InstrumentClass::is_option, is_future, and is_spread
    to make it easier to work with multiple instrument class variants
  • Implemented DecodeRecord for DbnRecordDecoder
  • Added new_inferred, with_buffer, inferred_with_buffer, from_file, get_mut,
    and get_ref methods to AsyncDynReader for parity with the sync DynReader
  • Improved documentation enumerating errors returned by functions
  • Added new DBNError Python exception that's now the primary exception raised by
    databento_dbn
  • Improved async performance of decoding DBN files
  • Added StatMsg::ts_in_delta() method that returns a time::Duration for consistency
    with other records with a ts_in_delta field

Breaking changes

  • Changed type of flags 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.
    • Improved Debug formatting
    • Python and encodings are unaffected
  • Removed write_dbn_file function deprecated in version 0.14.0 from Python interface.
    Please use Transcoder instead
  • Switched DecodeStream from streaming_iterator crate to fallible_streaming_iterator
    to allow better notification of errors
  • Switched EncodeDbn::encode_stream from accepting an impl StreamingIterator to
    accepting an FallibleStreamingIterator to allow bubbling up of decoding errors
  • Changed default value for stype_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 DBNv2
  • Renamed CbboMsg to CBBOMsg in Python for consistency with other schemas

Breaking changes

  • Changed text serialization of display_factor to be affected by pretty_px.
    While it's not a price, it uses the same fixed-price decimal format as other prices
  • Changed text serialization of unit_of_measure_qty in InstrumentDefMsgV1 to be
    affected by pretty_px to match behavior of InstrumentDefMsgV2

Release notes

Enhancements

  • Added links to example usage in documentation
  • Added new predicate methods InstrumentClass::is_option, is_future, and is_spread
    to make it easier to work with multiple instrument class variants
  • Implemented DecodeRecord for DbnRecordDecoder
  • Added new_inferred, with_buffer, inferred_with_buffer, from_file, get_mut,
    and get_ref methods to AsyncDynReader for parity with the sync DynReader
  • Improved documentation enumerating errors returned by functions
  • Added new DBNError Python exception that's now the primary exception raised by
    databento_dbn
  • Improved async performance of decoding DBN files
  • Added StatMsg::ts_in_delta() method that returns a time::Duration for consistency
    with other records with a ts_in_delta field

Breaking changes

  • Changed type of flags 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.
    • Improved Debug formatting
    • Python and encodings are unaffected
  • Removed write_dbn_file function deprecated in version 0.14.0 from Python interface.
    Please use Transcoder instead
  • Switched DecodeStream from streaming_iterator crate to fallible_streaming_iterator
    to allow better notification of errors
  • Switched EncodeDbn::encode_stream from accepting an impl StreamingIterator to
    accepting an FallibleStreamingIterator to allow bubbling up of decoding errors
  • Changed default value for stype_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 DBNv2
  • Renamed CbboMsg to CBBOMsg in Python for consistency with other schemas

Breaking changes

  • Changed text serialization of display_factor to be affected by pretty_px.
    While it's not a price, it uses the same fixed-price decimal format as other prices
  • Changed text serialization of unit_of_measure_qty in InstrumentDefMsgV1 to be
    affected by pretty_px to match behavior of InstrumentDefMsgV2

0.17.1

03 Apr 22:35
04d6b91
Compare
Choose a tag to compare

Release notes

Bug fixes

  • Added missing Python type stub for StatusMsg

0.17.0

01 Apr 16:34
65b949e
Compare
Choose a tag to compare

Release notes

Enhancements

  • Added new record type CbboMsg, new rtypes and schema types for Cbbo, Cbbo1s,
    Cbbo1m, Tcbbo, Bbo1s, and Bbo1m
  • Added Volatility and Delta StatType variants
  • Added Undefined and TimeProRata MatchAlgorithm variants
  • Exported more enums to Python:
    • Action
    • InstrumentClass
    • MatchAlgorithm
    • SecurityUpdateAction
    • Side
    • StatType
    • StatUpdateAction
    • StatusAction
    • StatusReason
    • TradingEvent
    • TriState
    • UserDefinedInstrument

Breaking changes

  • Removed Default trait implementation for Mbp1Msg due to it now having multiple
    permissible rtype values. Users should use default_for_schema instead
  • Changed the default match_algorithm for InstrumentDefMsg and InstrumentDefMsgV1
    from Fifo to Undefined
  • Made Dataset, Venue, and Publisher non-exhaustive to allow future additions
    without breaking changes
  • Renamed publishers from deprecated datasets to their respective sources (XNAS.NLS
    and XNYS.TRADES respectively)

Deprecations

  • Deprecated dataset values FINN.NLS and FINY.TRADES

Bug fixes

  • Fixed an issue where the Python MappingIntervalDict was not exported
  • Fixed Python type stubs for VersionUpgradePolicy and SType

0.16.0

01 Mar 19:34
4dd8c3c
Compare
Choose a tag to compare

Release notes

Enhancements

  • Updated StatusMsg and made it public in preparation for releasing a status schema
  • Added StatusAction, StatusReason, TradingEvent, and TriState enums for use in
    the status schema
  • Added -t and --tsv flags to DBN CLI to encode tab-separated values (TSV)
  • Added delimiter method to builders for DynEncoder and CsvEncoder to customize the
    field delimiter character, allowing DBN to be encoded as tab-separated values (TSV)
  • Document cancellation safety for AsyncRecordDecoder::decode_ref (credit: @yongqli)
  • Added new publisher values for consolidated DBEQ.MAX
  • Added C FFI conversion functions from ErrorMsgV1 to ErrorMsg and SystemMsgV1
    to SystemMsg
  • Improved documentation for side field and Side enum
  • Upgraded async-compression to 0.4.6
  • Upgraded strum to 0.26

Breaking changes

  • Changed default for VersionUpgradePolicy to Upgrade
  • Changed default upgrade_policy for DbnDecoder, AsyncDbnDecoder, and Python
    DBNDecoder to Upgrade so by default the primary record types can always be used
  • Changed fields of previously-hidden StatusMsg record type
  • Updated text serialization order of status schema to match other schemas
  • Changed text serialization unit_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 prices
  • Made StatType and VersionUpgradePolicy non-exhaustive to allow future additions
    without breaking changes
  • Renamed _dummy field in ImbalanceMsg and StatMsg to _reserved
  • Added ts_out parameter to RecordDecoder and AsyncRecordDecoder
    with_upgrade_policy methods

Bug fixes

  • Fixed handling of ts_out when upgrading DBNv1 records to version 2
  • Added missing StatType::Vwap variant used in the ICE datasets
  • Fixed an issue with Python stub file distribution
  • Fixed missing handling of ErrorMsgV1 and SystemMsgV1 in rtype dispatch macros

0.15.1

23 Jan 18:06
2ac8824
Compare
Choose a tag to compare

Release notes

Bug fixes

  • Fixed an import error in the Python type stub file

0.15.0

16 Jan 16:05
b358775
Compare
Choose a tag to compare

Release notes

Enhancements

  • Improved Debug implementation for all record types
    • Prices are formatted as decimals
    • Fixed-length strings are formatted as strings
    • Bit flag fields are formatted as binary
    • Several fields are formatted as enums instead of their raw representations
  • Improved Debug implementation for RecordRef to show RecordHeader
  • Added --schema option to dbn CLI tool to filter a DBN to a particular schema. This
    allows outputting saved live data to CSV
  • Allowed passing --limit option to dbn CLI tool with --metadata flag
  • Improved performance of decoding uncompressed DBN fragments with the dbn CLI tool
  • Added builders to CsvEncoder, DynEncoder, and JsonEncoder to assist with the
    growing number of customizations
    • Added option to write CSV header as part of creating CsvEncoder to make it harder
      to forget
  • Added -s/--map-symbols flag to CLI to create a symbol field in the output with
    the text symbol mapped from the instrument ID
  • Added version param to Python Metadata contructor choose between DBNv1 and DBNv2
  • Implemented EncodeRecordTextExt for DynEncoder
  • Implemented Deserialize and Serialize for all records and enums (with serde
    feature enabled). This allows serializing records with additional encodings not
    supported by the DBN crate
  • Implemented Hash for all record types
  • Added new publisher value for OPRA MIAX Sapphire
  • Added Python type definition for Metadata.__init__
  • Added metadata_mut method to decoders to get a mutable reference to the decoded
    metadata
  • Improved panic message on RecordRef::get when length doesn't match expected to be
    actionable
  • Added encode::ZSTD_COMPRESSION_LEVEL constant

Breaking changes

  • Increased size of SystemMsg and ErrorMsg to provide better messages from Live
    gateway
    • Increased length of err and msg fields for more detailed messages
    • Added is_last field to ErrorMsg to indicate the last error in a chain
    • Added code field to SystemMsg and ErrorMsg, although currently unused
    • Added new is_last parameter to ErrorMsg::new
    • Decoding these is backwards-compatible and records with longer messages won't be
      sent during the DBN version 2 migration period
    • Renamed previous records to compat::ErrorMsgV1 and compat::SystemMsgV1
  • Split DecodeDbn trait into DecodeRecord and DbnMetadata traits for more
    flexibility. DecodeDbn continues to exist as a trait alias
  • Moved decode_stream out of DecodeDbn to its own separate trait DecodeStream
  • Changed trait bounds of EncodeDbn::encode_decoded and encode_decoded_with_limit to
    DecodeRecordRef + DbnMetadata

Bug fixes

  • Fixed panic in TsSymbolMap when start_date == end_date
  • Added missing Python __eq__ and __ne__ implementations for BidAskPair
  • Fixed Python size_hint return value for InstrumentDefMsgV1 and
    SymbolMappingMsgV1
  • Fixed cases where dbn CLI tool would write a broken pipe error to standard error
    such as when piping to head
  • Fixed bug in sync and async MetadataEncoders where version was used to determine
    the encoded length of fixed-length symbols instead of the symbol_cstr_len field

0.14.2

18 Nov 00:32
6f49eda
Compare
Choose a tag to compare

Release notes

Enhancements

  • Added set_upgrade_policy setters to DbnDecoder, DbnRecordDecoder,
    AsyncDbnDecoder, and AsyncDbnRecordDecoder
  • Added from_schema classmethod for Python RType enum

Breaking changes

  • Renamed parameter for Python Enum classmethod constructors to value from data.

0.14.1

17 Nov 15:13
f144fbf
Compare
Choose a tag to compare

Release notes

Enhancements

  • Added new trait compat::SymbolMappingRec for code reuse when working with
    both versions of SymbolMappingMsg
  • Changed PitSymbolMap::on_symbol_mapping to accept either version of
    SymbolMappingMsg

Bug fixes

  • Fixed missing DBNv1 compatibility in PitSymbolMap::on_record
  • Fixed missing Python export for VersionUpgradePolicy
  • Fixed missing Python export and methods for InstrumentDefMsgV1 and
    SymbolMappingMsgV1
  • Fixed bug where Python DbnDecoder and Transcoder would throw exceptions
    when attempting to decode partial metadata

0.14.0

15 Nov 23:40
b92d695
Compare
Choose a tag to compare

Release notes

Enhancements

  • This version begins the transition to DBN version 2 (DBNv2). In this version, the
    decoders support decoding both versions of DBN and the DBN encoders default to
    keeping version of the input. However, in a future version, decoders will by default
    convert DBNv1 to DBNv2 and support will be dropped for encoding DBNv1.
    • Affects SymbolMappingMsg, InstrumentDefMsg, and Metadata. All other record
      types and market data schemas are unchanged
    • Version 1 structs can be converted to version 2 structs with the From trait
  • Added symbol_cstr_len field to Metadata to indicate the length of fixed symbol
    strings
  • Added stype_in and stype_out fields to SymbolMappingMsg to provide more context
    with live symbology updates
  • Added smart wrapping to dbn CLI help output
  • Updated rtype_dispatch family of macros to check record length to handle both
    versions of records. This is temporary during the transition period
  • Added VersionUpgradePolicy enum and associated methods to the decoders to
    allow specifying how to handle decoding records from prior DBN versions
  • Added Metadata::upgrade() method to update Metadata from a prior DBN version to
    the latest version
  • Added -u/--upgrade flags to dbn CLI that when passed upgrades DBN data from
    previous versions. By default data is decoded as-is
  • Made AsyncDbnDecoder::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) statement
  • Added documention around cancellation safety for async APIs
  • Improved error messages for conversion errors
  • Added TOB flag to denote top-of-book messages
  • Added new publisher values in preparation for IFEU.IMPACT and NDEX.IMPACT datasets
  • Added new publisher values for consolidated DBEQ.BASIC and DBEQ.PLUS
  • Added MAX_RECORD_LEN constant for the length of the largest record type
  • Exposed record flag constants in databento_dbn with F_ prefix
  • Added export to Python for RType

Breaking changes

  • The old InstrumentDefMsg is now compat::InstrumentDefMsgV1
  • compat::InstrumentDefMsgV2 is now an alias for InstrumentDefMsg
  • The old SymbolMappingMsg is now compat::SymbolMappingMsgV1
  • compat::SymbolMappingMsgV2 is now an alias for SymbolMappingMsg
  • Changed SYMBOL_CSTR_LEN constant to 71. Previous value is now in
    compat::SYMBOL_CSTR_V1
  • Changed DBN_VERSION constant to 2
  • security_update_action was converted to a raw c_char to safely support adding
    variants in the future
  • Renamed _dummy in InstrumentDefMsg to _reserved
  • Removed _reserved2, _reserved3, and _reserved5 from InstrumentDefMsg
  • Removed _dummy from SymbolMappingMsg
  • Moved position of strike_price within InstrumentDefMsg but left text serialization
    order unchanged
  • Made Error non-exhaustive, meaning it can no longer be exhaustively matched against.
    This allows adding additional error variants in the future without a breaking change
  • Added upgrade_policy parameter to RecordDecoder::with_version constructor to
    control whether records of previous versions will be upgraded
  • Added upgrade_policy parameter to DynDecoder constructors to control whether
    records of previous versions will be upgraded
  • Renamed symbol_map parameter for Python Transcoder to symbol_interval_map to
    better reflect the date intervals it contains

Deprecations

  • Deprecated unused write_dbn_file function from Python interface. Please use
    Transcoder instead

Bug fixes

  • Fixed typo in Python type definition for InstrumentDefMsg.pretty_high_limit_price
  • Fixed type signature for Metadata.stype_in and Metadata.stype_out Python methods
  • Fixed incorrect version in pyproject.toml