Version 3.12

Version 3.12.1

🛠️ Bug fixes:

  • Issue #92 - Changing base class order in DataSet inheritance does not affect item order as expected

    • When using multiple inheritance with DataSet classes, changing the order of the base classes in the child class definition did not affect the order of the items in the resulting dataset.

    • One would expect the items to appear in the order in which the base classes are listed, and thanks to this fix, this is now the case.

Version 3.12.0

💥 New features:

  • New operator property FuncPropMulti for handling multiple properties:

    • This property allows you to apply a function to multiple item properties at once.

    • It can be used to create more complex dependencies between items in a dataset.

    • See the guidata.tests.dataset.test_activable_items module for an example of usage.

  • New script gbuild for building the package:

    • This script is a wrapper around the guidata.utils.securebuild module, which ensures that the build process is secure and reproducible.

    • It checks that the pyproject.toml file is present in the root of the repository, and that it is committed to Git.

    • It also ensures that the build process is reproducible by using a temporary directory for the build artifacts.

  • New qt_wait_until function (guidata.qthelpers) for waiting until a condition is met:

    • This function allows you to wait for a specific condition to be true, while still processing Qt events.

    • It can be useful in situations where you need to wait for a background task to complete or for a specific UI state to be reached.

  • Renamed scripts associated to guidata.utils.translations and guidata.utils.genreqs modules:

    • guidata-translations is now gtrans

    • guidata-genreqs is now greqs

🛠️ Bug fixes:

  • Issue #90 - BoolItem: Fix checkbox state management in qtitemwidgets

    • Before this fix, the checkbox state was not correctly managed when the item’s active state changed.

    • In other words, when using set_prop("display", active= on BoolItem, the checkbox was not updated.

    • The checkbox state is now correctly managed based on the item’s active state.

    • This fixes a regression introduced in version 3.3.0 with the new dataset read-only mode feature.

  • Requirements generation scripts (greqs or python -m guidata.utils.genreqs):

    • Before this fix, strict superior version requirements (e.g. pyqt5 > 5.15) were skipped in the generated requirements files (with a warning message).

    • Now, these strict superior version requirements are included but the version is not specified (e.g. pyqt5 instead of pyqt5 > 5.15).

    • A warning message is still displayed to inform the user that the version is not specified.

  • Issue with automated test suite using exec_dialog:

    • The exec_dialog function was not properly handling the dialog closure in automated tests.

    • This could lead to unexpected behavior and side effects between tests.

    • The fix ensures that all pending Qt events are processed before scheduling the dialog closure.

    • This avoids the necessity to use timeouts in tests, which can lead to flaky tests.

ℹ️ Other changes:

  • Updated dependencies following the latest security advisories (NumPy >= 1.22)

  • Added pre-commit hook to run ruff (both ruff check and ruff format) on commit

  • Added missing build optional dependency to development dependencies in pyproject.toml

  • Visual Studio Code tasks:

    • Major overhaul (cleanup and simplification)

    • Removal of no longer used batch files