diff --git a/apis/python/operator/src/lib.rs b/apis/python/operator/src/lib.rs index ed3c2e79..e2ef12e5 100644 --- a/apis/python/operator/src/lib.rs +++ b/apis/python/operator/src/lib.rs @@ -13,7 +13,7 @@ use futures::{Stream, StreamExt}; use futures_concurrency::stream::Merge as _; use pyo3::{ prelude::*, - types::{IntoPyDict, PyBool, PyDict, PyInt, PyList, PyString, PyTuple}, + types::{IntoPyDict, PyBool, PyDict, PyFloat, PyInt, PyList, PyString, PyTuple}, }; /// Dora Event @@ -171,6 +171,8 @@ pub fn pydict_to_metadata(dict: Option>) -> Result() { parameters.insert(key, Parameter::Integer(value.extract::()?)) + } else if value.is_instance_of::() { + parameters.insert(key, Parameter::Float(value.extract::()?)) } else if value.is_instance_of::() { parameters.insert(key, Parameter::String(value.extract()?)) } else if value.is_instance_of::() @@ -185,6 +187,18 @@ pub fn pydict_to_metadata(dict: Option>) -> Result = value.extract()?; parameters.insert(key, Parameter::ListInt(list)) + } else if value.is_instance_of::() + && value.len()? > 0 + && value.get_item(0)?.is_exact_instance_of::() + { + let list: Vec = value.extract()?; + parameters.insert(key, Parameter::ListFloat(list)) + } else if value.is_instance_of::() + && value.len()? > 0 + && value.get_item(0)?.is_exact_instance_of::() + { + let list: Vec = value.extract()?; + parameters.insert(key, Parameter::ListFloat(list)) } else { println!("could not convert type {value}"); parameters.insert(key, Parameter::String(value.str()?.to_string()))