Skip to content

Commit 5d7af02

Browse files
committed
[ModelicaSystemABC] additional checks for setInputs()
1 parent b51606c commit 5d7af02

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
@@ -1022,27 +1022,37 @@ def setInputs(
10221022
raise ModelicaSystemError(f"Invalid data in input for {repr(key)}: {repr(val)}")
10231023

10241024
val_evaluated = ast.literal_eval(val)
1025-
10261025
if isinstance(val_evaluated, (int, float)):
10271026
self._inputs[key] = [(float(self._simulate_options["startTime"]), float(val)),
10281027
(float(self._simulate_options["stopTime"]), float(val))]
10291028
elif isinstance(val_evaluated, list):
10301029
if not all(isinstance(item, tuple) for item in val_evaluated):
10311030
raise ModelicaSystemError("Value for setInput() must be in tuple format; "
10321031
f"got {repr(val_evaluated)}")
1033-
if val_evaluated != sorted(val_evaluated, key=lambda x: x[0]):
1034-
raise ModelicaSystemError("Time value should be in increasing order; "
1035-
f"got {repr(val_evaluated)}")
10361032

1033+
val_evaluated_checked: list[tuple[float, float]] = []
10371034
for item in val_evaluated:
1038-
if item[0] < float(self._simulate_options["startTime"]):
1039-
raise ModelicaSystemError(f"Time value in {repr(item)} of {repr(val_evaluated)} is less "
1040-
"than the simulation start time")
10411035
if len(item) != 2:
10421036
raise ModelicaSystemError(f"Value {repr(item)} of {repr(val_evaluated)} "
10431037
"is in incorrect format!")
10441038

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

0 commit comments

Comments
 (0)