All notable changes to the component-model project will be documented in this file.
The changelog format is based on Keep a Changelog.
- -/-
- .pre-commit-config.yaml: Updated rev of ruff-pre-commit to v0.15.9
- Updated to docutils>=0.22.4
- Updated to fmpy>=0.3.29
- Updated to furo>=2025.12
- Updated to jsonpath-ng>=1.8.0
- Updated to mypy>=1.19.1
- Updated to myst-parser>=5.0
- Updated to numpy>=2.4
- Updated to pint>=0.25.3
- Updated to plotly>=6.6
- Updated to pre-commit>=4.5
- Updated to pyright>=1.1.408
- Updated to pytest-cov>=7.1
- Updated to pytest>=9.0
- Updated to ruff>=0.15.9
- Updated to scipy-stubs>=1.17.1
- Updated to scipy>=1.17.1
- Updated to sourcery>=1.43.0
- Updated to sphinx-argparse-cli>=1.21.3
- Updated to sphinx-autodoc-typehints>=3.6
- Updated to Sphinx>=9.0
- Updated to sphinxcontrib-mermaid>=2.0
0.4.0 - 2026-03-12
- src/component_model/utils/controls.py: Refactored
Controlsfrom a multi-variable container into per-variableControlobjects with typed read/write access, and improved goal tracking so initial speed and acceleration are handled correctly when setting or changing goals. - src/component_model/utils/analysis.py: Reworked sine fitting by moving the
sine_fit()function fromcomponent_model.analyticintocomponent_model.utils.analysisand expanding it to fit offset sine waves, detect cycles from maxima, support cosine-like starts, and return offset, amplitude, angular frequency, phase, and a reference mid-time.
- Fixed coordinate transform handling for vectors pointing in the negative z-direction.
- Relaxed range compatibility checks for units and promoted scipy from a test-only dependency to a runtime package dependency, aligning dependencies with actual package usage.
- Cleaned up FMU test artifacts by removing generated FMU binaries from the examples folder, building FMUs into the test working directory instead, ignoring generated .dat files, and switching shared test fixtures to session scope.
- Added or updated tests for the new controls behavior, sine fitting, transform handling, and FMU build workflow.
- Included minor follow-up cleanup such as corrected example text typos, small README/docstring/formatting updates, and lockfile refreshes.
0.3.2 - 2026-02-02
- Added new module unit.py, containing class
Unit, a helper class to store and manage units and display units. OneUnitobject represents one scalar variable. - Added new module range.py, containing class
Range, a utility class to store and handle the variable range of a single-valued variable. - Sphinx documentation:
- Added docs for modules variable_naming.py, unit.py, range.py, enums.py and analytic.py
- Added Visual Studio Code settings
- Removed module plotter.py
- Updated code base with latest changes in python_project_template v0.2.6
- pyproject.toml:
- Updated supported Python versions to 3.11, 3.12, 3.13, 3.14
- Updated required Python version to ">= 3.11"
- Renamed optional dependency group 'tests' to 'test' to make it uniform with crane-fmu (there also 'test' is used).
- ruff.toml:
- Updated target Python version to "py311"
- .sourcery.yaml:
- Updated the lowest Python version the project supports to '3.11'
- GitHub workflow _test.yml:
- Updated Python versions in test matrix to 3.11, 3.12, 3.13, 3.14
- GitHub workflow _test_future.yml:
- Updated Python version in test_future to 3.15.0-alpha - 3.15.0
- GitHub workflow _build_and_publish_documentation.yml:
- Changed 'uv sync --upgrade' to 'uv sync --frozen' to avoid unintentional package upgrades.
- Sphinx documentation:
- Updated toctree
- conf.py: Updated, and removed ruff rule exception on file level
- Updated to ruff>=0.14.3 (from ruff>=0.6.3)
- Updated to pyright>=1.1.407 (from pyright>=1.1.378)
- Updated to sourcery>=1.40 (from sourcery>=1.22)
- Updated to numpy>=2.3 (from numpy>=2.0)
- Updated to scipy>=1.16 (from scipy>=1.15.1)
- Updated to matplotlib>=3.10 (from matplotlib>=3.9.1)
- Updated to plotly>=6.3 (from plotly>=6.0.1)
- Updated to pytest>=8.4 (from pytest>=8.3)
- Updated to pytest-cov>=7.0 (from pytest-cov>=5.0)
- Updated to Sphinx>=8.2 (from Sphinx>=8.0)
- Updated to sphinx-argparse-cli>=1.20 (from sphinx-argparse-cli>=1.17)
- Updated to sphinx-autodoc-typehints>=3.5 (from sphinx-autodoc-typehints>=2.2)
- Updated to furo>=2025.9 (from furo>=2024.8)
- Updated to pre-commit>=4.3 (from pre-commit>=3.8)
- Updated to mypy>=1.18 (from mypy>=1.11.1)
- Updated to checkout@v5 (from checkout@v4)
- Updated to setup-python@v6 (from setup-python@v5)
- Updated to setup-uv@v7 (from setup-uv@v2)
- Updated to upload-artifact@v5 (from upload-artifact@v4)
- Updated to download-artifact@v5 (from download-artifact@v4)
0.3.1 - 2025-12-17
- Address breaking changes with PythonFMU's latest changes to setup_experiment() function.
0.3.0 - 2025-12-15
- Added the documentation file
component-development-process.rst, outlining the recommended FMU development workflow, best practices, and the role of virtual derivatives. - Added the example XML structures
BouncingBallStructure.xmlandForcedOscillator6D.xmlto showcase richer algorithm and ECCO configuration sections together with clarified causality definitions.
- Refined the existing FMU XML examples with explicit algorithm sections, ECCO configuration, and clearer variable linkage descriptions.
- Updated
driving_force_fmu.pyto support vectorized amplitudes, frequencies, and frequency sweeps, while improving type annotations and initialization semantics. - Changed the upper bound for the
heightvariable inbouncing_ball_3d.pyto inches to align with the rest of the example unit system.
- Added Python 3.13 to the main CI matrix to ensure compatibility with the current stable release.
- Updated the future/experimental workflow to track Python 3.14 instead of 3.13 for forward-looking coverage.
0.2.0 - 2025.30.04
- New structured variables feature with hierarchical variable organization using dot notation
- Support for derivative notation with
der(variable)andder(variable,n)syntax - Automatic handling of derivatives without explicit definitions in base models
- Variable naming conventions:
flatandstructuredinVariableNamingConventionenum - Example implementations in
axle.py,axle_fmu.pyand test cases intest_structured_variables.py
0.1.0 - 2024-11-08
- Changed from
pip/toxtouvas package manager - README.rst : Completely rewrote section "Development Setup", introducing
uvas package manager. - Changed publishing workflow to use OpenID Connect (Trusted Publisher Management) when publishing to PyPI
- (all workflows): Adapted to use
uvas 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'
0.0.1 - 2024-09-27
- Initial release
- added this
- changed that
- updated to some_package_on_pypi>=0.1.0
- fixed issue #12345
- following features will soon be removed and have been marked as deprecated:
- function x in module z
- following features have been removed:
- function y in module z