Skip to content

Commit 8677b86

Browse files
committed
[ModelicaSystemABC] additional checks for setInputs()
1 parent 5e9d1ef commit 8677b86

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

OMPython/modelica_system_abc.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,27 +1015,37 @@ def setInputs(
10151015
raise ModelicaSystemError(f"Invalid data in input for {repr(key)}: {repr(val)}")
10161016

10171017
val_evaluated = ast.literal_eval(val)
1018-
10191018
if isinstance(val_evaluated, (int, float)):
10201019
self._inputs[key] = [(float(self._simulate_options["startTime"]), float(val)),
10211020
(float(self._simulate_options["stopTime"]), float(val))]
10221021
elif isinstance(val_evaluated, list):
10231022
if not all([isinstance(item, tuple) for item in val_evaluated]):
10241023
raise ModelicaSystemError("Value for setInput() must be in tuple format; "
10251024
f"got {repr(val_evaluated)}")
1026-
if val_evaluated != sorted(val_evaluated, key=lambda x: x[0]):
1027-
raise ModelicaSystemError("Time value should be in increasing order; "
1028-
f"got {repr(val_evaluated)}")
10291025

1026+
val_evaluated_checked: list[tuple[float, float]] = []
10301027
for item in val_evaluated:
1031-
if item[0] < float(self._simulate_options["startTime"]):
1032-
raise ModelicaSystemError(f"Time value in {repr(item)} of {repr(val_evaluated)} is less "
1033-
"than the simulation start time")
10341028
if len(item) != 2:
10351029
raise ModelicaSystemError(f"Value {repr(item)} of {repr(val_evaluated)} "
10361030
"is in incorrect format!")
10371031

1038-
self._inputs[key] = val_evaluated
1032+
try:
1033+
val_evaluated_checked.append((float(item[0]), float(item[1])))
1034+
except (ValueError, TypeError) as exc:
1035+
raise ModelicaSystemError("All elements of the input for setInput() should be convertible to "
1036+
"type Tuple[float, float] - "
1037+
f"found [{repr(item[0])}, {repr(item[1])}] with types "
1038+
f"[{type(item[0])}, {type(item[1])}]!") from exc
1039+
1040+
if item[0] < float(self._simulate_options["startTime"]):
1041+
raise ModelicaSystemError(f"Time value in {repr(item)} of {repr(val_evaluated)} is less "
1042+
"than the simulation start time")
1043+
1044+
if val_evaluated_checked != sorted(val_evaluated_checked, key=lambda x: x[0]):
1045+
raise ModelicaSystemError("Time value should be in increasing order; "
1046+
f"got {repr(val_evaluated_checked)}")
1047+
1048+
self._inputs[key] = val_evaluated_checked
10391049
else:
10401050
raise ModelicaSystemError(f"Data cannot be evaluated for {repr(key)}: {repr(val)}")
10411051

0 commit comments

Comments
 (0)