Skip to content

Commit 7260034

Browse files
committed
fix: follow-up pyo3 API changes in module/function registration
1 parent 8b34609 commit 7260034

1 file changed

Lines changed: 19 additions & 19 deletions

File tree

src/lib.rs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
1-
use pyo3::prelude::*;
21
use pyo3::exceptions;
3-
4-
2+
use pyo3::prelude::*;
53

64
// This defines a python module. pyo3 will copy the rust doc comment
75
// below into a python docstring
86

7+
/// Demangles a mangled c++ linker symbol name and returns it as a string
8+
#[pyfunction]
9+
fn demangle(mangled: String) -> PyResult<String> {
10+
let symbol = ::cpp_demangle::Symbol::new(&mangled[..]).map_err(|error| {
11+
exceptions::PyValueError::new_err(("Could not demangle symbol", error.to_string()))
12+
})?;
13+
let demangled = symbol.demangle(&Default::default()).map_err(|error| {
14+
exceptions::PyValueError::new_err((
15+
"Could not format demangled name as string",
16+
error.to_string(),
17+
))
18+
})?;
19+
20+
Ok(demangled)
21+
}
22+
923
/// A package for demangling C++ linker symbols
1024
///
1125
/// This package provides python bindings for the rust crate
@@ -24,23 +38,9 @@ use pyo3::exceptions;
2438
/// ...
2539
/// ValueError: ('Could not demangle symbol', 'mangled symbol is not well-formed')
2640
#[pymodule]
27-
fn cpp_demangle(_py: Python, m: &PyModule) -> PyResult<()> {
41+
fn cpp_demangle(m: &Bound<'_, PyModule>) -> PyResult<()> {
2842
// This adds a function to the python module:
29-
/// Demangles a mangled c++ linker symbol name and returns it as a string
30-
#[pyfn(m)]
31-
fn demangle(mangled: String) -> PyResult<String> {
32-
let symbol = ::cpp_demangle::Symbol::new(&mangled[..]).map_err(|error| {
33-
exceptions::PyValueError::new_err(("Could not demangle symbol", error.to_string()))
34-
})?;
35-
let demangled = symbol.demangle(&Default::default()).map_err(|error| {
36-
exceptions::PyValueError::new_err((
37-
"Could not format demangled name as string",
38-
error.to_string(),
39-
))
40-
})?;
41-
42-
Ok(demangled)
43-
}
43+
m.add_function(wrap_pyfunction!(demangle, m)?)?;
4444

4545
Ok(())
4646
}

0 commit comments

Comments
 (0)