1use 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}