Changelog

All notable changes to the [mlfmu] project will be documented in this file.
The changelog format is based on Keep a Changelog.

[1.0.2]

Changed

  • MLFMU logo is added and conf.py is updated.

  • Added checks for Windows vs Linux and fixed compilation for Linux/MacOS, updated README. Tested with Ubuntu 20.04, Ubuntu 22.04 and MacOS 14.4.

[1.0.1]

Changed

  • Update generated docs; cleaning, fix for warnings, add missing pages and info, update authors and maintainers.

  • Add where the source code for cppfmu can be found, add third party license.

  • Added missing unit tests for the template data generated when building the FMU.

  • Unit tests for the modelDescription.xml generation.

  • Unit tests for the Interface JSON validation.

  • Wind turbine power prediction model example is included in the mlfmu\examples\wind_to_power_pyspark directory.

  • README.md : Interface.json is updated to show how to define vectors as inputs.

  • Changed from pip/tox to uv as package manager

  • README.md : Completely rewrote section “Development Setup”, introducing uv as package manager.

  • Added missing docstrings for py/cpp/h files with help of Github Copilot

  • Moved CMake + conan + c++ package files and folders with cpp code inside src folder to be included in package

  • Replace pkg_resources with importlib.metadata for getting packages version to work in python 3.12

  • Replace deprecated root_validator with model_validator in pydanitc class

  • Remove unnecessary hard coded values in utils/builder.py

  • Complete cli interface

    • Add subparsers to cli argparser to handle several different commands

    • Create MlFmuBuilder from args and run code according to command

  • Change cli test to match the new cli interface/parser

  • Default agent_(input/output)_indexes is [] by default instead of None

  • Updated doc by running publish-interface-docs

  • Deleted azure files from old azure devops repo

  • The generated modelDescription.xml files now also contain with a list of the outputs of the FMU.

  • OnnxFmu cpp template class updated to be able to initialize state with FMU Variables

    • Add variables to specify which FMU variable that should be used to initialize which state

    • Add function to DoStep that initializes the state at the beginning of the first time step.

  • model_definitions_template.h

    • Add definitions for the the number of states that should be initialized and array of index/value reference pairs to describe how the states should be initialized

  • Fmu Component json interface

    • Add name, description and start_value to state in the json interface

    • States changed from a single InternalState to a list of InternalState

  • Fixed typo from ‘tunnable’ to ‘tunable’

  • Fixed number of onnx output check to be correct (1-3 and not always raising exception)

  • Fix correct fmi causality for parameters

  • Fix correct default variability for parameters

  • Fix expanding of array variables into one variable per index for inputs and parameters to work as outputs

  • Default build target in builder to wind_to_power example

  • CMakeList.txt (from old repo) to be able to take an arbitrary path where the fmu files to be compiled are located

  • Builder to run commands to compile generated files into an fmu

    • Can take and keep track of arbitrary paths

  • Builder checks if the files needed to compile the fmu exists before trying to compile the fmu

  • Replaced “TODO: Trow Error?” with raising a fitting exception

  • replaced black formatter with ruff formatter

  • Changed publishing workflow to use OpenID Connect (Trusted Publisher Management) when publishing to PyPI

  • Updated copyright statement

  • VS Code settings: Turned off automatic venv activation

  • Edited descriptions in the examples/wind_to_power/config/interface.json

Added

  • Added BSD 3-Clause License

  • Added mypy as static type checker (in addition to pyright)

  • Add .gitattributes to handle line endings, removed eol from .editorconfig

  • Add .github/pull_request_template.md for enabling PR templates on Github

  • Add conan dependency to pyproject.toml

  • Add MlFmuBuilder class to generate code and compile FMU

    • Find default paths to files and directories if not given in cli

    • Run functions in utils/builder.py according to which command is being run

    • Clean up temporary/build files after the process is done

  • Added feature to be able to initialize states using previously defined parameters or inputs

    • This is done by setting “initializationVariable” = “{variable name}”, instead of using the “name” and “start_value” attributes

    • Added flag in schema to allow a variable to be reused when initializing states

    • Allowed for multiple states to use the same variable for initialization

  • .clang-format to consistently format cpp code

  • Added code to generate parameters for initialization of state

  • Wind to power model example in examples

    • Onnx file containing ml model

    • Interface json file containing information needed not contained in onnx file

  • The generated fmu files resulting from running running builder on the new wind_to_power example

  • CMakeLists.txt and conanfile.txt from old repo to configure compiling/building FMU from generated files

Removed

  • VS Code settings: Removed the setting which added the /src folder to PythonPath. This is no longer necessary. uv installs the project itself as a package in “editable” mode, which removes the need to manually add /src to the PythonPath environment variable.

GitHub workflows

  • (all workflows): Adapted to use uv as package manager

  • _test_future.yml : updated Python version to 3.13.0-alpha - 3.13.0

  • _test_future.yml : updated name of test job to ‘test313’

Dependencies

  • Updated to ruff>=0.6.3 (from ruff==0.2.1)

  • Updated to pyright>=1.1.378 (from pyright==1.1.350)

  • Updated to sourcery>=1.22 (from sourcery==1.15)

  • Updated to pytest>=8.3 (from pytest>=7.4)

  • updated to pytest-cov>=5.0 (from pytest-cov>=4.1)

  • Updated to Sphinx>=8.0 (from Sphinx>=7.2)

  • Updated to sphinx-argparse-cli>=1.17 (from sphinx-argparse-cli>=1.11)

  • Updated to myst-parser>=4.0 (from myst-parser>=2.0)

  • Updated to furo>=2024.8 (from furo>=2023.9.10)

  • Updated to setup-python@v5 (from setup-python@v4)

  • Updated to actions-gh-pages@v4 (from actions-gh-pages@v3)

  • Updated to upload-artifact@v4 (from upload-artifact@v3)

  • Updated to download-artifact@v4 (from download-artifact@v3)

  • Updated to dictIO>=0.3.4 (from dictIO>=0.3.1)