What’s New

v3.14.1 (2024/07/18)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

  • Fix CI tests. (@rogersamso)

  • Run CI coverage only on ubuntu and lowest Python. (@enekomartinmartinez)

  • Rename ‘sheet’ by ‘tab’ in pysd.py_backend.external.External and related functions and classes to follow Vensim’s nomenclature. (@enekomartinmartinez)

  • Add error message when no subscripts are read from pysd.py_backend.external.ExtSubscript during the model building. (@enekomartinmartinez)

  • Add error message when a pysd.py_backend.external.External cell/firstcell is interpreted as cellrange name but the input file is not a spreadsheet. (@enekomartinmartinez)

  • Improve parsing of quoted arguments in the vensim translator for external lookups and external subscripts. (@enekomartinmartinez)

v3.14.0 (2024/04/24)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.13.4 (2024/02/29)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.13.3 (2024/02/02)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.13.2 (2024/01/09)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.13.1 (2024/01/02)

New Features

Breaking changes

Deprecations

Bug fixes

  • Fix bug with pysd.py_backend.output.ModelOutput initializing all the handlers, and thus, importing netCDF4 when unnecessary (issue #431). (@enekomartinmartinez)

Documentation

Performance

Internal Changes

v3.13.0 (2023/12/25)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.12.0 (2023/10/02)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.11.0 (2023/08/01)

New Features

  • Add the possibility to run a model one or several steps at a time, updating model variables in the process. (@rogersamso)

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.10.0 (2023/04/28)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.9.1 (2023/03/11)

New Features

  • Add numpy.pi as translation for the call to the function PI(). (@lionel42)

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

  • Run test for Python 3.11 with ubuntu-latest (hdf5-headers need to be installed using apt manager). (@enekomartinmartinez)

v3.9.0 (2022/12/15)

New Features

  • Parses and ignores reality check functions during translation of Vensim models. (@rogersamso)

Breaking changes

Deprecations

Bug fixes

  • Fix issue with the classification of variables in modules and submodules (issue #388). When a model had a view with 3 sublevels (e.g. energy-transformation.losses) but another view was defined with only two of them (e.g. energy-transformation), the variables in the second view were placed in the main model file. Now, if this happens, the variables in the second view will be placed in a main.py file (i.e. energy/transformation/main.py). (@rogersamso)

  • Fix bug on the CLI when passing a hyphen as first value to the –subview-sep argument (issue #388). (@rogersamso)

  • Fix bug on the CLI when parsing initial conditions (issue #395). (@rogersamso)

Documentation

  • The Splitting Vensim views in different files section in Command Line Usage has been updated to include an example of the usage of the –subview-sep CLI argument. (@rogersamso)

Performance

Internal Changes

v3.8.0 (2022/11/03)

New Features

  • Adds ncfile.py module with helper functions to export a subset or all of the data_vars in netCDF files generated with PySD to pandas.DataFrame, csv or tab files. (@rogersamso)

  • Adds possibility to initialize and export a subset or all external objects to netCDF, and then initialize the external objects from the file. (@rogersamso)

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

  • Initializing external objects from netCDF file is much faster than reading from spreadsheet files.(@rogersamso)

Internal Changes

v3.7.1 (2022/09/19)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.7.0 (2022/09/19)

New Features

  • Simulation results can now be stored as netCDF4 files. (@rogersamso)

  • The CLI also accepts netCDF4 file paths after the -o argument. (@rogersamso)

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

  • Exporting outputs as netCDF4 is much faster than exporting a pandas DataFrame, especially for large models. (@rogersamso)

Internal Changes

v3.6.1 (2022/09/05)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

  • Set parsimonius requirement to 0.9.0 to avoid a breaking-change in the newest version. Pending to update PySD to run it with parsimonious 0.10.0. (@enekomartinmartinez)

v3.6.0 (2022/08/31)

New Features

  • Include warning messages when a variable is defined in more than one view, when a control variable appears in a view or when a variable doesn’t appear in any view as a workbench variable (issue #357). (@enekomartinmartinez)

  • Force variables in a module to be saved alphabetically for being able to compare differences between versions (only for the models that are split by views). (@enekomartinmartinez)

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.5.2 (2022/08/15)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

  • Correct typos.

Performance

Internal Changes

v3.5.1 (2022/08/11)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

  • Improve the performance of reading pysd.py_backend.external.External data with cellrange names by loading the data in memory with pandas. As recommended by openpyxl developers, this is a possible way of improving performance to avoid parsing all rows up each time for getting the data (issue 1867 in openpyxl). (@enekomartinmartinez)

Internal Changes

v3.5.0 (2022/07/25)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

  • Ignore ‘distutils Version classes are deprecated. Use packaging.version instead’ error in tests as it is an internal error of xarray. (@enekomartinmartinez)

  • Add a warning message when a subscript range is duplicated in a variable reference. (@enekomartinmartinez)

v3.4.0 (2022/06/29)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.3.0 (2022/06/22)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.2.0 (2022/06/10)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.1.0 (2022/06/02)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

  • Include a template for PR.

v3.0.1 (2022/05/26)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

  • Improve tests/README.md.

  • Minor improvements in the documentation.

Performance

Internal Changes

v3.0.0 (2022/05/23)

New Features

  • The new Abstract Model Representation translation and building workflow will allow to add new output languages in the future. (@enekomartinmartinez)

  • Added new properties to the pysd.py_backend.model.Macro to make more accessible some information: namespace, subscripts, dependencies, modules, doc. (@enekomartinmartinez)

  • Cleaner Python models: (@enekomartinmartinez)
    • _namespace and _dependencies dictionaries have been removed from the file.

    • Variables original names, dependencies metadata now are given through pysd.py_backend.components.Component.add() decorator, instead of having them in the docstring.

    • Merging of variable equations is now done using the coordinates to a pre-allocated array, instead of using the magic function pysd.py_backend.utils.xrmerge().

    • Arranging and subseting arrays are now done inplace instead of using the magic function pysd.py_backend.utils.rearrange().

Breaking changes

Deprecations

  • Remove pysd.py_backend.utils.xrmerge(), pysd.py_backend.functions.pulse_train(), pysd.py_backend.functions.pulse_magnitude(), pysd.py_backend.functions.lookup(), pysd.py_backend.functions.lookup_discrete(), pysd.py_backend.functions.lookup_extrapolation(), pysd.py_backend.functions.logical_and(), pysd.py_backend.functions.logical_or(), pysd.py_backend.functions.bounded_normal(), pysd.py_backend.functions.log(). (@enekomartinmartinez)

  • Remove old translation and building files (pysd.translation). (@enekomartinmartinez)

Bug fixes

Documentation

Performance

  • The variables defined in several equations are now assigned to a pre-allocated array instead of using pysd.py_backend.utils.xrmerge(). (@enekomartinmartinez)

  • The arranging and subseting of arrays is now done inplace instead of using the magic function pysd.py_backend.utils.rearrange(). (@enekomartinmartinez)

  • The grammars for Parsimonious are only compiled once per translation. (@enekomartinmartinez)

Internal Changes