Skip to content

Commit 818612d

Browse files
committed
[ModelicaSystem] consider relativ path if ModelicaSystem is run locally
1 parent 95113bd commit 818612d

1 file changed

Lines changed: 21 additions & 8 deletions

File tree

OMPython/ModelicaSystem.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import numbers
3939
import numpy as np
4040
import os
41+
import pathlib
4142
import textwrap
4243
from typing import Optional, Any
4344
import warnings
@@ -428,18 +429,30 @@ def model(
428429
# set variables
429430
self._model_name = name # Model class name
430431
self._libraries = libraries # may be needed if model is derived from other model
431-
if file is not None:
432-
file_name = self._getconn.omcpath(file).resolve()
433-
else:
434-
file_name = None
435-
self._file_name = file_name # Model file/package name
436432
self._variable_filter = variable_filter
437433

438-
if self._file_name is not None and not self._file_name.is_file(): # if file does not exist
439-
raise IOError(f"{self._file_name} does not exist!")
440-
441434
if self._libraries:
442435
self._loadLibrary(libraries=self._libraries)
436+
437+
self._file_name = None
438+
if file is not None:
439+
file_path = pathlib.Path(file)
440+
# special handling for OMCProcessLocal - consider a relative path
441+
if isinstance(self._getconn.omc_process, OMCProcessLocal) and not file_path.is_absolute():
442+
file_path = pathlib.Path.cwd() / file_path
443+
if not file_path.is_file():
444+
raise IOError(f"Model file {file_path} does not exist!")
445+
446+
self._file_name = self.getWorkDirectory() / file_path.name
447+
if (isinstance(self._getconn.omc_process, OMCProcessLocal)
448+
and file_path.as_posix() == self._file_name.as_posix()):
449+
pass
450+
elif self._file_name.is_file():
451+
raise IOError(f"Simulation model file {self._file_name} exist - not overwriting!")
452+
else:
453+
content = file_path.read_text(encoding='utf-8')
454+
self._file_name.write_text(content)
455+
443456
if self._file_name is not None:
444457
self._loadFile(fileName=self._file_name)
445458

0 commit comments

Comments
 (0)