Metadata-Version: 2.5
Name: dynamic-systems-testing-framework
Version: 1.1.0
Summary: Dynamic Systems Testing Framework — regression & unit testing for time-dependent system behavior, with plug-in backends: Modelica (Dymola, OpenModelica), FMU (FMPy), Julia (ModelingToolkit) and Python to start
Project-URL: Homepage, https://github.com/ORNL-Modelica/DynamicSystemsTestingFramework
Project-URL: Repository, https://github.com/ORNL-Modelica/DynamicSystemsTestingFramework
Project-URL: Documentation, https://dstf.readthedocs.io/
Project-URL: Issues, https://github.com/ORNL-Modelica/DynamicSystemsTestingFramework/issues
Project-URL: Changelog, https://github.com/ORNL-Modelica/DynamicSystemsTestingFramework/blob/main/CHANGELOG.md
Author: Scott Greenwood
License-Expression: MIT
License-File: LICENSE
Keywords: dymola,fmi,fmu,julia,modelica,modelingtoolkit,openmodelica,regression-testing,simulation,testing
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.10
Requires-Dist: jinja2>=3.1
Requires-Dist: numpy>=1.20
Requires-Dist: psutil>=5.9
Provides-Extra: author
Requires-Dist: nicegui>=3.16; extra == 'author'
Requires-Dist: regex>=2026.9.10; extra == 'author'
Provides-Extra: dev
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff>=0.16; extra == 'dev'
Requires-Dist: scipy>=1.10; extra == 'dev'
Requires-Dist: types-regex>=2026.9.10; extra == 'dev'
Provides-Extra: docs
Requires-Dist: furo>=2024.8.6; extra == 'docs'
Requires-Dist: myst-parser>=4.0; extra == 'docs'
Requires-Dist: sphinx>=8.1; extra == 'docs'
Provides-Extra: fmpy
Requires-Dist: fmpy>=0.3; extra == 'fmpy'
Provides-Extra: om
Requires-Dist: ompython>=3.5; extra == 'om'
Description-Content-Type: text/markdown

# Dynamic Systems Testing Framework (DSTF)

[![quality](https://github.com/ORNL-Modelica/DynamicSystemsTestingFramework/actions/workflows/quality.yml/badge.svg)](https://github.com/ORNL-Modelica/DynamicSystemsTestingFramework/actions/workflows/quality.yml)

DSTF is regression and unit testing for the behaviour of time-dependent
systems: Modelica libraries, FMUs, Julia models, or anything Python can
compute. It finds a library's tests, simulates them with a backend — Dymola,
OpenModelica, FMPy, Julia or Python, or one a plug-in adds — and scores each
result against a stored baseline by the criteria you write. It reports a
verdict per test on the command line, as JUnit XML for CI, and as a dashboard
and a page per test in the browser.

DSTF is in beta: the command line and the testing.json keys may still change
between minor versions; the changelog says when.

## Install

```console
$ uv tool install dynamic-systems-testing-framework
```

or `pipx install dynamic-systems-testing-framework`. The command is `dstf`.
The `author` extra adds `dstf author`, a browser tool for writing criteria
beside the plots they score; `fmpy` and `om` add what the FMPy and
OpenModelica backends drive.

## A first run

The Python example library needs no simulator. From a clone of this
repository, in a Python environment with numpy and scipy:

```console
$ git clone https://github.com/ORNL-Modelica/DynamicSystemsTestingFramework.git
$ cd DynamicSystemsTestingFramework
$ python3 -m pip install numpy scipy
$ dstf --config examples/python/PythonTestingLib/Resources/ReferenceResults/testing.json run
```

It runs three tests, compares each with its stored baseline, prints a verdict
per test and opens the dashboard:

![The dashboard: one row per test with its status, worst NRMSE, criteria passed and times](https://raw.githubusercontent.com/ORNL-Modelica/DynamicSystemsTestingFramework/main/docs/img/dashboard.png)

## Documentation

<https://dstf.readthedocs.io/> — a first run, setting up `testing.json` for
your library, adding tests, reading results, baselines, criteria, CI, a page
per simulator, writing a backend plug-in, and a reference of every command,
key and comparison mode.

## Changelog and licence

What changed in each version is in
[CHANGELOG.md](https://github.com/ORNL-Modelica/DynamicSystemsTestingFramework/blob/main/CHANGELOG.md).
DSTF is released under the MIT licence:
[LICENSE](https://github.com/ORNL-Modelica/DynamicSystemsTestingFramework/blob/main/LICENSE).
