Skip to content

Releases: PlotPyStack/guidata

v3.12.0

09 Jul 16:23
Compare
Choose a tag to compare

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

v3.11.0

04 Jul 10:00
Compare
Choose a tag to compare

Version 3.11.0

💥 New features:

  • New utils.genreqs module for generating installation requirements files:
    • Function generate_requirements_txt generates a requirements.txt file
    • Function generate_requirements_rst generates a requirements.rst file
    • The module is used by the new command line script guidata-genreqs

v3.10.0

17 Jun 14:26
Compare
Choose a tag to compare

Version 3.10.0

💥 New features:

  • Issue #81 - Modernize the internationalization utilities
    • The guidata.utils.gettext_helpers module, based on the gettext module, has been deprecated.
    • It has been replaced by a new module guidata.utils.translations, which provides a more modern and flexible way to handle translations, thanks to the babel library.
    • This change introduces a new script for managing translations, which may be used as follows:
      • Scan for new translations:
        • python -m guidata.utils.translations scan --name <name> --directory <directory>
        • or guidata-translations scan --name <name> --directory <directory>
      • Compile translations:
        • python -m guidata.utils.translations compile --name <name> --directory <directory>
        • or guidata-translations compile --name <name> --directory <directory>
      • More options are available, see the help message of the script:
        • python -m guidata.utils.translations --help
        • or guidata-translations --help

🛠️ Bug fixes:

  • Issue #88 - DictItem default value persists across dataset instances (missing deepcopy)
    • This issue is as old as the DictItem class itself.
    • When using a DictItem in a dataset, if a value is set to the item instance, this value was incorrectly used as the default for the next instance of the same dataset class.
    • This happened because a deepcopy was not made when setting the defaults of the class items in guidata.dataset.datatypes.
    • The fix ensures that each dataset instance has its own independent default value for DictItem, preventing side effects from one instance to another.

v3.9.0

26 Apr 09:21
Compare
Choose a tag to compare

💥 New features:

  • Issue #87 - Array editor: add an option to paste data (Ctrl+V)
  • Issue #85 - Array editor: add a button to export data as CSV
  • Issue #86 - Array editor: add "Copy all" feature for copying array and headers to clipboard

v3.8.0

26 Apr 07:25
Compare
Choose a tag to compare

ℹ️ Changes:

  • utils.gettext_helpers:
    • do_rescan_files: use --no-location option to avoid including the file location in the translation files
    • msgmerge: use --update option to avoid regenerating the translation files
  • Replace flake8 with ruff for linting in GitHub Actions workflow

🛠️ Bug fixes:

  • Issue #84 - Side effects of win32_fix_title_bar_background with QGraphicsEffect active
  • Issue #82 - Autodoc extension: translation of generic documentation text
    • Initially, the generic documentation text like "Returns a new instance of" was translated using the gettext function.
    • This was a mistake, as this text should be translated only after the documentation has been generated, i.e. by the sphinx-intl tool.
    • In other words, translating those generic texts should be done in the application documentation, not in the library itself.
    • To fix this issue, the generic documentation text is no longer translated using gettext, but is left as is in the source code.
  • Issue #80 - ValueError when trying to show/edit an empty array

v3.7.1

07 Nov 11:07
Compare
Choose a tag to compare

Version 3.7.1

ℹ️ Changes:

  • Fixed ResourceWarning: unclosed file on some platforms (e.g. CentOS Stream 8).
  • Update GitHub Actions to use setup-python@v5 and checkout@v4

Version 3.7.0

Drop support for Python 3.8.

v3.7.0

06 Nov 14:28
Compare
Choose a tag to compare

Drop support for Python 3.8.

v3.6.3

10 Sep 08:16
Compare
Choose a tag to compare

In this release, test coverage is 74%.

💥 New features:

  • MultipleChoiceItem: implemented callback property feature (was unexpectedly not supported)

🛠️ Bug fixes:

  • Issue #78 - PySide6 on Linux: AttributeError: 'DataFrameView' object has no attribute 'MoveLeft'
  • Issue #77 - PyQt6/PySide6 on Linux: AttributeError: type object 'PySide6.QtGui.QPalette' has no attribute 'Background'
  • Add 'Monospace' and 'Menlo' to the list of fixed-width supported fonts
  • Font warning message in configtools.py: replace print by warnings.warn

v3.6.2

06 Aug 09:03
Compare
Choose a tag to compare

In this release, test coverage is 74%.

🛠️ Bug fixes:

  • Light/dark theme support:
    • Fix default color mode issues
    • Color theme test: allow to derive from, so that the test may be completed by other widgets

v3.6.1

04 Aug 20:47
Compare
Choose a tag to compare

In this release, test coverage is 74%.

🛠️ Bug fixes:

  • Light/dark theme support:
    • Auto light/dark theme: quering OS setting only once, or each time the set_color_mode('auto') function is called
    • Fix console widget color theme: existing text in console widget was not updated when changing color theme
    • Fixed issue with dark theme on Windows: the windows title bar background was not updated when the theme was changed from dark to light (the inverse was working) - this is now fixed in guidata.qthelpers.win32_fix_title_bar_background function
    • Added guidata.qthelpers.set_color_mode function to set the color mode ('dark', 'light' or 'auto' for system default)
    • Added guidata.qthelpers.get_color_mode function to get the current color mode ('dark', 'light' or 'auto' for system default)
    • Added guidata.qthelpers.get_color_theme function to get the current color theme ('dark' or 'light')
    • Added guidata.qthelpers.get_background_color function to get the current background QColor associated with the current color theme
    • Added guidata.qthelpers.get_foreground_color function to get the current foreground QColor associated with the current color theme
    • Added guidata.qthelpers.is_dark_theme function to check if the current theme is dark)
    • As a consequence, guidata.qthelpers.is_dark_mode and guidata.qthelpers.set_dark_mode functions are deprecated, respectively in favor of guidata.qthelpers.is_dark_theme and guidata.qthelpers.set_color_mode