| 14 | use super::py_task::PyTaskHandle; |
| 15 | |
| 16 | fn try_convert_to_buffer(value: &Bound<'_, PyAny>) -> PyResult<Buffer> { |
| 17 | if let Ok(buffer) = value.extract::<PyBuffer>() { |
| 18 | return Ok(buffer.inner); |
| 19 | } |
| 20 | if let Ok(array) = value.extract::<PyReadonlyArray1<'_, f64>>() { |
| 21 | return Ok(asarray_from_numpy(array)); |
| 22 | } |
| 23 | if let Ok(values) = value.extract::<Vec<f64>>() { |
| 24 | return Ok(Buffer::from_f64_vec(values)); |
| 25 | } |
| 26 | if let Ok(value) = value.extract::<f64>() { |
| 27 | return Ok(Buffer::from_f64_vec(vec![value])); |
| 28 | } |
| 29 | Err(PyErr::new::<pyo3::exceptions::PyTypeError, _>( |
| 30 | "callable result is not buffer-convertible", |
| 31 | )) |
| 32 | } |
| 33 | |
| 34 | fn reject_callable_args_for_spec( |
| 35 | args: &Bound<'_, PyTuple>, |