Releases: PlotPyStack/guidata
Releases · PlotPyStack/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.
- This script is a wrapper around the
-
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
andguidata.utils.genreqs
modules:guidata-translations
is nowgtrans
guidata-genreqs
is 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 (
greqs
orpython -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 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_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.
- The
ℹ️ Other changes:
- Updated dependencies following the latest security advisories (NumPy >= 1.22)
- Added
pre-commit
hook to runruff
(bothruff check
andruff format
) on commit - Added missing
build
optional 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.genreqs
module for generating installation requirements files:- Function
generate_requirements_txt
generates arequirements.txt
file - Function
generate_requirements_rst
generates arequirements.rst
file - 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_helpers
module, based on thegettext
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 thebabel
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
- Scan for new translations:
- The
🛠️ Bug fixes:
- Issue #88 -
DictItem
default value persists across dataset instances (missingdeepcopy
)- 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 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-location
option to avoid including the file location in the translation filesmsgmerge
: use--update
option to avoid regenerating the translation files
- Replace
flake8
withruff
for linting in GitHub Actions workflow
🛠️ Bug fixes:
- Issue #84 - Side effects of
win32_fix_title_bar_background
withQGraphicsEffect
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.
- Initially, the generic documentation text like "Returns a new instance of" was translated using the
- Issue #80 -
ValueError
when trying to show/edit an empty array
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.
v3.7.0
Drop support for Python 3.8.
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
bywarnings.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_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 backgroundQColor
associated with the current color theme - Added
guidata.qthelpers.get_foreground_color
function to get the current foregroundQColor
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
andguidata.qthelpers.set_dark_mode
functions are deprecated, respectively in favor ofguidata.qthelpers.is_dark_theme
andguidata.qthelpers.set_color_mode
- Auto light/dark theme: quering OS setting only once, or each time the