Skip to content

Releases: PlotPyStack/guidata

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

v3.6.0

02 Aug 12:47
Compare
Choose a tag to compare

Version 3.6.0

In this release, test coverage is 74%.

💥 New features:

  • Improved dark/light mode theme update:
    • The theme mode may be changed during the application lifetime
    • Added methods update_color_mode on CodeEditor and ConsoleBaseWidget widgets

Version 3.5.3

In this release, test coverage is 74%.

🛠️ Bug fixes:

  • Configuration initialization on Windows:

    • For various reasons, a PermissionError exception may be raised when trying to remove the configuration file on Windows, just after having created it for the first time. This is due to the fact that the file is still locked by the file system, even if the file has been closed. This is a known issue with Windows file system, and the solution is to wait a little bit before trying to remove the file.
    • To fix this issue, a new try_remove_file function has been added to the userconfig module, which tries multiple times to remove the file before raising an exception.
  • Moved back conftest.py to the tests folder (was in the root folder), so that pytest can be executed with proper configuration when running the test suite from the installed package

v3.5.3

01 Aug 16:40
Compare
Choose a tag to compare

In this release, test coverage is 74%.

🛠️ Bug fixes:

  • Configuration initialization on Windows:

    • For various reasons, a PermissionError exception may be raised when trying to remove the configuration file on Windows, just after having created it for the first time. This is due to the fact that the file is still locked by the file system, even if the file has been closed. This is a known issue with Windows file system, and the solution is to wait a little bit before trying to remove the file.
    • To fix this issue, a new try_remove_file function has been added to the userconfig module, which tries multiple times to remove the file before raising an exception.
  • Moved back conftest.py to the tests folder (was in the root folder), so that pytest can be executed with proper configuration when running the test suite from the installed package

v3.5.2

20 Jun 16:22
Compare
Choose a tag to compare

Version 3.5.2

In this release, test coverage is 74%.

🛠️ Bug fixes:

  • Add support for NumPy 2.0:
    • Use numpy.asarray instead of numpy.array(..., copy=False)
    • Remove deprecated numpy.core.multiarray module import

Version 3.5.1

In this release, test coverage is 74%.

🛠️ Bug fixes:

  • PR #74 - configtools.font_is_installed: fix PySide2 compat. issue (thanks to @xiaodaxia-2008)
  • Creating a dataset using the create class method:
    • Before, passing unknown keyword arguments failed silently (e.g. MyParameters.create(unknown=42)).
    • Now, an AttributeError exception is raised when passing unknown keyword arguments, as expected.
  • Processing Qt event loop in unattended mode before closing widgets and quitting the
    application, so that all pending events are processed before quitting: this includes
    for instance the drawing events of widgets, which may be necessary to avoid a crash
    when closing the application (e.g. if drawing the widget is required for some
    reason before closing it) or at least to ensure that test coverage includes all
    possible code paths.

ℹ️ Other changes:

  • Preparing for NumPy V2 compatibility: this is a work in progress, as NumPy V2 is not
    yet released. In the meantime, requirements have been updated to exclude NumPy V2.
  • Internal package reorganization: moved icons to guidata/data/icons folder
  • The delay command line option for environment execution object execenv is now
    expressed in milliseconds (before it was in seconds), for practical reasons
  • Explicitely exclude NumPy V2 from the dependencies (not compatible yet)

Version 3.5.0

In this release, test coverage is 74%.

💥 New features:

  • New Sphinx autodoc extension:
    • Allows to document dataset classes and functions using Sphinx directives, thus generating a comprehensive documentation for datasets with labels, descriptions, default values, etc.
    • The extension is available in the guidata.dataset.autodoc module
    • Directives:
      • autodataset: document a dataset class
      • autodataset_create: document a dataset creation function
      • datasetnote: add a note explaining how to use a dataset
  • BoolItem/TextItem: add support for callbacks when the item value changes

🛠️ Bug fixes:

  • Documentation generation: automatic requirement table generation feature was failing
    when using version conditions in the pyproject.toml file (e.g. pyqt5 >= 5.15).
  • Issue #72 - unit test leave files during the build usr/lib/python3/dist-packages/test.json
  • Issue #73 - ChoiceItem radio buttons are duplicated when using callbacks

v3.5.1

13 Jun 08:47
Compare
Choose a tag to compare

