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!(
71 enums::py_tardis_exchange_is_option_exchange,
72 m
73 )?)?;
74 m.add_function(wrap_pyfunction!(enums::py_tardis_exchanges, m)?)?;
75 m.add_function(wrap_pyfunction!(
76 config::py_bar_spec_to_tardis_trade_bar_string,
77 m
78 )?)?;
79 m.add_function(wrap_pyfunction!(machine::py_run_tardis_machine_replay, m)?)?;
80 m.add_function(wrap_pyfunction!(csv::py_load_tardis_deltas, m)?)?;
81 m.add_function(wrap_pyfunction!(
82 csv::py_load_tardis_depth10_from_snapshot5,
83 m
84 )?)?;
85 m.add_function(wrap_pyfunction!(
86 csv::py_load_tardis_depth10_from_snapshot25,
87 m
88 )?)?;
89 m.add_function(wrap_pyfunction!(csv::py_load_tardis_quotes, m)?)?;
90 m.add_function(wrap_pyfunction!(csv::py_load_tardis_trades, m)?)?;
91 m.add_function(wrap_pyfunction!(csv::py_stream_tardis_deltas, m)?)?;
92 m.add_function(wrap_pyfunction!(csv::py_stream_tardis_batched_deltas, m)?)?;
93 m.add_function(wrap_pyfunction!(csv::py_stream_tardis_quotes, m)?)?;
94 m.add_function(wrap_pyfunction!(csv::py_stream_tardis_trades, m)?)?;
95 m.add_function(wrap_pyfunction!(
96 csv::py_stream_tardis_depth10_from_snapshot5,
97 m
98 )?)?;
99 m.add_function(wrap_pyfunction!(
100 csv::py_stream_tardis_depth10_from_snapshot25,
101 m
102 )?)?;
103 m.add_function(wrap_pyfunction!(csv::py_load_tardis_funding_rates, m)?)?;
104 m.add_function(wrap_pyfunction!(csv::py_stream_tardis_funding_rates, m)?)?;
105
106 Ok(())
107}