diff --git a/OMPython/ModelicaSystem.py b/OMPython/ModelicaSystem.py index 058c9d8b..bed1ed8f 100644 --- a/OMPython/ModelicaSystem.py +++ b/OMPython/ModelicaSystem.py @@ -345,7 +345,7 @@ def __init__( self._quantities: list[dict[str, Any]] = [] self._params: dict[str, str] = {} # even numerical values are stored as str - self._inputs: dict[str, list | None] = {} + self._inputs: dict[str, list[tuple[float, float]]] = {} # _outputs values are str before simulate(), but they can be # np.float64 after simulate(). self._outputs: dict[str, Any] = {} @@ -354,8 +354,15 @@ def __init__( self._simulate_options: dict[str, str] = {} self._override_variables: dict[str, str] = {} self._simulate_options_override: dict[str, str] = {} - self._linearization_options = {'startTime': 0.0, 'stopTime': 1.0, 'stepSize': 0.002, 'tolerance': 1e-8} - self._optimization_options = self._linearization_options | {'numberOfIntervals': 500} + self._linearization_options: dict[str, str | float] = { + 'startTime': 0.0, + 'stopTime': 1.0, + 'stepSize': 0.002, + 'tolerance': 1e-8, + } + self._optimization_options = self._linearization_options | { + 'numberOfIntervals': 500, + } self._linearized_inputs: list[str] = [] # linearization input list self._linearized_outputs: list[str] = [] # linearization output list self._linearized_states: list[str] = [] # linearization states list @@ -695,7 +702,10 @@ def getQuantities(self, names: Optional[str | list[str]] = None) -> list[dict]: raise ModelicaSystemError("Unhandled input for getQuantities()") - def getContinuous(self, names: Optional[str | list[str]] = None): + def getContinuous( + self, + names: Optional[str | list[str]] = None, + ) -> dict[str, str | numbers.Real] | list[str | numbers.Real]: """Get values of continuous signals. If called before simulate(), the initial values are returned as @@ -767,7 +777,10 @@ def getContinuous(self, names: Optional[str | list[str]] = None): raise ModelicaSystemError("Unhandled input for getContinous()") - def getParameters(self, names: Optional[str | list[str]] = None) -> dict[str, str] | list[str]: # 5 + def getParameters( + self, + names: Optional[str | list[str]] = None, + ) -> dict[str, str] | list[str]: """Get parameter values. Args: @@ -798,7 +811,10 @@ def getParameters(self, names: Optional[str | list[str]] = None) -> dict[str, st raise ModelicaSystemError("Unhandled input for getParameters()") - def getInputs(self, names: Optional[str | list[str]] = None) -> dict | list: # 6 + def getInputs( + self, + names: Optional[str | list[str]] = None, + ) -> dict[str, list[tuple[float, float]]] | list[list[tuple[float, float]]]: """Get values of input signals. Args: @@ -832,7 +848,10 @@ def getInputs(self, names: Optional[str | list[str]] = None) -> dict | list: # raise ModelicaSystemError("Unhandled input for getInputs()") - def getOutputs(self, names: Optional[str | list[str]] = None): # 7 + def getOutputs( + self, + names: Optional[str | list[str]] = None, + ) -> dict[str, str | numbers.Real] | list[str | numbers.Real]: """Get values of output signals. If called before simulate(), the initial values are returned as @@ -900,7 +919,10 @@ def getOutputs(self, names: Optional[str | list[str]] = None): # 7 raise ModelicaSystemError("Unhandled input for getOutputs()") - def getSimulationOptions(self, names: Optional[str | list[str]] = None) -> dict[str, str] | list[str]: + def getSimulationOptions( + self, + names: Optional[str | list[str]] = None, + ) -> dict[str, str] | list[str]: """Get simulation options such as stopTime and tolerance. Args: @@ -934,7 +956,10 @@ def getSimulationOptions(self, names: Optional[str | list[str]] = None) -> dict[ raise ModelicaSystemError("Unhandled input for getSimulationOptions()") - def getLinearizationOptions(self, names: Optional[str | list[str]] = None) -> dict | list: + def getLinearizationOptions( + self, + names: Optional[str | list[str]] = None, + ) -> dict[str, str | float] | list[str | float]: """Get simulation options used for linearization. Args: @@ -969,7 +994,10 @@ def getLinearizationOptions(self, names: Optional[str | list[str]] = None) -> di raise ModelicaSystemError("Unhandled input for getLinearizationOptions()") - def getOptimizationOptions(self, names: Optional[str | list[str]] = None) -> dict | list: + def getOptimizationOptions( + self, + names: Optional[str | list[str]] = None, + ) -> dict[str, str | float] | list[str | float]: """Get simulation options used for optimization. Args: @@ -1084,7 +1112,7 @@ def simulate_cmd( def simulate( self, - resultfile: Optional[str] = None, + resultfile: Optional[str | os.PathLike] = None, simflags: Optional[str] = None, simargs: Optional[dict[str, Optional[str | dict[str, Any] | numbers.Number]]] = None, timeout: Optional[float] = None, @@ -1783,9 +1811,9 @@ def linearize( continue target = body_part.targets[0].id # type: ignore - value = ast.literal_eval(body_part.value) + value_ast = ast.literal_eval(body_part.value) - linear_data[target] = value + linear_data[target] = value_ast except (AttributeError, IndexError, ValueError, SyntaxError, TypeError) as ex: raise ModelicaSystemError(f"Error parsing linearization file {linear_file}!") from ex diff --git a/OMPython/py.typed b/OMPython/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/pyproject.toml b/pyproject.toml index e82745c9..70708682 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,9 @@ dependencies = [ [tool.setuptools] packages = ["OMPython"] +[tool.setuptools.package-data] +"OMPython" = ["py.typed"] + [project.urls] Homepage = "http://openmodelica.org/" Documentation = "https://openmodelica.org/doc/OpenModelicaUsersGuide/latest/ompython.html"