nautilus_tardis/python/
mod.rs1pub mod config;
19pub mod csv;
20pub mod enums;
21pub mod http;
22pub mod machine;
23
24use nautilus_core::python::enums::parse_enum;
25use pyo3::prelude::*;
26use ustr::Ustr;
27
28use super::enums::{TardisExchange, TardisInstrumentType};
29use crate::parse::normalize_symbol_str;
30
31#[pyfunction(name = "tardis_normalize_symbol_str")]
37#[pyo3(signature = (symbol, exchange, instrument_type, is_inverse=None))]
38pub fn py_tardis_normalize_symbol_str(
39 symbol: String,
40 exchange: String,
41 instrument_type: String,
42 is_inverse: Option<bool>,
43) -> PyResult<String> {
44 let symbol = Ustr::from(&symbol);
45 let exchange: TardisExchange = parse_enum(&exchange, stringify!(exchange))?;
46 let instrument_type: TardisInstrumentType =
47 parse_enum(&instrument_type, stringify!(instrument_type))?;
48
49 Ok(normalize_symbol_str(symbol, &exchange, &instrument_type, is_inverse).to_string())
50}
51
52#[pymodule]
58pub fn tardis(_: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
59 m.add_class::<super::machine::types::TardisInstrumentMiniInfo>()?;
60 m.add_class::<super::machine::types::ReplayNormalizedRequestOptions>()?;
61 m.add_class::<super::machine::types::StreamNormalizedRequestOptions>()?;
62 m.add_class::<super::machine::TardisMachineClient>()?;
63 m.add_class::<super::http::client::TardisHttpClient>()?;
64 m.add_function(wrap_pyfunction!(py_tardis_normalize_symbol_str, m)?)?;
65 m.add_function(wrap_pyfunction!(
66 enums::py_tardis_exchange_from_venue_str,
67 m
68 )?)?;
69 m.add_function(wrap_pyfunction!(enums::py_tardis_exchange_to_venue_str, m)?)?;
70 m.add_function(wrap_pyfunction!(enums::py_tardis_exchanges, m)?)?;
71 m.add_function(wrap_pyfunction!(
72 config::py_bar_spec_to_tardis_trade_bar_string,
73 m
74 )?)?;
75 m.add_function(wrap_pyfunction!(machine::py_run_tardis_machine_replay, m)?)?;
76 m.add_function(wrap_pyfunction!(csv::py_load_tardis_deltas, m)?)?;
77 m.add_function(wrap_pyfunction!(
78 csv::py_load_tardis_depth10_from_snapshot5,
79 m
80 )?)?;
81 m.add_function(wrap_pyfunction!(
82 csv::py_load_tardis_depth10_from_snapshot25,
83 m
84 )?)?;
85 m.add_function(wrap_pyfunction!(csv::py_load_tardis_quotes, m)?)?;
86 m.add_function(wrap_pyfunction!(csv::py_load_tardis_trades, m)?)?;
87 m.add_function(wrap_pyfunction!(csv::py_stream_tardis_deltas, m)?)?;
88 m.add_function(wrap_pyfunction!(csv::py_stream_tardis_batched_deltas, m)?)?;
89 m.add_function(wrap_pyfunction!(csv::py_stream_tardis_quotes, m)?)?;
90 m.add_function(wrap_pyfunction!(csv::py_stream_tardis_trades, m)?)?;
91 m.add_function(wrap_pyfunction!(
92 csv::py_stream_tardis_depth10_from_snapshot5,
93 m
94 )?)?;
95 m.add_function(wrap_pyfunction!(
96 csv::py_stream_tardis_depth10_from_snapshot25,
97 m
98 )?)?;
99 m.add_function(wrap_pyfunction!(csv::py_load_tardis_funding_rates, m)?)?;
100 m.add_function(wrap_pyfunction!(csv::py_stream_tardis_funding_rates, m)?)?;
101
102 Ok(())
103}