Version 3.5.1

In this release, test coverage is 74%.

🛠️ Bug fixes:

  • PR #74 - configtools.font_is_installed: fix PySide2 compat. issue (thanks to @xiaodaxia-2008)
  • Creating a dataset using the create class method:
    • Before, passing unknown keyword arguments failed silently (e.g. MyParameters.create(unknown=42)).
    • Now, an AttributeError exception is raised when passing unknown keyword arguments, as expected.
  • Processing Qt event loop in unattended mode before closing widgets and quitting the
    application, so that all pending events are processed before quitting: this includes
    for instance the drawing events of widgets, which may be necessary to avoid a crash
    when closing the application (e.g. if drawing the widget is required for some
    reason before closing it) or at least to ensure that test coverage includes all
    possible code paths.

ℹ️ Other changes:

  • Preparing for NumPy V2 compatibility: this is a work in progress, as NumPy V2 is not
    yet released. In the meantime, requirements have been updated to exclude NumPy V2.
  • Internal package reorganization: moved icons to guidata/data/icons folder
  • The delay command line option for environment execution object execenv is now
    expressed in milliseconds (before it was in seconds), for practical reasons
  • Explicitely exclude NumPy V2 from the dependencies (not compatible yet)

v3.5.0

10 Apr 16:48
Compare
Choose a tag to compare

In this release, test coverage is 74%.

💥 New features:

  • New Sphinx autodoc extension:
    • Allows to document dataset classes and functions using Sphinx directives, thus generating a comprehensive documentation for datasets with labels, descriptions, default values, etc.
    • The extension is available in the guidata.dataset.autodoc module
    • Directives:
      • autodataset: document a dataset class
      • autodataset_create: document a dataset creation function
      • datasetnote: add a note explaining how to use a dataset
  • BoolItem/TextItem: add support for callbacks when the item value changes

🛠️ Bug fixes:

  • Documentation generation: automatic requirement table generation feature was failing
    when using version conditions in the pyproject.toml file (e.g. pyqt5 >= 5.15).
  • Issue #72 - unit test leave files during the build usr/lib/python3/dist-packages/test.json
  • Issue #73 - ChoiceItem radio buttons are duplicated when using callbacks

v3.4.1

12 Mar 13:00
Compare
Choose a tag to compare

In this release, test coverage is 76%.

🛠️ Bug fixes:

  • Issue #71 - Random segmentation faults with applications embedding CodeEditor
  • Issue #70 - PermissionError: [Errno 13] Permission denied: '/usr/lib/python3/dist-packages/guidata/tests/data/genreqs/requirements.rst'

v3.4.0

11 Mar 08:16
Compare
Choose a tag to compare

In this release, test coverage is 76%.

💥 New features:

  • dataset.io.h5fmt.HDF5Reader.read method: added new default argument to set
    default value for missing data in the HDF5 file (backward compatible). The default
    value of default is NoDefault (a special value to indicate that no default value
    should be used, and that an exception should be raised if the data is missing).
  • widgets.codeeditor.CodeEditor: added new inactivity_timeout argument to set
    the time (in milliseconds) to wait after the user has stopped typing before
    emitting the CodeEditor.SIG_EDIT_STOPPED signal.
  • Added execenv.accept_dialogs attribute to control whether dialogs should be
    automatically accepted or not (default is None, meaning no automatic acceptance):
    this allows more coverage of the test suite. For now, this attribute has only been
    proven useful in tests/dataset/test_all_features.py.
  • Added unit tests for HDF5 and JSON serialization/deserialization:
    • Testing an arbitrary data model saved/loaded to/from HDF5 and JSON files,
      with various data sets and other data types.
    • Testing for backward compatibility with previous versions of the data model
      (e.g. new attributes, removed attributes, etc.)

⚠️ API breaking changes:

  • guidata.dataset.io module is now deprecated and will be removed in a future
    release. Please use guidata.io instead. This change is backward compatible
    (the old module is still available and will be removed in a future release).
    The motivation for this change is to simplify the module structure and to help
    understand that the scope of the io module is not limited to dataset.DataSet
    objects, but may be used for any kind of data serialization/deserialization.

📖 Documentation:

  • Added missing DataSetEditDialog and DataSetEditLayout classes
  • Added missing inheritance/member details on some classes
  • Reduced table of contents depth in left sidebar for better readability