Skip to content

Commit e3e5e53

Browse files
committed
[ModelicaSystem] consider relativ path if ModelicaSystem is run locally
1 parent 3ba2986 commit e3e5e53

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
@@ -429,18 +430,30 @@ def model(
429430
# set variables
430431
self._model_name = name # Model class name
431432
self._libraries = libraries # may be needed if model is derived from other model
432-
if file is not None:
433-
file_name = self._getconn.omcpath(file).resolve()
434-
else:
435-
file_name = None
436-
self._file_name = file_name # Model file/package name
437433
self._variable_filter = variable_filter
438434

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

0 commit comments

Comments
 (0)