summaryrefslogtreecommitdiffstats
path: root/rust/src/python/mod.rs
blob: 8d3cd41ae4c6acf2c517686ffcead5bc483c64c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use pyo3::prelude::*;

mod helpers;
mod parsing;
mod types;

use helpers::{days_in_year, is_leap, is_long_year, local_time, precise_diff, week_day};
use parsing::parse_iso8601;
use types::{Duration, PreciseDiff};

#[pymodule]
pub fn _pendulum(_py: Python<'_>, m: &PyModule) -> PyResult<()> {
    m.add_function(wrap_pyfunction!(days_in_year, m)?)?;
    m.add_function(wrap_pyfunction!(is_leap, m)?)?;
    m.add_function(wrap_pyfunction!(is_long_year, m)?)?;
    m.add_function(wrap_pyfunction!(local_time, m)?)?;
    m.add_function(wrap_pyfunction!(week_day, m)?)?;
    m.add_function(wrap_pyfunction!(parse_iso8601, m)?)?;
    m.add_function(wrap_pyfunction!(precise_diff, m)?)?;
    m.add_class::<Duration>()?;
    m.add_class::<PreciseDiff>()?;

    #[cfg(not(feature = "mimalloc"))]
    m.setattr("__pendulum_default_allocator__", true)?; // uses setattr so this is not in __all__

    Ok(())
}