bec-widgets 2.8.1__tar.gz → 2.8.3__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 (406) hide show
  1. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/workflows/end2end-conda.yml +4 -2
  2. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/CHANGELOG.md +26 -0
  3. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/PKG-INFO +1 -1
  4. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/applications/launch_window.py +1 -1
  5. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/cli/client.py +1 -1
  6. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/cli/generate_cli.py +1 -1
  7. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/cli/rpc/rpc_widget_handler.py +3 -4
  8. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/bec_plugin_helper.py +29 -16
  9. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/plugin_utils.py +27 -26
  10. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/ui_loader.py +3 -6
  11. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/roi/image_roi.py +6 -1
  12. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/pyproject.toml +1 -1
  13. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.git_hooks/pre-commit +0 -0
  14. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  15. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/ISSUE_TEMPLATE/documentation_update.md +0 -0
  16. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  17. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/actions/bw_install/action.yml +0 -0
  18. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/pull_request_template.md +0 -0
  19. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/scripts/pr_issue_sync/pr_issue_sync.py +0 -0
  20. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/scripts/pr_issue_sync/requirements.txt +0 -0
  21. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/workflows/check_pr.yml +0 -0
  22. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/workflows/ci.yml +0 -0
  23. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/workflows/formatter.yml +0 -0
  24. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/workflows/generate-cli-check.yml +0 -0
  25. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/workflows/pytest-matrix.yml +0 -0
  26. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/workflows/pytest.yml +0 -0
  27. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/workflows/semantic_release.yml +0 -0
  28. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.github/workflows/sync-issues-pr.yml +0 -0
  29. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.gitignore +0 -0
  30. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.gitlab-ci.yml +0 -0
  31. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.pylintrc +0 -0
  32. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/.readthedocs.yaml +0 -0
  33. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/LICENSE +0 -0
  34. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/README.md +0 -0
  35. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/__init__.py +0 -0
  36. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/applications/__init__.py +0 -0
  37. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/applications/bw_launch.py +0 -0
  38. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
  39. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
  40. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/assets/app_icons/auto_update.png +0 -0
  41. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  42. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/assets/app_icons/ui_loader_tile.png +0 -0
  43. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/assets/app_icons/widget_launch_tile.png +0 -0
  44. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/cli/__init__.py +0 -0
  45. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/cli/client_utils.py +0 -0
  46. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/cli/rpc/__init__.py +0 -0
  47. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/cli/rpc/rpc_base.py +0 -0
  48. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/cli/rpc/rpc_register.py +0 -0
  49. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/cli/server.py +0 -0
  50. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/__init__.py +0 -0
  51. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/general_app/__init__.py +0 -0
  52. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/general_app/general_app.py +0 -0
  53. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/general_app/general_app.ui +0 -0
  54. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/general_app/web_links.py +0 -0
  55. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  56. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
  57. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  58. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  59. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  60. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  61. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  62. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  63. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  64. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/tests/__init__.py +0 -0
  65. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/tests/utils.py +0 -0
  66. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/__init__.py +0 -0
  67. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/bec_connector.py +0 -0
  68. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/bec_designer.py +0 -0
  69. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/bec_dispatcher.py +0 -0
  70. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/bec_signal_proxy.py +0 -0
  71. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/bec_table.py +0 -0
  72. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/bec_widget.py +0 -0
  73. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/collapsible_panel_manager.py +0 -0
  74. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/colors.py +0 -0
  75. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/compact_popup.py +0 -0
  76. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/container_utils.py +0 -0
  77. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/crosshair.py +0 -0
  78. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/entry_validator.py +0 -0
  79. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/error_popups.py +0 -0
  80. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/expandable_frame.py +0 -0
  81. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/filter_io.py +0 -0
  82. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/forms_from_types/__init__.py +0 -0
  83. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/forms_from_types/forms.py +0 -0
  84. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/forms_from_types/items.py +0 -0
  85. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/fps_counter.py +0 -0
  86. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  87. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/layout_manager.py +0 -0
  88. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/linear_region_selector.py +0 -0
  89. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/name_utils.py +0 -0
  90. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/ophyd_kind_util.py +0 -0
  91. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/palette_viewer.py +0 -0
  92. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/plot_indicator_items.py +0 -0
  93. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  94. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/plugin_templates/register.template +0 -0
  95. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/redis_message_waiter.py +0 -0
  96. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/reference_utils.py +0 -0
  97. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/round_frame.py +0 -0
  98. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/rpc_decorator.py +0 -0
  99. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/rpc_server.py +0 -0
  100. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/serialization.py +0 -0
  101. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/settings_dialog.py +0 -0
  102. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/side_panel.py +0 -0
  103. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/thread_checker.py +0 -0
  104. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/toolbar.py +0 -0
  105. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/validator_delegate.py +0 -0
  106. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/widget_io.py +0 -0
  107. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/widget_state_manager.py +0 -0
  108. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/utils/yaml_dialog.py +0 -0
  109. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/__init__.py +0 -0
  110. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/__init__.py +0 -0
  111. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/auto_update/__init__.py +0 -0
  112. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/auto_update/auto_updates.py +0 -0
  113. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
  114. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/dock/dock.py +0 -0
  115. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
  116. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
  117. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
  118. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
  119. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
  120. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
  121. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
  122. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/main_window/addons/__init__.py +0 -0
  123. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/main_window/addons/web_links.py +0 -0
  124. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
  125. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/__init__.py +0 -0
  126. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
  127. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
  128. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
  129. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
  130. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
  131. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
  132. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
  133. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
  134. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
  135. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
  136. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
  137. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
  138. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
  139. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
  140. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
  141. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
  142. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
  143. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
  144. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
  145. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
  146. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
  147. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
  148. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
  149. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
  150. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
  151. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
  152. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
  153. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
  154. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
  155. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
  156. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
  157. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
  158. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
  159. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
  160. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
  161. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
  162. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
  163. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
  164. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
  165. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
  166. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
  167. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
  168. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
  169. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
  170. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
  171. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
  172. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
  173. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
  174. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
  175. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
  176. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
  177. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
  178. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
  179. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
  180. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
  181. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +0 -0
  182. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
  183. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
  184. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
  185. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +0 -0
  186. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
  187. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
  188. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
  189. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
  190. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
  191. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
  192. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
  193. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
  194. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
  195. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
  196. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +0 -0
  197. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
  198. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
  199. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
  200. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
  201. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
  202. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
  203. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
  204. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
  205. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
  206. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
  207. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
  208. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/__init__.py +0 -0
  209. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
  210. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
  211. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
  212. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
  213. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
  214. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
  215. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
  216. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
  217. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
  218. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
  219. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
  220. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
  221. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/__init__.py +0 -0
  222. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/console/__init__.py +0 -0
  223. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/console/console.py +0 -0
  224. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/console/console.pyproject +0 -0
  225. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/console/console_plugin.py +0 -0
  226. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/console/register_console.py +0 -0
  227. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/dict_backed_table.py +0 -0
  228. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
  229. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
  230. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
  231. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
  232. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py +0 -0
  233. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +0 -0
  234. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject +0 -0
  235. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py +0 -0
  236. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
  237. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
  238. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
  239. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
  240. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
  241. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
  242. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
  243. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
  244. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
  245. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
  246. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/web_console/register_web_console.py +0 -0
  247. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/web_console/web_console.py +0 -0
  248. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/web_console/web_console.pyproject +0 -0
  249. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/web_console/web_console_plugin.py +0 -0
  250. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/website/__init__.py +0 -0
  251. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
  252. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/website/website.py +0 -0
  253. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
  254. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
  255. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/games/__init__.py +0 -0
  256. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/games/minesweeper.py +0 -0
  257. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
  258. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
  259. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
  260. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/__init__.py +0 -0
  261. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/__init__.py +0 -0
  262. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/image.py +0 -0
  263. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/image.pyproject +0 -0
  264. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/image_item.py +0 -0
  265. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/image_plugin.py +0 -0
  266. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/image_processor.py +0 -0
  267. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/image_roi_plot.py +0 -0
  268. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/register_image.py +0 -0
  269. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/setting_widgets/__init__.py +0 -0
  270. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py +0 -0
  271. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/toolbar_bundles/__init__.py +0 -0
  272. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/toolbar_bundles/image_selection.py +0 -0
  273. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/image/toolbar_bundles/processing.py +0 -0
  274. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
  275. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/motor_map/motor_map.py +0 -0
  276. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/motor_map/motor_map.pyproject +0 -0
  277. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/motor_map/motor_map_plugin.py +0 -0
  278. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/motor_map/register_motor_map.py +0 -0
  279. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/motor_map/settings/__init__.py +0 -0
  280. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py +0 -0
  281. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.ui +0 -0
  282. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/__init__.py +0 -0
  283. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/motor_selection.py +0 -0
  284. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
  285. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py +0 -0
  286. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.pyproject +0 -0
  287. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_plugin.py +0 -0
  288. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/multi_waveform/register_multi_waveform.py +0 -0
  289. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/multi_waveform/settings/__init__.py +0 -0
  290. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py +0 -0
  291. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/multi_waveform/settings/multi_waveform_controls.ui +0 -0
  292. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/__init__.py +0 -0
  293. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/monitor_selection.py +0 -0
  294. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/plot_base.py +0 -0
  295. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/roi/__init__.py +0 -0
  296. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/scatter_waveform/__init__.py +0 -0
  297. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/scatter_waveform/register_scatter_waveform.py +0 -0
  298. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py +0 -0
  299. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +0 -0
  300. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.pyproject +0 -0
  301. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform_plugin.py +0 -0
  302. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/scatter_waveform/settings/__init__.py +0 -0
  303. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py +0 -0
  304. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_horizontal.ui +0 -0
  305. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_vertical.ui +0 -0
  306. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/setting_menus/__init__.py +0 -0
  307. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/setting_menus/axis_settings.py +0 -0
  308. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/setting_menus/axis_settings_horizontal.ui +0 -0
  309. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/setting_menus/axis_settings_vertical.ui +0 -0
  310. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/toolbar_bundles/__init__.py +0 -0
  311. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/toolbar_bundles/mouse_interactions.py +0 -0
  312. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/toolbar_bundles/plot_export.py +0 -0
  313. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/toolbar_bundles/roi_bundle.py +0 -0
  314. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/toolbar_bundles/save_state.py +0 -0
  315. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
  316. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/curve.py +0 -0
  317. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/register_waveform.py +0 -0
  318. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/settings/__init__.py +0 -0
  319. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/settings/curve_settings/__init__.py +0 -0
  320. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_setting.py +0 -0
  321. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +0 -0
  322. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/utils/__init__.py +0 -0
  323. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/utils/roi_manager.py +0 -0
  324. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/waveform.py +0 -0
  325. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/waveform.pyproject +0 -0
  326. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/plots/waveform/waveform_plugin.py +0 -0
  327. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/__init__.py +0 -0
  328. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
  329. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
  330. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
  331. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
  332. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
  333. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
  334. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
  335. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
  336. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
  337. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  338. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  339. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/__init__.py +0 -0
  340. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
  341. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
  342. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
  343. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
  344. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
  345. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
  346. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
  347. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
  348. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
  349. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
  350. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
  351. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
  352. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
  353. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
  354. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
  355. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
  356. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
  357. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
  358. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
  359. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/__init__.py +0 -0
  360. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
  361. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
  362. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
  363. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
  364. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
  365. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
  366. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/spinbox/__init__.py +0 -0
  367. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/spinbox/bec_spin_box.pyproject +0 -0
  368. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/spinbox/bec_spin_box_plugin.py +0 -0
  369. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +0 -0
  370. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py +0 -0
  371. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
  372. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
  373. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
  374. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
  375. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
  376. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
  377. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
  378. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
  379. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
  380. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
  381. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
  382. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
  383. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
  384. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
  385. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
  386. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
  387. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/color_button_native/__init__.py +0 -0
  388. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.py +0 -0
  389. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.pyproject +0 -0
  390. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native_plugin.py +0 -0
  391. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/color_button_native/register_color_button_native.py +0 -0
  392. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
  393. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
  394. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
  395. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
  396. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
  397. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
  398. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
  399. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
  400. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
  401. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
  402. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
  403. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
  404. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
  405. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
  406. {bec_widgets-2.8.1 → bec_widgets-2.8.3}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -12,6 +12,7 @@ jobs:
