diff --git a/.gitattributes b/.gitattributes
index ca69e9d4..164ad774 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -30,3 +30,7 @@
*.png -text
*.gif -text
*.ico -text
+
+# Denote all files that are truly binary and should not be modified.
+*.onnx binary
+*.fmu binary
diff --git a/.github/workflows/_build_and_publish_documentation.yml b/.github/workflows/_build_and_publish_documentation.yml
index 2fed60c7..3f39aa7b 100644
--- a/.github/workflows/_build_and_publish_documentation.yml
+++ b/.github/workflows/_build_and_publish_documentation.yml
@@ -17,7 +17,7 @@ jobs:
with:
lfs: true
- name: Install uv
- uses: astral-sh/setup-uv@v2
+ uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
diff --git a/.github/workflows/_build_package.yml b/.github/workflows/_build_package.yml
index 362d3aaa..5c21af41 100644
--- a/.github/workflows/_build_package.yml
+++ b/.github/workflows/_build_package.yml
@@ -11,7 +11,7 @@ jobs:
with:
lfs: true
- name: Install uv
- uses: astral-sh/setup-uv@v2
+ uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
diff --git a/.github/workflows/_code_quality.yml b/.github/workflows/_code_quality.yml
index d3e65a71..3ef1e817 100644
--- a/.github/workflows/_code_quality.yml
+++ b/.github/workflows/_code_quality.yml
@@ -9,7 +9,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Install uv
- uses: astral-sh/setup-uv@v2
+ uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
@@ -28,7 +28,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Install uv
- uses: astral-sh/setup-uv@v2
+ uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
@@ -47,7 +47,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Install uv
- uses: astral-sh/setup-uv@v2
+ uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
@@ -66,7 +66,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Install uv
- uses: astral-sh/setup-uv@v2
+ uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
diff --git a/.github/workflows/_test.yml b/.github/workflows/_test.yml
index 3dc9a75b..a9c580bf 100644
--- a/.github/workflows/_test.yml
+++ b/.github/workflows/_test.yml
@@ -16,22 +16,21 @@ jobs:
- version: '3.10'
- version: '3.11'
- version: '3.12'
+ - version: '3.13'
steps:
- uses: actions/checkout@v4
- name: Install uv
- uses: astral-sh/setup-uv@v2
+ uses: astral-sh/setup-uv@v5
with:
- enable-cache: true
+ enable-cache: false
cache-dependency-glob: "uv.lock"
- name: Install Python ${{ matrix.python.version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python.version }}
- name: Install the project
- run: uv sync --upgrade -p ${{ matrix.python.version }} --no-dev
- - name: Install pytest
- run: |
- uv pip install pytest
- uv pip install pytest-cov
+ run: uv sync -p ${{ matrix.python.version }} -U --no-dev
- name: Run pytest
- run: uv run pytest --cov
+ run: >
+ uv run --with pytest --with pytest-cov
+ pytest --cov
diff --git a/.github/workflows/_test_future.yml b/.github/workflows/_test_future.yml
index 0b46eb52..24c6b525 100644
--- a/.github/workflows/_test_future.yml
+++ b/.github/workflows/_test_future.yml
@@ -1,10 +1,10 @@
-name: Unit Tests (py313)
-# Test also with Python 3.13 (experimental; workflow will not fail on error.)
+name: Unit Tests (py314)
+# Test also with Python 3.14 (experimental; workflow will not fail on error.)
on: workflow_call
jobs:
- test313:
+ test314:
name: Test on ${{matrix.python.version}}-${{matrix.platform.runner}} (experimental)
continue-on-error: true
runs-on: ${{ matrix.platform.runner }}
@@ -14,24 +14,22 @@ jobs:
- runner: ubuntu-latest
- runner: windows-latest
python:
- - version: '3.13.0-alpha - 3.13.0'
- uvpy: '3.13'
+ - version: '3.14.0-alpha - 3.14.0'
+ uvpy: '3.14'
steps:
- uses: actions/checkout@v4
- name: Install uv
- uses: astral-sh/setup-uv@v2
+ uses: astral-sh/setup-uv@v5
with:
- enable-cache: true
+ enable-cache: false
cache-dependency-glob: "uv.lock"
- name: Install Python ${{ matrix.python.version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python.version }}
- name: Install the project
- run: uv sync --upgrade -p ${{ matrix.python.uvpy }} --no-dev
- - name: Install pytest
- run: |
- uv pip install pytest
- uv pip install pytest-cov
+ run: uv sync -p ${{ matrix.python.uvpy }} -U --no-dev
- name: Run pytest
- run: uv run pytest --cov
+ run: >
+ uv run --with pytest --with pytest-cov
+ pytest --cov
diff --git a/.gitignore b/.gitignore
index e353c084..5e9f4387 100644
--- a/.gitignore
+++ b/.gitignore
@@ -156,5 +156,8 @@ demos/**/*.log
demos/**/*.db
demos/**/*.nc
+# Cmake generated files
+CMakeUserPresets.json
+
# modules
-modules.txt
\ No newline at end of file
+modules.txt
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index b054a6fc..df75480c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,20 +1,20 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.6.0
+ rev: v5.0.0
hooks:
- id: mixed-line-ending
- fix: auto
+ args: [--fix=auto]
- id: trailing-whitespace
- id: check-yaml
- id: check-toml
- id: check-merge-conflict
- repo: https://github.com/astral-sh/ruff-pre-commit
- rev: v0.6.2
+ rev: v0.9.2
hooks:
- - id: ruff
- id: ruff-format
+ - id: ruff
# - repo: https://github.com/pre-commit/mirrors-mypy
- # rev: v1.9.0
+ # rev: v1.14.1
# hooks:
# - id: mypy
- # exclude: tests/
+exclude: '(.venv|.*_cache)/.*'
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 2cb66f60..2accaf5a 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -11,6 +11,8 @@
"sourcery.sourcery",
"njpwerner.autodocstring",
"editorconfig.editorconfig",
+ "ms-toolsai.jupyter",
+ "ms-toolsai.jupyter-renderers",
"ms-python.mypy-type-checker",
],
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 49e7c187..b798c5c8 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -49,7 +49,7 @@
"name": "ospCaseBuilder test_caseDict --inspect",
"type": "debugpy",
"request": "launch",
- "cwd": "${workspaceFolder}\\tests\\test_dicts",
+ "cwd": "${workspaceFolder}\\tests\\test_working_directory",
"program": "${workspaceFolder}\\src\\ospx\\cli\\ospCaseBuilder.py",
"args": [
"test_caseDict",
@@ -65,7 +65,7 @@
"name": "ospCaseBuilder test_caseDict_minimal_inspect --inspect",
"type": "debugpy",
"request": "launch",
- "cwd": "${workspaceFolder}\\tests\\test_dicts",
+ "cwd": "${workspaceFolder}\\tests\\test_working_directory",
"program": "${workspaceFolder}\\src\\ospx\\cli\\ospCaseBuilder.py",
"args": [
"test_caseDict_minimal_inspect",
@@ -81,7 +81,7 @@
"name": "importSystemStructure test_import_OspSystemStructure.xml",
"type": "debugpy",
"request": "launch",
- "cwd": "${workspaceFolder}\\tests\\test_dicts",
+ "cwd": "${workspaceFolder}\\tests\\test_working_directory",
"program": "${workspaceFolder}\\src\\ospx\\cli\\importSystemStructure.py",
"args": [
"test_import_OspSystemStructure.xml",
@@ -96,7 +96,7 @@
"name": "ospCaseBuilder test_caseDict_imported_test_graph",
"type": "debugpy",
"request": "launch",
- "cwd": "${workspaceFolder}\\tests\\test_dicts",
+ "cwd": "${workspaceFolder}\\tests\\test_working_directory",
"program": "${workspaceFolder}\\src\\ospx\\cli\\ospCaseBuilder.py",
"args": [
"test_caseDict_imported_test_graph",
@@ -112,7 +112,7 @@
"name": "ospCaseBuilder test_caseDict --graph",
"type": "debugpy",
"request": "launch",
- "cwd": "${workspaceFolder}\\tests\\test_dicts",
+ "cwd": "${workspaceFolder}\\tests\\test_working_directory",
"program": "${workspaceFolder}\\src\\ospx\\cli\\ospCaseBuilder.py",
"args": [
"test_caseDict",
@@ -128,7 +128,7 @@
"name": "watchCosim test_caseDict",
"type": "debugpy",
"request": "launch",
- "cwd": "${workspaceFolder}\\tests\\test_dicts",
+ "cwd": "${workspaceFolder}\\tests\\test_working_directory",
"program": "${workspaceFolder}\\src\\ospx\\watch\\cli\\watchCosim.py",
"args": [
"watchDict",
@@ -144,7 +144,7 @@
"name": "ospCaseBuilder test_caseDict_minimal_set_int_for_real",
"type": "debugpy",
"request": "launch",
- "cwd": "${workspaceFolder}\\tests\\test_dicts",
+ "cwd": "${workspaceFolder}\\tests\\test_working_directory",
"program": "${workspaceFolder}\\src\\ospx\\cli\\ospCaseBuilder.py",
"args": [
"test_caseDict_minimal_set_int_for_real",
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 35d8ed7b..8ec2fac6 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -47,6 +47,6 @@
],
"mypy-type-checker.importStrategy": "fromEnvironment",
"mypy-type-checker.reportingScope": "workspace",
- "mypy-type-checker.preferDaemon": false,
+ "mypy-type-checker.preferDaemon": true,
"ruff.configurationPreference": "filesystemFirst",
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f2080766..783b9e09 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,37 @@ The changelog format is based on [Keep a Changelog](https://keepachangelog.com/e
-/-
+## [0.3.1] - 2025-01-18
+
+### Added
+* Added support for Python 3.13
+* Added CITATION.cff
+* pyproject.toml : Added keywords
+
+### Solved
+* Resolved issues raised by `ruff` 0.9.2
+
+### Dependencies
+* Updated to ruff>=0.9.2 (from ruff>=0.6.3)
+* Updated to pyright>=1.1.392 (from pyright>=1.1.378)
+* Updated to sourcery>=1.31 (from sourcery>=1.22)
+* Updated to lxml>=5.3 (from lxml>=5.2)
+* Updated to types-lxml>=2024.12 (from types-lxml>=2024.4)
+* Updated to matplotlib>=3.10 (from matplotlib>=3.9)
+* Updated to dictIO>=0.4.1 (from dictIO>=0.4.0)
+* Updated to Sphinx>=8.1 (from Sphinx>=8.0)
+* Updated to sphinx-argparse-cli>=1.19 (from sphinx-argparse-cli>=1.17)
+* Updated to sphinx-autodoc-typehints>=3.0 (from sphinx-autodoc-typehints>=2.2)
+* Updated to mypy>=1.14 (from mypy>=1.11.1)
+* Updated to setup-uv@v5 (from setup-uv@v2)
+* Updated to jupyter>=1.1 (from jupyter>=1.0)
+* Updated to pytest-cov>=6.0 (from pytest-cov>=5.0)
+* Updated to pre-commit>=4.0 (from pre-commit>=3.8)
+* numpy: As Python 3.13 requires numpy 2.x, made minimum required numpy version in pyproject.toml dependent on Python version:
+ * "numpy>=1.26; python_version < '3.13'",
+ * "numpy>=2.2; python_version >= '3.13'",
+
+
## [0.3.0] - 2024-11-11
### Breaking changes
@@ -438,8 +469,9 @@ Maintenance Release
* Added support for Python 3.10
-[unreleased]: https://github.com/dnv-opensource/ospx/compare/v0.2.15...HEAD
-[0.2.15]: https://github.com/dnv-opensource/ospx/compare/v0.2.14...v0.2.15
+[unreleased]: https://github.com/dnv-opensource/ospx/compare/v0.3.1...HEAD
+[0.3.1]: https://github.com/dnv-opensource/ospx/compare/v0.3.0...v0.3.1
+[0.3.0]: https://github.com/dnv-opensource/ospx/compare/v0.2.14...v0.3.0
[0.2.14]: https://github.com/dnv-opensource/ospx/compare/v0.2.13...v0.2.14
[0.2.13]: https://github.com/dnv-opensource/ospx/compare/v0.2.12...v0.2.13
[0.2.12]: https://github.com/dnv-opensource/ospx/compare/v0.2.11...v0.2.12
diff --git a/CITATION.cff b/CITATION.cff
new file mode 100644
index 00000000..a2d4d7f3
--- /dev/null
+++ b/CITATION.cff
@@ -0,0 +1,37 @@
+title: ospx
+version: 0.3.1
+abstract: >-
+ Extension package to farn, adding support to build OSP simulation cases using FMUs.
+type: software
+authors:
+ - name: DNV SE
+ address: 'Brooktorkai 18'
+ post-code: '20457'
+ city: Hamburg
+ country: DE
+ website: 'https://www.dnv.com/'
+ - given-names: Frank
+ family-names: Lumpitzsch
+ affiliation: DNV
+ email: frank.lumpitzsch@dnv.com
+ website: 'https://www.linkedin.com/in/frank-lumpitzsch-23013196/'
+ - given-names: Claas
+ family-names: Rostock
+ affiliation: DNV
+ email: claas.rostock@dnv.com
+ website: 'https://www.linkedin.com/in/claasrostock/?locale=en_US'
+ - given-names: Seunghyeon
+ family-names: Yoo
+ affiliation: DNV
+ email: seunghyeon.yoo@dnv.com
+ website: 'https://www.linkedin.com/in/seunghyeon-yoo-3625173b/'
+keywords:
+ - farn
+ - OSP
+ - fmi
+license: MIT
+license-url: 'https://dnv-opensource.github.io/ospx/LICENSE.html'
+url: 'https://dnv-opensource.github.io/ospx/README.html'
+repository-code: 'https://github.com/dnv-opensource/ospx'
+message: 'Please cite this software using these metadata.'
+cff-version: 1.2.0
diff --git a/README.md b/README.md
index f1fa554b..a15fc643 100644
--- a/README.md
+++ b/README.md
@@ -81,38 +81,27 @@ winget install --id Python.Python
or you can download and install Python from the [python.org](https://www.python.org/downloads/) website.
### 3. Clone the repository
-Clone the dictIO repository into your local development directory:
+Clone the ospx repository into your local development directory:
```sh
git clone https://github.com/dnv-opensource/ospx path/to/your/dev/ospx
```
+Change into the project directory after cloning:
+```sh
+cd ospx
+```
### 4. Install dependencies
Run `uv sync` to create a virtual environment and install all project dependencies into it:
```sh
uv sync
```
+> **Note**: Using `--no-dev` will omit installing development dependencies.
-### 5. (Optional) Install CUDA support
-Run `uv sync` with option `--extra cuda` to in addition install torch with CUDA support:
-```sh
-uv sync --extra cuda
-```
-
-Alternatively, you can manually install torch with CUDA support.
-_Note 1_: Do this preferably _after_ running `uv sync`. That way you ensure a virtual environment exists, which is a prerequisite before you install torch with CUDA support using below `uv pip install` command.
-
-To manually install torch with CUDA support, generate a `uv pip install` command matching your local machine's operating system using the wizard on the official [PyTorch website](https://pytorch.org/get-started/locally/).
-_Note_: As we use `uv` as package manager, remember to replace `pip` in the command generated by the wizard with `uv pip`.
-
-If you are on Windows, the resulting `uv pip install` command will most likely look something like this:
-```sh
-uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
-```
-
-_Hint:_ If you are unsure which cuda version to indicate in above `uv pip install .. /cuXXX` command, you can use the shell command `nvidia-smi` on your local system to find out the cuda version supported by the current graphics driver installed on your system. When then generating the `uv pip install` command with the wizard from the [PyTorch website](https://pytorch.org/get-started/locally/), select the cuda version that matches the major version of what your graphics driver supports (major version must match, minor version may deviate).
+> **Note**: `uv` will create a new virtual environment called `.venv` in the project root directory when running
+> `uv sync` the first time. Optionally, you can create your own virtual environment using e.g. `uv venv`, before running
+> `uv sync`.
-
-### 6. (Optional) Activate the virtual environment
+### 5. (Optional) Activate the virtual environment
When using `uv`, there is in almost all cases no longer a need to manually activate the virtual environment.
`uv` will find the `.venv` virtual environment in the working directory or any parent directory, and activate it on the fly whenever you run a command via `uv` inside your project folder structure:
```sh
@@ -131,7 +120,7 @@ To manually activate the virtual environment, run one of the "known" legacy comm
source .venv/bin/activate
```
-### 7. Install pre-commit hooks
+### 6. Install pre-commit hooks
The `.pre-commit-config.yaml` file in the project root directory contains a configuration for pre-commit hooks.
To install the pre-commit hooks defined therein in your local git repository, run:
```sh
@@ -140,8 +129,22 @@ uv run pre-commit install
All pre-commit hooks configured in `.pre-commit-config.yaml` will now run each time you commit changes.
+pre-commit can also manually be invoked, at anytime, using:
+```sh
+uv run pre-commit run --all-files
+```
+
+To skip the pre-commit validation on commits (e.g. when intentionally committing broken code), run:
+```sh
+uv run git commit -m --no-verify
+```
+
+To update the hooks configured in `.pre-commit-config.yaml` to their newest versions, run:
+```sh
+uv run pre-commit autoupdate
+```
-### 8. Test that the installation works
+### 7. Test that the installation works
To test that the installation works, run pytest in the project root folder:
```sh
uv run pytest
@@ -151,11 +154,11 @@ uv run pytest
Copyright (c) 2024 [DNV](https://www.dnv.com) SE. All rights reserved.
-Frank Lumpitzsch – [@LinkedIn](https://www.linkedin.com/in/frank-lumpitzsch-23013196/) – frank.lumpitzsch@dnv.com
+Frank Lumpitzsch - [@LinkedIn](https://www.linkedin.com/in/frank-lumpitzsch-23013196/) - frank.lumpitzsch@dnv.com
-Claas Rostock – [@LinkedIn](https://www.linkedin.com/in/claasrostock/?locale=en_US) – claas.rostock@dnv.com
+Claas Rostock - [@LinkedIn](https://www.linkedin.com/in/claasrostock/?locale=en_US) - claas.rostock@dnv.com
-Seunghyeon Yoo – [@LinkedIn](https://www.linkedin.com/in/seunghyeon-yoo-3625173b/) – seunghyeon.yoo@dnv.com
+Seunghyeon Yoo - [@LinkedIn](https://www.linkedin.com/in/seunghyeon-yoo-3625173b/) - seunghyeon.yoo@dnv.com
Distributed under the MIT license. See [LICENSE](LICENSE.md) for more information.
diff --git a/STYLEGUIDE.md b/STYLEGUIDE.md
index d4ab3f89..126cf04e 100644
--- a/STYLEGUIDE.md
+++ b/STYLEGUIDE.md
@@ -372,9 +372,9 @@ If you are interested in the long story including the why‘s, read these discus
import pandas as pd
import numpy as np
- import my_package
- import my_package.my_module
- from my_package.my_module import my_function, MyClass
+ import ospx
+ import ospx.my_module
+ from ospx.my_module import my_function, MyClass
```
* Even if a Python file is intended to be used as executable / script file only, it shall still be importable as a module, and its import should not have any side effects. Its main functionality shall hence be in a `main()` function, so that the code can be imported as a module for testing or being reused in the future:
diff --git a/docs/make.bat b/docs/make.bat
index 3ad6380a..df8f6957 100644
--- a/docs/make.bat
+++ b/docs/make.bat
@@ -10,8 +10,6 @@ if "%SPHINXBUILD%" == "" (
set SOURCEDIR=source
set BUILDDIR=build
-if "%1" == "" goto help
-
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
@@ -25,6 +23,8 @@ if errorlevel 9009 (
exit /b 1
)
+if "%1" == "" goto help
+
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% -a -E
goto end
diff --git a/docs/source/conf.py b/docs/source/conf.py
index e3693cc3..fc3fa19a 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -23,10 +23,10 @@
project = "ospx"
copyright = "2024, DNV SE. All rights reserved."
-author = "Frank Lumpitzsch, Claas Rostock, Seung Hyeon Yoo"
+author = "Frank Lumpitzsch, Claas Rostock, Seunghyeon Yoo"
# The full version, including alpha/beta/rc tags
-release = "0.3.0"
+release = "0.3.1"
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -37,12 +37,17 @@
"sphinx.ext.napoleon",
"sphinx_argparse_cli",
"sphinx.ext.mathjax",
- "matplotlib.sphinxext.plot_directive",
"sphinx.ext.autosummary",
"sphinx.ext.todo",
"sphinxcontrib.mermaid",
]
+# Extenstion for myst_parser
+myst_enable_extensions = [
+ "dollarmath",
+ "attrs_inline",
+]
+
# The file extensions of source files.
source_suffix = {
".rst": "restructuredtext",
@@ -74,5 +79,7 @@
myst_heading_anchors = 3
+todo_include_todos = False
+
# add markdown mermaid support
myst_fence_as_directive = ["mermaid"]
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 2786e2a5..6b9db18f 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -1,27 +1,27 @@
-.. ospx documentation master file, created by
- sphinx-quickstart on Thu Nov 18 22:00:50 2021.
- You can adapt this file completely to your liking, but it should at least
- contain the root `toctree` directive.
-
-ospx Documentation
-==================
-
-.. toctree::
- :maxdepth: 4
- :caption: Contents:
-
- README
- CHANGELOG
- LICENSE
- api
- cli
- fileFormat
-
-
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
+.. ospx documentation master file, created by
+ sphinx-quickstart on Thu Nov 18 22:00:50 2021.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+ospx Documentation
+==================
+
+.. toctree::
+ :maxdepth: 4
+ :caption: Contents:
+
+ README
+ api
+ cli
+ fileFormat
+ CHANGELOG
+ STYLEGUIDE
+ LICENSE
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/pyproject.toml b/pyproject.toml
index d6239679..8784fc2c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -10,6 +10,9 @@ only-include = [
"tests",
".coveragerc",
".editorconfig",
+ ".pre-commit-config.yaml",
+ "manage.py",
+ "pyproject.toml",
"pytest.ini",
"ruff.toml",
"uv.lock",
@@ -22,19 +25,23 @@ packages = [
[project]
name = "ospx"
-version = "0.3.0"
+version = "0.3.1"
description = "Extension package to farn, adding support to build OSP simulation cases using FMUs."
readme = "README.md"
-requires-python = ">= 3.10"
+requires-python = ">= 3.10, < 3.14"
license = { file = "LICENSE" }
authors = [
{ name = "Frank Lumpitzsch", email = "frank.lumpitzsch@dnv.com" },
{ name = "Claas Rostock", email = "claas.rostock@dnv.com" },
+ { name = "Seunghyeon Yoo", email = "seunghyeon.yoo@dnv.com" },
]
maintainers = [
{ name = "Claas Rostock", email = "claas.rostock@dnv.com" },
]
keywords = [
+ "farn",
+ "OSP",
+ "fmi",
]
classifiers = [
"Development Status :: 4 - Beta",
@@ -42,6 +49,7 @@ classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX :: Linux",
"Operating System :: MacOS",
@@ -52,12 +60,13 @@ classifiers = [
"Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = [
- "lxml>=5.2",
- "numpy>=1.26,<2.0",
+ "lxml>=5.3",
+ "numpy>=1.26; python_version < '3.13'",
+ "numpy>=2.2; python_version >= '3.13'",
"pandas>=2.2",
- "matplotlib>=3.9",
+ "matplotlib>=3.10",
"graphviz>=0.20",
- "dictIO>=0.4.0",
+ "dictIO>=0.4.1",
]
[project.urls]
@@ -68,29 +77,33 @@ Issues = "https://github.com/dnv-opensource/ospx/issues"
Changelog = "https://github.com/dnv-opensource/ospx/blob/main/CHANGELOG.md"
-[tool.uv]
-dev-dependencies = [
+[dependency-groups]
+dev = [
"pytest>=8.3",
- "pytest-cov>=5.0",
- "ruff>=0.6.3",
- "pyright>=1.1.378",
- "mypy>=1.11.1",
- "sourcery>=1.22",
- "pre-commit>=3.8",
- "Sphinx>=8.0",
- "sphinx-argparse-cli>=1.17",
- "sphinx-autodoc-typehints>=2.2",
+ "pytest-cov>=6.0",
+ "ruff>=0.9.2",
+ "pyright>=1.1.392",
+ "mypy>=1.14",
+ "sourcery>=1.31",
+ "pre-commit>=4.0",
+ "Sphinx>=8.1",
+ "sphinx-argparse-cli>=1.19",
+ "sphinx-autodoc-typehints>=3.0",
"sphinxcontrib-mermaid>=1.0.0",
"myst-parser>=4.0",
"furo>=2024.8",
"nbconvert>=7.16",
- "jupyter>=1.0",
+ "jupyter>=1.1",
"jupyter-client>=8.6",
"pandas-stubs>=2.2",
- "types-lxml>=2024.4",
+ "types-lxml>=2024.12",
+]
+
+[tool.uv]
+default-groups = [
+ "dev",
]
native-tls = true
-# prerelease = "explicit"
[project.scripts]
diff --git a/pytest.ini b/pytest.ini
index 89ecb94b..c382b543 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -1,5 +1,5 @@
[pytest]
testpaths =
tests
-addopts = --strict-markers --verbose
+addopts = --strict-markers --verbose --durations=10
xfail_strict = True
diff --git a/ruff.toml b/ruff.toml
index 88d7a301..cbfd1eeb 100644
--- a/ruff.toml
+++ b/ruff.toml
@@ -31,8 +31,6 @@ ignore = [
"PLR0912", # Too many branches <- @TODO: reactivate and resolve @CLAROS, 2024-10-21
"PLR0915", # Too many statements <- @TODO: reactivate and resolve @CLAROS, 2024-10-21
# Ruff lint rules considered as too strict and hence ignored
- "ANN101", # Missing type annotation for `self` argument in instance methods (NOTE: also listed as deprecated by Ruff)
- "ANN102", # Missing type annotation for `cls` argument in class methods (NOTE: also listed as deprecated by Ruff)
"FIX002", # Line contains TODO, consider resolving the issue
"TD003", # Missing issue link on the line following a TODO
"S101", # Use of assert detected
@@ -42,6 +40,9 @@ ignore = [
"TRY003", # Avoid specifying long messages outside the exception class
"PLR1711", # Useless `return` statement at end of function
"G00", # Logging statement uses string formatting ('G00' covers all rules flagging string formatting in logging, e.g. G001, G002, etc.)
+ "S311", # Standard pseudo-random generators are not suitable for cryptographic purposes
+ "PLW0603", # Using the global statement to update {name} is discouraged
+ "PYI041", # Use `float` instead of `int | float`
# Ruff lint rules recommended to keep enabled,
# but which are typical candidates you might have a need to ignore,
@@ -51,8 +52,8 @@ ignore = [
# (uncomment to ignore)
# "N803", # Argument name should be lowercase (NOTE: ignore to allow capital arguments (e.g X) in scientific code)
# "N806", # Variable in function should be lowercase (NOTE: ignore to allow capital variables (e.g X) in scientific code)
- # "TCH002", # Move third-party import into a type-checking block
- # "TCH003", # Move standard library import into a type-checking block
+ # "TC002", # Move third-party import into a type-checking block
+ # "TC003", # Move standard library import into a type-checking block
# Ruff lint rules known to be in conflict with Ruff formatter.
# https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules
@@ -83,8 +84,6 @@ allowed-confusables = [
[lint.pep8-naming]
ignore-names = [
"test_*",
- "setUp",
- "tearDown",
]
[lint.pylint]
@@ -116,6 +115,8 @@ raises-require-match-for = [
"PLR2004", # Magic value used in comparison
"ANN201", # Missing return type annotation for public function
"ANN202", # Missing return type annotation for private function
+ "ARG001", # Unused function argument: {name}
+ "ARG002", # Unused method argument: {name}
"INP001", # File is part of an implicit namespace package. Add an `__init__.py`. (NOTE: tests are not intended to be a module, __init__.py hence not required.)
"SLF001", # Private member accessed
"TRY004", # Prefer `TypeError` exception for invalid type
@@ -152,6 +153,11 @@ raises-require-match-for = [
"T201", # `print` found
"E402", # Module level import not at top of cell
]
+# utils/logging specific ignores
+"**/utils/logging.py" = [
+ "A005", # Module `logging` shadows a Python standard-library module
+]
+
[lint.pydocstyle]
convention = "numpy"
diff --git a/src/ospx/__init__.py b/src/ospx/__init__.py
index b5600751..82a38fa2 100644
--- a/src/ospx/__init__.py
+++ b/src/ospx/__init__.py
@@ -1,3 +1,5 @@
+"""ospx package."""
+
from ospx.simulation import Simulation as Simulation
from ospx.connector import Connector as Connector
from ospx.connection import (
diff --git a/src/ospx/cli/__init__.py b/src/ospx/cli/__init__.py
index e69de29b..753505c9 100644
--- a/src/ospx/cli/__init__.py
+++ b/src/ospx/cli/__init__.py
@@ -0,0 +1 @@
+"""Command line interfaces."""
diff --git a/src/ospx/cli/importSystemStructure.py b/src/ospx/cli/importSystemStructure.py
index 3772c917..4d3ba98c 100644
--- a/src/ospx/cli/importSystemStructure.py
+++ b/src/ospx/cli/importSystemStructure.py
@@ -1,8 +1,8 @@
#!/usr/bin/env python
+"""importSystemStructure command line interface."""
import argparse
import logging
-from argparse import ArgumentParser
from pathlib import Path
from ospx import OspSystemStructureImporter
@@ -12,9 +12,9 @@
def _argparser() -> argparse.ArgumentParser:
- parser = ArgumentParser(
+ parser = argparse.ArgumentParser(
prog="importSystemStructure",
- usage="%(prog)s systemStructureFile [options [args]]",
+ usage="%(prog)s system_structure_file [options [args]]",
epilog="_________________importSystemStructure___________________",
prefix_chars="-",
add_help=True,
@@ -22,8 +22,8 @@ def _argparser() -> argparse.ArgumentParser:
)
_ = parser.add_argument(
- "systemStructureFile",
- metavar="systemStructureFile",
+ "system_structure_file",
+ metavar="system_structure_file",
type=str,
help="name of the system structure file",
default="OspSystemStructure.xml",
@@ -70,7 +70,7 @@ def _argparser() -> argparse.ArgumentParser:
def main() -> None:
- """Entry point for console script as configured in setup.cfg.
+ """Entry point for console script as configured in pyproject.toml.
Runs the command line interface and parses arguments and options entered on the console.
"""
@@ -78,16 +78,17 @@ def main() -> None:
args = parser.parse_args()
# Configure Logging
+ # ..to console
log_level_console: str = "WARNING"
if any([args.quiet, args.verbose]):
log_level_console = "ERROR" if args.quiet else log_level_console
- log_level_console = "DEBUG" if args.verbose else log_level_console
+ log_level_console = "INFO" if args.verbose else log_level_console
# ..to file
log_file: Path | None = Path(args.log) if args.log else None
log_level_file: str = args.log_level
configure_logging(log_level_console, log_file, log_level_file)
- system_structure_file: Path = Path(args.systemStructureFile)
+ system_structure_file: Path = Path(args.system_structure_file)
# Check whether system structure file exists
if not system_structure_file.is_file():
@@ -95,8 +96,7 @@ def main() -> None:
return
logger.info(
- f"Start importSystemStructure.py with following arguments:\n"
- f"\t system_structure_file: \t{system_structure_file}"
+ f"Start importSystemStructure.py with following arguments:\n\t system_structure_file: \t{system_structure_file}"
)
# Invoke API
diff --git a/src/ospx/cli/ospCaseBuilder.py b/src/ospx/cli/ospCaseBuilder.py
index ac9388b4..84711830 100644
--- a/src/ospx/cli/ospCaseBuilder.py
+++ b/src/ospx/cli/ospCaseBuilder.py
@@ -1,4 +1,5 @@
#!/usr/bin/env python
+"""ospCaseBuilder command line interface."""
import argparse
import logging
@@ -13,7 +14,7 @@
def _argparser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
prog="ospCaseBuilder",
- usage="%(prog)s caseDict [options [args]]",
+ usage="%(prog)s case_dict_file [options [args]]",
epilog="_________________ospCaseBuilder___________________",
prefix_chars="-",
add_help=True,
@@ -21,8 +22,8 @@ def _argparser() -> argparse.ArgumentParser:
)
_ = parser.add_argument(
- "caseDict",
- metavar="caseDict",
+ "case_dict_file",
+ metavar="case_dict_file",
type=str,
nargs="?",
help="name of the dict file containing the OSP simulation case configuration.",
@@ -97,7 +98,7 @@ def _argparser() -> argparse.ArgumentParser:
def main() -> None:
- """Entry point for console script as configured in setup.cfg.
+ """Entry point for console script as configured in pyproject.toml.
Runs the command line interface and parses arguments and options entered on the console.
"""
@@ -106,11 +107,10 @@ def main() -> None:
# Configure Logging
# ..to console
- log_level_console: str = "INFO"
+ log_level_console: str = "WARNING"
if any([args.quiet, args.verbose]):
log_level_console = "ERROR" if args.quiet else log_level_console
- log_level_console = "DEBUG" if args.verbose else log_level_console
-
+ log_level_console = "INFO" if args.verbose else log_level_console
# ..to file
log_file: Path | None = Path(args.log) if args.log else None
log_level_file: str = args.log_level
@@ -120,7 +120,7 @@ def main() -> None:
graph: bool = args.graph
clean: bool = args.clean
- case_dict_file: Path = Path(args.caseDict)
+ case_dict_file: Path = Path(args.case_dict_file)
# Check whether case dict file exists
if not case_dict_file.exists():
diff --git a/src/ospx/graph.py b/src/ospx/graph.py
index e0eb0e52..fa7c675e 100644
--- a/src/ospx/graph.py
+++ b/src/ospx/graph.py
@@ -144,22 +144,22 @@ def generate_dependency_graph(case: OspSimulationCase) -> None:
style = "dashed"
color = "#003399"
fontcolor = "#003399"
- penwidth = ("%i" % 1,)
- weight = ("%i" % 1,)
+ penwidth = (f"{1:d}",)
+ weight = (f"{1:d}",)
elif re.search(basic_op_names, from_key, re.IGNORECASE):
style = "filled"
color = "#995566"
fontcolor = "#663344"
- penwidth = ("%i" % 3,)
+ penwidth = (f"{3:d}",)
weight = (f"{0.66:.2f}",)
else:
style = "bold"
color = "black"
fontcolor = "black"
- penwidth = ("%i" % int(round((2) ** 1.5, 0)),)
- weight = ("%i" % int(round((2) ** 1.5, 0)),)
+ penwidth = (f"{int(round((2) ** 1.5, 0))}",)
+ weight = (f"{int(round((2) ** 1.5, 0))}",)
callgraph.edge(
from_key,
diff --git a/src/ospx/ospSimulationCase.py b/src/ospx/ospSimulationCase.py
index bedc23de..596c9b32 100644
--- a/src/ospx/ospSimulationCase.py
+++ b/src/ospx/ospSimulationCase.py
@@ -527,13 +527,13 @@ def _inspect(self) -> None:
delim = "\t" * 3
log_string = (
- f"Components and related FMUs as defined in {self.case_dict.name}\n" f"\tcomponent{delim}fmu{delim}\n\n"
+ f"Components and related FMUs as defined in {self.case_dict.name}\n\tcomponent{delim}fmu{delim}\n\n"
)
for component_name, component in self.system_structure.components.items():
log_string += f"\t{component_name}{delim}{component.fmu.file.name}\n"
logger.info(log_string + "\n")
- log_string = f"FMU attributes defined in the fmu's modelDescription.xml\n" f"\tfmu{delim}attributes{delim}"
+ log_string = f"FMU attributes defined in the fmu's modelDescription.xml\n\tfmu{delim}attributes{delim}"
for fmu_name, fmu in self.system_structure.fmus.items():
log_string += f"\n\n\t{fmu_name}\n"
fmu_attributes = "\n".join(
@@ -562,9 +562,7 @@ def _inspect(self) -> None:
log_string += unit_definitions
logger.info(log_string + "\n")
- log_string = (
- f"Variables defined in the fmu's modelDescription.xml\n" f"\tfmu{delim}variable{delim}type{delim}unit"
- )
+ log_string = f"Variables defined in the fmu's modelDescription.xml\n\tfmu{delim}variable{delim}type{delim}unit"
logger.info(log_string + "\n")
for fmu_name, fmu in self.system_structure.fmus.items():
log_string = f"\t{fmu_name}\n"
diff --git a/src/ospx/utils/__init__.py b/src/ospx/utils/__init__.py
index e69de29b..9e972259 100644
--- a/src/ospx/utils/__init__.py
+++ b/src/ospx/utils/__init__.py
@@ -0,0 +1 @@
+"""Utilities for ospx."""
diff --git a/src/ospx/utils/zip.py b/src/ospx/utils/zip.py
index 322ce429..0651cdf9 100644
--- a/src/ospx/utils/zip.py
+++ b/src/ospx/utils/zip.py
@@ -128,7 +128,7 @@ def substitute_text_in_zip(
temp = zip_read.read(item.filename)
source = (re.findall(subst[0], str(temp)))[0]
if not str(source):
- logger.warning(f'substitution source is empty:\'{" ".join(source)}\'')
+ logger.warning(f"substitution source is empty:'{' '.join(source)}'")
temp = temp.replace(bytes(source, "utf-8"), bytes(subst[1], "utf-8"))
zip_write.writestr(item, temp)
diff --git a/tests/conftest.py b/tests/conftest.py
index f7ee17b7..bf81ab96 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -14,7 +14,7 @@ def chdir() -> None:
Fixture that changes the current working directory to the 'test_working_directory' folder.
This fixture is automatically used for the entire package.
"""
- os.chdir(Path(__file__).parent.absolute() / "test_dicts")
+ os.chdir(Path(__file__).parent.absolute() / "test_working_directory")
@pytest.fixture(scope="package", autouse=True)
diff --git a/tests/gunnerus-dp/config/control-system/OspSystemStructure.xml b/tests/gunnerus-dp/config/control-system/OspSystemStructure.xml
index 91e820c6..b21b2f9b 100644
--- a/tests/gunnerus-dp/config/control-system/OspSystemStructure.xml
+++ b/tests/gunnerus-dp/config/control-system/OspSystemStructure.xml
@@ -17,7 +17,7 @@
-
+
@@ -37,7 +37,7 @@
-
+
diff --git a/tests/gunnerus-dp/config/control-system/PlotConfig.json b/tests/gunnerus-dp/config/control-system/PlotConfig.json
index a2d145a3..876e68de 100644
--- a/tests/gunnerus-dp/config/control-system/PlotConfig.json
+++ b/tests/gunnerus-dp/config/control-system/PlotConfig.json
@@ -11,7 +11,7 @@
{
"simulator": "simulator_communication",
"variable": "Measured_Position[1]"
- },
+ },
{
"simulator": "reference_model",
"variable": "Position_Setpoint[2]"
diff --git a/tests/gunnerus-dp/config/simulator/OspSystemStructure.xml b/tests/gunnerus-dp/config/simulator/OspSystemStructure.xml
index 26d8233c..25bad839 100644
--- a/tests/gunnerus-dp/config/simulator/OspSystemStructure.xml
+++ b/tests/gunnerus-dp/config/simulator/OspSystemStructure.xml
@@ -17,7 +17,7 @@
-
+
@@ -27,7 +27,7 @@
-
+
@@ -42,6 +42,6 @@
-
+
\ No newline at end of file
diff --git a/tests/gunnerus-dp/config/simulator/PlotConfig.json b/tests/gunnerus-dp/config/simulator/PlotConfig.json
index a84d551f..99c3a713 100644
--- a/tests/gunnerus-dp/config/simulator/PlotConfig.json
+++ b/tests/gunnerus-dp/config/simulator/PlotConfig.json
@@ -11,7 +11,7 @@
{
"simulator": "vessel_model",
"variable": "Vessel_Position[1]"
- }
+ }
]
},
{
diff --git a/tests/gunnerus-dp/config/single-system/OspSystemStructure.xml b/tests/gunnerus-dp/config/single-system/OspSystemStructure.xml
index 88fe5d3b..2d6c527f 100644
--- a/tests/gunnerus-dp/config/single-system/OspSystemStructure.xml
+++ b/tests/gunnerus-dp/config/single-system/OspSystemStructure.xml
@@ -19,7 +19,7 @@
-
+
@@ -39,7 +39,7 @@
-
+
@@ -54,11 +54,11 @@
-
+
-
+
\ No newline at end of file
diff --git a/tests/gunnerus-dp/config/single-system/PlotConfig.json b/tests/gunnerus-dp/config/single-system/PlotConfig.json
index 5a921fbf..44ea989a 100644
--- a/tests/gunnerus-dp/config/single-system/PlotConfig.json
+++ b/tests/gunnerus-dp/config/single-system/PlotConfig.json
@@ -11,7 +11,7 @@
{
"simulator": "vessel_model",
"variable": "Vessel_Position[1]"
- },
+ },
{
"simulator": "reference_model",
"variable": "Position_Setpoint[2]"
diff --git a/tests/gunnerus-dp/fmus/BoxReference_OspModelDescription.xml b/tests/gunnerus-dp/fmus/BoxReference_OspModelDescription.xml
index 6a833e04..882aed9c 100644
--- a/tests/gunnerus-dp/fmus/BoxReference_OspModelDescription.xml
+++ b/tests/gunnerus-dp/fmus/BoxReference_OspModelDescription.xml
@@ -1,6 +1,6 @@
-
+
@@ -9,9 +9,9 @@
-
+
-
+
@@ -21,6 +21,6 @@
-
+
\ No newline at end of file
diff --git a/tests/gunnerus-dp/fmus/ControlSystemCommunication_OspModelDescription.xml b/tests/gunnerus-dp/fmus/ControlSystemCommunication_OspModelDescription.xml
index 7b49e834..68b42d74 100644
--- a/tests/gunnerus-dp/fmus/ControlSystemCommunication_OspModelDescription.xml
+++ b/tests/gunnerus-dp/fmus/ControlSystemCommunication_OspModelDescription.xml
@@ -1,6 +1,6 @@
-
+
@@ -21,9 +21,9 @@
-
+
-
+
@@ -45,7 +45,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
@@ -63,7 +63,7 @@
-
+
diff --git a/tests/gunnerus-dp/fmus/CurrentModel_OspModelDescription.xml b/tests/gunnerus-dp/fmus/CurrentModel_OspModelDescription.xml
index 2085e939..1bc4a14d 100644
--- a/tests/gunnerus-dp/fmus/CurrentModel_OspModelDescription.xml
+++ b/tests/gunnerus-dp/fmus/CurrentModel_OspModelDescription.xml
@@ -1,6 +1,6 @@
-
+
@@ -9,7 +9,7 @@
-
+
diff --git a/tests/gunnerus-dp/fmus/DPController_OspModelDescription.xml b/tests/gunnerus-dp/fmus/DPController_OspModelDescription.xml
index 0c10197b..0f3a42f3 100644
--- a/tests/gunnerus-dp/fmus/DPController_OspModelDescription.xml
+++ b/tests/gunnerus-dp/fmus/DPController_OspModelDescription.xml
@@ -1,6 +1,6 @@
-
+
@@ -21,7 +21,7 @@
-
+
@@ -62,7 +62,7 @@
-
+
@@ -82,6 +82,6 @@
-
+
\ No newline at end of file
diff --git a/tests/gunnerus-dp/fmus/ReferenceModel_OspModelDescription.xml b/tests/gunnerus-dp/fmus/ReferenceModel_OspModelDescription.xml
index 49eac43d..48379d35 100644
--- a/tests/gunnerus-dp/fmus/ReferenceModel_OspModelDescription.xml
+++ b/tests/gunnerus-dp/fmus/ReferenceModel_OspModelDescription.xml
@@ -1,6 +1,6 @@
-
+
@@ -15,9 +15,9 @@
-
+
-
+
@@ -37,7 +37,7 @@
-
+
@@ -47,7 +47,7 @@
-
+
@@ -57,6 +57,6 @@
-
+
\ No newline at end of file
diff --git a/tests/gunnerus-dp/fmus/SimulatorCommunication_OspModelDescription.xml b/tests/gunnerus-dp/fmus/SimulatorCommunication_OspModelDescription.xml
index f8136d4d..fdb2a5d5 100644
--- a/tests/gunnerus-dp/fmus/SimulatorCommunication_OspModelDescription.xml
+++ b/tests/gunnerus-dp/fmus/SimulatorCommunication_OspModelDescription.xml
@@ -1,6 +1,6 @@
-
+
@@ -23,7 +23,7 @@
-
+
@@ -55,7 +55,7 @@
-
+
@@ -63,7 +63,7 @@
-
+
@@ -73,6 +73,6 @@
-
+
\ No newline at end of file
diff --git a/tests/gunnerus-dp/fmus/ThrusterDynamics_OspModelDescription.xml b/tests/gunnerus-dp/fmus/ThrusterDynamics_OspModelDescription.xml
index c3fcdadb..641c8fac 100644
--- a/tests/gunnerus-dp/fmus/ThrusterDynamics_OspModelDescription.xml
+++ b/tests/gunnerus-dp/fmus/ThrusterDynamics_OspModelDescription.xml
@@ -1,6 +1,6 @@
-
+
@@ -9,9 +9,9 @@
-
+
-
+
@@ -34,6 +34,6 @@
-
+
\ No newline at end of file
diff --git a/tests/gunnerus-dp/fmus/VesselModel_OspModelDescription.xml b/tests/gunnerus-dp/fmus/VesselModel_OspModelDescription.xml
index 593ef7ad..68dc34c7 100644
--- a/tests/gunnerus-dp/fmus/VesselModel_OspModelDescription.xml
+++ b/tests/gunnerus-dp/fmus/VesselModel_OspModelDescription.xml
@@ -1,6 +1,6 @@
-
+
@@ -49,20 +49,20 @@
-
+
-
+
-
+
@@ -75,7 +75,7 @@
-
+
@@ -98,7 +98,7 @@
-
+
@@ -121,7 +121,7 @@
-
+
@@ -131,6 +131,6 @@
-
+
\ No newline at end of file
diff --git a/tests/spring_mass_damper/test_OspSystemStructure.xml b/tests/spring_mass_damper/test_OspSystemStructure.xml
index d3bca5ce..67dae920 100644
--- a/tests/spring_mass_damper/test_OspSystemStructure.xml
+++ b/tests/spring_mass_damper/test_OspSystemStructure.xml
@@ -13,7 +13,7 @@
-
+
@@ -21,7 +21,7 @@
-
+
diff --git a/tests/test_dicts/.gitignore b/tests/test_working_directory/.gitignore
similarity index 93%
rename from tests/test_dicts/.gitignore
rename to tests/test_working_directory/.gitignore
index ae943666..6081dbb8 100644
--- a/tests/test_dicts/.gitignore
+++ b/tests/test_working_directory/.gitignore
@@ -1,20 +1,20 @@
-#FMU
-*.fmu
-*.FMU
-!test_fmu.fmu
-
-*.csv
-/caseDict_imported_from_*
-/OspSystemStructure.xml
-/statisticsDict
-/SystemStructure.ssd
-/watchDict
-/results
-*callGraph*
-
-
-*.xml
-!test_import_OspSystemStructure.xml
-!test_fmu*.xml
-*.ssd
+#FMU
+*.fmu
+*.FMU
+!test_fmu.fmu
+
+*.csv
+/caseDict_imported_from_*
+/OspSystemStructure.xml
+/statisticsDict
+/SystemStructure.ssd
+/watchDict
+/results
+*callGraph*
+
+
+*.xml
+!test_import_OspSystemStructure.xml
+!test_fmu*.xml
+*.ssd
/caseDict_imported_from_test_import_OspSystemStructure_xml
\ No newline at end of file
diff --git a/tests/test_dicts/resetTest.bat b/tests/test_working_directory/resetTest.bat
similarity index 95%
rename from tests/test_dicts/resetTest.bat
rename to tests/test_working_directory/resetTest.bat
index 3d214ed9..013dba45 100644
--- a/tests/test_dicts/resetTest.bat
+++ b/tests/test_working_directory/resetTest.bat
@@ -1,10 +1,10 @@
-del *.csv
-del *callGraph*
-del *.fmu
-del *.log
-del caseDict_imported_from_test_import_OspSystemStructure_xml
-del OspSystemStructure.xml
-del statisticsDict
-del SystemStructure.ssd
-del watchDict
+del *.csv
+del *callGraph*
+del *.fmu
+del *.log
+del caseDict_imported_from_test_import_OspSystemStructure_xml
+del OspSystemStructure.xml
+del statisticsDict
+del SystemStructure.ssd
+del watchDict
rmdir /S /Q results
\ No newline at end of file
diff --git a/tests/test_dicts/test_caseDict b/tests/test_working_directory/test_caseDict
similarity index 96%
rename from tests/test_dicts/test_caseDict
rename to tests/test_working_directory/test_caseDict
index 0b74fb0a..1ae2c1be 100644
--- a/tests/test_dicts/test_caseDict
+++ b/tests/test_working_directory/test_caseDict
@@ -1,124 +1,124 @@
-/*---------------------------------*- C++ -*----------------------------------*\
-filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
-\*----------------------------------------------------------------------------*/
-#include test_caseDict_paramDict
-
-_environment
-{
- libSource .;
-}
-systemStructure
-{
- connections
- {
- component_1_to_component_2
- {
- source
- {
- component component_1;
- connector output_1;
- }
- target
- {
- component component_2;
- connector input_1;
- }
- }
- component_2_to_component_1
- {
- source
- {
- component component_2;
- connector output_2;
- }
- target
- {
- component component_1;
- connector input_2;
- }
- }
- }
- components
- {
- component_1
- {
- connectors
- {
- input_1
- {
- variable Variable_1_IN_Real;
- type input;
- }
- input_2
- {
- variableGroup VariableGroup_1_IN;
- type input;
- }
- output_1
- {
- variable Variable_4_OUT_Real;
- type output;
- }
- output_2
- {
- variableGroup VariableGroup_2_OUT;
- type output;
- }
- }
- initialize
- {
- Variable_1_IN_Real
- {
- start $variable_1;
- }
- Variable_2_IN_Integer
- {
- start $variable_2;
- }
- Variable_3_IN_Bool
- {
- start $variable_3;
- }
- }
- fmu test_fmu.fmu;
- }
- component_2
- {
- connectors
- {
- input_1
- {
- variable Variable_1_IN_Real;
- type input;
- }
- input_2
- {
- variableGroup VariableGroup_1_IN;
- type input;
- }
- output_1
- {
- variable Variable_4_OUT_Real;
- type output;
- }
- output_2
- {
- variableGroup VariableGroup_2_OUT;
- type output;
- }
- }
- fmu test_fmu.fmu;
- }
- }
-}
-run
-{
- simulation
- {
- name testCase;
- startTime 0;
- stopTime 10;
- baseStepSize 0.01;
- algorithm fixedStep;
- }
-}
+/*---------------------------------*- C++ -*----------------------------------*\
+filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
+\*----------------------------------------------------------------------------*/
+#include test_caseDict_paramDict
+
+_environment
+{
+ libSource .;
+}
+systemStructure
+{
+ connections
+ {
+ component_1_to_component_2
+ {
+ source
+ {
+ component component_1;
+ connector output_1;
+ }
+ target
+ {
+ component component_2;
+ connector input_1;
+ }
+ }
+ component_2_to_component_1
+ {
+ source
+ {
+ component component_2;
+ connector output_2;
+ }
+ target
+ {
+ component component_1;
+ connector input_2;
+ }
+ }
+ }
+ components
+ {
+ component_1
+ {
+ connectors
+ {
+ input_1
+ {
+ variable Variable_1_IN_Real;
+ type input;
+ }
+ input_2
+ {
+ variableGroup VariableGroup_1_IN;
+ type input;
+ }
+ output_1
+ {
+ variable Variable_4_OUT_Real;
+ type output;
+ }
+ output_2
+ {
+ variableGroup VariableGroup_2_OUT;
+ type output;
+ }
+ }
+ initialize
+ {
+ Variable_1_IN_Real
+ {
+ start $variable_1;
+ }
+ Variable_2_IN_Integer
+ {
+ start $variable_2;
+ }
+ Variable_3_IN_Bool
+ {
+ start $variable_3;
+ }
+ }
+ fmu test_fmu.fmu;
+ }
+ component_2
+ {
+ connectors
+ {
+ input_1
+ {
+ variable Variable_1_IN_Real;
+ type input;
+ }
+ input_2
+ {
+ variableGroup VariableGroup_1_IN;
+ type input;
+ }
+ output_1
+ {
+ variable Variable_4_OUT_Real;
+ type output;
+ }
+ output_2
+ {
+ variableGroup VariableGroup_2_OUT;
+ type output;
+ }
+ }
+ fmu test_fmu.fmu;
+ }
+ }
+}
+run
+{
+ simulation
+ {
+ name testCase;
+ startTime 0;
+ stopTime 10;
+ baseStepSize 0.01;
+ algorithm fixedStep;
+ }
+}
diff --git a/tests/test_dicts/test_caseDict_imported_test_graph b/tests/test_working_directory/test_caseDict_imported_test_graph
similarity index 96%
rename from tests/test_dicts/test_caseDict_imported_test_graph
rename to tests/test_working_directory/test_caseDict_imported_test_graph
index f276e656..b51aa52b 100644
--- a/tests/test_dicts/test_caseDict_imported_test_graph
+++ b/tests/test_working_directory/test_caseDict_imported_test_graph
@@ -1,368 +1,368 @@
-/*---------------------------------*- C++ -*----------------------------------*\
-filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
-\*----------------------------------------------------------------------------*/
-
-_environment
-{
- libSource ../library/house;
-}
-systemStructure
-{
- connections
- {
- OuterWall1_to_Room1
- {
- source
- {
- component OuterWall1;
- variable h_wall;
- }
- target
- {
- component Room1;
- variable h_OuterWall;
- }
- }
- InnerWall_to_Room1
- {
- source
- {
- component InnerWall;
- variable h_wall;
- }
- target
- {
- component Room1;
- variable h_InnerWall;
- }
- }
- TempController_to_Room1
- {
- source
- {
- component TempController;
- variable h_room1;
- }
- target
- {
- component Room1;
- variable h_powerHeater;
- }
- }
- Room1_to_OuterWall1
- {
- source
- {
- component Room1;
- variable T_room;
- }
- target
- {
- component OuterWall1;
- variable T_room1;
- }
- }
- InnerWall_to_Room2
- {
- source
- {
- component InnerWall;
- variable h_wall;
- }
- target
- {
- component Room2;
- variable h_InnerWall;
- }
- }
- OuterWall2_to_Room2
- {
- source
- {
- component OuterWall2;
- variable h_wall;
- }
- target
- {
- component Room2;
- variable h_OuterWall;
- }
- }
- TempController_to_Room2
- {
- source
- {
- component TempController;
- variable h_room2;
- }
- target
- {
- component Room2;
- variable h_powerHeater;
- }
- }
- Room2_to_TempController
- {
- source
- {
- component Room2;
- variable T_room;
- }
- target
- {
- component TempController;
- variable T_room2;
- }
- }
- Room1_to_TempController
- {
- source
- {
- component Room1;
- variable T_room;
- }
- target
- {
- component TempController;
- variable T_room1;
- }
- }
- Clock_to_TempController
- {
- source
- {
- component Clock;
- variable Clock;
- }
- target
- {
- component TempController;
- variable T_clock;
- }
- }
- Room1_to_InnerWall
- {
- source
- {
- component Room1;
- variable T_room;
- }
- target
- {
- component InnerWall;
- variable T_room1;
- }
- }
- Room2_to_InnerWall
- {
- source
- {
- component Room2;
- variable T_room;
- }
- target
- {
- component InnerWall;
- variable T_room2;
- }
- }
- Room2_to_OuterWall2
- {
- source
- {
- component Room2;
- variable T_room;
- }
- target
- {
- component OuterWall2;
- variable T_room2;
- }
- }
- }
- components
- {
- Clock
- {
- connectors
- {
- Clock_Clock
- {
- variable Clock;
- type output;
- }
- }
- fmu Clock.fmu;
- }
- InnerWall
- {
- connectors
- {
- InnerWall_h_wall
- {
- variable h_wall;
- type output;
- }
- InnerWall_T_room1
- {
- variable T_room1;
- type input;
- }
- InnerWall_T_room2
- {
- variable T_room2;
- type input;
- }
- }
- fmu InnerWall.fmu;
- }
- OuterWall1
- {
- connectors
- {
- OuterWall1_h_wall
- {
- variable h_wall;
- type output;
- }
- OuterWall1_T_room1
- {
- variable T_room1;
- type input;
- }
- }
- fmu OuterWall1.fmu;
- initialize
- {
- T_outside
- {
- causality parameter;
- variability fixed;
- start 5.3;
- }
- }
- }
- OuterWall2
- {
- connectors
- {
- OuterWall2_h_wall
- {
- variable h_wall;
- type output;
- }
- OuterWall2_T_room2
- {
- variable T_room2;
- type input;
- }
- }
- fmu OuterWall2.fmu;
- initialize
- {
- T_outside
- {
- causality parameter;
- variability fixed;
- start 4.9;
- }
- }
- }
- Room1
- {
- connectors
- {
- Room1_h_OuterWall
- {
- variable h_OuterWall;
- type input;
- }
- Room1_h_InnerWall
- {
- variable h_InnerWall;
- type input;
- }
- Room1_h_powerHeater
- {
- variable h_powerHeater;
- type input;
- }
- Room1_T_room
- {
- variable T_room;
- type output;
- }
- }
- fmu Room1.fmu;
- }
- Room2
- {
- connectors
- {
- Room2_h_InnerWall
- {
- variable h_InnerWall;
- type input;
- }
- Room2_h_OuterWall
- {
- variable h_OuterWall;
- type input;
- }
- Room2_h_powerHeater
- {
- variable h_powerHeater;
- type input;
- }
- Room2_T_room
- {
- variable T_room;
- type output;
- }
- }
- fmu Room2.fmu;
- }
- TempController
- {
- connectors
- {
- TempController_h_room1
- {
- variable h_room1;
- type output;
- }
- TempController_h_room2
- {
- variable h_room2;
- type output;
- }
- TempController_T_room2
- {
- variable T_room2;
- type input;
- }
- TempController_T_room1
- {
- variable T_room1;
- type input;
- }
- TempController_T_clock
- {
- variable T_clock;
- type input;
- }
- }
- fmu TempController.fmu;
- }
- }
-}
-run
-{
- simulation
- {
- name OspSystemStructure;
- startTime 0.0;
- baseStepSize 0.01;
- algorithm fixedStep;
- }
-}
+/*---------------------------------*- C++ -*----------------------------------*\
+filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
+\*----------------------------------------------------------------------------*/
+
+_environment
+{
+ libSource ../library/house;
+}
+systemStructure
+{
+ connections
+ {
+ OuterWall1_to_Room1
+ {
+ source
+ {
+ component OuterWall1;
+ variable h_wall;
+ }
+ target
+ {
+ component Room1;
+ variable h_OuterWall;
+ }
+ }
+ InnerWall_to_Room1
+ {
+ source
+ {
+ component InnerWall;
+ variable h_wall;
+ }
+ target
+ {
+ component Room1;
+ variable h_InnerWall;
+ }
+ }
+ TempController_to_Room1
+ {
+ source
+ {
+ component TempController;
+ variable h_room1;
+ }
+ target
+ {
+ component Room1;
+ variable h_powerHeater;
+ }
+ }
+ Room1_to_OuterWall1
+ {
+ source
+ {
+ component Room1;
+ variable T_room;
+ }
+ target
+ {
+ component OuterWall1;
+ variable T_room1;
+ }
+ }
+ InnerWall_to_Room2
+ {
+ source
+ {
+ component InnerWall;
+ variable h_wall;
+ }
+ target
+ {
+ component Room2;
+ variable h_InnerWall;
+ }
+ }
+ OuterWall2_to_Room2
+ {
+ source
+ {
+ component OuterWall2;
+ variable h_wall;
+ }
+ target
+ {
+ component Room2;
+ variable h_OuterWall;
+ }
+ }
+ TempController_to_Room2
+ {
+ source
+ {
+ component TempController;
+ variable h_room2;
+ }
+ target
+ {
+ component Room2;
+ variable h_powerHeater;
+ }
+ }
+ Room2_to_TempController
+ {
+ source
+ {
+ component Room2;
+ variable T_room;
+ }
+ target
+ {
+ component TempController;
+ variable T_room2;
+ }
+ }
+ Room1_to_TempController
+ {
+ source
+ {
+ component Room1;
+ variable T_room;
+ }
+ target
+ {
+ component TempController;
+ variable T_room1;
+ }
+ }
+ Clock_to_TempController
+ {
+ source
+ {
+ component Clock;
+ variable Clock;
+ }
+ target
+ {
+ component TempController;
+ variable T_clock;
+ }
+ }
+ Room1_to_InnerWall
+ {
+ source
+ {
+ component Room1;
+ variable T_room;
+ }
+ target
+ {
+ component InnerWall;
+ variable T_room1;
+ }
+ }
+ Room2_to_InnerWall
+ {
+ source
+ {
+ component Room2;
+ variable T_room;
+ }
+ target
+ {
+ component InnerWall;
+ variable T_room2;
+ }
+ }
+ Room2_to_OuterWall2
+ {
+ source
+ {
+ component Room2;
+ variable T_room;
+ }
+ target
+ {
+ component OuterWall2;
+ variable T_room2;
+ }
+ }
+ }
+ components
+ {
+ Clock
+ {
+ connectors
+ {
+ Clock_Clock
+ {
+ variable Clock;
+ type output;
+ }
+ }
+ fmu Clock.fmu;
+ }
+ InnerWall
+ {
+ connectors
+ {
+ InnerWall_h_wall
+ {
+ variable h_wall;
+ type output;
+ }
+ InnerWall_T_room1
+ {
+ variable T_room1;
+ type input;
+ }
+ InnerWall_T_room2
+ {
+ variable T_room2;
+ type input;
+ }
+ }
+ fmu InnerWall.fmu;
+ }
+ OuterWall1
+ {
+ connectors
+ {
+ OuterWall1_h_wall
+ {
+ variable h_wall;
+ type output;
+ }
+ OuterWall1_T_room1
+ {
+ variable T_room1;
+ type input;
+ }
+ }
+ fmu OuterWall1.fmu;
+ initialize
+ {
+ T_outside
+ {
+ causality parameter;
+ variability fixed;
+ start 5.3;
+ }
+ }
+ }
+ OuterWall2
+ {
+ connectors
+ {
+ OuterWall2_h_wall
+ {
+ variable h_wall;
+ type output;
+ }
+ OuterWall2_T_room2
+ {
+ variable T_room2;
+ type input;
+ }
+ }
+ fmu OuterWall2.fmu;
+ initialize
+ {
+ T_outside
+ {
+ causality parameter;
+ variability fixed;
+ start 4.9;
+ }
+ }
+ }
+ Room1
+ {
+ connectors
+ {
+ Room1_h_OuterWall
+ {
+ variable h_OuterWall;
+ type input;
+ }
+ Room1_h_InnerWall
+ {
+ variable h_InnerWall;
+ type input;
+ }
+ Room1_h_powerHeater
+ {
+ variable h_powerHeater;
+ type input;
+ }
+ Room1_T_room
+ {
+ variable T_room;
+ type output;
+ }
+ }
+ fmu Room1.fmu;
+ }
+ Room2
+ {
+ connectors
+ {
+ Room2_h_InnerWall
+ {
+ variable h_InnerWall;
+ type input;
+ }
+ Room2_h_OuterWall
+ {
+ variable h_OuterWall;
+ type input;
+ }
+ Room2_h_powerHeater
+ {
+ variable h_powerHeater;
+ type input;
+ }
+ Room2_T_room
+ {
+ variable T_room;
+ type output;
+ }
+ }
+ fmu Room2.fmu;
+ }
+ TempController
+ {
+ connectors
+ {
+ TempController_h_room1
+ {
+ variable h_room1;
+ type output;
+ }
+ TempController_h_room2
+ {
+ variable h_room2;
+ type output;
+ }
+ TempController_T_room2
+ {
+ variable T_room2;
+ type input;
+ }
+ TempController_T_room1
+ {
+ variable T_room1;
+ type input;
+ }
+ TempController_T_clock
+ {
+ variable T_clock;
+ type input;
+ }
+ }
+ fmu TempController.fmu;
+ }
+ }
+}
+run
+{
+ simulation
+ {
+ name OspSystemStructure;
+ startTime 0.0;
+ baseStepSize 0.01;
+ algorithm fixedStep;
+ }
+}
diff --git a/tests/test_dicts/test_caseDict_minimal_inspect b/tests/test_working_directory/test_caseDict_minimal_inspect
similarity index 96%
rename from tests/test_dicts/test_caseDict_minimal_inspect
rename to tests/test_working_directory/test_caseDict_minimal_inspect
index c136a6e9..a3f2664f 100644
--- a/tests/test_dicts/test_caseDict_minimal_inspect
+++ b/tests/test_working_directory/test_caseDict_minimal_inspect
@@ -1,40 +1,40 @@
-/*---------------------------------*- C++ -*----------------------------------*\
-filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
-\*----------------------------------------------------------------------------*/
-_environment
-{
- libSource ../library; //adjust this path to point to the library folder containing the fmu's
-}
-systemStructure
-{
- components
- {
- difference
- {
- fmu simple/difference.fmu;
- }
- quotient
- {
- fmu simple/quotient.fmu;
- }
- minuend
- {
- fmu simple/constantVal.fmu;
- }
- subtrahend
- {
- fmu simple/constantVal.fmu;
- }
- dividend
- {
- fmu simple/constantVal.fmu;
- }
- }
-}
-run
-{
- simulation
- {
- name demoCase;
- }
-}
+/*---------------------------------*- C++ -*----------------------------------*\
+filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
+\*----------------------------------------------------------------------------*/
+_environment
+{
+ libSource ../library; //adjust this path to point to the library folder containing the fmu's
+}
+systemStructure
+{
+ components
+ {
+ difference
+ {
+ fmu simple/difference.fmu;
+ }
+ quotient
+ {
+ fmu simple/quotient.fmu;
+ }
+ minuend
+ {
+ fmu simple/constantVal.fmu;
+ }
+ subtrahend
+ {
+ fmu simple/constantVal.fmu;
+ }
+ dividend
+ {
+ fmu simple/constantVal.fmu;
+ }
+ }
+}
+run
+{
+ simulation
+ {
+ name demoCase;
+ }
+}
diff --git a/tests/test_dicts/test_caseDict_minimal_set_int_for_real b/tests/test_working_directory/test_caseDict_minimal_set_int_for_real
similarity index 96%
rename from tests/test_dicts/test_caseDict_minimal_set_int_for_real
rename to tests/test_working_directory/test_caseDict_minimal_set_int_for_real
index 81c07b5f..6bcfd2bc 100644
--- a/tests/test_dicts/test_caseDict_minimal_set_int_for_real
+++ b/tests/test_working_directory/test_caseDict_minimal_set_int_for_real
@@ -1,76 +1,76 @@
-/*---------------------------------*- C++ -*----------------------------------*\
-filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
-\*----------------------------------------------------------------------------*/
-_environment
-{
- libSource ../library;
-}
-systemStructure
-{
- components
- {
- int_to_k_onst
- {
- initialize
- {
- const1.k
- {
- causality parameter;
- start 0;
- variability fixed;
- }
- }
- fmu single_int_real/k_onst.fmu;
- }
- real_to_k_onst
- {
- initialize
- {
- const1.k
- {
- causality parameter;
- start 0.;
- variability fixed;
- }
- }
- fmu single_int_real/k_onst.fmu;
- }
- int_to_constantVal
- {
- initialize
- {
- constVal.IN
- {
- causality parameter;
- start 0;
- variability fixed;
- }
- }
- fmu single_int_real/constantVal.fmu;
- }
- real_to_constantVal
- {
- initialize
- {
- constVal.IN
- {
- causality parameter;
- start 0.;
- variability fixed;
- }
- }
- fmu single_int_real/constantVal.fmu;
- }
- }
-}
-run
-{
- simulation
- {
- name single_int_real_case;
- startTime 0;
- stopTime 1;
- baseStepSize 0.01;
- algorithm fixedStep;
- }
-}
+/*---------------------------------*- C++ -*----------------------------------*\
+filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
+\*----------------------------------------------------------------------------*/
+_environment
+{
+ libSource ../library;
+}
+systemStructure
+{
+ components
+ {
+ int_to_k_onst
+ {
+ initialize
+ {
+ const1.k
+ {
+ causality parameter;
+ start 0;
+ variability fixed;
+ }
+ }
+ fmu single_int_real/k_onst.fmu;
+ }
+ real_to_k_onst
+ {
+ initialize
+ {
+ const1.k
+ {
+ causality parameter;
+ start 0.;
+ variability fixed;
+ }
+ }
+ fmu single_int_real/k_onst.fmu;
+ }
+ int_to_constantVal
+ {
+ initialize
+ {
+ constVal.IN
+ {
+ causality parameter;
+ start 0;
+ variability fixed;
+ }
+ }
+ fmu single_int_real/constantVal.fmu;
+ }
+ real_to_constantVal
+ {
+ initialize
+ {
+ constVal.IN
+ {
+ causality parameter;
+ start 0.;
+ variability fixed;
+ }
+ }
+ fmu single_int_real/constantVal.fmu;
+ }
+ }
+}
+run
+{
+ simulation
+ {
+ name single_int_real_case;
+ startTime 0;
+ stopTime 1;
+ baseStepSize 0.01;
+ algorithm fixedStep;
+ }
+}
diff --git a/tests/test_dicts/test_caseDict_paramDict b/tests/test_working_directory/test_caseDict_paramDict
similarity index 97%
rename from tests/test_dicts/test_caseDict_paramDict
rename to tests/test_working_directory/test_caseDict_paramDict
index 289990e1..5bb38898 100644
--- a/tests/test_dicts/test_caseDict_paramDict
+++ b/tests/test_working_directory/test_caseDict_paramDict
@@ -1,7 +1,7 @@
-/*---------------------------------*- C++ -*----------------------------------*\
-filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
-\*----------------------------------------------------------------------------*/
-
-variable_1 1.0;
-variable_2 2;
-variable_3 True;
+/*---------------------------------*- C++ -*----------------------------------*\
+filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
+\*----------------------------------------------------------------------------*/
+
+variable_1 1.0;
+variable_2 2;
+variable_3 True;
diff --git a/tests/test_dicts/test_caseDict_simple b/tests/test_working_directory/test_caseDict_simple
similarity index 96%
rename from tests/test_dicts/test_caseDict_simple
rename to tests/test_working_directory/test_caseDict_simple
index 79c413a2..fbe330c1 100644
--- a/tests/test_dicts/test_caseDict_simple
+++ b/tests/test_working_directory/test_caseDict_simple
@@ -1,156 +1,156 @@
-/*---------------------------------*- C++ -*----------------------------------*\
-filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
-\*----------------------------------------------------------------------------*/
-#include test_caseDict_simple_paramDict
-
-_environment
-{
- libSource '../library/simple';
-}
-systemStructure
-{
- connections
- {
- minuend_to_difference
- {
- source minuend_output;
- target difference_input_minuend;
- }
- subtrahend_to_difference
- {
- source subtrahend_output;
- target difference_input_subtrahend;
- }
- dividend_to_quotient
- {
- source dividend_output;
- target quotient_input_dividend;
- }
- difference_to_divisor
- {
- source difference_output;
- target quotient_input_divisor;
- }
- }
- components
- {
- difference
- {
- connectors
- {
- difference_input_minuend
- {
- reference difference.IN1;
- type input;
- }
- difference_input_subtrahend
- {
- reference difference.IN2;
- type input;
- }
- difference_output
- {
- reference difference.OUT;
- type output;
- }
- }
- fmu difference.fmu;
- }
- quotient
- {
- connectors
- {
- quotient_input_dividend
- {
- reference quotient.IN1;
- type input;
- }
- quotient_input_divisor
- {
- reference quotient.IN2;
- type input;
- }
- quotient_output
- {
- reference quotient.OUT;
- type output;
- }
-
- }
- fmu quotient.fmu;
- }
- minuend
- {
- connectors
- {
- minuend_output
- {
- reference constVal.OUT;
- type output;
- }
- }
- initialize
- {
- constVal.IN
- {
- causality parameter;
- start $minuend;
- variability fixed;
- }
- }
- fmu constantVal.fmu;
- }
- subtrahend
- {
- connectors
- {
- subtrahend_output
- {
- reference constVal.OUT;
- type output;
- }
- }
- initialize
- {
- constVal.IN
- {
- causality parameter;
- start $subtrahend;
- variability fixed;
- }
- }
- fmu constantVal.fmu;
- }
- dividend
- {
- connectors
- {
- dividend_output
- {
- reference constVal.OUT;
- type output;
- }
- }
- initialize
- {
- constVal.IN
- {
- causality parameter;
- start $dividend;
- variability fixed;
- }
- }
- fmu constantVal.fmu;
- }
- }
-}
-run
-{
- simulation
- {
- name demoCase;
- startTime 0;
- stopTime 10;
- baseStepSize 0.01;
- }
-}
+/*---------------------------------*- C++ -*----------------------------------*\
+filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
+\*----------------------------------------------------------------------------*/
+#include test_caseDict_simple_paramDict
+
+_environment
+{
+ libSource '../library/simple';
+}
+systemStructure
+{
+ connections
+ {
+ minuend_to_difference
+ {
+ source minuend_output;
+ target difference_input_minuend;
+ }
+ subtrahend_to_difference
+ {
+ source subtrahend_output;
+ target difference_input_subtrahend;
+ }
+ dividend_to_quotient
+ {
+ source dividend_output;
+ target quotient_input_dividend;
+ }
+ difference_to_divisor
+ {
+ source difference_output;
+ target quotient_input_divisor;
+ }
+ }
+ components
+ {
+ difference
+ {
+ connectors
+ {
+ difference_input_minuend
+ {
+ reference difference.IN1;
+ type input;
+ }
+ difference_input_subtrahend
+ {
+ reference difference.IN2;
+ type input;
+ }
+ difference_output
+ {
+ reference difference.OUT;
+ type output;
+ }
+ }
+ fmu difference.fmu;
+ }
+ quotient
+ {
+ connectors
+ {
+ quotient_input_dividend
+ {
+ reference quotient.IN1;
+ type input;
+ }
+ quotient_input_divisor
+ {
+ reference quotient.IN2;
+ type input;
+ }
+ quotient_output
+ {
+ reference quotient.OUT;
+ type output;
+ }
+
+ }
+ fmu quotient.fmu;
+ }
+ minuend
+ {
+ connectors
+ {
+ minuend_output
+ {
+ reference constVal.OUT;
+ type output;
+ }
+ }
+ initialize
+ {
+ constVal.IN
+ {
+ causality parameter;
+ start $minuend;
+ variability fixed;
+ }
+ }
+ fmu constantVal.fmu;
+ }
+ subtrahend
+ {
+ connectors
+ {
+ subtrahend_output
+ {
+ reference constVal.OUT;
+ type output;
+ }
+ }
+ initialize
+ {
+ constVal.IN
+ {
+ causality parameter;
+ start $subtrahend;
+ variability fixed;
+ }
+ }
+ fmu constantVal.fmu;
+ }
+ dividend
+ {
+ connectors
+ {
+ dividend_output
+ {
+ reference constVal.OUT;
+ type output;
+ }
+ }
+ initialize
+ {
+ constVal.IN
+ {
+ causality parameter;
+ start $dividend;
+ variability fixed;
+ }
+ }
+ fmu constantVal.fmu;
+ }
+ }
+}
+run
+{
+ simulation
+ {
+ name demoCase;
+ startTime 0;
+ stopTime 10;
+ baseStepSize 0.01;
+ }
+}
diff --git a/tests/test_dicts/test_caseDict_simple_paramDict b/tests/test_working_directory/test_caseDict_simple_paramDict
similarity index 97%
rename from tests/test_dicts/test_caseDict_simple_paramDict
rename to tests/test_working_directory/test_caseDict_simple_paramDict
index c695610d..4baec316 100644
--- a/tests/test_dicts/test_caseDict_simple_paramDict
+++ b/tests/test_working_directory/test_caseDict_simple_paramDict
@@ -1,7 +1,7 @@
-/*---------------------------------*- C++ -*----------------------------------*\
-filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
-\*----------------------------------------------------------------------------*/
-
-minuend 1.0;
-subtrahend 2.0;
-dividend 3.0;
+/*---------------------------------*- C++ -*----------------------------------*\
+filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
+\*----------------------------------------------------------------------------*/
+
+minuend 1.0;
+subtrahend 2.0;
+dividend 3.0;
diff --git a/tests/test_dicts/test_fmu.fmu b/tests/test_working_directory/test_fmu.fmu
similarity index 100%
rename from tests/test_dicts/test_fmu.fmu
rename to tests/test_working_directory/test_fmu.fmu
diff --git a/tests/test_dicts/test_fmu_OspModelDescription.xml b/tests/test_working_directory/test_fmu_OspModelDescription.xml
similarity index 100%
rename from tests/test_dicts/test_fmu_OspModelDescription.xml
rename to tests/test_working_directory/test_fmu_OspModelDescription.xml
diff --git a/tests/test_dicts/test_fmu_modelDescription.xml b/tests/test_working_directory/test_fmu_modelDescription.xml
similarity index 97%
rename from tests/test_dicts/test_fmu_modelDescription.xml
rename to tests/test_working_directory/test_fmu_modelDescription.xml
index 4aba13de..07fbf71d 100644
--- a/tests/test_dicts/test_fmu_modelDescription.xml
+++ b/tests/test_working_directory/test_fmu_modelDescription.xml
@@ -1,188 +1,188 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/test_dicts/test_import_OspSystemStructure.xml b/tests/test_working_directory/test_import_OspSystemStructure.xml
similarity index 100%
rename from tests/test_dicts/test_import_OspSystemStructure.xml
rename to tests/test_working_directory/test_import_OspSystemStructure.xml
diff --git a/tests/test_dicts/test_watchDict b/tests/test_working_directory/test_watchDict
similarity index 95%
rename from tests/test_dicts/test_watchDict
rename to tests/test_working_directory/test_watchDict
index ed7bb71a..0ab5b2b1 100644
--- a/tests/test_dicts/test_watchDict
+++ b/tests/test_working_directory/test_watchDict
@@ -1,46 +1,46 @@
-/*---------------------------------*- C++ -*----------------------------------*\
-filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
-\*----------------------------------------------------------------------------*/
-datasources
-{
- difference
- {
- columns
- (
- 0 1 2 3 4
- );
- }
- quotient
- {
- columns
- (
- 0 1 2 3 4
- );
- }
- minuend
- {
- columns
- (
- 0 1 2
- );
- }
- subtrahend
- {
- columns
- (
- 0 1 2
- );
- }
- dividend
- {
- columns
- (
- 0 1 2
- );
- }
-}
-delimiter ,;
-simulation
-{
- name demoCase;
-}
+/*---------------------------------*- C++ -*----------------------------------*\
+filetype dictionary; coding utf-8; version 0.1; local --; purpose --;
+\*----------------------------------------------------------------------------*/
+datasources
+{
+ difference
+ {
+ columns
+ (
+ 0 1 2 3 4
+ );
+ }
+ quotient
+ {
+ columns
+ (
+ 0 1 2 3 4
+ );
+ }
+ minuend
+ {
+ columns
+ (
+ 0 1 2
+ );
+ }
+ subtrahend
+ {
+ columns
+ (
+ 0 1 2
+ );
+ }
+ dividend
+ {
+ columns
+ (
+ 0 1 2
+ );
+ }
+}
+delimiter ,;
+simulation
+{
+ name demoCase;
+}
diff --git a/tests/tx-rx-test/rx-test/rx-testDict b/tests/tx-rx-test/rx-test/rx-testDict
index f5430248..d6d68d2e 100644
--- a/tests/tx-rx-test/rx-test/rx-testDict
+++ b/tests/tx-rx-test/rx-test/rx-testDict
@@ -43,7 +43,7 @@ models
stepSize 0.1;
}
scalarSender
- {
+ {
modify
{
sender.port
@@ -55,7 +55,7 @@ models
}
prototype scalarSender\scalarSender.fmu;
stepSize 0.1;
- }
+ }
}
simulation
{
diff --git a/tests/tx-rx-test/tx-test/tx-testDict b/tests/tx-rx-test/tx-test/tx-testDict
index f5430248..d6d68d2e 100644
--- a/tests/tx-rx-test/tx-test/tx-testDict
+++ b/tests/tx-rx-test/tx-test/tx-testDict
@@ -43,7 +43,7 @@ models
stepSize 0.1;
}
scalarSender
- {
+ {
modify
{
sender.port
@@ -55,7 +55,7 @@ models
}
prototype scalarSender\scalarSender.fmu;
stepSize 0.1;
- }
+ }
}
simulation
{
diff --git a/tests/variable_groups/OspSystemStructure_original.xml b/tests/variable_groups/OspSystemStructure_original.xml
index 0941838a..eacd4312 100644
--- a/tests/variable_groups/OspSystemStructure_original.xml
+++ b/tests/variable_groups/OspSystemStructure_original.xml
@@ -1,221 +1,221 @@
-
-
- 0.0
- 0.05
- fixedStep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ 0.0
+ 0.05
+ fixedStep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/variable_groups/src/EncounterEvaluation_OspModelDescription.xml b/tests/variable_groups/src/EncounterEvaluation_OspModelDescription.xml
index 8f3e6e25..8d661876 100644
--- a/tests/variable_groups/src/EncounterEvaluation_OspModelDescription.xml
+++ b/tests/variable_groups/src/EncounterEvaluation_OspModelDescription.xml
@@ -5,79 +5,79 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/tests/variable_groups/src/EvaluateEncounterR14_OspModelDescription.xml b/tests/variable_groups/src/EvaluateEncounterR14_OspModelDescription.xml
index 2238f55a..fb26b0d1 100644
--- a/tests/variable_groups/src/EvaluateEncounterR14_OspModelDescription.xml
+++ b/tests/variable_groups/src/EvaluateEncounterR14_OspModelDescription.xml
@@ -5,52 +5,52 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/tests/variable_groups/src/SafetyScore_OspModelDescription.xml b/tests/variable_groups/src/SafetyScore_OspModelDescription.xml
index ae3f223c..1654f055 100644
--- a/tests/variable_groups/src/SafetyScore_OspModelDescription.xml
+++ b/tests/variable_groups/src/SafetyScore_OspModelDescription.xml
@@ -5,44 +5,44 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/tests/variable_groups/src/TargetShipModule_OspModelDescription.xml b/tests/variable_groups/src/TargetShipModule_OspModelDescription.xml
index 4d24d833..2ab17e68 100644
--- a/tests/variable_groups/src/TargetShipModule_OspModelDescription.xml
+++ b/tests/variable_groups/src/TargetShipModule_OspModelDescription.xml
@@ -5,46 +5,46 @@
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/tests/variable_groups/src/VelocityObstacleController_OspModelDescription.xml b/tests/variable_groups/src/VelocityObstacleController_OspModelDescription.xml
index b956095c..c8b76b89 100644
--- a/tests/variable_groups/src/VelocityObstacleController_OspModelDescription.xml
+++ b/tests/variable_groups/src/VelocityObstacleController_OspModelDescription.xml
@@ -5,38 +5,38 @@
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/tests/variable_groups/src/Vessel_OspModelDescription.xml b/tests/variable_groups/src/Vessel_OspModelDescription.xml
index 79820cd3..a88e25c2 100644
--- a/tests/variable_groups/src/Vessel_OspModelDescription.xml
+++ b/tests/variable_groups/src/Vessel_OspModelDescription.xml
@@ -6,12 +6,12 @@
-
-
+
+
-
-
-
+
+
+
\ No newline at end of file