rust/hg-cpython/src/utils.rs
author Yuya Nishihara <yuya@tcha.org>
Sat, 05 Oct 2019 08:59:09 -0400
changeset 43428 6c0e47874217
parent 43251 970978975574
child 44505 d738b7a18438
permissions -rw-r--r--
rust-cpython: drop manual management of mutably_borrowed RefCell::borrow() should guarantee there's no mutable borrow. As a follow up, maybe PySharedState can be a pure data structure + function. Most ref-sharing business has already been moved to PySharedRef* and PyLeaked*.

use cpython::{PyDict, PyObject, PyResult, PyTuple, Python};

#[allow(unused)]
pub fn print_python_trace(py: Python) -> PyResult<PyObject> {
    eprintln!("===============================");
    eprintln!("Printing Python stack from Rust");
    eprintln!("===============================");
    let traceback = py.import("traceback")?;
    let sys = py.import("sys")?;
    let kwargs = PyDict::new(py);
    kwargs.set_item(py, "file", sys.get(py, "stderr")?)?;
    traceback.call(py, "print_stack", PyTuple::new(py, &[]), Some(&kwargs))
}