use pyo3::prelude::*;
use pyo3::types::PyDict;
use pyo3::wrap_pymodule;
pub mod decorators;
pub mod integrations;
pub mod venv;
pub fn initialize() -> PyResult<()> {
Python::attach(|py| {
let sys = py.import("sys")?;
let modules_attr = sys.getattr("modules")?;
let modules = modules_attr.cast::<PyDict>()?;
let angreal_module = create_angreal_module(py)?;
modules.set_item("angreal", &angreal_module)?;
Ok(())
})
}
pub(crate) fn create_angreal_module(py: Python<'_>) -> PyResult<Bound<'_, PyModule>> {
let m = PyModule::new(py, "angreal")?;
m.add("__version__", env!("CARGO_PKG_VERSION"))?;
decorators::register_decorators(py, &m)?;
m.add_wrapped(wrap_pymodule!(integrations::integrations))?;
Ok(m)
}