use crate::{dump, Module};
use pyo3::prelude::*;
pub fn parse<S1: Into<String>, S2: Into<String>>(input: S1, filename: S2) -> PyResult<Module> {
let pymodule_code = include_str!("__init__.py");
Python::with_gil(|py| -> PyResult<Module> {
let pymodule = PyModule::from_code(py, pymodule_code, "parser.py", "parser")?;
let t = pymodule.getattr("parse")?;
assert!(t.is_callable());
let args = (input.into(), filename.into());
let py_tree = t.call1(args)?;
log::debug!("py_tree: {}", dump(py_tree, Some(4))?);
let tree: Module = py_tree.extract()?;
Ok(tree)
})
}