Releases: dnv-opensource/farn
Releases · dnv-opensource/farn
v0.5.1
v0.5.0
Maintenance and clean-up
BREAKING Changes
- Moved module
farn.run.utils.threadingtofarn.utils.threading - Renamed and moved module
farn.run.subProcesstofarn.utils.sub_process - Renamed and moved module
farn.run.batchProcesstofarn.batch.batch_processor - Renamed module
farn.sampling.samplingtofarn.sampling.discrete(because the only class it actually contains isDiscreteSampling
Changed
- Updated code base with latest changes in python_project_template v0.2.10
- Python modules: Changed
__ALL__to__all__(lowercase, PEP8 and PEP257 compliant).
Dependencies
- .pre-commit-config.yaml: Updated rev of ruff-pre-commit to v0.15.9
- Updated to dictIO>=0.4.4
- Updated to numpy>=2.4
- Updated to ospx>=0.3.5
- Updated to pytest-cov>=7.1
- Updated to ruff>=0.15.9
- Updated to scipy>=1.17.1
- Updated to sphinx-argparse-cli>=1.21.3
- Updated to types-lxml>=2026.2
v0.4.4
Solved
- src/farn/sampling/sampling.py: Resolved an issue where the call to
lhs()caused a runtime error if the number of factor to generate samples for was only 1.
v0.4.3
Maintenance-Update
Changed
- GitHub Workflows:
- Added 'name: Checkout code' to uses of 'actions/checkout', for better readability and consistency across workflow files.
- Added 'name: Download build artifacts' to uses of 'actions/download-artifact', for better readability and consistency across workflow files.
- Added 'name: Publish to PyPI' to uses of 'pypa/gh-action-pypi-publish', for better readability and consistency across workflow files.
- Added 'name: Upload build artifacts' to uses of 'actions/upload-artifact', for better readability and consistency across workflow files.
- Changed 'uv sync --upgrade' to 'uv sync -U'
- Ensured that actions 'upload-artifact' and 'download-artifact' uniformly specify 'dist' as (file)name for the artifact uploaded (or downloaded, respectively), for consistency across workflow files.
- pull_request_to_main.yml and nightly_build.yml: Added 'workflow_dispatch:' in selected workflows to allow manual trigger of the workflow.
- Removed redundant 'Set up Python' steps (no longer needed, as 'uv sync' will automatically install Python if not present).
- Replaced 'Build source distribution and wheel' with 'Build source distribution and wheels' (plural) in workflow step names.
- Replaced 'Run twine check' with 'Check build artifacts' in workflow step names, to better reflect the purpose of the step.
- Updated the syntax used for the OS and Python matrix in test workflows.
- pyproject.toml:
- pyproject.toml: Removed leading carets and trailing slashes from 'exclude' paths
- pyproject.toml: Removed trailing slashes from 'exclude' paths
- Removed upper version constraint from required Python version, i.e. changed the "requires-python" field from ">= 3.11, < 3.15" to ">= 3.11".
Detailed background and reasoning in this good yet long post by Henry Schreiner:
https://iscinumpy.dev/post/bound-version-constraints/#pinning-the-python-version-is-special
TLDR: Placing an upper Python version constraint on a Python package causes more harm than it provides benefits.
The upper version constraint unnecessarily manifests incompatibility with future Python releases.
Removing the upper version constraint ensures the package remains installable as Python evolves.
In the majority of cases, the newer Python version will anyhow be backward-compatible. And in the rare case where your package would really not work with a newer Python version,
users can at least find a solution manually to resolve the conflict, e.g. by pinning your package to the last version compatible with the environment they install it in.
That way, we ensure it remains possible for users to find a solution, instead of rendering it impossible forever. - Added default directories to the 'exclude' list for pyright, in section [tool.pyright]
(Ref note in pyright docs).
- Sphinx Documentation:
- Sphinx conf.py: Updated year in copyright statement to 2026
- VS Code Settings:
- VS Code Settings: (Recommended extensions): Removed 'njqdev.vscode-python-typehint' (Python Type Hint). Not maintained since 1 year, and the functionality is now covered by GitHub Copilot.
VS Code Settings: (Recommended extensions): Added 'ms-python.debugpy' (Python Debugger).
VS Code Settings: (Recommended extensions): Added 'ms-python.vscode-python-envs' (Python Environments). - VS Code settings: (Recommended extensions): Removed deprecated IntelliCode extension and replaced it by GitHub Copilot Chat as recommended replacement.
- VS Code settings: Updated 'mypy-type-checker.reportingScope' to 'custom'.
- VS Code Settings: (Recommended extensions): Removed 'njqdev.vscode-python-typehint' (Python Type Hint). Not maintained since 1 year, and the functionality is now covered by GitHub Copilot.
- README.md: Updated year in copyright statement to 2026
- ruff.toml: Updated target Python version to "py311"
- tests/conftest.py:
- Changed scope of top level fixtures from "package" to "session", because "session" scoped fixtures gets called before "package" scoped fixtures
Dependencies
- .pre-commit-config.yaml: Updated rev of ruff-pre-commit to v0.15.1
- Updated to dictio>=0.4.3
- Updated to furo>=2025.12
- Updated to hilbertcurve>=2.0
- Updated to jupyter-client>=8.8
- Updated to jupyter>=1.1.1
- Updated to mypy>=1.19.1
- Updated to myst-parser>=5.0
- Updated to nbconvert>=7.17
- Updated to ospx>=0.3.3
- Updated to pandas-stubs>=3.0
- Updated to pandas>=3.0
- Updated to pillow>=12.1
- Updated to pre-commit>=4.5
- Updated to psutil>=7.2
- Updated to pydoe3>=1.6.2
- Updated to pyright>=1.1.408
- Updated to pytest>=9.0
- Updated to ruff>=0.15.1
- Updated to scipy>=1.17.0
- Updated to sourcery>=1.43.0
- Updated to sphinx-argparse-cli>=1.20.1
- Updated to sphinx-autodoc-typehints>=3.6
- Updated to sphinx>=9.0
- Updated to sphinxcontrib-mermaid>=2.0
- Updated to types-lxml>=2026.1
- Updated to types-psutil>=7.2
v0.4.2
Added
- Added support for Python 3.14
Removed
- Removed support for Python 3.10
Dependencies
- Updated to dictIO>=0.4.2 (from dictIO>=0.4.1)
- Updated to ospx>=0.3.2 (from ospx>=0.3.1)
- Updated to ruff>=0.14.3 (from ruff>=0.9.2)
- Updated to pyright>=1.1.407 (from pyright>=1.1.392)
- Updated to sourcery>=1.40 (from sourcery>=1.31)
- Updated to lxml>=6.0 (from lxml>=5.3)
- Updated to types-lxml>=2025.8 (from types-lxml>=2024.12)
- Updated to numpy>=2.3 (removed split version specifiers)
- Updated to scipy>=1.16 (from scipy>=1.14)
- Updated to pyDOE3>=1.6 (from pyDOE3>=1.0)
- Updated to pandas>=2.3 (from pandas>=2.2)
- Updated to pandas-stubs>=2.3 (from pandas-stubs>=2.2)
- Updated to pillow>=12.0 (from Pillow>=11.1)
- Updated to pytest>=8.4 (from pytest>=8.3)
- Updated to pytest-cov>=7.0 (from pytest-cov>=6.0)
- Updated to Sphinx>=8.2 (from Sphinx>=8.1)
- Updated to sphinx-argparse-cli>=1.20 (from sphinx-argparse-cli>=1.19)
- Updated to sphinx-autodoc-typehints>=3.5 (from sphinx-autodoc-typehints>=3.0)
- Updated to furo>=2025.9 (from furo>=2024.8)
- Updated to pre-commit>=4.3 (from pre-commit>=4.0)
- Updated to mypy>=1.18 (from mypy>=1.14)
- Updated to types-psutil>=7.0 (from types-psutil>=6.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@v5)
- Updated to upload-artifact@v5 (from upload-artifact@v4)
- Updated to download-artifact@v5 (from download-artifact@v4)
Changed
- Renamed the CLI module (in folder src/farn/cli) from 'farn.py' to '__main__.py'.
This follows current best practice (as in python_project_template).
It avoids import errors caused by the fact that the cli module has the same name as the package it imports from. - Do not run code quality checks in nightly builds
- Included uv.lock file in version control
- pyproject.toml:
- added required-environments to uv.tools (windows, linux, macos)
- updated required Python version to ">= 3.11, < 3.15"
- updated supported Python versions to 3.11, 3.12, 3.13, 3.14
- removed deprecated pyright setting 'reportShadowedImports'
- removed deprecated mypy plugin 'numpy.typing.mypy_plugin'
- 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
- .pre-commit-config.yaml:
- updated rev of pre-commit-hooks to v6.0.0
- updated rev of ruff-pre-commit to v0.14.3
- updated id of ruff to ruff-check
- Sphinx conf.py:
- removed ruff rule exception on file level
- demos\folder_for_demos.py:
- removed ruff rule exception
- .sourcery.yaml:
- updated the lowest Python version the project supports to '3.11'
Solved
- Resolved issues raised by
ruff0.14.3
v0.4.1
Added
- Added support for Python 3.13
- Added CITATION.cff
- pyproject.toml : Added keywords
Changed
- ruff.toml : removed deprecated ruff rules ANN101 and ANN102 from excluded rules
- Use f-string, where possible, instead of '%' style string formatting
Solved
- src/farn/core/case.py : Changed the way how local variables get added / manipulated through code. Replaced access to
locals()withsys._getframe().f_localswhen manipulating local variables. This change became necessary as Python 3.13 changed the way Python's builtinlocals()method works. See PEP 667 for details. - Resolved issues raised by
ruff0.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 scipy>=1.15 (from scipy>=1.13)
- Updated to matplotlib>=3.10 (from matplotlib>=3.9)
- Updated to dictIO>=0.4.1 (from dictIO>=0.4.0)
- Updated to Pillow>=11.1 (from Pillow>=10.4)
- 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 ospx>=0.3.1 (from ospx>=0.3.0)
- 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)
- Updated to types-psutil>=6.1 (from types-psutil>=6.0)
- 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'",
v0.4.0
Breaking changes
- The code has been adapted to dictIO 0.4.0
dictIO 0.4.0 introduced some breaking changes. With the current release 0.4.0 of farn, the code base has been adapted to these in changes.
The most prominent change being that classdictIO.CppDicthas been replaced by classdictIO.SDict.
Changed
- Changed from
pip/toxtouvas package manager - README.md : Completely rewrote section "Development Setup", introducing
uvas package manager. - 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
- Replaced black formatter with ruff formatter
Solved
- Sphinx documentation: Resolved issue that documentation of class members was generated twice.
Added
- Sphinx documentation: Added extension to support Markdown-based diagrams
v0.4.0b4
Pre-release v0.4.0b4
v0.3.7
Dependencies
- updated to ruff==0.4.2 (from ruff==0.2.1)
- updated to pyright==1.1.360 (from pyright==1.1.350)
- updated to sourcery==1.16 (from sourcery==1.15)
- updated to lxml>=5.2 (from lxml>=5.1)
- updated to types-lxml>=2024.4 (from types-lxml>=5.1)
- updated to scipy>=1.13 (from scipy>=1.12)
- updated to Pillow>=10.3 (from Pillow>=10.2)
- updated to pytest>=8.2 (from pytest>=7.4)
- updated to pytest-cov>=5.0 (from pytest-cov>=4.1)
- updated to Sphinx>=7.3 (from Sphinx>=7.2)
- updated to sphinx-argparse-cli>=1.15 (from sphinx-argparse-cli>=1.11)
- updated to myst-parser>=3.0 (from myst-parser>=2.0)
- updated to furo>=2024.4 (from furo>=2023.9.10)
- updated to dictIO>=0.3.4 (from dictIO>=0.3.3)
- updated to ospx>=0.2.14 (from ospx>=0.2.13)
- updated to numpy>=1.26,<2.0 (from numpy>=1.26)
- updated to matplotlib>=3.9 (from matplotlib>=3.8)
- removed black
Changed
- 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
Added
farn.core.case.Case: Added methodadd_parameters(), which allows to manually add user-defined parameters to a Case.
v0.3.6
Added
- README.md : Under
Development Setup, added a step to install current package in "editable" mode, using the pip install -e option.
This removes the need to manually add /src to the PythonPath environment variable in order for debugging and tests to work.
Removed
- VS Code settings: Removed the setting which added the /src folder to PythonPath. This is no longer necessary. Installing the project itself as a package in "editable" mode, using the pip install -e option, solves the issue and removes the need to manually add /src to the PythonPath environment variable.
Changed
- Moved all project configuration from setup.cfg to pyproject.toml
- Moved all tox configuration from setup.cfg to tox.ini.
- Moved pytest configuration from pyproject.toml to pytest.ini
- Deleted setup.cfg
Dependencies
- updated to black[jupyter]==24.1 (from black[jupyter]==23.12)
- updated to version: '==24.1' (from version: '==23.12')
- updated to ruff==0.2.1 (from ruff==0.1.8)
- updated to pyright==1.1.350 (from pyright==1.1.338)
- updated to sourcery==1.15 (from sourcery==1.14)
- updated to lxml>=5.1 (from lxml>=4.9)
- updated to scipy>=1.12 (from scipy>=1.11)
- updated to pandas>=2.2 (from pandas>=2.1)
- updated to Pillow>=10.2 (from Pillow>=10.1)