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
- 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`