bec-widgets 0.74.1__tar.gz → 0.75.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/CHANGELOG.md +10 -10
  2. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/PKG-INFO +1 -1
  3. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/cli/client.py +19 -0
  4. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/bec_dispatcher.py +0 -1
  5. bec_widgets-0.75.0/bec_widgets/widgets/bec_queue/bec_queue.py +111 -0
  6. bec_widgets-0.75.0/bec_widgets/widgets/bec_queue/bec_queue.pyproject +1 -0
  7. bec_widgets-0.75.0/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +54 -0
  8. bec_widgets-0.75.0/bec_widgets/widgets/bec_queue/register_bec_queue.py +15 -0
  9. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/pyproject.toml +1 -1
  10. bec_widgets-0.75.0/tests/unit_tests/test_bec_queue.py +111 -0
  11. bec_widgets-0.75.0/tests/unit_tests/test_msgs/__init__.py +0 -0
  12. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/.git_hooks/pre-commit +0 -0
  13. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/.gitignore +0 -0
  14. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/.gitlab/issue_templates/bug_report_template.md +0 -0
  15. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/.gitlab/issue_templates/documentation_update_template.md +0 -0
  16. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/.gitlab/issue_templates/feature_request_template.md +0 -0
  17. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/.gitlab/merge_request_templates/default.md +0 -0
  18. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/.gitlab-ci.yml +0 -0
  19. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/.pylintrc +0 -0
  20. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/.readthedocs.yaml +0 -0
  21. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/LICENSE +0 -0
  22. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/README.md +0 -0
  23. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/__init__.py +0 -0
  24. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/assets/bec_widgets_icon.png +0 -0
  25. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/assets/terminal_icon.png +0 -0
  26. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/cli/__init__.py +0 -0
  27. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/cli/auto_updates.py +0 -0
  28. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/cli/client_utils.py +0 -0
  29. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/cli/generate_cli.py +0 -0
  30. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/cli/rpc_register.py +0 -0
  31. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
  32. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/cli/server.py +0 -0
  33. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/__init__.py +0 -0
  34. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  35. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  36. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.ui +0 -0
  37. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/motor_movement/__init__.py +0 -0
  38. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/motor_movement/motor_control_compilations.py +0 -0
  39. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/motor_movement/motor_controller.ui +0 -0
  40. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  41. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  42. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  43. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  44. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  45. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  46. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  47. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/__init__.py +0 -0
  48. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/bec_connector.py +0 -0
  49. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/bec_designer.py +0 -0
  50. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/bec_table.py +0 -0
  51. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/colors.py +0 -0
  52. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/container_utils.py +0 -0
  53. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/crosshair.py +0 -0
  54. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/entry_validator.py +0 -0
  55. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/layout_manager.py +0 -0
  56. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/plugin_utils.py +0 -0
  57. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/rpc_decorator.py +0 -0
  58. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/thread_checker.py +0 -0
  59. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/ui_loader.py +0 -0
  60. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/validator_delegate.py +0 -0
  61. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/widget_io.py +0 -0
  62. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/utils/yaml_dialog.py +0 -0
  63. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/__init__.py +0 -0
  64. {bec_widgets-0.74.1/bec_widgets/widgets/bec_status_box → bec_widgets-0.75.0/bec_widgets/widgets/bec_queue}/__init__.py +0 -0
  65. {bec_widgets-0.74.1/bec_widgets/widgets/buttons/stop_button → bec_widgets-0.75.0/bec_widgets/widgets/bec_status_box}/__init__.py +0 -0
  66. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
  67. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
  68. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/buttons/__init__.py +0 -0
  69. {bec_widgets-0.74.1/bec_widgets/widgets/device_inputs/device_combobox → bec_widgets-0.75.0/bec_widgets/widgets/buttons/stop_button}/__init__.py +0 -0
  70. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/buttons/stop_button/stop_button.py +0 -0
  71. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/__init__.py +0 -0
  72. {bec_widgets-0.74.1/bec_widgets/widgets/device_inputs/device_line_edit → bec_widgets-0.75.0/bec_widgets/widgets/device_inputs/device_combobox}/__init__.py +0 -0
  73. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_combobox/device_combobox.py +0 -0
  74. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_combobox/device_combobox.pyproject +0 -0
  75. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_combobox/device_combobox_plugin.py +0 -0
  76. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_combobox/launch_device_combobox.py +0 -0
  77. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_combobox/register_device_combobox.py +0 -0
  78. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_input_base.py +0 -0
  79. {bec_widgets-0.74.1/bec_widgets/widgets/figure/plots → bec_widgets-0.75.0/bec_widgets/widgets/device_inputs/device_line_edit}/__init__.py +0 -0
  80. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_line_edit/device_line_edit.py +0 -0
  81. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_line_edit/device_line_edit.pyproject +0 -0
  82. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_line_edit/device_line_edit_plugin.py +0 -0
  83. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_line_edit/launch_device_line_edit.py +0 -0
  84. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/device_inputs/device_line_edit/register_device_line_edit.py +0 -0
  85. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/dock/__init__.py +0 -0
  86. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/dock/dock.py +0 -0
  87. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/dock/dock_area.py +0 -0
  88. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/figure/__init__.py +0 -0
  89. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/figure/figure.py +0 -0
  90. {bec_widgets-0.74.1/bec_widgets/widgets/figure/plots/image → bec_widgets-0.75.0/bec_widgets/widgets/figure/plots}/__init__.py +0 -0
  91. {bec_widgets-0.74.1/bec_widgets/widgets/figure/plots/motor_map → bec_widgets-0.75.0/bec_widgets/widgets/figure/plots/image}/__init__.py +0 -0
  92. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
  93. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
  94. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
  95. {bec_widgets-0.74.1/bec_widgets/widgets/figure/plots/waveform → bec_widgets-0.75.0/bec_widgets/widgets/figure/plots/motor_map}/__init__.py +0 -0
  96. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
  97. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
  98. {bec_widgets-0.74.1/bec_widgets/widgets/jupyter_console → bec_widgets-0.75.0/bec_widgets/widgets/figure/plots/waveform}/__init__.py +0 -0
  99. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
  100. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
  101. {bec_widgets-0.74.1/bec_widgets/widgets/motor_control → bec_widgets-0.75.0/bec_widgets/widgets/jupyter_console}/__init__.py +0 -0
  102. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
  103. {bec_widgets-0.74.1/bec_widgets/widgets/motor_control/motor_table → bec_widgets-0.75.0/bec_widgets/widgets/motor_control}/__init__.py +0 -0
  104. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/motor_control/motor_control.py +0 -0
  105. {bec_widgets-0.74.1/bec_widgets/widgets/motor_control/movement_absolute → bec_widgets-0.75.0/bec_widgets/widgets/motor_control/motor_table}/__init__.py +0 -0
  106. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/motor_control/motor_table/motor_table.py +0 -0
  107. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/motor_control/motor_table/motor_table.ui +0 -0
  108. {bec_widgets-0.74.1/bec_widgets/widgets/motor_control/movement_relative → bec_widgets-0.75.0/bec_widgets/widgets/motor_control/movement_absolute}/__init__.py +0 -0
  109. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.py +0 -0
  110. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.ui +0 -0
  111. {bec_widgets-0.74.1/bec_widgets/widgets/motor_control/selection → bec_widgets-0.75.0/bec_widgets/widgets/motor_control/movement_relative}/__init__.py +0 -0
  112. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/motor_control/movement_relative/movement_relative.py +0 -0
  113. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/motor_control/movement_relative/movement_relative.ui +0 -0
  114. {bec_widgets-0.74.1/bec_widgets/widgets/text_box → bec_widgets-0.75.0/bec_widgets/widgets/motor_control/selection}/__init__.py +0 -0
  115. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/motor_control/selection/selection.py +0 -0
  116. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/motor_control/selection/selection.ui +0 -0
  117. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
  118. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
  119. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
  120. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/scan_control/__init__.py +0 -0
  121. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
  122. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
  123. {bec_widgets-0.74.1/bec_widgets/widgets/vscode → bec_widgets-0.75.0/bec_widgets/widgets/text_box}/__init__.py +0 -0
  124. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/text_box/text_box.py +0 -0
  125. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/toolbar/__init__.py +0 -0
  126. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/toolbar/toolbar.py +0 -0
  127. {bec_widgets-0.74.1/bec_widgets/widgets/website → bec_widgets-0.75.0/bec_widgets/widgets/vscode}/__init__.py +0 -0
  128. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/vscode/vscode.py +0 -0
  129. {bec_widgets-0.74.1/tests → bec_widgets-0.75.0/bec_widgets/widgets/website}/__init__.py +0 -0
  130. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/bec_widgets/widgets/website/website.py +0 -0
  131. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/Makefile +0 -0
  132. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/_static/custom.css +0 -0
  133. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/_templates/custom-class-template.rst +0 -0
  134. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/_templates/custom-module-template.rst +0 -0
  135. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/api_reference/api_reference.md +0 -0
  136. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/assets/apps_48dp.svg +0 -0
  137. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/assets/display_settings_48dp.svg +0 -0
  138. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/assets/index_api.svg +0 -0
  139. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/assets/index_contribute.svg +0 -0
  140. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/assets/index_getting_started.svg +0 -0
  141. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/assets/index_user_guide.svg +0 -0
  142. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/assets/rocket_launch_48dp.svg +0 -0
  143. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/conf.py +0 -0
  144. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/developer/developer.md +0 -0
  145. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/developer/getting_started/development.md +0 -0
  146. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/developer/getting_started/getting_started.md +0 -0
  147. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/developer/widgets/widgets.md +0 -0
  148. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/index.md +0 -0
  149. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/introduction/introduction.md +0 -0
  150. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/make.bat +0 -0
  151. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/requirements.txt +0 -0
  152. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/api_reference/api_reference.md +0 -0
  153. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/applications/applications.md +0 -0
  154. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/customisation.md +0 -0
  155. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/getting_started/BECDockArea.png +0 -0
  156. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/getting_started/auto_updates.md +0 -0
  157. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/getting_started/getting_started.md +0 -0
  158. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/getting_started/gui_complex_gui.gif +0 -0
  159. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/getting_started/installation.md +0 -0
  160. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/getting_started/quick_start.md +0 -0
  161. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/user.md +0 -0
  162. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/BECFigure.png +0 -0
  163. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/bec_figure.md +0 -0
  164. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/bec_figure_dap.gif +0 -0
  165. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/bec_status_box.gif +0 -0
  166. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/bec_status_box.md +0 -0
  167. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/buttons.md +0 -0
  168. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/image_plot.gif +0 -0
  169. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/motor.gif +0 -0
  170. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/progress_bar.gif +0 -0
  171. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/ring_progress_bar.md +0 -0
  172. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/scan_control.gif +0 -0
  173. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/scan_control.md +0 -0
  174. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/scatter_2D.gif +0 -0
  175. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/text_box.md +0 -0
  176. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/w1D.gif +0 -0
  177. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/website.md +0 -0
  178. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/docs/user/widgets/widgets.md +0 -0
  179. {bec_widgets-0.74.1/tests/end-2-end → bec_widgets-0.75.0/tests}/__init__.py +0 -0
  180. {bec_widgets-0.74.1/tests/unit_tests → bec_widgets-0.75.0/tests/end-2-end}/__init__.py +0 -0
  181. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/end-2-end/conftest.py +0 -0
  182. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/end-2-end/test_bec_dock_rpc_e2e.py +0 -0
  183. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/end-2-end/test_bec_figure_rpc_e2e.py +0 -0
  184. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/end-2-end/test_rpc_register_e2e.py +0 -0
  185. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/end-2-end/test_scan_control_e2e.py +0 -0
  186. {bec_widgets-0.74.1/tests/unit_tests/test_msgs → bec_widgets-0.75.0/tests/unit_tests}/__init__.py +0 -0
  187. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/client_mocks.py +0 -0
  188. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/conftest.py +0 -0
  189. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_bec_connector.py +0 -0
  190. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_bec_dispatcher.py +0 -0
  191. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_bec_dock.py +0 -0
  192. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_bec_figure.py +0 -0
  193. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_bec_image.py +0 -0
  194. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_bec_motor_map.py +0 -0
  195. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_bec_status_box.py +0 -0
  196. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_client_utils.py +0 -0
  197. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_color_validation.py +0 -0
  198. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_configs/config_device.yaml +0 -0
  199. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_configs/config_device_no_entry.yaml +0 -0
  200. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_configs/config_scan.yaml +0 -0
  201. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_crosshair.py +0 -0
  202. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_device_input_base.py +0 -0
  203. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_device_input_widgets.py +0 -0
  204. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_generate_cli_client.py +0 -0
  205. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_motor_control.py +0 -0
  206. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_msgs/available_scans_message.py +0 -0
  207. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_plot_base.py +0 -0
  208. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_plugin_utils.py +0 -0
  209. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_ring_progress_bar.py +0 -0
  210. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_rpc_register.py +0 -0
  211. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_rpc_widget_handler.py +0 -0
  212. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_scan_control.py +0 -0
  213. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_scan_control_group_box.py +0 -0
  214. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_stop_button.py +0 -0
  215. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_text_box_widget.py +0 -0
  216. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_vscode_widget.py +0 -0
  217. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_waveform1d.py +0 -0
  218. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_website_widget.py +0 -0
  219. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_widget_io.py +0 -0
  220. {bec_widgets-0.74.1 → bec_widgets-0.75.0}/tests/unit_tests/test_yaml_dialog.py +0 -0
