diff --git a/CHANGELOG.md b/CHANGELOG.md index 61ab250..5f9014a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 0.58.0 - 2026-05-12 + +### Enhancements +- Relaxed `TsSymbolMap::insert` to accept `impl Into>` for the `symbol` + parameter, allowing callers to pass a `String` directly +- Added flat per-level properties (`bid_px_00`, `pretty_ask_px_03`, etc.) to the + Python `MBP1Msg`, `MBP10Msg`, `BBOMsg`, `CMBP1Msg`, and `CBBOMsg` record classes + for parity with the DataFrame layout + ## 0.57.0 - 2026-05-05 ### Enhancements diff --git a/Cargo.lock b/Cargo.lock index fcc5d50..4e20908 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -268,7 +268,7 @@ dependencies = [ [[package]] name = "databento-dbn" -version = "0.57.0" +version = "0.58.0" dependencies = [ "dbn", "pyo3", @@ -280,7 +280,7 @@ dependencies = [ [[package]] name = "dbn" -version = "0.57.0" +version = "0.58.0" dependencies = [ "async-compression", "async-stream", @@ -304,7 +304,7 @@ dependencies = [ [[package]] name = "dbn-c" -version = "0.57.0" +version = "0.58.0" dependencies = [ "anyhow", "cbindgen", @@ -314,7 +314,7 @@ dependencies = [ [[package]] name = "dbn-cli" -version = "0.57.0" +version = "0.58.0" dependencies = [ "anyhow", "assert_cmd", @@ -330,7 +330,7 @@ dependencies = [ [[package]] name = "dbn-macros" -version = "0.57.0" +version = "0.58.0" dependencies = [ "csv", "dbn", diff --git a/Cargo.toml b/Cargo.toml index 035c705..1db973e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ resolver = "2" [workspace.package] authors = ["Databento "] edition = "2021" -version = "0.57.0" +version = "0.58.0" documentation = "https://databento.com/docs" repository = "https://github.com/databento/dbn" license = "Apache-2.0" diff --git a/python/pyproject.toml b/python/pyproject.toml index 28962f5..11d61c4 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "databento-dbn" -version = "0.57.0" +version = "0.58.0" description = "Python bindings for encoding and decoding Databento Binary Encoding (DBN)" readme = "README.md" requires-python = ">=3.10" diff --git a/python/python/databento_dbn/_lib.pyi b/python/python/databento_dbn/_lib.pyi index 879a8f9..5bbaa64 100644 --- a/python/python/databento_dbn/_lib.pyi +++ b/python/python/databento_dbn/_lib.pyi @@ -2473,6 +2473,74 @@ class MBP1Msg: """ + @property + def pretty_bid_px_00(self) -> float: + """ + The BidAskPair `bid_px` at level 00 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_00 + + """ + bid_px_00: int + """ + The BidAskPair `bid_px` at level 00. + + See Also: pretty_bid_px_00 + + """ + + @property + def pretty_ask_px_00(self) -> float: + """ + The BidAskPair `ask_px` at level 00 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_00 + + """ + ask_px_00: int + """ + The BidAskPair `ask_px` at level 00. + + See Also: pretty_ask_px_00 + + """ + + bid_sz_00: int + """ + The BidAskPair `bid_sz` at level 00. + + """ + + ask_sz_00: int + """ + The BidAskPair `ask_sz` at level 00. + + """ + + bid_ct_00: int + """ + The BidAskPair `bid_ct` at level 00. + + """ + + ask_ct_00: int + """ + The BidAskPair `ask_ct` at level 00. + + """ + class MBP10Msg: """ Market-by-price implementation with a known book depth of 10. The record of the MBP-10 @@ -2589,45 +2657,736 @@ class MBP10Msg: The matching-engine-received timestamp expressed as a datetime or a `pandas.Timestamp`, if available. - Returns - ------- - datetime.datetime + Returns + ------- + datetime.datetime + + """ + ts_event: int + """ + The matching-engine-received timestamp expressed as the number of nanoseconds + since the UNIX epoch. + + See `ts_event` https://databento.com/docs/standards-and-conventions/common-fields-enums-types#ts-event. + + """ + + ts_out: int + """ + The live gateway send timestamp expressed as the number of nanoseconds since the + UNIX epoch. Returns `UNDEF_TIMESTAMP` when not set. + + See `ts_out` https://databento.com/docs/standards-and-conventions/common-fields-enums-types#ts-out. + + """ + + @property + def pretty_ts_out(self) -> dt.datetime | None: + """ + The live gateway send timestamp as a datetime or + `pandas.Timestamp`, if available. Returns `None` when `ts_out` is not set. + + Returns + ------- + datetime.datetime | None + + """ + + @property + def pretty_price(self) -> float: + """ + The order price as a float. + + Returns + ------- + float + + See Also + -------- + price + + """ + price: int + """ + The order price where every 1 unit corresponds to 1e-9, i.e. 1/1,000,000,000 or + 0.000000001. + + See [Prices](https://databento.com/docs/standards-and-conventions/common-fields-enums-types#prices). + + See Also: pretty_price + + """ + + size: int + """ + The order quantity. + + """ + + @property + def action(self) -> Action | str: + """ + The event action. Can be **A**dd, **C**ancel, **M**odify, clea**R** book, or **T**rade. + + See [Action](https://databento.com/docs/standards-and-conventions/common-fields-enums-types#action). + + Returns + ------- + Action | str + + """ + + @action.setter + def action(self, value: Action) -> None: ... + @property + def side(self) -> Side | str: + """ + The side that initiates the event. Can be **A**sk for a sell order (or sell aggressor in + a trade), **B**id for a buy order (or buy aggressor in a trade), or **N**one where no side is specified. + + See [Side](https://databento.com/docs/standards-and-conventions/common-fields-enums-types#side). + + Returns + ------- + Side | str + + """ + + @side.setter + def side(self, value: Side) -> None: ... + + flags: int + """ + A bit field indicating event end, message characteristics, and data quality. + + """ + + depth: int + """ + The book level where the update event occurred. + + """ + + @property + def pretty_ts_recv(self) -> dt.datetime | None: + """ + The capture-server-received timestamp as a datetime or + `pandas.Timestamp`, if available. + + Returns + ------- + datetime.datetime + + """ + ts_recv: int + """ + The capture-server-received timestamp expressed as the number of nanoseconds + since the UNIX epoch. + + See [ts_recv](https://databento.com/docs/standards-and-conventions/common-fields-enums-types#ts-recv). + + """ + + ts_in_delta: int + """ + The matching-engine-sending timestamp expressed as the number of nanoseconds before + `ts_recv`. + + See [ts_in_delta](https://databento.com/docs/standards-and-conventions/common-fields-enums-types#ts-in-delta). + + """ + + sequence: int + """ + The message sequence number assigned at the venue. + + """ + + @property + def levels(self) -> list[BidAskPair]: + """ + The top 10 levels of the order book. + + Returns + ------- + list[BidAskPair] + + Notes + ----- + MBP10Msg contains 10 levels of BidAskPair. + + """ + + @property + def pretty_bid_px_00(self) -> float: + """ + The BidAskPair `bid_px` at level 00 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_00 + + """ + bid_px_00: int + """ + The BidAskPair `bid_px` at level 00. + + See Also: pretty_bid_px_00 + + """ + + @property + def pretty_ask_px_00(self) -> float: + """ + The BidAskPair `ask_px` at level 00 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_00 + + """ + ask_px_00: int + """ + The BidAskPair `ask_px` at level 00. + + See Also: pretty_ask_px_00 + + """ + + bid_sz_00: int + """ + The BidAskPair `bid_sz` at level 00. + + """ + + ask_sz_00: int + """ + The BidAskPair `ask_sz` at level 00. + + """ + + bid_ct_00: int + """ + The BidAskPair `bid_ct` at level 00. + + """ + + ask_ct_00: int + """ + The BidAskPair `ask_ct` at level 00. + + """ + + @property + def pretty_bid_px_01(self) -> float: + """ + The BidAskPair `bid_px` at level 01 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_01 + + """ + bid_px_01: int + """ + The BidAskPair `bid_px` at level 01. + + See Also: pretty_bid_px_01 + + """ + + @property + def pretty_ask_px_01(self) -> float: + """ + The BidAskPair `ask_px` at level 01 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_01 + + """ + ask_px_01: int + """ + The BidAskPair `ask_px` at level 01. + + See Also: pretty_ask_px_01 + + """ + + bid_sz_01: int + """ + The BidAskPair `bid_sz` at level 01. + + """ + + ask_sz_01: int + """ + The BidAskPair `ask_sz` at level 01. + + """ + + bid_ct_01: int + """ + The BidAskPair `bid_ct` at level 01. + + """ + + ask_ct_01: int + """ + The BidAskPair `ask_ct` at level 01. + + """ + + @property + def pretty_bid_px_02(self) -> float: + """ + The BidAskPair `bid_px` at level 02 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_02 + + """ + bid_px_02: int + """ + The BidAskPair `bid_px` at level 02. + + See Also: pretty_bid_px_02 + + """ + + @property + def pretty_ask_px_02(self) -> float: + """ + The BidAskPair `ask_px` at level 02 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_02 + + """ + ask_px_02: int + """ + The BidAskPair `ask_px` at level 02. + + See Also: pretty_ask_px_02 + + """ + + bid_sz_02: int + """ + The BidAskPair `bid_sz` at level 02. + + """ + + ask_sz_02: int + """ + The BidAskPair `ask_sz` at level 02. + + """ + + bid_ct_02: int + """ + The BidAskPair `bid_ct` at level 02. + + """ + + ask_ct_02: int + """ + The BidAskPair `ask_ct` at level 02. + + """ + + @property + def pretty_bid_px_03(self) -> float: + """ + The BidAskPair `bid_px` at level 03 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_03 + + """ + bid_px_03: int + """ + The BidAskPair `bid_px` at level 03. + + See Also: pretty_bid_px_03 + + """ + + @property + def pretty_ask_px_03(self) -> float: + """ + The BidAskPair `ask_px` at level 03 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_03 + + """ + ask_px_03: int + """ + The BidAskPair `ask_px` at level 03. + + See Also: pretty_ask_px_03 + + """ + + bid_sz_03: int + """ + The BidAskPair `bid_sz` at level 03. + + """ + + ask_sz_03: int + """ + The BidAskPair `ask_sz` at level 03. + + """ + + bid_ct_03: int + """ + The BidAskPair `bid_ct` at level 03. + + """ + + ask_ct_03: int + """ + The BidAskPair `ask_ct` at level 03. + + """ + + @property + def pretty_bid_px_04(self) -> float: + """ + The BidAskPair `bid_px` at level 04 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_04 + + """ + bid_px_04: int + """ + The BidAskPair `bid_px` at level 04. + + See Also: pretty_bid_px_04 + + """ + + @property + def pretty_ask_px_04(self) -> float: + """ + The BidAskPair `ask_px` at level 04 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_04 + + """ + ask_px_04: int + """ + The BidAskPair `ask_px` at level 04. + + See Also: pretty_ask_px_04 + + """ + + bid_sz_04: int + """ + The BidAskPair `bid_sz` at level 04. + + """ + + ask_sz_04: int + """ + The BidAskPair `ask_sz` at level 04. + + """ + + bid_ct_04: int + """ + The BidAskPair `bid_ct` at level 04. + + """ + + ask_ct_04: int + """ + The BidAskPair `ask_ct` at level 04. + + """ + + @property + def pretty_bid_px_05(self) -> float: + """ + The BidAskPair `bid_px` at level 05 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_05 + + """ + bid_px_05: int + """ + The BidAskPair `bid_px` at level 05. + + See Also: pretty_bid_px_05 + + """ + + @property + def pretty_ask_px_05(self) -> float: + """ + The BidAskPair `ask_px` at level 05 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_05 + + """ + ask_px_05: int + """ + The BidAskPair `ask_px` at level 05. + + See Also: pretty_ask_px_05 + + """ + + bid_sz_05: int + """ + The BidAskPair `bid_sz` at level 05. + + """ + + ask_sz_05: int + """ + The BidAskPair `ask_sz` at level 05. + + """ + + bid_ct_05: int + """ + The BidAskPair `bid_ct` at level 05. + + """ + + ask_ct_05: int + """ + The BidAskPair `ask_ct` at level 05. + + """ + + @property + def pretty_bid_px_06(self) -> float: + """ + The BidAskPair `bid_px` at level 06 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_06 + + """ + bid_px_06: int + """ + The BidAskPair `bid_px` at level 06. + + See Also: pretty_bid_px_06 + + """ + + @property + def pretty_ask_px_06(self) -> float: + """ + The BidAskPair `ask_px` at level 06 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_06 + + """ + ask_px_06: int + """ + The BidAskPair `ask_px` at level 06. + + See Also: pretty_ask_px_06 + + """ + + bid_sz_06: int + """ + The BidAskPair `bid_sz` at level 06. + + """ + + ask_sz_06: int + """ + The BidAskPair `ask_sz` at level 06. + + """ + + bid_ct_06: int + """ + The BidAskPair `bid_ct` at level 06. + + """ + + ask_ct_06: int + """ + The BidAskPair `ask_ct` at level 06. + + """ + + @property + def pretty_bid_px_07(self) -> float: + """ + The BidAskPair `bid_px` at level 07 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_07 + + """ + bid_px_07: int + """ + The BidAskPair `bid_px` at level 07. + + See Also: pretty_bid_px_07 + + """ + + @property + def pretty_ask_px_07(self) -> float: + """ + The BidAskPair `ask_px` at level 07 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_07 + + """ + ask_px_07: int + """ + The BidAskPair `ask_px` at level 07. + + See Also: pretty_ask_px_07 + + """ + + bid_sz_07: int + """ + The BidAskPair `bid_sz` at level 07. - """ - ts_event: int """ - The matching-engine-received timestamp expressed as the number of nanoseconds - since the UNIX epoch. - See `ts_event` https://databento.com/docs/standards-and-conventions/common-fields-enums-types#ts-event. + ask_sz_07: int + """ + The BidAskPair `ask_sz` at level 07. """ - ts_out: int + bid_ct_07: int """ - The live gateway send timestamp expressed as the number of nanoseconds since the - UNIX epoch. Returns `UNDEF_TIMESTAMP` when not set. + The BidAskPair `bid_ct` at level 07. - See `ts_out` https://databento.com/docs/standards-and-conventions/common-fields-enums-types#ts-out. + """ + + ask_ct_07: int + """ + The BidAskPair `ask_ct` at level 07. """ @property - def pretty_ts_out(self) -> dt.datetime | None: + def pretty_bid_px_08(self) -> float: """ - The live gateway send timestamp as a datetime or - `pandas.Timestamp`, if available. Returns `None` when `ts_out` is not set. + The BidAskPair `bid_px` at level 08 as a float. Returns ------- - datetime.datetime | None + float + + See Also + -------- + bid_px_08 """ + bid_px_08: int + """ + The BidAskPair `bid_px` at level 08. + + See Also: pretty_bid_px_08 + + """ @property - def pretty_price(self) -> float: + def pretty_ask_px_08(self) -> float: """ - The order price as a float. + The BidAskPair `ask_px` at level 08 as a float. Returns ------- @@ -2635,119 +3394,108 @@ class MBP10Msg: See Also -------- - price + ask_px_08 """ - price: int + ask_px_08: int """ - The order price where every 1 unit corresponds to 1e-9, i.e. 1/1,000,000,000 or - 0.000000001. + The BidAskPair `ask_px` at level 08. - See [Prices](https://databento.com/docs/standards-and-conventions/common-fields-enums-types#prices). + See Also: pretty_ask_px_08 - See Also: pretty_price + """ + bid_sz_08: int """ + The BidAskPair `bid_sz` at level 08. - size: int """ - The order quantity. + ask_sz_08: int """ + The BidAskPair `ask_sz` at level 08. - @property - def action(self) -> Action | str: - """ - The event action. Can be **A**dd, **C**ancel, **M**odify, clea**R** book, or **T**rade. + """ - See [Action](https://databento.com/docs/standards-and-conventions/common-fields-enums-types#action). + bid_ct_08: int + """ + The BidAskPair `bid_ct` at level 08. - Returns - ------- - Action | str + """ - """ + ask_ct_08: int + """ + The BidAskPair `ask_ct` at level 08. + + """ - @action.setter - def action(self, value: Action) -> None: ... @property - def side(self) -> Side | str: + def pretty_bid_px_09(self) -> float: """ - The side that initiates the event. Can be **A**sk for a sell order (or sell aggressor in - a trade), **B**id for a buy order (or buy aggressor in a trade), or **N**one where no side is specified. - - See [Side](https://databento.com/docs/standards-and-conventions/common-fields-enums-types#side). + The BidAskPair `bid_px` at level 09 as a float. Returns ------- - Side | str - - """ - - @side.setter - def side(self, value: Side) -> None: ... + float - flags: int - """ - A bit field indicating event end, message characteristics, and data quality. + See Also + -------- + bid_px_09 + """ + bid_px_09: int """ + The BidAskPair `bid_px` at level 09. - depth: int - """ - The book level where the update event occurred. + See Also: pretty_bid_px_09 """ @property - def pretty_ts_recv(self) -> dt.datetime | None: + def pretty_ask_px_09(self) -> float: """ - The capture-server-received timestamp as a datetime or - `pandas.Timestamp`, if available. + The BidAskPair `ask_px` at level 09 as a float. Returns ------- - datetime.datetime + float + + See Also + -------- + ask_px_09 """ - ts_recv: int + ask_px_09: int """ - The capture-server-received timestamp expressed as the number of nanoseconds - since the UNIX epoch. + The BidAskPair `ask_px` at level 09. - See [ts_recv](https://databento.com/docs/standards-and-conventions/common-fields-enums-types#ts-recv). + See Also: pretty_ask_px_09 """ - ts_in_delta: int + bid_sz_09: int """ - The matching-engine-sending timestamp expressed as the number of nanoseconds before - `ts_recv`. - - See [ts_in_delta](https://databento.com/docs/standards-and-conventions/common-fields-enums-types#ts-in-delta). + The BidAskPair `bid_sz` at level 09. """ - sequence: int + ask_sz_09: int """ - The message sequence number assigned at the venue. + The BidAskPair `ask_sz` at level 09. """ - @property - def levels(self) -> list[BidAskPair]: - """ - The top 10 levels of the order book. + bid_ct_09: int + """ + The BidAskPair `bid_ct` at level 09. - Returns - ------- - list[BidAskPair] + """ - Notes - ----- - MBP10Msg contains 10 levels of BidAskPair. + ask_ct_09: int + """ + The BidAskPair `ask_ct` at level 09. - """ + """ class BBOMsg: """ @@ -2994,6 +3742,74 @@ class BBOMsg: """ + @property + def pretty_bid_px_00(self) -> float: + """ + The BidAskPair `bid_px` at level 00 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_00 + + """ + bid_px_00: int + """ + The BidAskPair `bid_px` at level 00. + + See Also: pretty_bid_px_00 + + """ + + @property + def pretty_ask_px_00(self) -> float: + """ + The BidAskPair `ask_px` at level 00 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_00 + + """ + ask_px_00: int + """ + The BidAskPair `ask_px` at level 00. + + See Also: pretty_ask_px_00 + + """ + + bid_sz_00: int + """ + The BidAskPair `bid_sz` at level 00. + + """ + + ask_sz_00: int + """ + The BidAskPair `ask_sz` at level 00. + + """ + + bid_ct_00: int + """ + The BidAskPair `bid_ct` at level 00. + + """ + + ask_ct_00: int + """ + The BidAskPair `ask_ct` at level 00. + + """ + class CMBP1Msg: """ Consolidated market-by-price implementation with a known book depth of 1. The record of @@ -3257,6 +4073,74 @@ class CMBP1Msg: """ + @property + def pretty_bid_px_00(self) -> float: + """ + The ConsolidatedBidAskPair `bid_px` at level 00 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_00 + + """ + bid_px_00: int + """ + The ConsolidatedBidAskPair `bid_px` at level 00. + + See Also: pretty_bid_px_00 + + """ + + @property + def pretty_ask_px_00(self) -> float: + """ + The ConsolidatedBidAskPair `ask_px` at level 00 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_00 + + """ + ask_px_00: int + """ + The ConsolidatedBidAskPair `ask_px` at level 00. + + See Also: pretty_ask_px_00 + + """ + + bid_sz_00: int + """ + The ConsolidatedBidAskPair `bid_sz` at level 00. + + """ + + ask_sz_00: int + """ + The ConsolidatedBidAskPair `ask_sz` at level 00. + + """ + + bid_pb_00: int + """ + The ConsolidatedBidAskPair `bid_pb` at level 00. + + """ + + ask_pb_00: int + """ + The ConsolidatedBidAskPair `ask_pb` at level 00. + + """ + class CBBOMsg: """ Subsampled consolidated market by price with a known book depth of 1. The record of the CBBO-1s and CBBO-1m schemas. @@ -3494,6 +4378,74 @@ class CBBOMsg: """ + @property + def pretty_bid_px_00(self) -> float: + """ + The ConsolidatedBidAskPair `bid_px` at level 00 as a float. + + Returns + ------- + float + + See Also + -------- + bid_px_00 + + """ + bid_px_00: int + """ + The ConsolidatedBidAskPair `bid_px` at level 00. + + See Also: pretty_bid_px_00 + + """ + + @property + def pretty_ask_px_00(self) -> float: + """ + The ConsolidatedBidAskPair `ask_px` at level 00 as a float. + + Returns + ------- + float + + See Also + -------- + ask_px_00 + + """ + ask_px_00: int + """ + The ConsolidatedBidAskPair `ask_px` at level 00. + + See Also: pretty_ask_px_00 + + """ + + bid_sz_00: int + """ + The ConsolidatedBidAskPair `bid_sz` at level 00. + + """ + + ask_sz_00: int + """ + The ConsolidatedBidAskPair `ask_sz` at level 00. + + """ + + bid_pb_00: int + """ + The ConsolidatedBidAskPair `bid_pb` at level 00. + + """ + + ask_pb_00: int + """ + The ConsolidatedBidAskPair `ask_pb` at level 00. + + """ + TBBOMsg = MBP1Msg BBO1SMsg = BBOMsg diff --git a/rust/dbn-cli/Cargo.toml b/rust/dbn-cli/Cargo.toml index d765c05..835602e 100644 --- a/rust/dbn-cli/Cargo.toml +++ b/rust/dbn-cli/Cargo.toml @@ -16,7 +16,7 @@ name = "dbn" path = "src/main.rs" [dependencies] -dbn = { path = "../dbn", version = "=0.57.0", default-features = false } +dbn = { path = "../dbn", version = "=0.58.0", default-features = false } anyhow.workspace = true clap = { version = "4.6", features = ["derive", "wrap_help"] } diff --git a/rust/dbn/Cargo.toml b/rust/dbn/Cargo.toml index d6b47a4..9beb70b 100644 --- a/rust/dbn/Cargo.toml +++ b/rust/dbn/Cargo.toml @@ -25,7 +25,7 @@ serde = ["dep:serde", "time/parsing", "time/serde"] trivial_copy = [] [dependencies] -dbn-macros = { version = "=0.57.0", path = "../dbn-macros" } +dbn-macros = { version = "=0.58.0", path = "../dbn-macros" } async-compression = { version = "0.4.42", features = ["tokio", "zstd"], optional = true } async-stream = { version = "0.3", optional = true } diff --git a/rust/dbn/src/metadata.rs b/rust/dbn/src/metadata.rs index bbe20a5..f4b34f5 100644 --- a/rust/dbn/src/metadata.rs +++ b/rust/dbn/src/metadata.rs @@ -107,9 +107,9 @@ impl Metadata { /// time range of the request. Otherwise, [`Self::symbol_map()`] is recommended. /// /// # Errors - /// This function returns an error if `stype_out` is not [`SType::InstrumentId`] or - /// it can't parse a symbol into a `u32` instrument ID. It will also return an error - /// if `date` is outside the query range. + /// This function returns an error if neither `stype_in` nor `stype_out` is + /// [`SType::InstrumentId`], or if a symbol cannot be parsed into a `u32` instrument + /// ID, or if `date` is outside the query range. pub fn symbol_map_for_date(&self, date: time::Date) -> crate::Result { PitSymbolMap::from_metadata(self, date) } @@ -120,8 +120,9 @@ impl Metadata { /// change, [`Self::symbol_map_for_date()`] is recommended. /// /// # Errors - /// This function returns an error if `stype_out` is not [`SType::InstrumentId`] or - /// it can't parse a symbol into a `u32` instrument ID. + /// This function returns an error if neither `stype_in` nor `stype_out` is + /// [`SType::InstrumentId`], or if a symbol cannot be parsed into a `u32` instrument + /// ID. pub fn symbol_map(&self) -> crate::Result { TsSymbolMap::from_metadata(self) } diff --git a/rust/dbn/src/python/record.rs b/rust/dbn/src/python/record.rs index f53490b..375b87c 100644 --- a/rust/dbn/src/python/record.rs +++ b/rust/dbn/src/python/record.rs @@ -999,6 +999,63 @@ impl PyMbp1Msg { self.inner.levels = levels; } + #[getter] + fn get_bid_px_00(&self) -> i64 { + self.inner.levels[0].bid_px + } + #[setter] + fn set_bid_px_00(&mut self, bid_px: i64) { + self.inner.levels[0].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_00(&self) -> f64 { + self.inner.levels[0].bid_px_f64() + } + #[getter] + fn get_ask_px_00(&self) -> i64 { + self.inner.levels[0].ask_px + } + #[setter] + fn set_ask_px_00(&mut self, ask_px: i64) { + self.inner.levels[0].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_00(&self) -> f64 { + self.inner.levels[0].ask_px_f64() + } + #[getter] + fn get_bid_sz_00(&self) -> u32 { + self.inner.levels[0].bid_sz + } + #[setter] + fn set_bid_sz_00(&mut self, bid_sz: u32) { + self.inner.levels[0].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_00(&self) -> u32 { + self.inner.levels[0].ask_sz + } + #[setter] + fn set_ask_sz_00(&mut self, ask_sz: u32) { + self.inner.levels[0].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_00(&self) -> u32 { + self.inner.levels[0].bid_ct + } + #[setter] + fn set_bid_ct_00(&mut self, bid_ct: u32) { + self.inner.levels[0].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_00(&self) -> u32 { + self.inner.levels[0].ask_ct + } + #[setter] + fn set_ask_ct_00(&mut self, ask_ct: u32) { + self.inner.levels[0].ask_ct = ask_ct; + } + #[classattr] #[pyo3(name = "_dtypes")] fn py_dtypes() -> Vec<(String, String)> { @@ -1321,6 +1378,567 @@ impl PyMbp10Msg { self.inner.levels = levels; } + #[getter] + fn get_bid_px_00(&self) -> i64 { + self.inner.levels[0].bid_px + } + #[setter] + fn set_bid_px_00(&mut self, bid_px: i64) { + self.inner.levels[0].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_00(&self) -> f64 { + self.inner.levels[0].bid_px_f64() + } + #[getter] + fn get_ask_px_00(&self) -> i64 { + self.inner.levels[0].ask_px + } + #[setter] + fn set_ask_px_00(&mut self, ask_px: i64) { + self.inner.levels[0].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_00(&self) -> f64 { + self.inner.levels[0].ask_px_f64() + } + #[getter] + fn get_bid_sz_00(&self) -> u32 { + self.inner.levels[0].bid_sz + } + #[setter] + fn set_bid_sz_00(&mut self, bid_sz: u32) { + self.inner.levels[0].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_00(&self) -> u32 { + self.inner.levels[0].ask_sz + } + #[setter] + fn set_ask_sz_00(&mut self, ask_sz: u32) { + self.inner.levels[0].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_00(&self) -> u32 { + self.inner.levels[0].bid_ct + } + #[setter] + fn set_bid_ct_00(&mut self, bid_ct: u32) { + self.inner.levels[0].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_00(&self) -> u32 { + self.inner.levels[0].ask_ct + } + #[setter] + fn set_ask_ct_00(&mut self, ask_ct: u32) { + self.inner.levels[0].ask_ct = ask_ct; + } + #[getter] + fn get_bid_px_01(&self) -> i64 { + self.inner.levels[1].bid_px + } + #[setter] + fn set_bid_px_01(&mut self, bid_px: i64) { + self.inner.levels[1].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_01(&self) -> f64 { + self.inner.levels[1].bid_px_f64() + } + #[getter] + fn get_ask_px_01(&self) -> i64 { + self.inner.levels[1].ask_px + } + #[setter] + fn set_ask_px_01(&mut self, ask_px: i64) { + self.inner.levels[1].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_01(&self) -> f64 { + self.inner.levels[1].ask_px_f64() + } + #[getter] + fn get_bid_sz_01(&self) -> u32 { + self.inner.levels[1].bid_sz + } + #[setter] + fn set_bid_sz_01(&mut self, bid_sz: u32) { + self.inner.levels[1].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_01(&self) -> u32 { + self.inner.levels[1].ask_sz + } + #[setter] + fn set_ask_sz_01(&mut self, ask_sz: u32) { + self.inner.levels[1].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_01(&self) -> u32 { + self.inner.levels[1].bid_ct + } + #[setter] + fn set_bid_ct_01(&mut self, bid_ct: u32) { + self.inner.levels[1].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_01(&self) -> u32 { + self.inner.levels[1].ask_ct + } + #[setter] + fn set_ask_ct_01(&mut self, ask_ct: u32) { + self.inner.levels[1].ask_ct = ask_ct; + } + #[getter] + fn get_bid_px_02(&self) -> i64 { + self.inner.levels[2].bid_px + } + #[setter] + fn set_bid_px_02(&mut self, bid_px: i64) { + self.inner.levels[2].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_02(&self) -> f64 { + self.inner.levels[2].bid_px_f64() + } + #[getter] + fn get_ask_px_02(&self) -> i64 { + self.inner.levels[2].ask_px + } + #[setter] + fn set_ask_px_02(&mut self, ask_px: i64) { + self.inner.levels[2].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_02(&self) -> f64 { + self.inner.levels[2].ask_px_f64() + } + #[getter] + fn get_bid_sz_02(&self) -> u32 { + self.inner.levels[2].bid_sz + } + #[setter] + fn set_bid_sz_02(&mut self, bid_sz: u32) { + self.inner.levels[2].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_02(&self) -> u32 { + self.inner.levels[2].ask_sz + } + #[setter] + fn set_ask_sz_02(&mut self, ask_sz: u32) { + self.inner.levels[2].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_02(&self) -> u32 { + self.inner.levels[2].bid_ct + } + #[setter] + fn set_bid_ct_02(&mut self, bid_ct: u32) { + self.inner.levels[2].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_02(&self) -> u32 { + self.inner.levels[2].ask_ct + } + #[setter] + fn set_ask_ct_02(&mut self, ask_ct: u32) { + self.inner.levels[2].ask_ct = ask_ct; + } + #[getter] + fn get_bid_px_03(&self) -> i64 { + self.inner.levels[3].bid_px + } + #[setter] + fn set_bid_px_03(&mut self, bid_px: i64) { + self.inner.levels[3].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_03(&self) -> f64 { + self.inner.levels[3].bid_px_f64() + } + #[getter] + fn get_ask_px_03(&self) -> i64 { + self.inner.levels[3].ask_px + } + #[setter] + fn set_ask_px_03(&mut self, ask_px: i64) { + self.inner.levels[3].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_03(&self) -> f64 { + self.inner.levels[3].ask_px_f64() + } + #[getter] + fn get_bid_sz_03(&self) -> u32 { + self.inner.levels[3].bid_sz + } + #[setter] + fn set_bid_sz_03(&mut self, bid_sz: u32) { + self.inner.levels[3].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_03(&self) -> u32 { + self.inner.levels[3].ask_sz + } + #[setter] + fn set_ask_sz_03(&mut self, ask_sz: u32) { + self.inner.levels[3].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_03(&self) -> u32 { + self.inner.levels[3].bid_ct + } + #[setter] + fn set_bid_ct_03(&mut self, bid_ct: u32) { + self.inner.levels[3].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_03(&self) -> u32 { + self.inner.levels[3].ask_ct + } + #[setter] + fn set_ask_ct_03(&mut self, ask_ct: u32) { + self.inner.levels[3].ask_ct = ask_ct; + } + #[getter] + fn get_bid_px_04(&self) -> i64 { + self.inner.levels[4].bid_px + } + #[setter] + fn set_bid_px_04(&mut self, bid_px: i64) { + self.inner.levels[4].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_04(&self) -> f64 { + self.inner.levels[4].bid_px_f64() + } + #[getter] + fn get_ask_px_04(&self) -> i64 { + self.inner.levels[4].ask_px + } + #[setter] + fn set_ask_px_04(&mut self, ask_px: i64) { + self.inner.levels[4].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_04(&self) -> f64 { + self.inner.levels[4].ask_px_f64() + } + #[getter] + fn get_bid_sz_04(&self) -> u32 { + self.inner.levels[4].bid_sz + } + #[setter] + fn set_bid_sz_04(&mut self, bid_sz: u32) { + self.inner.levels[4].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_04(&self) -> u32 { + self.inner.levels[4].ask_sz + } + #[setter] + fn set_ask_sz_04(&mut self, ask_sz: u32) { + self.inner.levels[4].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_04(&self) -> u32 { + self.inner.levels[4].bid_ct + } + #[setter] + fn set_bid_ct_04(&mut self, bid_ct: u32) { + self.inner.levels[4].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_04(&self) -> u32 { + self.inner.levels[4].ask_ct + } + #[setter] + fn set_ask_ct_04(&mut self, ask_ct: u32) { + self.inner.levels[4].ask_ct = ask_ct; + } + #[getter] + fn get_bid_px_05(&self) -> i64 { + self.inner.levels[5].bid_px + } + #[setter] + fn set_bid_px_05(&mut self, bid_px: i64) { + self.inner.levels[5].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_05(&self) -> f64 { + self.inner.levels[5].bid_px_f64() + } + #[getter] + fn get_ask_px_05(&self) -> i64 { + self.inner.levels[5].ask_px + } + #[setter] + fn set_ask_px_05(&mut self, ask_px: i64) { + self.inner.levels[5].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_05(&self) -> f64 { + self.inner.levels[5].ask_px_f64() + } + #[getter] + fn get_bid_sz_05(&self) -> u32 { + self.inner.levels[5].bid_sz + } + #[setter] + fn set_bid_sz_05(&mut self, bid_sz: u32) { + self.inner.levels[5].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_05(&self) -> u32 { + self.inner.levels[5].ask_sz + } + #[setter] + fn set_ask_sz_05(&mut self, ask_sz: u32) { + self.inner.levels[5].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_05(&self) -> u32 { + self.inner.levels[5].bid_ct + } + #[setter] + fn set_bid_ct_05(&mut self, bid_ct: u32) { + self.inner.levels[5].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_05(&self) -> u32 { + self.inner.levels[5].ask_ct + } + #[setter] + fn set_ask_ct_05(&mut self, ask_ct: u32) { + self.inner.levels[5].ask_ct = ask_ct; + } + #[getter] + fn get_bid_px_06(&self) -> i64 { + self.inner.levels[6].bid_px + } + #[setter] + fn set_bid_px_06(&mut self, bid_px: i64) { + self.inner.levels[6].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_06(&self) -> f64 { + self.inner.levels[6].bid_px_f64() + } + #[getter] + fn get_ask_px_06(&self) -> i64 { + self.inner.levels[6].ask_px + } + #[setter] + fn set_ask_px_06(&mut self, ask_px: i64) { + self.inner.levels[6].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_06(&self) -> f64 { + self.inner.levels[6].ask_px_f64() + } + #[getter] + fn get_bid_sz_06(&self) -> u32 { + self.inner.levels[6].bid_sz + } + #[setter] + fn set_bid_sz_06(&mut self, bid_sz: u32) { + self.inner.levels[6].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_06(&self) -> u32 { + self.inner.levels[6].ask_sz + } + #[setter] + fn set_ask_sz_06(&mut self, ask_sz: u32) { + self.inner.levels[6].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_06(&self) -> u32 { + self.inner.levels[6].bid_ct + } + #[setter] + fn set_bid_ct_06(&mut self, bid_ct: u32) { + self.inner.levels[6].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_06(&self) -> u32 { + self.inner.levels[6].ask_ct + } + #[setter] + fn set_ask_ct_06(&mut self, ask_ct: u32) { + self.inner.levels[6].ask_ct = ask_ct; + } + #[getter] + fn get_bid_px_07(&self) -> i64 { + self.inner.levels[7].bid_px + } + #[setter] + fn set_bid_px_07(&mut self, bid_px: i64) { + self.inner.levels[7].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_07(&self) -> f64 { + self.inner.levels[7].bid_px_f64() + } + #[getter] + fn get_ask_px_07(&self) -> i64 { + self.inner.levels[7].ask_px + } + #[setter] + fn set_ask_px_07(&mut self, ask_px: i64) { + self.inner.levels[7].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_07(&self) -> f64 { + self.inner.levels[7].ask_px_f64() + } + #[getter] + fn get_bid_sz_07(&self) -> u32 { + self.inner.levels[7].bid_sz + } + #[setter] + fn set_bid_sz_07(&mut self, bid_sz: u32) { + self.inner.levels[7].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_07(&self) -> u32 { + self.inner.levels[7].ask_sz + } + #[setter] + fn set_ask_sz_07(&mut self, ask_sz: u32) { + self.inner.levels[7].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_07(&self) -> u32 { + self.inner.levels[7].bid_ct + } + #[setter] + fn set_bid_ct_07(&mut self, bid_ct: u32) { + self.inner.levels[7].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_07(&self) -> u32 { + self.inner.levels[7].ask_ct + } + #[setter] + fn set_ask_ct_07(&mut self, ask_ct: u32) { + self.inner.levels[7].ask_ct = ask_ct; + } + #[getter] + fn get_bid_px_08(&self) -> i64 { + self.inner.levels[8].bid_px + } + #[setter] + fn set_bid_px_08(&mut self, bid_px: i64) { + self.inner.levels[8].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_08(&self) -> f64 { + self.inner.levels[8].bid_px_f64() + } + #[getter] + fn get_ask_px_08(&self) -> i64 { + self.inner.levels[8].ask_px + } + #[setter] + fn set_ask_px_08(&mut self, ask_px: i64) { + self.inner.levels[8].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_08(&self) -> f64 { + self.inner.levels[8].ask_px_f64() + } + #[getter] + fn get_bid_sz_08(&self) -> u32 { + self.inner.levels[8].bid_sz + } + #[setter] + fn set_bid_sz_08(&mut self, bid_sz: u32) { + self.inner.levels[8].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_08(&self) -> u32 { + self.inner.levels[8].ask_sz + } + #[setter] + fn set_ask_sz_08(&mut self, ask_sz: u32) { + self.inner.levels[8].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_08(&self) -> u32 { + self.inner.levels[8].bid_ct + } + #[setter] + fn set_bid_ct_08(&mut self, bid_ct: u32) { + self.inner.levels[8].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_08(&self) -> u32 { + self.inner.levels[8].ask_ct + } + #[setter] + fn set_ask_ct_08(&mut self, ask_ct: u32) { + self.inner.levels[8].ask_ct = ask_ct; + } + #[getter] + fn get_bid_px_09(&self) -> i64 { + self.inner.levels[9].bid_px + } + #[setter] + fn set_bid_px_09(&mut self, bid_px: i64) { + self.inner.levels[9].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_09(&self) -> f64 { + self.inner.levels[9].bid_px_f64() + } + #[getter] + fn get_ask_px_09(&self) -> i64 { + self.inner.levels[9].ask_px + } + #[setter] + fn set_ask_px_09(&mut self, ask_px: i64) { + self.inner.levels[9].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_09(&self) -> f64 { + self.inner.levels[9].ask_px_f64() + } + #[getter] + fn get_bid_sz_09(&self) -> u32 { + self.inner.levels[9].bid_sz + } + #[setter] + fn set_bid_sz_09(&mut self, bid_sz: u32) { + self.inner.levels[9].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_09(&self) -> u32 { + self.inner.levels[9].ask_sz + } + #[setter] + fn set_ask_sz_09(&mut self, ask_sz: u32) { + self.inner.levels[9].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_09(&self) -> u32 { + self.inner.levels[9].bid_ct + } + #[setter] + fn set_bid_ct_09(&mut self, bid_ct: u32) { + self.inner.levels[9].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_09(&self) -> u32 { + self.inner.levels[9].ask_ct + } + #[setter] + fn set_ask_ct_09(&mut self, ask_ct: u32) { + self.inner.levels[9].ask_ct = ask_ct; + } + #[classattr] #[pyo3(name = "_dtypes")] fn py_dtypes() -> Vec<(String, String)> { @@ -1605,6 +2223,63 @@ impl PyBboMsg { self.inner.levels = levels; } + #[getter] + fn get_bid_px_00(&self) -> i64 { + self.inner.levels[0].bid_px + } + #[setter] + fn set_bid_px_00(&mut self, bid_px: i64) { + self.inner.levels[0].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_00(&self) -> f64 { + self.inner.levels[0].bid_px_f64() + } + #[getter] + fn get_ask_px_00(&self) -> i64 { + self.inner.levels[0].ask_px + } + #[setter] + fn set_ask_px_00(&mut self, ask_px: i64) { + self.inner.levels[0].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_00(&self) -> f64 { + self.inner.levels[0].ask_px_f64() + } + #[getter] + fn get_bid_sz_00(&self) -> u32 { + self.inner.levels[0].bid_sz + } + #[setter] + fn set_bid_sz_00(&mut self, bid_sz: u32) { + self.inner.levels[0].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_00(&self) -> u32 { + self.inner.levels[0].ask_sz + } + #[setter] + fn set_ask_sz_00(&mut self, ask_sz: u32) { + self.inner.levels[0].ask_sz = ask_sz; + } + #[getter] + fn get_bid_ct_00(&self) -> u32 { + self.inner.levels[0].bid_ct + } + #[setter] + fn set_bid_ct_00(&mut self, bid_ct: u32) { + self.inner.levels[0].bid_ct = bid_ct; + } + #[getter] + fn get_ask_ct_00(&self) -> u32 { + self.inner.levels[0].ask_ct + } + #[setter] + fn set_ask_ct_00(&mut self, ask_ct: u32) { + self.inner.levels[0].ask_ct = ask_ct; + } + #[classattr] #[pyo3(name = "_dtypes")] fn py_dtypes() -> Vec<(String, String)> { @@ -1902,6 +2577,63 @@ impl PyCmbp1Msg { self.inner.levels = levels; } + #[getter] + fn get_bid_px_00(&self) -> i64 { + self.inner.levels[0].bid_px + } + #[setter] + fn set_bid_px_00(&mut self, bid_px: i64) { + self.inner.levels[0].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_00(&self) -> f64 { + self.inner.levels[0].bid_px_f64() + } + #[getter] + fn get_ask_px_00(&self) -> i64 { + self.inner.levels[0].ask_px + } + #[setter] + fn set_ask_px_00(&mut self, ask_px: i64) { + self.inner.levels[0].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_00(&self) -> f64 { + self.inner.levels[0].ask_px_f64() + } + #[getter] + fn get_bid_sz_00(&self) -> u32 { + self.inner.levels[0].bid_sz + } + #[setter] + fn set_bid_sz_00(&mut self, bid_sz: u32) { + self.inner.levels[0].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_00(&self) -> u32 { + self.inner.levels[0].ask_sz + } + #[setter] + fn set_ask_sz_00(&mut self, ask_sz: u32) { + self.inner.levels[0].ask_sz = ask_sz; + } + #[getter] + fn get_bid_pb_00(&self) -> u16 { + self.inner.levels[0].bid_pb + } + #[setter] + fn set_bid_pb_00(&mut self, bid_pb: u16) { + self.inner.levels[0].bid_pb = bid_pb; + } + #[getter] + fn get_ask_pb_00(&self) -> u16 { + self.inner.levels[0].ask_pb + } + #[setter] + fn set_ask_pb_00(&mut self, ask_pb: u16) { + self.inner.levels[0].ask_pb = ask_pb; + } + #[classattr] #[pyo3(name = "_dtypes")] fn py_dtypes() -> Vec<(String, String)> { @@ -2174,6 +2906,63 @@ impl PyCbboMsg { self.inner.levels = levels; } + #[getter] + fn get_bid_px_00(&self) -> i64 { + self.inner.levels[0].bid_px + } + #[setter] + fn set_bid_px_00(&mut self, bid_px: i64) { + self.inner.levels[0].bid_px = bid_px; + } + #[getter] + fn get_pretty_bid_px_00(&self) -> f64 { + self.inner.levels[0].bid_px_f64() + } + #[getter] + fn get_ask_px_00(&self) -> i64 { + self.inner.levels[0].ask_px + } + #[setter] + fn set_ask_px_00(&mut self, ask_px: i64) { + self.inner.levels[0].ask_px = ask_px; + } + #[getter] + fn get_pretty_ask_px_00(&self) -> f64 { + self.inner.levels[0].ask_px_f64() + } + #[getter] + fn get_bid_sz_00(&self) -> u32 { + self.inner.levels[0].bid_sz + } + #[setter] + fn set_bid_sz_00(&mut self, bid_sz: u32) { + self.inner.levels[0].bid_sz = bid_sz; + } + #[getter] + fn get_ask_sz_00(&self) -> u32 { + self.inner.levels[0].ask_sz + } + #[setter] + fn set_ask_sz_00(&mut self, ask_sz: u32) { + self.inner.levels[0].ask_sz = ask_sz; + } + #[getter] + fn get_bid_pb_00(&self) -> u16 { + self.inner.levels[0].bid_pb + } + #[setter] + fn set_bid_pb_00(&mut self, bid_pb: u16) { + self.inner.levels[0].bid_pb = bid_pb; + } + #[getter] + fn get_ask_pb_00(&self) -> u16 { + self.inner.levels[0].ask_pb + } + #[setter] + fn set_ask_pb_00(&mut self, ask_pb: u16) { + self.inner.levels[0].ask_pb = ask_pb; + } + #[classattr] #[pyo3(name = "_dtypes")] fn py_dtypes() -> Vec<(String, String)> { diff --git a/rust/dbn/src/symbol_map.rs b/rust/dbn/src/symbol_map.rs index 8c28859..d720a13 100644 --- a/rust/dbn/src/symbol_map.rs +++ b/rust/dbn/src/symbol_map.rs @@ -119,8 +119,9 @@ impl TsSymbolMap { instrument_id: u32, start_date: time::Date, end_date: time::Date, - symbol: Arc, + symbol: impl Into>, ) -> crate::Result<()> { + let symbol: Arc = symbol.into(); match start_date.cmp(&end_date) { Ordering::Less => { let mut day = start_date;