Recent Releases of guidata

guidata - v3.12.0

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

- Python
Published by PierreRaybaut about 1 year ago

guidata - v3.11.0

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

- Python
Published by PierreRaybaut about 1 year ago

guidata - v3.10.0

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.

- Python
Published by PierreRaybaut about 1 year ago

guidata - v3.9.0

๐Ÿ’ฅ 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

- Python
Published by PierreRaybaut about 1 year ago

guidata - v3.8.0

โ„น๏ธ 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

- Python
Published by PierreRaybaut about 1 year ago

guidata - v3.7.1

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.

- Python
Published by PierreRaybaut over 1 year ago

guidata - v3.7.0

Drop support for Python 3.8.

- Python
Published by PierreRaybaut over 1 year ago

guidata - v3.6.3

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

- Python
Published by PierreRaybaut almost 2 years ago

guidata - v3.6.2

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

- Python
Published by PierreRaybaut almost 2 years ago

guidata - v3.6.1

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

- Python
Published by PierreRaybaut almost 2 years ago

guidata - v3.6.0

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

- Python
Published by PierreRaybaut almost 2 years ago

guidata - v3.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

- Python
Published by PierreRaybaut almost 2 years ago

guidata - v3.5.2

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

- Python
Published by PierreRaybaut about 2 years ago

guidata - v3.5.1

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)

- Python
Published by PierreRaybaut about 2 years ago

guidata - v3.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

- Python
Published by PierreRaybaut over 2 years ago

guidata - v3.4.1

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'

- Python
Published by PierreRaybaut over 2 years ago

guidata - v3.4.0

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

- Python
Published by PierreRaybaut over 2 years ago

guidata - v3.3.0

๐Ÿ’ฅ New features: * Array editor now supports row/column insertion/deletion: * Added variable_size argument to setup_and_check method * The feature is disabled by default (backward compatible) * It supports standard arrays, masked arrays, record arrays and N-dimensional arrays * New dataset read-only mode: * Added readonly argument to DataSet constructor * This is useful to create a dataset that will be displayed in read-only mode (e.g. string editing widgets will be in read-only mode: text will be selectable but not editable) * The items remain modifiable programmatically (e.g. dataset.item = 42) * New dataset group edit mode: * Added mode argument to DataSetGroup.edit method, with the following options: * mode='tabs' (default): each dataset is displayed in a separate tab * mode='table': all datasets are displayed in a single table * In the new table mode, the datasets are displayed in a single table with one row per dataset and one column per item * Clicking on a row will display the corresponding dataset in a modal dialog box

๐Ÿ› ๏ธ Bug fixes:

  • Qt console:
    • Fixed RuntimeError: wrapped C/C++ object of type DockableConsole has been deleted when closing the console widget (parent widget, e.g. a QMainWindow, was deleted) while an output stream is still writing to the console (e.g. a logging handler which will flush the output stream when closing the application)
    • This concerns all console-related widgets: DockableConsole, Console, InternalShell, PythonShellWidget and ShellBaseWidget
  • Code editor: fixed compatibility issue with PySide6 (AttributeError: 'QFont' object has no attribute 'Bold')

- Python
Published by PierreRaybaut over 2 years ago

guidata - v3.2.2 - Maintenance release

Version 3.2.2

๐Ÿ› ๏ธ Bug fixes:

  • Fixed translation support (gettext):
    • Locale detection has been fixed in 3.1.1 (deprecation of locale.getdefaultlocale)
    • However, on frozen distributions on Windows (e.g. with pyinstaller), function locale.getlocale is returning (None, None) instead of proper locale infos
    • Added a workaround: on Windows, if locale can't be detected, we now use the Windows API to retrieve it (using the GetUserDefaultLocaleName function)
    • Issue #68 - Windows: gettext translation is not working on frozen applications
  • Embedded Qt console:
    • Fixed default encoding detection on frozen applications on Windows
    • Issue #69 - Windows/Qt console: output encoding is not detected on frozen applications

