stock-trek 0.2.7

Stock Trek time-series analysis
Documentation
#[cfg(feature = "python")]
use {
    crate::{
        bindings::python::dto::convert::rust_decimal_to_py, dto::raw_market_ohlcv::RawMarketOhlcv,
    },
    pyo3::{prelude::*, pyclass, pymethods, PyResult, Python},
};

#[cfg(feature = "python")]
#[pyclass(name = "RawMarketOhlcv")]
pub struct PyRawMarketOhlcv {
    inner: RawMarketOhlcv,
}

#[cfg(feature = "python")]
#[pymethods]
impl PyRawMarketOhlcv {
    pub fn open(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
        rust_decimal_to_py(py, self.inner.open())
    }
    pub fn high(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
        rust_decimal_to_py(py, self.inner.high())
    }
    pub fn low(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
        rust_decimal_to_py(py, self.inner.low())
    }
    pub fn close(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
        rust_decimal_to_py(py, self.inner.close())
    }
    pub fn volume(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
        rust_decimal_to_py(py, self.inner.volume())
    }
    pub fn quote_volume(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
        rust_decimal_to_py(py, self.inner.quote_volume())
    }
    pub fn vwap(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
        rust_decimal_to_py(py, self.inner.vwap())
    }
    pub fn __repr__(&self) -> String {
        format!("{:?}", self.inner)
    }
}

#[cfg(feature = "python")]
impl From<&RawMarketOhlcv> for PyRawMarketOhlcv {
    fn from(ohlcv: &RawMarketOhlcv) -> Self {
        Self {
            inner: ohlcv.to_owned(),
        }
    }
}

#[cfg(feature = "python")]
impl PyRawMarketOhlcv {
    pub fn new_py(py: Python<'_>, ohlcv: &RawMarketOhlcv) -> PyResult<Py<Self>> {
        Py::new(py, PyRawMarketOhlcv::from(ohlcv))
    }
}