Release History
v1.4.0 (2024-02-20)
Features
Adds script for converting pmgr configurations to atef checks.
Adds
PagedTableWidget, and applies it to passive checkout group pages to substantially improve the loading performance of group pages with many, many comparisons.
Bugfixes
Catch RuntimeErrors from widget deletion during enum filling
Avoid running deleteLater on widgets that garbage collection handles, preventing segfaults
Maintenance
Make selection behavior more consistent by using
QTreeView.setCurrentIndex()instead of manipulating the selection modeladds
atef scriptssubcommand for invoking existing scripts. Includesconverter_v0andpmgr_checkscripts.
Contributors
tangkong
v1.3.0 (2023-12-19)
Features
Adds results summary page accessible from run-mode in the
atef configGUIAdds icons to run-mode tree view
Adds page widget cache and lazy loading functionality to the atef config GUI
Bugfixes
RangeWidget’s visualizations update a bit more frequently, and also the label text actually updates. Closes #212Adds a menu option to open the welcome tab, since people like it. Closes #201
Properly shows an error message box when a file can’t be opened. Closes #202
Allow tolerances to be
NoneinEqualscomparison. Modifies the line-edit setup to allow null values ('',None) when casting the line edit value. Closes #128
Maintenance
Make comparisons against enum signals more robust by trying both the int and string versions if the check fails.
Refactors tree-walking helpers to a separate submodle (
atef.walk)Replaces use of
functools.partialwithWeakPartialMethodSlotin qt slots, cleaning up intermittent test suite failures (and hopefully production crashes)Refactors GUI backend to support lazy page loading
Move tree-building logic to dataclasses
Consolidate GUI backend classes (
EditTree/RunTree->DualTree,AtefItem/TreeItem->TreeItem)
Contributors
tangkong
v1.2.0 (2023-09-27)
Features
Adds
ScientificDoubleSpinboxand uses it in MultiModeValueEdit.
Bugfixes
Waits for signal connection during
ActionRowWidgetinitialization to properly read enum strings from signal.
Contributors
tangkong
v1.1.0 (2023-09-14)
Features
Adds find-replace functionality and helpers. These procedures walk through the dataclass, rather than blindly modifying serialized json.
Adds a simple find-replace widget and more fully-featured fill-template page.
Adds backend dataclasses for running Bluesky plans in active checkouts.
Prototypes auto-generated plan argument entry widgets.
Annotates built-in Bluesky plans with bluesky-queueserver compatible type hints.
Adds
DynamicValue(and subclassesHappiValue,EpicsValue) for comparing to dynamically changing data sources.Adds
MultiModeValueEditwidget for modifying values give a specified type, including dynamic values.
Bugfixes
Ensure filenames get cast as strings properly.
Allow cast_dataclass to transfer objects from old to new dataclass, previously nested dataclasses would be converted to dicts.
Maintenance
Adds bluesky-queueserver dependency and pins databroker.
Add sphinx templates for autogenerated documentation.
Reduce randomness in test suite, try all combo box options when available.
Contributors
tangkong
v1.0.0 (2023-06-22)
Many changes have taken place since the last tag (08/2022). Checkouts can now be run inside the GUI, and active checkouts have been prototyped.
Notably the structure of the checkout files changed, and checkouts before that tag must be converted to the modern format. Most users will not have issues with this.
Shoutout to all the contributors who helped before the pre-release notes framework was added.
Features
Replaces the welcome dialog with a welcome landing tab
Enable the close-tab button
adds run and edit widgets for
PassiveStep, a step that allows passive checkouts to be run as a component of an active checkoutAdds Enum support to the
SetValueStep’s actionsAdds SetValueStep tothe active checkout suite, allowing for a list of actions to be taken (setting values to targets), followed by a list of checks (Comparisons) for verifying the actions succeeded.
Adds a
TableWidgetWithAddRow, a subclass ofQTableWidgetthat includes a AddRowWidget. This add row contains a button for adding rows of a specified widget. (for better space efficiency)Adds GUI support for placing a
Comparisonwithin aProcedureStepAdds a busy cursor Thread worker (disables click interaction and changes to a wait cursor while a function runs) and a busy cursor decorator (not recommended, but necessary when wrapping slots that create widgets)
Adds report generation for active checkouts
Bugfixes
Fixes a bug where False-y observed values would fail to be reported
BusyCursorThread.raised_exceptionnow properly expects to emit anExceptionfixes more NoneType handling bugs during report generation.
only subscribe the close-tab function once.
disconnect update_value slots in
ActionRowWidget, preventing them from piling up whenever signal type changes.Fixes optional type hint handling in
QDataclassBridge(again)Improve missing field handling in report generation
fixes type hint parsing in
QDataclassBridgefor Optional type hints.carefully unsubscribes callbacks that might persist after toggling between run and edit mode, avoiding slots from referencing deleted RunTree widgets
Cast values read from the config to a string in AnyValue widget
Properly identify up Sequences in
QDataclassBridgeSets the comparison widget type based on the loaded datatype
Allows device selection via double-click in the
HappiSearchWidgettree-view
Maintenance
Improves
ResultStatusrefresh handling, now also updates on paint eventsIn the case of errors during a mode switch, the error will be revealed to the user and the switch will be reverted.
Improve result icon refresh behavior by emitting a sigal whenever a step is run.
Add result property to passive checkout configurations in order to re-compute the overall_result when .result is requested.
places a stray sig.wait_for_connection call into a
BusyCursorThreadfleshes out the test suite, adding fixtures where appropriate.
display enum strings in
SetValueSteprun view.Differentiates between read and write (set) PV’s in
OphydDeviceTableViewWraps signal.get call used for setting input type validators in
BusyCursorThread
Contributors
tangkong