use pyo3::prelude::*; #[pyclass(module = "_pendulum")] pub struct Duration { #[pyo3(get, set)] pub years: u32, #[pyo3(get, set)] pub months: u32, #[pyo3(get, set)] pub weeks: u32, #[pyo3(get, set)] pub days: u32, #[pyo3(get, set)] pub hours: u32, #[pyo3(get, set)] pub minutes: u32, #[pyo3(get, set)] pub seconds: u32, #[pyo3(get, set)] pub microseconds: u32, } #[pymethods] impl Duration { #[new] #[pyo3(signature = (years=0, months=0, weeks=0, days=0, hours=0, minutes=0, seconds=0, microseconds=0))] #[allow(clippy::too_many_arguments)] pub fn new( years: Option, months: Option, weeks: Option, days: Option, hours: Option, minutes: Option, seconds: Option, microseconds: Option, ) -> Self { Self { years: years.unwrap_or(0), months: months.unwrap_or(0), weeks: weeks.unwrap_or(0), days: days.unwrap_or(0), hours: hours.unwrap_or(0), minutes: minutes.unwrap_or(0), seconds: seconds.unwrap_or(0), microseconds: microseconds.unwrap_or(0), } } #[getter] fn remaining_days(&self) -> PyResult { Ok(self.days) } #[getter] fn remaining_seconds(&self) -> PyResult { Ok(self.seconds) } }