12
12
  CHILD_PIPELINE_BRANCH: main # Set the branch you want for ophyd_devices
13
13
  BEC_CORE_BRANCH: main # Set the branch you want for bec
14
14
  OPHYD_DEVICES_BRANCH: main # Set the branch you want for ophyd_devices
15
+ PLUGIN_REPO_BRANCH: main # Set the branch you want for the plugin repo
15
16
  PROJECT_PATH: ${{ github.repository }}
16
17
  QTWEBENGINE_DISABLE_SANDBOX: 1
17
18
  QT_QPA_PLATFORM: "offscreen"
@@ -39,10 +40,11 @@ jobs:
39
40
  echo -e "\033[35;1m Using branch $OPHYD_DEVICES_BRANCH of OPHYD_DEVICES \033[0;m";
40
41
  git clone --branch $OPHYD_DEVICES_BRANCH https://github.com/bec-project/ophyd_devices.git
41
42
  export OHPYD_DEVICES_PATH=$PWD/ophyd_devices
43
+ echo -e "\033[35;1m Using branch $PLUGIN_REPO_BRANCH of bec_testing_plugin \033[0;m";
44
+ git clone --branch $PLUGIN_REPO_BRANCH https://github.com/bec-project/bec_testing_plugin.git
42
45
  cd ./bec
