Mercurial > public > mercurial-scm > hg-stable
diff rust/hg-cpython/src/debug.rs @ 44541:d4f19eb471ca
rust-cpython: add `debug` module to expose debug information to Python
This will be mostly used in `debuginstall`.
Differential Revision: https://phab.mercurial-scm.org/D8225
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Thu, 05 Mar 2020 10:24:10 +0100 |
parents | |
children | 9f96beb9bafe |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rust/hg-cpython/src/debug.rs Thu Mar 05 10:24:10 2020 +0100 @@ -0,0 +1,26 @@ +// debug.rs +// +// Copyright 2020 Raphaël Gomès <rgomes@octobus.net> +// +// 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<PyModule> { + 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) +}