oxmpl_py/
lib.rs

1// Copyright (c) 2025 Junior Sundar
2//
3// SPDX-License-Identifier: BSD-3-Clause
4
5use pyo3::{prelude::*, types::PyDict};
6
7#[macro_use]
8mod macros;
9mod base;
10mod geometric;
11
12#[pymodule]
13fn oxmpl_py(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
14    let sys_modules = py
15        .import("sys")?
16        .getattr("modules")?
17        .downcast_into::<PyDict>()?;
18    let base_module = base::create_module(py)?;
19    m.add_submodule(&base_module)?;
20    sys_modules.set_item("oxmpl_py.base", base_module)?;
21
22    let geometric_module = geometric::create_module(py)?;
23    m.add_submodule(&geometric_module)?;
24    sys_modules.set_item("oxmpl_py.geometric", geometric_module)?;
25
26    m.add("__version__", env!("CARGO_PKG_VERSION"))?;
27    m.add(
28        "__doc__",
29        "A Rust-powered motion planning library for Python, inspired by OMPL.",
30    )?;
31
32    Ok(())
33}