Releases: PlotPyStack/guidata
Releases · PlotPyStack/guidata
v3.12.0
Version 3.12.0
💥 New features:
-
New operator property
FuncPropMultifor 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_itemsmodule for an example of usage.
-
New script
gbuildfor building the package:- This script is a wrapper around the
guidata.utils.securebuildmodule, which ensures that the build process is secure and reproducible. - It checks that the
pyproject.tomlfile 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.
- This script is a wrapper around the
-
New
qt_wait_untilfunction (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.translationsandguidata.utils.genreqsmodules:guidata-translationsis nowgtransguidata-genreqsis nowgreqs
🛠️ Bug fixes:
- Issue #90 -
BoolItem: Fix checkbox state management inqtitemwidgets- 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=onBoolItem, 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 (
greqsorpython -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.
pyqt5instead ofpyqt5 > 5.15). - A warning message is still displayed to inform the user that the version is not specified.
- Before this fix, strict superior version requirements (e.g.
- Issue with automated test suite using
exec_dialog:- The
exec_dialogfunction 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.
- The
ℹ️ Other changes:
- Updated dependencies following the latest security advisories (NumPy >= 1.22)
- Added
pre-commithook to runruff(bothruff checkandruff format) on commit - Added missing
buildoptional dependency to development dependencies inpyproject.toml - Visual Studio Code tasks:
- Major overhaul (cleanup and simplification)
- Removal of no longer used batch files
v3.11.0
Version 3.11.0
💥 New features:
- New
utils.genreqsmodule for generating installation requirements files:- Function
generate_requirements_txtgenerates arequirements.txtfile - Function
generate_requirements_rstgenerates arequirements.rstfile - The module is used by the new command line script
guidata-genreqs
- Function
v3.10.0
Version 3.10.0
💥 New features:
- Issue #81 - Modernize the internationalization utilities
- The
guidata.utils.gettext_helpersmodule, based on thegettextmodule, 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 thebabellibrary. - 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
- Scan for new translations:
- The
🛠️ Bug fixes:
- Issue #88 -
DictItemdefault value persists across dataset instances (missingdeepcopy)- This issue is as old as the
DictItemclass itself. - When using a
DictItemin 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
deepcopywas not made when setting the defaults of the class items inguidata.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.
- This issue is as old as the
v3.9.0
v3.8.0
ℹ️ Changes:
utils.gettext_helpers:do_rescan_files: use--no-locationoption to avoid including the file location in the translation filesmsgmerge: use--updateoption to avoid regenerating the translation files
- Replace
flake8withrufffor linting in GitHub Actions workflow
🛠️ Bug fixes:
- Issue #84 - Side effects of
win32_fix_title_bar_backgroundwithQGraphicsEffectactive - Issue #82 - Autodoc extension: translation of generic documentation text
- Initially, the generic documentation text like "Returns a new instance of" was translated using the
gettextfunction. - This was a mistake, as this text should be translated only after the documentation has been generated, i.e. by the
sphinx-intltool. - 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.
- Initially, the generic documentation text like "Returns a new instance of" was translated using the
- Issue #80 -
ValueErrorwhen trying to show/edit an empty array
v3.7.1
Version 3.7.1
ℹ️ Changes:
- Fixed
ResourceWarning: unclosed fileon 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
Drop support for Python 3.8.
v3.6.3
In this release, test coverage is 74%.
💥 New features:
- MultipleChoiceItem: implemented
callbackproperty 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
printbywarnings.warn
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
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_backgroundfunction - Added
guidata.qthelpers.set_color_modefunction to set the color mode ('dark', 'light' or 'auto' for system default) - Added
guidata.qthelpers.get_color_modefunction to get the current color mode ('dark', 'light' or 'auto' for system default) - Added
guidata.qthelpers.get_color_themefunction to get the current color theme ('dark' or 'light') - Added
guidata.qthelpers.get_background_colorfunction to get the current backgroundQColorassociated with the current color theme - Added
guidata.qthelpers.get_foreground_colorfunction to get the current foregroundQColorassociated with the current color theme - Added
guidata.qthelpers.is_dark_themefunction to check if the current theme is dark) - As a consequence,
guidata.qthelpers.is_dark_modeandguidata.qthelpers.set_dark_modefunctions are deprecated, respectively in favor ofguidata.qthelpers.is_dark_themeandguidata.qthelpers.set_color_mode
- Auto light/dark theme: quering OS setting only once, or each time the