43
46
  conda create -q -n test-environment python=3.11
44
47
  source ./bin/install_bec_dev.sh -t
45
48
  cd ../
46
- pip install -e ./ophyd_devices
47
- pip install -e .[dev,pyside6]
49
+ pip install -e ./ophyd_devices -e .[dev,pyside6] -e ./bec_testing_plugin
48
50
  pytest -v --files-path ./ --start-servers --random-order ./tests/end-2-end
@@ -1,6 +1,32 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v2.8.3 (2025-05-30)
5
+
6
+ ### Bug Fixes
7
+
8
+ - Guard plugin repo import in e2e test
9
+ ([`bf172b8`](https://github.com/bec-project/bec_widgets/commit/bf172b8431ec207f39206d2a0446908f7186858a))
10
+
11
+ ### Refactoring
12
+
13
+ - Store modules with widget search
14
+ ([`b225a7c`](https://github.com/bec-project/bec_widgets/commit/b225a7cc90b55697211c28d9411b6f85c8077217))
15
+
16
+ ### Testing
17
+
18
+ - **e2e**: Add tests involving plugin repo
19
+ ([`05329ab`](https://github.com/bec-project/bec_widgets/commit/05329ab50fe10ffc3c19ef3eb408912bb9068de3))
20
+
21
+
22
+ ## v2.8.2 (2025-05-27)
23
+
24
+ ### Bug Fixes
25
+
26
+ - **image_roi**: Rois are invertible by default, fixes resizing bug when adding from ROI manager
27
+ ([`0bdd4e8`](https://github.com/bec-project/bec_widgets/commit/0bdd4e86a24a61b5365febcb2fcbde0532117053))
28
+
29
+
4
30
  ## v2.8.1 (2025-05-27)
5
31
 
6
32
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bec_widgets
3
- Version: 2.8.1
3
+ Version: 2.8.3
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
@@ -242,7 +242,7 @@ class LaunchWindow(BECMainWindow):
242
242
  )
243
243
 
244
244
  # plugin widgets
245
- self.available_widgets: dict[str, BECWidget] = get_all_plugin_widgets()
245
+ self.available_widgets: dict[str, type[BECWidget]] = get_all_plugin_widgets().as_dict()
246
246
  if self.available_widgets:
247
247
  plugin_repo_name = next(iter(self.available_widgets.values())).__module__.split(".")[0]
248
248
  plugin_repo_name = plugin_repo_name.removesuffix("_bec").upper()
@@ -63,7 +63,7 @@ _Widgets = {
63
63
 
64
64
 
65
65
  try:
66
- _plugin_widgets = get_all_plugin_widgets()
66
+ _plugin_widgets = get_all_plugin_widgets().as_dict()
67
67
  plugin_client = get_plugin_client_module()
68
68
  Widgets = _WidgetsEnumType("Widgets", {name: name for name in _plugin_widgets} | _Widgets)
69
69
 
@@ -111,7 +111,7 @@ _Widgets = {
111
111
  self.content += """
112
112
 
113
113
  try:
114
- _plugin_widgets = get_all_plugin_widgets()
114
+ _plugin_widgets = get_all_plugin_widgets().as_dict()
115
115
  plugin_client = get_plugin_client_module()
116
116
  Widgets = _WidgetsEnumType("Widgets", {name: name for name in _plugin_widgets} | _Widgets)
117
117
 
@@ -31,10 +31,9 @@ class RPCWidgetHandler:
31
31
  Returns:
32
32
  None
33
33
  """
34
- clss = get_custom_classes("bec_widgets")
35
- self._widget_classes = get_all_plugin_widgets() | {
36
- cls.__name__: cls for cls in clss.widgets if cls.__name__ not in IGNORE_WIDGETS
37
- }
34
+ self._widget_classes = (
35
+ get_custom_classes("bec_widgets") + get_all_plugin_widgets()
36
+ ).as_dict(IGNORE_WIDGETS)
38
37
 
39
38
  def create_widget(self, widget_type, **kwargs) -> BECWidget:
40
39
  """
@@ -3,12 +3,17 @@ from __future__ import annotations
3
3
  import importlib.metadata
4
4
  import inspect
5
5
  import pkgutil
6
+ import traceback
6
7
  from importlib import util as importlib_util
7
8
  from importlib.machinery import FileFinder, ModuleSpec, SourceFileLoader
8
9
  from types import ModuleType
9
10
  from typing import Generator
10
11
 
11
- from bec_widgets.utils.bec_widget import BECWidget
12
+ from bec_lib.logger import bec_logger
13
+
14
+ from bec_widgets.utils.plugin_utils import BECClassContainer, BECClassInfo
15
+
16
+ logger = bec_logger.logger
12
17
 
13
18
 
14
19
  def _submodule_specs(module: ModuleType) -> tuple[ModuleSpec | None, ...]:
@@ -30,7 +35,12 @@ def _loaded_submodules_from_specs(
30
35
  assert isinstance(
31
36
  submodule.__loader__, SourceFileLoader
32
37
  ), "Module found from FileFinder should have SourceFileLoader!"
33
- submodule.__loader__.exec_module(submodule)
38
+ try:
39
+ submodule.__loader__.exec_module(submodule)
40
+ except Exception as e:
41
+ logger.error(
42
+ f"Error loading plugin {submodule}: \n{''.join(traceback.format_exception(e))}"
43
+ )
34
44
  yield submodule
35
45
 
36
46
 
@@ -41,27 +51,29 @@ def _submodule_by_name(module: ModuleType, name: str):
41
51
  return None
42
52
 
43
53
 
44
- def _get_widgets_from_module(module: ModuleType) -> dict[str, "type[BECWidget]"]:
45
- """Find any BECWidget subclasses in the given module and return them with their names."""
54
+ def _get_widgets_from_module(module: ModuleType) -> BECClassContainer:
55
+ """Find any BECWidget subclasses in the given module and return them with their info."""
46
56
  from bec_widgets.utils.bec_widget import BECWidget # avoid circular import
47
57
 
48
- return dict(
49
- inspect.getmembers(
50
- module,
51
- predicate=lambda item: inspect.isclass(item)
52
- and issubclass(item, BECWidget)
53
- and item is not BECWidget,
54
- )
58
+ classes = inspect.getmembers(
59
+ module,
60
+ predicate=lambda item: inspect.isclass(item)
61
+ and issubclass(item, BECWidget)
62
+ and item is not BECWidget,
63
+ )
64
+ return BECClassContainer(
65
+ BECClassInfo(name=k, module=module.__name__, file=module.__loader__.get_filename(), obj=v)
66
+ for k, v in classes
55
67
  )
56
68
 
57
69
 
58
- def _all_widgets_from_all_submods(module):
70
+ def _all_widgets_from_all_submods(module) -> BECClassContainer:
59
71
  """Recursively load submodules, find any BECWidgets, and return them all as a flat dict."""
60
72
  widgets = _get_widgets_from_module(module)
61
73
  if not hasattr(module, "__path__"):
62
74
  return widgets
63
75
  for submod in _loaded_submodules_from_specs(_submodule_specs(module)):
64
- widgets.update(_all_widgets_from_all_submods(submod))
76
+ widgets += _all_widgets_from_all_submods(submod)
65
77
  return widgets
66
78
 
67
79
 
@@ -75,15 +87,16 @@ def get_plugin_client_module() -> ModuleType | None:
75
87
  return _submodule_by_name(plugin, "client") if (plugin := user_widget_plugin()) else None
76
88
 
77
89
 
78
- def get_all_plugin_widgets() -> dict[str, "type[BECWidget]"]:
90
+ def get_all_plugin_widgets() -> BECClassContainer:
79
91
  """If there is a plugin repository installed, load all widgets from it."""
80
92
  if plugin := user_widget_plugin():
81
93
  return _all_widgets_from_all_submods(plugin)
82
94
  else:
83
- return {}
95
+ return BECClassContainer()
84
96
 
85
97
 
86
98
  if __name__ == "__main__": # pragma: no cover
87
- # print(get_all_plugin_widgets())
99
+
88
100
  client = get_plugin_client_module()
101
+ print(get_all_plugin_widgets())
89
102
  ...
@@ -4,7 +4,7 @@ import importlib
4
4
  import inspect
5
5
  import os
6
6
  from dataclasses import dataclass
7
- from typing import TYPE_CHECKING
7
+ from typing import TYPE_CHECKING, Iterable
8
8
 
9
9
  from bec_lib.plugin_helper import _get_available_plugins
10
10
  from qtpy.QtWidgets import QGraphicsWidget, QWidget
@@ -90,15 +90,15 @@ class BECClassInfo:
90
90
  name: str
91
91
  module: str
92
92
  file: str
93
- obj: type
93
+ obj: type[BECWidget]
94
94
  is_connector: bool = False
95
95
  is_widget: bool = False
96
96
  is_plugin: bool = False
97
97
 
98
98
 
99
99
  class BECClassContainer:
100
- def __init__(self):
101
- self._collection: list[BECClassInfo] = []
100
+ def __init__(self, initial: Iterable[BECClassInfo] = []):
101
+ self._collection: list[BECClassInfo] = list(initial)
102
102
 
103
103
  def __repr__(self):
104
104
  return str(list(cl.name for cl in self.collection))
@@ -106,6 +106,16 @@ class BECClassContainer:
106
106
  def __iter__(self):
107
107
  return self._collection.__iter__()
108
108
 
109
+ def __add__(self, other: BECClassContainer):
110
+ return BECClassContainer((*self, *(c for c in other if c.name not in self.names)))
111
+
112
+ def as_dict(self, ignores: list[str] = []) -> dict[str, type[BECWidget]]:
113
+ """get a dict of {name: Type} for all the entries in the collection.
114
+
115
+ Args:
116
+ ignores(list[str]): a list of class names to exclude from the dictionary."""
117
+ return {c.name: c.obj for c in self if c.name not in ignores}
118
+
109
119
  def add_class(self, class_info: BECClassInfo):
110
120
  """
111
121
  Add a class to the collection.
@@ -115,53 +125,44 @@ class BECClassContainer:
115
125
  """
116
126
  self.collection.append(class_info)
117
127
 
128
+ @property
129
+ def names(self):
130
+ """Return a list of class names"""
131
+ return [c.name for c in self]
132
+
118
133
  @property
119
134
  def collection(self):
120
- """
121
- Get the collection of classes.
122
- """
135
+ """Get the collection of classes."""
123
136
  return self._collection
124
137
 
125
138
  @property
126
139
  def connector_classes(self):
127
- """
128
- Get all connector classes.
129
- """
140
+ """Get all connector classes."""
130
141
  return [info.obj for info in self.collection if info.is_connector]
131
142
 
132
143
  @property
133
144
  def top_level_classes(self):
134
- """
135
- Get all top-level classes.
136
- """
145
+ """Get all top-level classes."""
137
146
  return [info.obj for info in self.collection if info.is_plugin]
138
147
 
139
148
  @property
140
149
  def plugins(self):
141
- """
142
- Get all plugins. These are all classes that are on the top level and are widgets.
143
- """
150
+ """Get all plugins. These are all classes that are on the top level and are widgets."""
144
151
  return [info.obj for info in self.collection if info.is_widget and info.is_plugin]
145
152
 
146
153
  @property
147
154
  def widgets(self):
148
- """
149
- Get all widgets. These are all classes inheriting from BECWidget.
150
- """
155
+ """Get all widgets. These are all classes inheriting from BECWidget."""
151
156
  return [info.obj for info in self.collection if info.is_widget]
152
157
 
153
158
  @property
154
159
  def rpc_top_level_classes(self):
155
- """
156
- Get all top-level classes that are RPC-enabled. These are all classes that users can choose from.
157
- """
160
+ """Get all top-level classes that are RPC-enabled. These are all classes that users can choose from."""
158
161
  return [info.obj for info in self.collection if info.is_plugin and info.is_connector]
159
162
 
160
163
  @property
161
164
  def classes(self):
162
- """
163
- Get all classes.
164
- """
165
+ """Get all classes."""
165
166
  return [info.obj for info in self.collection]
166
167
 
167
168
 
@@ -197,7 +198,7 @@ def get_custom_classes(repo_name: str) -> BECClassContainer:
197
198
  if not hasattr(obj, "__module__") or obj.__module__ != module.__name__:
198
199
  continue
199
200
  if isinstance(obj, type):
200
- class_info = BECClassInfo(name=name, module=module_name, file=path, obj=obj)
201
+ class_info = BECClassInfo(name=name, module=module.__name__, file=path, obj=obj)
201
202
  if issubclass(obj, BECConnector):
202
203
  class_info.is_connector = True
203
204
  if issubclass(obj, BECWidget):
@@ -31,12 +31,9 @@ class UILoader:
31
31
  def __init__(self, parent=None):
32
32
  self.parent = parent
33
33
 
34
- widgets = get_custom_classes("bec_widgets").classes
35
-
36
- self.custom_widgets = {widget.__name__: widget for widget in widgets}
37
-
38
- plugin_widgets = get_all_plugin_widgets()
39
- self.custom_widgets.update(plugin_widgets)
34
+ self.custom_widgets = (
35
+ get_custom_classes("bec_widgets") + get_all_plugin_widgets()
36
+ ).as_dict()
40
37
 
41
38
  if PYSIDE6:
42
39
  self.loader = self.load_ui_pyside6
@@ -150,7 +150,12 @@ class BaseROI(BECConnector):
150
150
  self.parent_plot_item = parent_image.plot_item
151
151
  object_name = label.replace("-", "_").replace(" ", "_") if label else None
152
152
  super().__init__(
153
- object_name=object_name, config=config, gui_id=gui_id, removable=True, **pg_kwargs
153
+ object_name=object_name,
154
+ config=config,
155
+ gui_id=gui_id,
156
+ removable=True,
157
+ invertible=True,
158
+ **pg_kwargs,
154
159
  )
155
160
 
156
161
  self._label = label or "ROI"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "2.8.1"
7
+ version = "2.8.3"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
File without changes
File without changes
File without changes
File without changes
File without changes