ATEF API
+Dataclasses
++ | + |
+ | + |
+ | Dataclasses for describing active checkout procedures. |
+
diff --git a/index.html b/index.html index ced090eb..cffb51b0 100644 --- a/index.html +++ b/index.html @@ -1,9 +1,9 @@
- + -Go to the default documentation.
+Go to the default documentation.
\ No newline at end of file diff --git a/v1.0.0/.buildinfo b/v1.0.0/.buildinfo new file mode 100644 index 00000000..f8a51678 --- /dev/null +++ b/v1.0.0/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 9f2ad08c54fa068edec25af51b885325 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/v1.0.0/.nojekyll b/v1.0.0/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/v1.0.0/_sources/api.rst.txt b/v1.0.0/_sources/api.rst.txt new file mode 100644 index 00000000..d1a9bb84 --- /dev/null +++ b/v1.0.0/_sources/api.rst.txt @@ -0,0 +1,13 @@ +ATEF API +******** + + +Dataclasses +^^^^^^^^^^^ + +.. autosummary:: + :toctree: generated + + atef.check + atef.config + atef.procedure diff --git a/v1.0.0/_sources/framework.rst.txt b/v1.0.0/_sources/framework.rst.txt new file mode 100644 index 00000000..5b059f5f --- /dev/null +++ b/v1.0.0/_sources/framework.rst.txt @@ -0,0 +1,12 @@ +ATEF Framework +************** + +Checkout Structure +^^^^^^^^^^^^^^^^^^ + +To expand on: +- Serializability +- Prepared variants + - Prepared holds transient information (results) +- Passive Checkout Groups +- Active Checkout Verify control flow diff --git a/v1.0.0/_sources/generated/atef.check.rst.txt b/v1.0.0/_sources/generated/atef.check.rst.txt new file mode 100644 index 00000000..a1997b8b --- /dev/null +++ b/v1.0.0/_sources/generated/atef.check.rst.txt @@ -0,0 +1,41 @@ +atef.check +========== + +.. automodule:: atef.check + + + + + + + + + + + + .. rubric:: Classes + + .. autosummary:: + + AnyComparison + AnyValue + Comparison + Equals + Greater + GreaterOrEqual + Less + LessOrEqual + NotEquals + Range + Value + ValueRange + ValueSet + + + + + + + + + diff --git a/v1.0.0/_sources/generated/atef.config.rst.txt b/v1.0.0/_sources/generated/atef.config.rst.txt new file mode 100644 index 00000000..672acd37 --- /dev/null +++ b/v1.0.0/_sources/generated/atef.config.rst.txt @@ -0,0 +1,51 @@ +atef.config +=========== + +.. automodule:: atef.config + + + + + + + + .. rubric:: Functions + + .. autosummary:: + + get_result_from_comparison + run_passive_step + + + + + + .. rubric:: Classes + + .. autosummary:: + + Configuration + ConfigurationFile + ConfigurationGroup + DeviceConfiguration + FailedConfiguration + PVConfiguration + PreparedComparison + PreparedConfiguration + PreparedDeviceConfiguration + PreparedFile + PreparedGroup + PreparedPVConfiguration + PreparedSignalComparison + PreparedToolComparison + PreparedToolConfiguration + ToolConfiguration + + + + + + + + + diff --git a/v1.0.0/_sources/generated/atef.procedure.rst.txt b/v1.0.0/_sources/generated/atef.procedure.rst.txt new file mode 100644 index 00000000..ff024ae7 --- /dev/null +++ b/v1.0.0/_sources/generated/atef.procedure.rst.txt @@ -0,0 +1,60 @@ +atef.procedure +============== + +.. automodule:: atef.procedure + + + + + + + + .. rubric:: Functions + + .. autosummary:: + + walk_steps + + + + + + .. rubric:: Classes + + .. autosummary:: + + BlueskyState + CodeStep + ComparisonToTarget + ConfigurationCheckStep + DescriptionStep + DeviceConfiguration + DisplayOptions + FailedStep + PassiveStep + PlanOptions + PlanStep + PreparedDescriptionStep + PreparedPassiveStep + PreparedProcedureFile + PreparedProcedureGroup + PreparedProcedureStep + PreparedSetValueStep + PreparedValueToSignal + ProcedureFile + ProcedureGroup + ProcedureStep + PydmDisplayStep + SetValueStep + Target + TyphosDisplayStep + ValueToTarget + + + + + + + + + diff --git a/v1.0.0/_sources/index.rst.txt b/v1.0.0/_sources/index.rst.txt new file mode 100644 index 00000000..b4f799bc --- /dev/null +++ b/v1.0.0/_sources/index.rst.txt @@ -0,0 +1,50 @@ +ATEF - Automated Test Execution Framework +========================================= + +Disclaimer +^^^^^^^^^^ + +ATEF is still in beta; features are still in development and bugs may have slipped +through. If you have any feedback, we would very much appreciate you leaving an +issue in our `github repositoryNote
" + + "" + msg + "
"; + var parent = document.querySelector('div.body') + || document.querySelector('div.document') + || document.body; + parent.insertBefore(warning, parent.firstChild); + } + + +} + +function addVersionsMenu() { + // We assume that we can load versions.json from + // https://' + + '' + + _("Hide Search Matches") + + "
" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/v1.0.0/api.html b/v1.0.0/api.html new file mode 100644 index 00000000..5f678489 --- /dev/null +++ b/v1.0.0/api.html @@ -0,0 +1,141 @@ + + + + + + +Classes
+
|
+Comparison passes if the value matches any comparison. |
+
|
+Comparison passes if the value is in the |
+
|
+Base class for all atef value comparisons. |
+
|
+
|
+
|
+Comparison: value > self.value. |
+
|
+Comparison: value >= self.value. |
+
|
+Comparison: value < self.value. |
+
|
+Comparison: value <= self.value. |
+
|
+
|
+
|
+A range comparison. |
+
|
+A primitive value with optional metadata. |
+
|
+A range of primitive values with optional metadata. |
+
|
+A set of values with corresponding severities and descriptions. |
+
Functions
+
|
+Get a Result, if available, from the provided arguments. |
+
|
+Runs a given check and returns the result. |
+
Classes
+
|
+Configuration base class for shared settings between all configurations. |
+
|
+A configuration file comprised of a number of devices/PV configurations. |
+
|
+Configuration group. |
+
|
+A configuration that is built to check one or more devices. |
+
|
+A Configuration that failed to be prepared for running. |
+
|
+A configuration that is built to check live EPICS PVs. |
+
|
+A unified representation of comparisons for device signals and standalone PVs. |
+
|
+Base class for a Configuration that has been prepared to run. |
+
|
+
|
+
|
+Methods + |
+
|
+
|
+
|
+
|
+
|
+A unified representation of comparisons for device signals and standalone PVs. |
+
|
+A unified representation of comparisons for device signals and standalone PVs. |
+
|
+
|
+
|
+A configuration unrelated to PVs or Devices which verifies status via some tool. |
+
Dataclasses for describing active checkout procedures. These dataclasses come in +normal (edit) and Prepared (run) variants
+Edit variants hold data needed to specify the step. +Prepared variants hold a reference to their originating edit-step, along with +Result objects and a .run() method.
+Adding a step requires: +- write the edit-variant +- add the edit-variant to the AnyProcedure type hint +- write the run-variant, along with its ._run() and .from_origin() methods +- add the step to PreparedProcedure.from_origin classmethod case statement
+Functions
+
|
+Yield ProedureSteps in |
+
Classes
+
|
++ |
|
+Run source code in a procedure. |
+
|
+
|
+
|
+Step which checks device configuration versus a given timestamp. |
+
|
+A simple title or descriptive step in the procedure. |
+
|
+Device configuration for comparison. |
+
|
+Options for a typhos or PyDM display. |
+
|
+A step that failed to be prepared for running. |
+
|
+A step that runs a passive checkout file |
+
|
+Options for a bluesky plan scan. |
+
|
+A procedure step comprised of one or more bluesky plans. |
+
|
+
|
+
|
+
|
+
|
+A Prepared Procedure file. |
+
|
+
|
+
|
+Base class for a ProcedureStep that has been prepared to run. |
+
|
+
|
+
|
+Methods + |
+
|
+File comprised of several Procedure steps |
+
|
+A group of procedure steps (or nested groups). |
+
|
+A basic step in an atef procedure. |
+
|
+A procedure step which a opens a PyDM display. |
+
|
+A step that sets one or more values and checks one or more values after |
+
|
+A destination for a value. |
+
|
+A procedure step which opens one or more typhos displays. |
+
|
+
|
+
+ |
|
+
|
+
ATEF is still in beta; features are still in development and bugs may have slipped +through. If you have any feedback, we would very much appreciate you leaving an +issue in our github repository.
+Atef is an initialism that stands for “Automated Test Execution Framework.” +Atef is meant to be a framework tailored for automating checkout and diagnostic +procedures using the control system. It will provide functionality for +automating checkout procedures, and the collection of the results of those +checkout procedures. The concept is to provide a way for everyone to build +checkout procedures that can be run in the control system easily, and +consistently. It is meant to address the dynamic nature of the entire system +(the LCLS machine), by providing a way to establish and routinely verify a +performance baseline. The project seeks to combine the best practices and +features of software testing automation, and our favorite control system +automation packages together to form a powerful tool for maintaining our +systems.
++ a | ||
+ |
+ atef | + |
+ |
+ atef.check | + |
+ |
+ atef.config | + |
+ |
+ atef.procedure | + |
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.
+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 checkout
Adds Enum support to the SetValueStep
’s actions
Adds 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 of QTableWidget
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 a ProcedureStep
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
Fixes a bug where False-y observed values would fail to be reported
BusyCursorThread.raised_exception
now properly expects to emit an Exception
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
Improves ResultStatus
refresh handling, now also updates on paint events
In 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
tangkong
Update the title above with your issue number and a 1-2 word title. +Your filename should be issuenumber-title.rst, substituting appropriately.
+Make sure to fill out any section that represents changes you have made, +or replace the default bullet point with N/A.
+List backwards-incompatible changes here. +Changes to PVs don’t count as API changes for this library, +but changing method and component names or changing default behavior does.
List new updates that add utility to many classes, +provide a new base classes, add options to helper methods, etc.
List bug fixes that are not covered in the above sections.
List anything else. The intent is to accumulate changes +that the average user does not need to worry about.
List your github username and anyone else who made significant +code or conceptual contributions to the PR. You don’t need to +add reviewers unless their suggestions lead to large rewrites. +These will be used in the release notes to give credit and to +notify you when your code is being tagged.