use chrono::{DateTime, Utc};
use czsc_core::objects::{freq::Freq, market::Market};
use pyo3::prelude::*;
use crate::bar_generator::BarGenerator;
#[pyfunction]
#[pyo3(signature = (dt, market="astock"))]
fn is_trading_time(dt: chrono::NaiveDateTime, market: &str) -> bool {
crate::is_trading_time(dt, market)
}
#[pyfunction]
#[pyo3(signature = (dt, freq, market=Market::Default))]
fn freq_end_time(dt: DateTime<Utc>, freq: Freq, market: Market) -> PyResult<DateTime<Utc>> {
crate::freq_data::freq_end_time(dt, freq, market)
.map_err(|e| pyo3::exceptions::PyValueError::new_err(e.to_string()))
}
pub fn register(py: Python<'_>, parent: &Bound<'_, PyModule>) -> PyResult<()> {
let utils = PyModule::new(py, "utils")?;
utils.add_function(wrap_pyfunction!(is_trading_time, &utils)?)?;
utils.add_function(wrap_pyfunction!(freq_end_time, &utils)?)?;
utils.add_class::<BarGenerator>()?;
parent.add_submodule(&utils)?;
parent.add_function(wrap_pyfunction!(is_trading_time, parent)?)?;
parent.add_function(wrap_pyfunction!(freq_end_time, parent)?)?;
parent.add_class::<BarGenerator>()?;
Ok(())
}