@@ -1,5 +1,15 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.75.0 (2024-06-26)
4
+
5
+ ### Feature
6
+
7
+ * feat(widgets): added simple bec queue widget ([`3faee98`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3faee98ec80041a27e4c1f1156178de6f9dcdc63))
8
+
9
+ ### Refactor
10
+
11
+ * refactor(dispatcher): cleanup ([`ca02132`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ca02132c8d18535b37e9192e00459d2aca6ba5cf))
12
+
3
13
  ## v0.74.1 (2024-06-26)
4
14
 
5
15
  ### Build
@@ -141,13 +151,3 @@
141
151
  * tests WIP ([`c09644b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c09644b29ddb291c91dc58bcd6ebf02ff45cab36))
142
152
 
143
153
  ## v0.70.0 (2024-06-21)
144
-
145
- ### Feature
146
-
147
- * feat(bec-designer): automatic plugin discovery ([`4639eee`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4639eee0b975ebd7a946e0e290449f5b88c372eb))
148
-
149
- * feat(device_line_edit): plugin added to bec-designer ([`b4b27ae`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b4b27aea3d8c08fa3d5d5514c69dbde32721d1dc))
150
-
151
- ### Fix
152
-
153
- * fix(bec-desiger+plugins): imports fixed, PYSIDE6 check to not enable run plugins with pyqt6 ([`50b3422`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/50b3422528d46d74317e8c903b6286e868ab7fe0))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.74.1
3
+ Version: 0.75.0
4
4
  Summary: BEC Widgets
5
5
  Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
6
6
  Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
@@ -13,6 +13,7 @@ class Widgets(str, enum.Enum):
13
13
  Enum for the available widgets.
14
14
  """
15
15
 
16
+ BECQueue = "BECQueue"
16
17
  BECStatusBox = "BECStatusBox"
17
18
  BECDock = "BECDock"
18
19
  BECDockArea = "BECDockArea"
@@ -1446,6 +1447,24 @@ class BECPlotBase(RPCBase):
1446
1447
  """
1447
1448
 
1448
1449
 
1450
+ class BECQueue(RPCBase):
1451
+ @property
1452
+ @rpc_call
1453
+ def config_dict(self) -> "dict":
1454
+ """
1455
+ Get the configuration of the widget.
1456
+
1457
+ Returns:
1458
+ dict: The configuration of the widget.
1459
+ """
1460
+
1461
+ @rpc_call
1462
+ def get_all_rpc(self) -> "dict":
1463
+ """
1464
+ Get all registered RPC objects.
1465
+ """
1466
+
1467
+
1449
1468
  class BECStatusBox(RPCBase):
1450
1469
  @property
1451
1470
  @rpc_call
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- import argparse
4
3
  import collections
5
4
  from collections.abc import Callable
6
5
  from typing import TYPE_CHECKING, Union
@@ -0,0 +1,111 @@
1
+ from bec_lib.endpoints import MessageEndpoints
2
+ from qtpy.QtCore import Qt, Slot
3
+ from qtpy.QtWidgets import QHeaderView, QTableWidget, QTableWidgetItem, QWidget
4
+
5
+ from bec_widgets.utils.bec_connector import BECConnector, ConnectionConfig
6
+
7
+
8
+ class BECQueue(BECConnector, QTableWidget):
9
+ """
10
+ Widget to display the BEC queue.
11
+ """
12
+
13
+ def __init__(
14
+ self,
15
+ parent: QWidget | None = None,
16
+ client=None,
17
+ config: ConnectionConfig = None,
18
+ gui_id: str = None,
19
+ ):
20
+ super().__init__(client, config, gui_id)
21
+ QTableWidget.__init__(self, parent=parent)
22
+ self.setColumnCount(3)
23
+ self.setHorizontalHeaderLabels(["Scan Number", "Type", "Status"])
24
+ header = self.horizontalHeader()
25
+ header.setSectionResizeMode(QHeaderView.Stretch)
26
+ self.bec_dispatcher.connect_slot(self.update_queue, MessageEndpoints.scan_queue_status())
27
+ self.reset_content()
28
+
29
+ @Slot(dict, dict)
30
+ def update_queue(self, content, _metadata):
31
+ """
32
+ Update the queue table with the latest queue information.
33
+
34
+ Args:
35
+ content (dict): The queue content.
36
+ _metadata (dict): The metadata.
37
+ """
38
+ # only show the primary queue for now
39
+ queue_info = content.get("queue", {}).get("primary", {}).get("info", [])
40
+ self.setRowCount(len(queue_info))
41
+ self.clearContents()
42
+
43
+ if not queue_info:
44
+ self.reset_content()
45
+ return
46
+
47
+ for index, item in enumerate(queue_info):
48
+ blocks = item.get("request_blocks", [])
49
+ scan_types = []
50
+ scan_numbers = []
51
+ status = item.get("status", "")
52
+ for request_block in blocks:
53
+ scan_type = request_block.get("content", {}).get("scan_type", "")
54
+ if scan_type:
55
+ scan_types.append(scan_type)
56
+ scan_number = request_block.get("scan_number", "")
57
+ if scan_number:
58
+ scan_numbers.append(str(scan_number))
59
+ if scan_types:
60
+ scan_types = ", ".join(scan_types)
61
+ if scan_numbers:
62
+ scan_numbers = ", ".join(scan_numbers)
63
+ self.set_row(index, scan_numbers, scan_types, status)
64
+
65
+ def format_item(self, content: str) -> QTableWidgetItem:
66
+ """
67
+ Format the content of the table item.
68
+
69
+ Args:
70
+ content (str): The content to be formatted.
71
+
72
+ Returns:
73
+ QTableWidgetItem: The formatted item.
74
+ """
75
+ item = QTableWidgetItem(content)
76
+ item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
77
+ return item
78
+
79
+ def set_row(self, index: int, scan_number: str, scan_type: str, status: str):
80
+ """
81
+ Set the row of the table.
82
+
83
+ Args:
84
+ index (int): The index of the row.
85
+ scan_number (str): The scan number.
86
+ scan_type (str): The scan type.
87
+ status (str): The status.
88
+ """
89
+
90
+ self.setItem(index, 0, self.format_item(scan_number))
91
+ self.setItem(index, 1, self.format_item(scan_type))
92
+ self.setItem(index, 2, self.format_item(status))
93
+
94
+ def reset_content(self):
95
+ """
96
+ Reset the content of the table.
97
+ """
98
+
99
+ self.setRowCount(1)
100
+ self.set_row(0, "", "", "")
101
+
102
+
103
+ if __name__ == "__main__": # pragma: no cover
104
+ import sys
105
+
106
+ from qtpy.QtWidgets import QApplication
107
+
108
+ app = QApplication(sys.argv)
109
+ widget = BECQueue()
110
+ widget.show()
111
+ sys.exit(app.exec_())
@@ -0,0 +1 @@
1
+ {'files': ['bec_queue.py']}
@@ -0,0 +1,54 @@
1
+ # Copyright (C) 2022 The Qt Company Ltd.
2
+ # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
+
4
+ from qtpy.QtDesigner import QDesignerCustomWidgetInterface
5
+ from qtpy.QtGui import QIcon
6
+
7
+ from bec_widgets.widgets.bec_queue.bec_queue import BECQueue
8
+
9
+ DOM_XML = """
10
+ <ui language='c++'>
11
+ <widget class='BECQueue' name='bec_queue'>
12
+ </widget>
13
+ </ui>
14
+ """
15
+
16
+
17
+ class BECQueuePlugin(QDesignerCustomWidgetInterface): # pragma: no cover
18
+ def __init__(self):
19
+ super().__init__()
20
+ self._form_editor = None
21
+
22
+ def createWidget(self, parent):
23
+ t = BECQueue(parent)
24
+ return t
25
+
26
+ def domXml(self):
27
+ return DOM_XML
28
+
29
+ def group(self):
30
+ return ""
31
+
32
+ def icon(self):
33
+ return QIcon()
34
+
35
+ def includeFile(self):
36
+ return "bec_queue"
37
+
38
+ def initialize(self, form_editor):
39
+ self._form_editor = form_editor
40
+
41
+ def isContainer(self):
42
+ return False
43
+
44
+ def isInitialized(self):
45
+ return self._form_editor is not None
46
+
47
+ def name(self):
48
+ return "BECQueue"
49
+
50
+ def toolTip(self):
51
+ return "Widget to display the BEC queue."
52
+
53
+ def whatsThis(self):
54
+ return self.toolTip()
@@ -0,0 +1,15 @@
1
+ def main(): # pragma: no cover
2
+ from qtpy import PYSIDE6
3
+
4
+ if not PYSIDE6:
5
+ print("PYSIDE6 is not available in the environment. Cannot patch designer.")
6
+ return
7
+ from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
8
+
9
+ from bec_widgets.widgets.bec_queue.bec_queue_plugin import BECQueuePlugin
10
+
11
+ QPyDesignerCustomWidgetCollection.addCustomWidget(BECQueuePlugin())
12
+
13
+
14
+ if __name__ == "__main__": # pragma: no cover
15
+ main()
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.74.1"
7
+ version = "0.75.0"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
@@ -0,0 +1,111 @@
1
+ import pytest
2
+ from bec_lib import messages
3
+
4
+ from bec_widgets.widgets.bec_queue.bec_queue import BECQueue
5
+
6
+ from .client_mocks import mocked_client
7
+
8
+
9
+ @pytest.fixture
10
+ def bec_queue_msg_full():
11
+ content = {
12
+ "primary": {
13
+ "info": [
14
+ {
15
+ "active_request_block": None,
16
+ "is_scan": [True],
17
+ "queue_id": "600163fc-5e56-4901-af25-14e9ee76817c",
18
+ "request_blocks": [
19
+ {
20
+ "RID": "89a76021-28c0-4297-828e-74ae40b941e5",
21
+ "content": {
22
+ "parameter": {
23
+ "args": {"samx": [-0.1, 0.1]},
24
+ "kwargs": {
25
+ "exp_time": 0.5,
26
+ "relative": True,
27
+ "steps": 20,
28
+ "system_config": {
29
+ "file_directory": None,
30
+ "file_suffix": None,
31
+ },
32
+ },
33
+ },
34
+ "queue": "primary",
35
+ "scan_type": "line_scan",
36
+ },
37
+ "is_scan": True,
38
+ "metadata": {
39
+ "RID": "89a76021-28c0-4297-828e-74ae40b941e5",
40
+ "file_directory": None,
41
+ "file_suffix": None,
42
+ "user_metadata": {"sample_name": "testA"},
43
+ },
44
+ "msg": messages.ScanQueueMessage(
45
+ metadata={
46
+ "file_suffix": None,
47
+ "file_directory": None,
48
+ "user_metadata": {"sample_name": "testA"},
49
+ "RID": "89a76021-28c0-4297-828e-74ae40b941e5",
50
+ },
51
+ scan_type="line_scan",
52
+ parameter={
53
+ "args": {"samx": [-0.1, 0.1]},
54
+ "kwargs": {
55
+ "steps": 20,
56
+ "exp_time": 0.5,
57
+ "relative": True,
58
+ "system_config": {
59
+ "file_suffix": None,
60
+ "file_directory": None,
61
+ },
62
+ },
63
+ },
64
+ queue="primary",
65
+ ),
66
+ "readout_priority": {
67
+ "async": [],
68
+ "baseline": [],
69
+ "monitored": ["samx"],
70
+ "on_request": [],
71
+ },
72
+ "report_instructions": [{"scan_progress": 20}],
73
+ "scan_id": "2d704cc3-c172-404c-866d-608ce09fce40",
74
+ "scan_motors": ["samx"],
75
+ "scan_number": 1289,
76
+ }
77
+ ],
78
+ "scan_id": ["2d704cc3-c172-404c-866d-608ce09fce40"],
79
+ "scan_number": [1289],
80
+ "status": "COMPLETED",
81
+ }
82
+ ],
83
+ "status": "RUNNING",
84
+ }
85
+ }
86
+ msg = messages.ScanQueueStatusMessage(metadata={}, queue=content)
87
+ return msg
88
+
89
+
90
+ @pytest.fixture
91
+ def bec_queue(qtbot, mocked_client):
92
+ widget = BECQueue(client=mocked_client)
93
+ qtbot.addWidget(widget)
94
+ qtbot.waitExposed(widget)
95
+ yield widget
96
+
97
+
98
+ def test_bec_queue(bec_queue, bec_queue_msg_full):
99
+ bec_queue.update_queue(bec_queue_msg_full.content, {})
100
+ assert bec_queue.rowCount() == 1
101
+ assert bec_queue.item(0, 0).text() == "1289"
102
+ assert bec_queue.item(0, 1).text() == "line_scan"
103
+ assert bec_queue.item(0, 2).text() == "COMPLETED"
104
+
105
+
106
+ def test_bec_queue_empty(bec_queue):
107
+ bec_queue.update_queue({}, {})
108
+ assert bec_queue.rowCount() == 1
109
+ assert bec_queue.item(0, 0).text() == ""
110
+ assert bec_queue.item(0, 1).text() == ""
111
+ assert bec_queue.item(0, 2).text() == ""
File without changes
File without changes
File without changes
File without changes