diff --git a/src/pyrecest/scenarios.py b/src/pyrecest/scenarios.py index c14578646..62222f9c0 100644 --- a/src/pyrecest/scenarios.py +++ b/src/pyrecest/scenarios.py @@ -154,7 +154,10 @@ def convert(item: Any) -> float: raise ValueError(message) if isinstance(value, int | float): return [convert(value)] - return [convert(item) for item in value] + try: + return [convert(item) for item in value] + except TypeError as exc: + raise ValueError(message) from exc def _normalized_particle_weights(raw_weights: Any, particle_count: int, backend): diff --git a/tests/test_scenario_input_validation.py b/tests/test_scenario_input_validation.py new file mode 100644 index 000000000..386160220 --- /dev/null +++ b/tests/test_scenario_input_validation.py @@ -0,0 +1,8 @@ +import pytest + +from pyrecest.scenarios import _to_float_list + + +def test_to_float_list_rejects_noniterable_nonnumeric_values(): + with pytest.raises(ValueError, match="measurement must contain numeric values"): + _to_float_list(object(), name="measurement", reject_text_or_bool=True)