Release History
v1.5.2 (2024-12-19)
Maintenance
Increase the limit on spinboxes generated from MultiInputFormDialog, in response to a request that set-value-step timeouts not be limited to 99
Navigate BACK to the parent page when creating a new check in SetValueStep, preventing extra navigation clicks
Improves the performance of the CLI entrypoint, deferring functional imports as long as possible
Contributors
tangkong
v1.5.1 (2024-09-16)
Bugfixes
Store the setpoint pv when creating a Target if possible, instead of storing pvname (which could be the readback pv). Refactor OphydAttributeData slightly to this end.
Contributors
tangkong
v1.5.0 (2024-08-20)
Features
Adds report output option to
atef check
cli toolAdds template step active and passive dataclasses, along with report support.
Adds RegexFindReplace for serializable, regex specific FindReplaceAction
Adds atef config GUI pages for passive and active templated checkouts featuring a clear staging area and tree-view for added clarity
Bugfixes
Unifies usage of
create_tree_from_file
Maintenance
Pins numpy<2.0 to avoid issues with upstream incompatibilities
Refactors find-replace logic and dataclasses into a separate module from the widgets that display them
Specify bluesky-base and pin matplotlib in conda dependencies to avoid unintended qt6 dependencies
Contributors
tangkong
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 scripts
subcommand for invoking existing scripts. Includesconverter_v0
andpmgr_check
scripts.
Contributors
tangkong
v1.3.0 (2023-12-19)
Features
Adds results summary page accessible from run-mode in the
atef config
GUIAdds 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
None
inEquals
comparison. 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.partial
withWeakPartialMethodSlot
in 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
ScientificDoubleSpinbox
and uses it in MultiModeValueEdit.
Bugfixes
Waits for signal connection during
ActionRowWidget
initialization 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
MultiModeValueEdit
widget 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 ofQTableWidget
that 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
Comparison
within aProcedureStep
Adds 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_exception
now properly expects to emit anException
fixes 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
QDataclassBridge
for 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
QDataclassBridge
Sets the comparison widget type based on the loaded datatype
Allows device selection via double-click in the
HappiSearchWidget
tree-view
Maintenance
Improves
ResultStatus
refresh 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
BusyCursorThread
fleshes out the test suite, adding fixtures where appropriate.
display enum strings in
SetValueStep
run view.Differentiates between read and write (set) PV’s in
OphydDeviceTableView
Wraps signal.get call used for setting input type validators in
BusyCursorThread
Contributors
tangkong