diff --git a/rust/hg-cpython/src/debug.rs b/rust/hg-cpython/src/debug.rs new file mode 100644 --- /dev/null +++ b/rust/hg-cpython/src/debug.rs @@ -0,0 +1,26 @@ +// debug.rs +// +// Copyright 2020 Raphaël Gomès +// +// This software may be used and distributed according to the terms of the +// GNU General Public License version 2 or any later version. + +//! Module to get debug information about Rust extensions. +use cpython::{PyDict, PyModule, PyResult, Python}; + +/// Create the module, with `__package__` given from parent +pub fn init_module(py: Python, package: &str) -> PyResult { + let dotted_name = &format!("{}.debug", package); + let m = PyModule::new(py, dotted_name)?; + + m.add(py, "__package__", package)?; + m.add(py, "__doc__", "Rust debugging information")?; + + m.add(py, "re2_installed", cfg!(feature = "with-re2"))?; + + let sys = PyModule::import(py, "sys")?; + let sys_modules: PyDict = sys.get(py, "modules")?.extract(py)?; + sys_modules.set_item(py, dotted_name, &m)?; + + Ok(m) +} diff --git a/rust/hg-cpython/src/lib.rs b/rust/hg-cpython/src/lib.rs --- a/rust/hg-cpython/src/lib.rs +++ b/rust/hg-cpython/src/lib.rs @@ -30,6 +30,7 @@ #[macro_use] pub mod ref_sharing; pub mod dagops; +pub mod debug; pub mod dirstate; pub mod discovery; pub mod exceptions; @@ -47,6 +48,7 @@ let dotted_name: String = m.get(py, "__name__")?.extract(py)?; m.add(py, "ancestor", ancestors::init_module(py, &dotted_name)?)?; m.add(py, "dagop", dagops::init_module(py, &dotted_name)?)?; + m.add(py, "debug", debug::init_module(py, &dotted_name)?)?; m.add(py, "discovery", discovery::init_module(py, &dotted_name)?)?; m.add(py, "dirstate", dirstate::init_module(py, &dotted_name)?)?; m.add(py, "revlog", revlog::init_module(py, &dotted_name)?)?;