Skip to content

Commit 2f16f5b

Browse files
authored
Feat/value error on fail decode (#13)
* raise value error on fail to decode * raise valueerror on fail to get type id * bump ver * add value error raise for encode as well
1 parent fe9499d commit 2f16f5b

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/lib.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,7 +1084,7 @@ mod bt_decode {
10841084
to_encode: Py<PyAny>,
10851085
) -> PyResult<Vec<u8>> {
10861086
// Initialize logging
1087-
pyo3_log::try_init();
1087+
let _ = pyo3_log::try_init();
10881088

10891089
// Create a memoization table for the type string to type id conversion
10901090
let mut memo = HashMap::<String, u32>::new();
@@ -1094,17 +1094,29 @@ mod bt_decode {
10941094
fill_memo_using_well_known_types(&mut memo, &curr_registry);
10951095

10961096
let type_id: u32 = get_type_id_from_type_string(&mut memo, type_string, &mut curr_registry)
1097-
.expect("Failed to get type id from type string");
1097+
.ok_or(PyErr::new::<pyo3::exceptions::PyValueError, _>(format!(
1098+
"Failed to get type id from type string: {:?}",
1099+
type_string
1100+
)))?;
10981101

1099-
let ty = curr_registry
1100-
.resolve(type_id)
1101-
.expect(&format!("Failed to resolve type (0): {:?}", type_string));
1102+
let ty = curr_registry.resolve(type_id).ok_or(PyErr::new::<
1103+
pyo3::exceptions::PyValueError,
1104+
_,
1105+
>(format!(
1106+
"Failed to resolve type (0): {:?}",
1107+
type_string
1108+
)))?;
11021109

11031110
let as_value: Value<u32> =
11041111
pyobject_to_value(py, &to_encode, ty, type_id, portable_registry)?;
11051112

11061113
let mut encoded: Vec<u8> = Vec::<u8>::new();
1107-
encode_as_type(&as_value, type_id, &curr_registry, &mut encoded).expect("Failed to encode");
1114+
encode_as_type(&as_value, type_id, &curr_registry, &mut encoded).map_err(|_e| {
1115+
PyErr::new::<pyo3::exceptions::PyValueError, _>(format!(
1116+
"Failed to encode type: {:?} with type id: {:?}",
1117+
type_string, type_id
1118+
))
1119+
})?;
11081120

11091121
Ok(encoded)
11101122
}

0 commit comments

Comments
 (0)