Version 3.2.1

๐Ÿ› ๏ธ Bug fixes:

  • Tests only: qthelpers.close_widgets_and_quit now ignores deleted widgets

๐Ÿ’ฅ Changes:

  • dataset.ImageChoiceItem and dataset.ButtonItem: added size argument to set the icon size
  • dataset.io reader and writer classes: removed deprecated write_unicode method

Version 3.2.0

๐Ÿ› ๏ธ Bug fixes:

  • Issue #67 - JSONReader/Deserializing object list: TypeError: 'NoneType' object is not subscriptable

๐Ÿ’ฅ Changes:

  • qthelpers.qt_wait: added show_message and parent arguments (backward compatible)
  • qthelpers.qt_app_context: removed faulthandler support (this need to be handled at the application level, see for example DataLab's implementation)
  • Disabled command line argument parsing in guidata.env module:
    • The guidata library is parsing command line arguments for the purpose of creating the environment execution object named execenv (see guidata.env module). This object is used to determine the execution environment mainly for testing purposes: for example, to bypass the Qt event loop when running tests thanks to the --unattended command line option.
    • However this argument parsing is not always desirable, for example when using guidata as a dependency in another library or application. This is why the parsing mechanism is now disabled by default, and may be enabled by setting the environment variable GUIDATA_PARSE_ARGS to 1 (or any other non-empty value). As of today, it is still unclear if there will be a need to enable this mechanism in the future, so this is why the environment variable is used instead of a function argument.
  • Removed deprecated guidata.disthelpers module (we recommend using PyInstaller instead)

- Python
Published by PierreRaybaut over 2 years ago

guidata - v3.2.1 - Maintenance release

Version 3.2.1

๐Ÿ› ๏ธ Bug fixes:

  • Tests only: qthelpers.close_widgets_and_quit now ignores deleted widgets

๐Ÿ’ฅ Changes:

  • dataset.ImageChoiceItem and dataset.ButtonItem: added size argument to set the icon size
  • dataset.io reader and writer classes: removed deprecated write_unicode method

- Python
Published by PierreRaybaut over 2 years ago

guidata - v3.2.0 - New release

Version 3.2.0

๐Ÿ› ๏ธ Bug fixes:

  • Issue #67 - JSONReader/Deserializing object list: TypeError: 'NoneType' object is not subscriptable

๐Ÿ’ฅ Changes:

  • qthelpers.qt_wait: added show_message and parent arguments (backward compatible)
  • qthelpers.qt_app_context: removed faulthandler support (this need to be handled at the application level, see for example DataLab's implementation)
  • Disabled command line argument parsing in guidata.env module:
    • The guidata library is parsing command line arguments for the purpose of creating the environment execution object named execenv (see guidata.env module). This object is used to determine the execution environment mainly for testing purposes: for example, to bypass the Qt event loop when running tests thanks to the --unattended command line option.
    • However this argument parsing is not always desirable, for example when using guidata as a dependency in another library or application. This is why the parsing mechanism is now disabled by default, and may be enabled by setting the environment variable GUIDATA_PARSE_ARGS to 1 (or any other non-empty value). As of today, it is still unclear if there will be a need to enable this mechanism in the future, so this is why the environment variable is used instead of a function argument.
  • Removed deprecated guidata.disthelpers module (we recommend using PyInstaller instead)

- Python
Published by PierreRaybaut over 2 years ago

guidata - v3.1.1 - Maintenance release

Version 3.1.1

๐Ÿ› ๏ธ Bug fixes:

  • 'Apply' button state is now correctly updated when modifying one of the following items:
    • dataset.MultipleChoiceItem
    • dataset.dataitems.DictItem
    • dataset.dataitems.FloatArrayItem
  • Fixed minor deprecation and other issues related to locale

๐Ÿ’ฅ Changes:

  • Removed --unattended command line option for pytest:
    • Before: pytest --unattended guidata (to run tests without Qt event loop)
    • Now: pytest guidata (there is no use case for running tests with Qt event loop, so the --unattended option was removed and the unattended mode is now the default)
  • Removed CHM documentation (obsolete format)

Version 3.1.0

โš  Exceptionally, this release contains the following API breaking changes:

  • Moved utils.update_dataset to dataset.conv.update_dataset
  • Moved utils.restore_dataset to dataset.conv.restore_dataset

โœ” API simplification (backward compatible):

  • Dataset items may now be imported from guidata.dataset instead of guidata.dataset.dataitems
  • Dataset types may now be imported from guidata.dataset instead of guidata.dataset.datatypes
  • Examples:

    • from guidata.dataset.dataitems import FloatItem becomes from guidata.dataset import FloatItem
    • from guidata.dataset.datatypes import DataSet becomes from guidata.dataset import DataSet
    • Or you may now write:

    ```python import guidata.dataset as gds

    class MyParameters(gds.DataSet): """My parameters""" freq = gds.FloatItem("Frequency", default=1.0, min=0.0, nonzero=True) amp = gds.FloatItem("Amplitude", default=1.0, min=0.0) ```

๐Ÿ’ฅ New features:

  • New dataset.create_dataset_from_dict: create a dataset from a dictionary, using keys and values to create the dataset items
  • New dataset.create_dataset_from_func: create a dataset from a function signature, using type annotations and default values to create the dataset items
  • dataset.dataitems.StringItem:
    • Added argument password to hide text (useful for passwords)
    • Added argument regexp to validate text using a regular expression
  • dataset.dataitems.FileSaveItem, dataset.dataitems.FileOpenItem, dataset.dataitems.FilesOpenItem and dataset.dataitems.DirectoryItem: added argument regexp to validate file/dir name using a regular expression
  • dataset.dataitems.DictItem: added support for HDF5 and JSON serialization
  • dataset.io.h5fmt and dataset.io.jsonfmt: added support for lists and dictionnaries serialization

โ™ป New PlotPyStack internal features:

  • widgets.about: handle about dialog box informations (Python, Qt, Qt bindings, ...)
  • Renamed development environment variable GUIDATA_PYTHONEXE to PPSTACK_PYTHONEXE

๐Ÿงน Bug fixes:

  • Fixed Qt6 compatibility issue with QFontDatabase

Version 3.0

See full changelog here.

- Python
Published by PierreRaybaut over 2 years ago

guidata - v3.1.0

guidata Releases

Version 3.1.0

โš  Exceptionnally, this release contains the following API breaking changes:

  • Moved utils.update_dataset to dataset.conv.update_dataset
  • Moved utils.restore_dataset to dataset.conv.restore_dataset

โœ” API simplification (backward compatible):

  • Dataset items may now be imported from guidata.dataset instead of guidata.dataset.dataitems
  • Dataset types may now be imported from guidata.dataset instead of guidata.dataset.datatypes
  • Examples:

    • from guidata.dataset.dataitems import FloatItem becomes from guidata.dataset import FloatItem
    • from guidata.dataset.datatypes import DataSet becomes from guidata.dataset import DataSet
    • Or you may now write:

    ```python import guidata.dataset as gds

    class MyParameters(gds.DataSet): """My parameters""" freq = gds.FloatItem("Frequency", default=1.0, min=0.0, nonzero=True) amp = gds.FloatItem("Amplitude", default=1.0, min=0.0) ```

๐Ÿ’ฅ New features:

  • New dataset.create_dataset_from_dict: create a dataset from a dictionary, using keys and values to create the dataset items
  • New dataset.create_dataset_from_func: create a dataset from a function signature, using type annotations and default values to create the dataset items
  • dataset.dataitems.StringItem:
    • Added argument password to hide text (useful for passwords)
    • Added argument regexp to validate text using a regular expression
  • dataset.dataitems.FileSaveItem, dataset.dataitems.FileOpenItem, dataset.dataitems.FilesOpenItem and dataset.dataitems.DirectoryItem: added argument regexp to validate file/dir name using a regular expression
  • dataset.dataitems.DictItem: added support for HDF5 and JSON serialization
  • dataset.io.h5fmt and dataset.io.jsonfmt: added support for lists and dictionnaries serialization

โ™ป New PlotPyStack internal features:

  • widgets.about: handle about dialog box informations (Python, Qt, Qt bindings, ...)
  • Renamed development environment variable GUIDATA_PYTHONEXE to PPSTACK_PYTHONEXE

๐Ÿงน Bug fixes:

  • Fixed Qt6 compatibility issue with QFontDatabase

Version 3.0

See full changelog here.

- Python
Published by PierreRaybaut almost 3 years ago

guidata - v3.0.6 - Maintenance release

Version 3.0.6

Bug fixes:

  • widgets.console.interpreter: replaced threading.Thread.isAlive (deprecated since Python 3.8)

Other changes:

  • DataSet.edit, DataSet.view and DataSetGroup.edit: added missing arguments size and wordwrap

  • Documentation: added check-list before submitting a patch (see contribute.rst file)

  • Fixed some typing annotations and docstrings, as well as Pylint false positives

  • Removed unused functions from guidata.utils.encoding module:

    • transcode
    • getfilesystemencoding
  • Added missing docstrings and typing annotations in modules:

    • guidata.dataset.qtitemwidgets
    • guidata.dataset.qtwidgets
    • guidata.utils.encoding
    • guidata.utils.misc

Version 3.0

See full changelog here.

- Python
Published by PierreRaybaut almost 3 years ago

guidata - v3.0.5 - Fixed compatibility with PySide6

Version 3.0.5

Bug fixes:

  • Issue #65 - QVariant import erroneously used in typing annotations

Other changes:

  • tests.test_callbacks: added an example of a callback function for dynamically changing the list of choices of a ChoiceItem object

Version 3.0

See full changelog here.

- Python
Published by PierreRaybaut almost 3 years ago

guidata - v3.0.3 - New major release

New major release:

  • New BSD 3-Clause License
  • Black code formatting on all Python files
  • New automated test suite:
    • Added module guidata.env to handle execution environment
    • Added support for an "unattended" execution mode (Qt loop is bypassed)
    • Added support for pytest fixtures
    • Added support for coverage testing: 70% coverage to date
  • Documentation was entirely rewritten using Sphinx
  • Reorganized modules:
    • Moved guidata.hd5io to guidata.dataset.hdf5io
    • Moved guidata.jsonio to guidata.dataset.jsonio
    • Renamed guidata.userconfigio to guidata.dataset.iniio
    • New package guidata.utils for utility functions:
    • Removed deprecated or unused functions in old guidata.utils module
    • Moved old guidata.utils module to guidata.utils.misc, except the functions update_dataset and restore_dataset which are still in guidata.utils (root module)
    • Moved guidata.encoding to guidata.utils.encoding
    • Moved guidata.gettext_helpers to guidata.utils.gettext_helpers
    • Splitted guidata.qtwidgets in two modules:
    • guidata.widgets.dockable for dockable widgets
    • guidata.widgets.rotatedlabel for rotated label
  • Other changes:
    • guidata.guitest:
    • Added support for subpackages
    • New comment directive (# guitest: show) to add test module to test suite or to show test module in test launcher (this replaces the old SHOW = True line)
    • guidata.dataset.datatypes.DataSet: new create class method for concise dataset creation, allowing to create a dataset with a single line of code by passing default item values as keyword arguments

- Python
Published by PierreRaybaut almost 3 years ago

guidata - v3.0.1 - New major release

New major release:

  • New BSD 3-Clause License
  • Black code formatting on all Python files
  • New automated test suite:
    • Added module guidata.env to handle execution environment
    • Added support for an "unattended" execution mode (Qt loop is bypassed)
    • Added support for pytest fixtures
    • Added support for coverage testing: 70% coverage to date
  • Documentation was entirely rewritten using Sphinx
  • Reorganized modules:
    • Moved guidata.hd5io to guidata.dataset.hdf5io
    • Moved guidata.jsonio to guidata.dataset.jsonio
    • Renamed guidata.userconfigio to guidata.dataset.iniio
    • New package guidata.utils for utility functions:
    • Removed deprecated or unused functions in old guidata.utils module
    • Moved old guidata.utils module to guidata.utils.misc, except the functions update_dataset and restore_dataset which are still in guidata.utils (root module)
    • Moved guidata.encoding to guidata.utils.encoding
    • Moved guidata.gettext_helpers to guidata.utils.gettext_helpers
    • Splitted guidata.qtwidgets in two modules:
    • guidata.widgets.dockable for dockable widgets
    • guidata.widgets.rotatedlabel for rotated label
  • Other changes:
    • guidata.guitest:
    • Added support for subpackages
    • New comment directive (# guitest: show) to add test module to test suite or to show test module in test launcher (this replaces the old SHOW = True line)
    • guidata.dataset.datatypes.DataSet: new create class method for concise dataset creation, allowing to create a dataset with a single line of code by passing default item values as keyword arguments

- Python
Published by PierreRaybaut almost 3 years ago

guidata - v3.0.0 - New major release

New major release:

  • New BSD 3-Clause License
  • Black code formatting on all Python files
  • New automated test suite:
    • Added module guidata.env to handle execution environment
    • Added support for an "unattended" execution mode (Qt loop is bypassed)
    • Added support for pytest fixtures
    • Added support for coverage testing: 70% coverage to date
  • Documentation was entirely rewritten using Sphinx
  • Reorganized modules:
    • Moved guidata.hd5io to guidata.dataset.hdf5io
    • Moved guidata.jsonio to guidata.dataset.jsonio
    • Renamed guidata.userconfigio to guidata.dataset.iniio
    • New package guidata.utils for utility functions:
    • Removed deprecated or unused functions in old guidata.utils module
    • Moved old guidata.utils module to guidata.utils.misc, except the functions update_dataset and restore_dataset which are still in guidata.utils (root module)
    • Moved guidata.encoding to guidata.utils.encoding
    • Moved guidata.gettext_helpers to guidata.utils.gettext_helpers
    • Splitted guidata.qtwidgets in two modules:
    • guidata.widgets.dockable for dockable widgets
    • guidata.widgets.rotatedlabel for rotated label
  • Other changes:
    • guidata.guitest:
    • Added support for subpackages
    • New comment directive (# guitest: show) to add test module to test suite or to show test module in test launcher (this replaces the old SHOW = True line)
    • guidata.dataset.datatypes.DataSet: new create class method for concise dataset creation, allowing to create a dataset with a single line of code by passing default item values as keyword arguments

- Python
Published by PierreRaybaut about 3 years ago

guidata - v2.3.1: Fixed compatibility with Python 3.11

- Python
Published by PierreRaybaut over 3 years ago

guidata - v2.2.1

- Python
Published by PierreRaybaut about 4 years ago

guidata - Hotfix v2.0.4

- Python
Published by PierreRaybaut over 4 years ago

guidata - Added Python 3.10, QtPy 2.0 support (dropped Python 2 support)

Full Changelog: https://github.com/PierreRaybaut/guidata/compare/v1.8.0...v2.0.1

- Python
Published by PierreRaybaut over 4 years ago

guidata - PySide2 support

This release adds PySide2 support.

- Python
Published by PierreRaybaut almost 6 years ago

guidata - Maintenance release

Added compatibility with Spyder v4 + improved compatibility with PyQt5.

- Python
Published by PierreRaybaut almost 6 years ago

guidata -

Fixed Spyder v3.0 compatibility issue

- Python
Published by PierreRaybaut almost 10 years ago

guidata -

- Python
Published by PierreRaybaut almost 11 years ago