Releases: PlotPyStack/guidata
v3.4.1
v3.4.0
In this release, test coverage is 76%.
💥 New features:
dataset.io.h5fmt.HDF5Reader.read
method: added newdefault
argument to set
default value for missing data in the HDF5 file (backward compatible). The default
value ofdefault
isNoDefault
(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 newinactivity_timeout
argument to set
the time (in milliseconds) to wait after the user has stopped typing before
emitting theCodeEditor.SIG_EDIT_STOPPED
signal.- Added
execenv.accept_dialogs
attribute to control whether dialogs should be
automatically accepted or not (default isNone
, meaning no automatic acceptance):
this allows more coverage of the test suite. For now, this attribute has only been
proven useful intests/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.)
- Testing an arbitrary data model saved/loaded to/from HDF5 and JSON files,
guidata.dataset.io
module is now deprecated and will be removed in a future
release. Please useguidata.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 theio
module is not limited todataset.DataSet
objects, but may be used for any kind of data serialization/deserialization.
📖 Documentation:
- Added missing
DataSetEditDialog
andDataSetEditLayout
classes - Added missing inheritance/member details on some classes
- Reduced table of contents depth in left sidebar for better readability
v3.3.0
💥 New features:
- Array editor now supports row/column insertion/deletion:
- Added
variable_size
argument tosetup_and_check
method - The feature is disabled by default (backward compatible)
- It supports standard arrays, masked arrays, record arrays and N-dimensional arrays
- Added
- New dataset read-only mode:
- Added
readonly
argument toDataSet
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
)
- Added
- New dataset group edit mode:
- Added
mode
argument toDataSetGroup.edit
method, with the following options:mode='tabs'
(default): each dataset is displayed in a separate tabmode='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
- Added
🛠️ 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. aQMainWindow
, was deleted)
while an output stream is still writing to the console (e.g. alogging
handler
which will flush the output stream when closing the application) - This concerns all console-related widgets:
DockableConsole
,Console
,
InternalShell
,PythonShellWidget
andShellBaseWidget
- Fixed
- Code editor: fixed compatibility issue with PySide6
(AttributeError: 'QFont' object has no attribute 'Bold'
)
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 theGetUserDefaultLocaleName
function) - Issue #68 - Windows: gettext translation is not working on frozen applications
- Locale detection has been fixed in 3.1.1 (deprecation of
- 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
anddataset.ButtonItem
: addedsize
argument to set the icon sizedataset.io
reader and writer classes: removed deprecatedwrite_unicode
method
Version 3.2.0
🛠️ Bug fixes:
- Issue #67 - JSONReader/Deserializing object list: TypeError: 'NoneType' object is not subscriptable
💥 Changes:
qthelpers.qt_wait
: addedshow_message
andparent
arguments (backward compatible)qthelpers.qt_app_context
: removedfaulthandler
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 namedexecenv
(seeguidata.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 variableGUIDATA_PARSE_ARGS
to1
(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.
- The
- Removed deprecated
guidata.disthelpers
module (we recommend using PyInstaller instead)
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
anddataset.ButtonItem
: addedsize
argument to set the icon sizedataset.io
reader and writer classes: removed deprecatedwrite_unicode
method
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
: addedshow_message
andparent
arguments (backward compatible)qthelpers.qt_app_context
: removedfaulthandler
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 namedexecenv
(seeguidata.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 variableGUIDATA_PARSE_ARGS
to1
(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.
- The
- Removed deprecated
guidata.disthelpers
module (we recommend using PyInstaller instead)
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 forpytest
:- 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)
- Before:
- Removed CHM documentation (obsolete format)
Version 3.1.0
⚠ Exceptionally, this release contains the following API breaking changes:
- Moved
utils.update_dataset
todataset.conv.update_dataset
- Moved
utils.restore_dataset
todataset.conv.restore_dataset
✔ API simplification (backward compatible):
- Dataset items may now be imported from
guidata.dataset
instead ofguidata.dataset.dataitems
- Dataset types may now be imported from
guidata.dataset
instead ofguidata.dataset.datatypes
- Examples:
-
from guidata.dataset.dataitems import FloatItem
becomesfrom guidata.dataset import FloatItem
-
from guidata.dataset.datatypes import DataSet
becomesfrom guidata.dataset import DataSet
-
Or you may now write:
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
- Added argument
dataset.dataitems.FileSaveItem
,dataset.dataitems.FileOpenItem
,
dataset.dataitems.FilesOpenItem
anddataset.dataitems.DirectoryItem
:
added argumentregexp
to validate file/dir name using a regular expressiondataset.dataitems.DictItem
: added support for HDF5 and JSON serializationdataset.io.h5fmt
anddataset.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
toPPSTACK_PYTHONEXE
🧹 Bug fixes:
- Fixed Qt6 compatibility issue with
QFontDatabase
Version 3.0
See full changelog here.
v3.1.0
guidata Releases
Version 3.1.0
⚠ Exceptionnally, this release contains the following API breaking changes:
- Moved
utils.update_dataset
todataset.conv.update_dataset
- Moved
utils.restore_dataset
todataset.conv.restore_dataset
✔ API simplification (backward compatible):
- Dataset items may now be imported from
guidata.dataset
instead ofguidata.dataset.dataitems
- Dataset types may now be imported from
guidata.dataset
instead ofguidata.dataset.datatypes
- Examples:
-
from guidata.dataset.dataitems import FloatItem
becomesfrom guidata.dataset import FloatItem
-
from guidata.dataset.datatypes import DataSet
becomesfrom guidata.dataset import DataSet
-
Or you may now write:
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
- Added argument
dataset.dataitems.FileSaveItem
,dataset.dataitems.FileOpenItem
,
dataset.dataitems.FilesOpenItem
anddataset.dataitems.DirectoryItem
:
added argumentregexp
to validate file/dir name using a regular expressiondataset.dataitems.DictItem
: added support for HDF5 and JSON serializationdataset.io.h5fmt
anddataset.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
toPPSTACK_PYTHONEXE
🧹 Bug fixes:
- Fixed Qt6 compatibility issue with
QFontDatabase
Version 3.0
See full changelog here.
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
andDataSetGroup.edit
: added missing argumentssize
andwordwrap
-
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.