bec-widgets 2.5.3__tar.gz → 2.6.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 (408) hide show
  1. bec_widgets-2.6.0/.github/ISSUE_TEMPLATE/bug_report.yml +41 -0
  2. bec_widgets-2.5.3/.gitlab/issue_templates/documentation_update_template.md → bec_widgets-2.6.0/.github/ISSUE_TEMPLATE/documentation_update.md +10 -0
  3. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.github/ISSUE_TEMPLATE/feature_request.md +3 -2
  4. bec_widgets-2.5.3/.gitlab/merge_request_templates/default.md → bec_widgets-2.6.0/.github/pull_request_template.md +8 -3
  5. bec_widgets-2.6.0/.github/scripts/pr_issue_sync/pr_issue_sync.py +342 -0
  6. bec_widgets-2.6.0/.github/scripts/pr_issue_sync/requirements.txt +2 -0
  7. bec_widgets-2.6.0/.github/workflows/sync-issues-pr.yml +40 -0
  8. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/CHANGELOG.md +39 -0
  9. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/PKG-INFO +1 -1
  10. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/cli/client.py +31 -1
  11. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +1 -1
  12. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/dock/dock_area.py +9 -4
  13. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/image/image.py +72 -8
  14. bec_widgets-2.6.0/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py +375 -0
  15. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/roi/image_roi.py +36 -14
  16. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/waveform/waveform.py +2 -0
  17. bec_widgets-2.6.0/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
  18. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/pyproject.toml +1 -1
  19. bec_widgets-2.5.3/.github/ISSUE_TEMPLATE/bug_report.md +0 -26
  20. bec_widgets-2.5.3/.gitlab/issue_templates/bug_report_template.md +0 -17
  21. bec_widgets-2.5.3/.gitlab/issue_templates/feature_request_template.md +0 -40
  22. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.git_hooks/pre-commit +0 -0
  23. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.github/actions/bw_install/action.yml +0 -0
  24. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.github/workflows/check_pr.yml +0 -0
  25. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.github/workflows/ci.yml +0 -0
  26. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.github/workflows/end2end-conda.yml +0 -0
  27. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.github/workflows/formatter.yml +0 -0
  28. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.github/workflows/generate-cli-check.yml +0 -0
  29. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.github/workflows/pytest-matrix.yml +0 -0
  30. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.github/workflows/pytest.yml +0 -0
  31. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.github/workflows/semantic_release.yml +0 -0
  32. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.gitignore +0 -0
  33. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.gitlab-ci.yml +0 -0
  34. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.pylintrc +0 -0
  35. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/.readthedocs.yaml +0 -0
  36. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/LICENSE +0 -0
  37. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/README.md +0 -0
  38. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/__init__.py +0 -0
  39. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/applications/__init__.py +0 -0
  40. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/applications/bw_launch.py +0 -0
  41. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/applications/launch_window.py +0 -0
  42. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
  43. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
  44. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/assets/app_icons/auto_update.png +0 -0
  45. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
  46. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/assets/app_icons/ui_loader_tile.png +0 -0
  47. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/assets/app_icons/widget_launch_tile.png +0 -0
  48. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/cli/__init__.py +0 -0
  49. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/cli/client_utils.py +0 -0
  50. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/cli/generate_cli.py +0 -0
  51. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/cli/rpc/__init__.py +0 -0
  52. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/cli/rpc/rpc_base.py +0 -0
  53. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/cli/rpc/rpc_register.py +0 -0
  54. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
  55. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/cli/server.py +0 -0
  56. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/__init__.py +0 -0
  57. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/general_app/__init__.py +0 -0
  58. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/general_app/general_app.py +0 -0
  59. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
  60. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/general_app/web_links.py +0 -0
  61. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
  62. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
  63. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
  64. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
  65. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
  66. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
  67. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
  68. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
  69. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/tests/__init__.py +0 -0
  70. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/tests/utils.py +0 -0
  71. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/__init__.py +0 -0
  72. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/bec_connector.py +0 -0
  73. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/bec_designer.py +0 -0
  74. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
  75. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/bec_plugin_helper.py +0 -0
  76. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
  77. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/bec_table.py +0 -0
  78. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/bec_widget.py +0 -0
  79. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/collapsible_panel_manager.py +0 -0
  80. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/colors.py +0 -0
  81. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/compact_popup.py +0 -0
  82. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/container_utils.py +0 -0
  83. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/crosshair.py +0 -0
  84. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/entry_validator.py +0 -0
  85. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/error_popups.py +0 -0
  86. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/expandable_frame.py +0 -0
  87. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/filter_io.py +0 -0
  88. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/forms_from_types/__init__.py +0 -0
  89. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/forms_from_types/forms.py +0 -0
  90. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/forms_from_types/items.py +0 -0
  91. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/fps_counter.py +0 -0
  92. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
  93. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/layout_manager.py +0 -0
  94. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/linear_region_selector.py +0 -0
  95. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/name_utils.py +0 -0
  96. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/ophyd_kind_util.py +0 -0
  97. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/palette_viewer.py +0 -0
  98. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
  99. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
  100. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
  101. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/plugin_utils.py +0 -0
  102. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/redis_message_waiter.py +0 -0
  103. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/reference_utils.py +0 -0
  104. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/round_frame.py +0 -0
  105. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/rpc_decorator.py +0 -0
  106. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/rpc_server.py +0 -0
  107. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/serialization.py +0 -0
  108. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/settings_dialog.py +0 -0
  109. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/side_panel.py +0 -0
  110. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/thread_checker.py +0 -0
  111. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/toolbar.py +0 -0
  112. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/ui_loader.py +0 -0
  113. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/validator_delegate.py +0 -0
  114. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/widget_io.py +0 -0
  115. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/widget_state_manager.py +0 -0
  116. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/utils/yaml_dialog.py +0 -0
  117. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/__init__.py +0 -0
  118. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/__init__.py +0 -0
  119. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/auto_update/__init__.py +0 -0
  120. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/auto_update/auto_updates.py +0 -0
  121. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
  122. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/dock/dock.py +0 -0
  123. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
  124. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
  125. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
  126. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
  127. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
  128. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
  129. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/main_window/addons/__init__.py +0 -0
  130. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/main_window/addons/web_links.py +0 -0
  131. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
  132. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/__init__.py +0 -0
  133. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
  134. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
  135. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
  136. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
  137. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
  138. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
  139. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
  140. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
  141. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
  142. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
  143. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
  144. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
  145. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
  146. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
  147. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
  148. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
  149. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
  150. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
  151. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
  152. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
  153. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
  154. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
  155. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
  156. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
  157. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
  158. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
  159. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
  160. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
  161. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
  162. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
  163. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
  164. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
  165. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
  166. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
  167. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
  168. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
  169. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
  170. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
  171. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
  172. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
  173. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
  174. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
  175. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
  176. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
  177. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
  178. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
  179. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
  180. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
  181. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
  182. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
  183. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
  184. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
  185. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
  186. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
  187. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
  188. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +0 -0
  189. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
  190. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
  191. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
  192. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +0 -0
  193. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
  194. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
  195. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
  196. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
  197. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
  198. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
  199. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
  200. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
  201. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
  202. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
  203. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +0 -0
  204. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
  205. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
  206. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
  207. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
  208. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
  209. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
  210. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
  211. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
  212. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
  213. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
  214. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
  215. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/__init__.py +0 -0
  216. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
  217. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
  218. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
  219. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
  220. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
  221. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
  222. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
  223. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
  224. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
  225. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
  226. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
  227. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
  228. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/__init__.py +0 -0
  229. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/console/__init__.py +0 -0
  230. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/console/console.py +0 -0
  231. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/console/console.pyproject +0 -0
  232. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/console/console_plugin.py +0 -0
  233. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/console/register_console.py +0 -0
  234. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/dict_backed_table.py +0 -0
  235. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
  236. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
  237. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
  238. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
  239. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py +0 -0
  240. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +0 -0
  241. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject +0 -0
  242. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py +0 -0
  243. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
  244. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
  245. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
  246. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
  247. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
  248. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
  249. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
  250. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
  251. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
  252. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
  253. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/web_console/register_web_console.py +0 -0
  254. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/web_console/web_console.py +0 -0
  255. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/web_console/web_console.pyproject +0 -0
  256. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/web_console/web_console_plugin.py +0 -0
  257. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/website/__init__.py +0 -0
  258. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
  259. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/website/website.py +0 -0
  260. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
  261. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
  262. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/games/__init__.py +0 -0
  263. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/games/minesweeper.py +0 -0
  264. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
  265. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
  266. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
  267. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/__init__.py +0 -0
  268. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/image/__init__.py +0 -0
  269. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/image/image.pyproject +0 -0
  270. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/image/image_item.py +0 -0
  271. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/image/image_plugin.py +0 -0
  272. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/image/image_processor.py +0 -0
  273. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/image/register_image.py +0 -0
  274. {bec_widgets-2.5.3/bec_widgets/widgets/plots/image/toolbar_bundles → bec_widgets-2.6.0/bec_widgets/widgets/plots/image/setting_widgets}/__init__.py +0 -0
  275. {bec_widgets-2.5.3/bec_widgets/widgets/plots/motor_map → bec_widgets-2.6.0/bec_widgets/widgets/plots/image/toolbar_bundles}/__init__.py +0 -0
  276. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/image/toolbar_bundles/image_selection.py +0 -0
  277. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/image/toolbar_bundles/processing.py +0 -0
  278. {bec_widgets-2.5.3/bec_widgets/widgets/plots/motor_map/settings → bec_widgets-2.6.0/bec_widgets/widgets/plots/motor_map}/__init__.py +0 -0
  279. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/motor_map/motor_map.py +0 -0
  280. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/motor_map/motor_map.pyproject +0 -0
  281. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/motor_map/motor_map_plugin.py +0 -0
  282. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/motor_map/register_motor_map.py +0 -0
  283. {bec_widgets-2.5.3/bec_widgets/widgets/plots/motor_map/toolbar_bundles → bec_widgets-2.6.0/bec_widgets/widgets/plots/motor_map/settings}/__init__.py +0 -0
  284. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py +0 -0
  285. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.ui +0 -0
  286. {bec_widgets-2.5.3/bec_widgets/widgets/plots/multi_waveform → bec_widgets-2.6.0/bec_widgets/widgets/plots/motor_map/toolbar_bundles}/__init__.py +0 -0
  287. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/motor_selection.py +0 -0
  288. {bec_widgets-2.5.3/bec_widgets/widgets/plots/multi_waveform/settings → bec_widgets-2.6.0/bec_widgets/widgets/plots/multi_waveform}/__init__.py +0 -0
  289. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py +0 -0
  290. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.pyproject +0 -0
  291. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_plugin.py +0 -0
  292. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/multi_waveform/register_multi_waveform.py +0 -0
  293. {bec_widgets-2.5.3/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles → bec_widgets-2.6.0/bec_widgets/widgets/plots/multi_waveform/settings}/__init__.py +0 -0
  294. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py +0 -0
  295. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/multi_waveform/settings/multi_waveform_controls.ui +0 -0
  296. {bec_widgets-2.5.3/bec_widgets/widgets/plots/roi → bec_widgets-2.6.0/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles}/__init__.py +0 -0
  297. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/monitor_selection.py +0 -0
  298. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/plot_base.py +0 -0
  299. {bec_widgets-2.5.3/bec_widgets/widgets/plots/scatter_waveform → bec_widgets-2.6.0/bec_widgets/widgets/plots/roi}/__init__.py +0 -0
  300. {bec_widgets-2.5.3/bec_widgets/widgets/plots/scatter_waveform/settings → bec_widgets-2.6.0/bec_widgets/widgets/plots/scatter_waveform}/__init__.py +0 -0
  301. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/scatter_waveform/register_scatter_waveform.py +0 -0
  302. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py +0 -0
  303. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +0 -0
  304. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.pyproject +0 -0
  305. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform_plugin.py +0 -0
  306. {bec_widgets-2.5.3/bec_widgets/widgets/plots/setting_menus → bec_widgets-2.6.0/bec_widgets/widgets/plots/scatter_waveform/settings}/__init__.py +0 -0
  307. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py +0 -0
  308. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_horizontal.ui +0 -0
  309. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_vertical.ui +0 -0
  310. {bec_widgets-2.5.3/bec_widgets/widgets/plots/toolbar_bundles → bec_widgets-2.6.0/bec_widgets/widgets/plots/setting_menus}/__init__.py +0 -0
  311. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/setting_menus/axis_settings.py +0 -0
  312. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_horizontal.ui +0 -0
  313. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_vertical.ui +0 -0
  314. {bec_widgets-2.5.3/bec_widgets/widgets/plots/waveform → bec_widgets-2.6.0/bec_widgets/widgets/plots/toolbar_bundles}/__init__.py +0 -0
  315. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/toolbar_bundles/mouse_interactions.py +0 -0
  316. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/toolbar_bundles/plot_export.py +0 -0
  317. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/toolbar_bundles/roi_bundle.py +0 -0
  318. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/toolbar_bundles/save_state.py +0 -0
  319. {bec_widgets-2.5.3/bec_widgets/widgets/plots/waveform/settings → bec_widgets-2.6.0/bec_widgets/widgets/plots/waveform}/__init__.py +0 -0
  320. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/waveform/curve.py +0 -0
  321. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/waveform/register_waveform.py +0 -0
  322. {bec_widgets-2.5.3/bec_widgets/widgets/plots/waveform/settings/curve_settings → bec_widgets-2.6.0/bec_widgets/widgets/plots/waveform/settings}/__init__.py +0 -0
  323. {bec_widgets-2.5.3/bec_widgets/widgets/plots/waveform/utils → bec_widgets-2.6.0/bec_widgets/widgets/plots/waveform/settings/curve_settings}/__init__.py +0 -0
  324. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_setting.py +0 -0
  325. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +0 -0
  326. {bec_widgets-2.5.3/bec_widgets/widgets/progress → bec_widgets-2.6.0/bec_widgets/widgets/plots/waveform/utils}/__init__.py +0 -0
  327. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/waveform/utils/roi_manager.py +0 -0
  328. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/waveform/waveform.pyproject +0 -0
  329. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/plots/waveform/waveform_plugin.py +0 -0
  330. {bec_widgets-2.5.3/bec_widgets/widgets/progress/bec_progressbar → bec_widgets-2.6.0/bec_widgets/widgets/progress}/__init__.py +0 -0
  331. {bec_widgets-2.5.3/bec_widgets/widgets/services → bec_widgets-2.6.0/bec_widgets/widgets/progress/bec_progressbar}/__init__.py +0 -0
  332. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
  333. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
  334. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
  335. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
  336. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
  337. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
  338. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
  339. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
  340. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
  341. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
  342. {bec_widgets-2.5.3/bec_widgets/widgets/services/bec_queue → bec_widgets-2.6.0/bec_widgets/widgets/services}/__init__.py +0 -0
  343. {bec_widgets-2.5.3/bec_widgets/widgets/services/bec_status_box → bec_widgets-2.6.0/bec_widgets/widgets/services/bec_queue}/__init__.py +0 -0
  344. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
  345. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
  346. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
  347. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
  348. {bec_widgets-2.5.3/bec_widgets/widgets/services/device_browser → bec_widgets-2.6.0/bec_widgets/widgets/services/bec_status_box}/__init__.py +0 -0
  349. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
  350. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
  351. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
  352. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
  353. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
  354. {bec_widgets-2.5.3/bec_widgets/widgets/utility → bec_widgets-2.6.0/bec_widgets/widgets/services/device_browser}/__init__.py +0 -0
  355. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
  356. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
  357. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
  358. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
  359. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
  360. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
  361. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
  362. {bec_widgets-2.5.3/bec_widgets/widgets/utility/spinbox → bec_widgets-2.6.0/bec_widgets/widgets/utility}/__init__.py +0 -0
  363. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
  364. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
  365. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
  366. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
  367. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
  368. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
  369. {bec_widgets-2.5.3/bec_widgets/widgets/utility/spinner → bec_widgets-2.6.0/bec_widgets/widgets/utility/spinbox}/__init__.py +0 -0
  370. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box.pyproject +0 -0
  371. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box_plugin.py +0 -0
  372. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +0 -0
  373. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py +0 -0
  374. {bec_widgets-2.5.3/bec_widgets/widgets/utility/toggle → bec_widgets-2.6.0/bec_widgets/widgets/utility/spinner}/__init__.py +0 -0
  375. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
  376. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
  377. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
  378. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
  379. {bec_widgets-2.5.3/bec_widgets/widgets/utility/visual → bec_widgets-2.6.0/bec_widgets/widgets/utility/toggle}/__init__.py +0 -0
  380. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
  381. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
  382. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
  383. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
  384. {bec_widgets-2.5.3/bec_widgets/widgets/utility/visual/color_button → bec_widgets-2.6.0/bec_widgets/widgets/utility/visual}/__init__.py +0 -0
  385. {bec_widgets-2.5.3/bec_widgets/widgets/utility/visual/color_button_native → bec_widgets-2.6.0/bec_widgets/widgets/utility/visual/color_button}/__init__.py +0 -0
  386. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
  387. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
  388. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
  389. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
  390. {bec_widgets-2.5.3/bec_widgets/widgets/utility/visual/colormap_selector → bec_widgets-2.6.0/bec_widgets/widgets/utility/visual/color_button_native}/__init__.py +0 -0
  391. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.py +0 -0
  392. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.pyproject +0 -0
  393. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native_plugin.py +0 -0
  394. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/color_button_native/register_color_button_native.py +0 -0
  395. {bec_widgets-2.5.3/bec_widgets/widgets/utility/visual/colormap_widget → bec_widgets-2.6.0/bec_widgets/widgets/utility/visual/colormap_selector}/__init__.py +0 -0
  396. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
  397. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
  398. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
  399. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
  400. {bec_widgets-2.5.3/bec_widgets/widgets/utility/visual/dark_mode_button → bec_widgets-2.6.0/bec_widgets/widgets/utility/visual/colormap_widget}/__init__.py +0 -0
  401. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
  402. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
  403. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
  404. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
  405. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
  406. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
  407. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
  408. {bec_widgets-2.5.3 → bec_widgets-2.6.0}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -0,0 +1,41 @@
1
+ name: Bug report
2
+ description: File a bug report.
3
+ title: "[BUG]: "
4
+ labels: ["bug"]
5
+
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Bug report:
11
+ - type: textarea
12
+ id: description
13
+ attributes:
14
+ label: Provide a brief description of the bug.
15
+ - type: textarea
16
+ id: expected
17
+ attributes:
18
+ label: Describe what you expected to happen and what actually happened.
19
+ - type: textarea
20
+ id: reproduction
21
+ attributes:
22
+ label: Outline the steps that lead to the bug's occurrence. Be specific and provide a clear sequence of actions.
23
+ - type: input
24
+ id: version
25
+ attributes:
26
+ label: bec_widgets version
27
+ description: which version of BEC widgets was running?
28
+ - type: input
29
+ id: bec-version
30
+ attributes:
31
+ label: bec core version
32
+ description: which version of BEC core was running?
33
+ - type: textarea
34
+ id: extra
35
+ attributes:
36
+ label: Any extra info / data? e.g. log output...
37
+ - type: input
38
+ id: issues
39
+ attributes:
40
+ label: Related issues
41
+ description: please tag any related issues
@@ -1,3 +1,13 @@
1
+ ---
2
+ name: Documentation update request
3
+ about: Suggest an update to the docs
4
+ title: '[DOCS]: '
5
+ type: documentation
6
+ label: documentation
7
+ assignees: ''
8
+
9
+ ---
10
+
1
11
  ## Documentation Section
2
12
 
3
13
  [Specify the section or page of the documentation that needs updating]
@@ -1,8 +1,9 @@
1
1
  ---
2
2
  name: Feature request
3
3
  about: Suggest an idea for this project
4
- title: ''
5
- labels: ''
4
+ title: '[FEAT]: '
5
+ type: feature
6
+ label: feature
6
7
  assignees: ''
7
8
 
8
9
  ---
@@ -1,19 +1,24 @@
1
1
  ## Description
2
2
 
3
- [Provide a brief description of the changes introduced by this merge request.]
3
+ [Provide a brief description of the changes introduced by this pull request.]
4
4
 
5
5
  ## Related Issues
6
6
 
7
- [Cite any related issues or feature requests that are addressed or resolved by this merge request. Use the gitlab syntax for linking issues, for example, `fixes #123` or `closes #123`.]
7
+ [Cite any related issues or feature requests that are addressed or resolved by this pull request. Link the associated issue, for example, with `fixes #123` or `closes #123`.]
8
8
 
9
9
  ## Type of Change
10
10
 
11
11
  - Change 1
12
12
  - Change 2
13
13
 
14
+ ## How to test
15
+
16
+ - Run unit tests
17
+ - Open [widget] in designer and play around with the properties
18
+
14
19
  ## Potential side effects
15
20
 
16
- [Describe any potential side effects or risks of merging this MR.]
21
+ [Describe any potential side effects or risks of merging this PR.]
17
22
 
18
23
  ## Screenshots / GIFs (if applicable)
19
24
 
@@ -0,0 +1,342 @@
1
+ import functools
2
+ import os
3
+ from typing import Literal
4
+
5
+ import requests
6
+ from github import Github
7
+ from pydantic import BaseModel
8
+
9
+
10
+ class GHConfig(BaseModel):
11
+ token: str
12
+ organization: str
13
+ repository: str
14
+ project_number: int
15
+ graphql_url: str
16
+ rest_url: str
17
+ headers: dict
18
+
19
+
20
+ class ProjectItemHandler:
21
+ """
22
+ A class to handle GitHub project items.
23
+ """
24
+
25
+ def __init__(self, gh_config: GHConfig):
26
+ self.gh_config = gh_config
27
+ self.gh = Github(gh_config.token)
28
+ self.repo = self.gh.get_repo(f"{gh_config.organization}/{gh_config.repository}")
29
+ self.project_node_id = self.get_project_node_id()
30
+
31
+ def set_issue_status(
32
+ self,
33
+ status: Literal[
34
+ "Selected for Development",
35
+ "Weekly Backlog",
36
+ "In Development",
37
+ "Ready For Review",
38
+ "On Hold",
39
+ "Done",
40
+ ],
41
+ issue_number: int | None = None,
42
+ issue_node_id: str | None = None,
43
+ ):
44
+ """
45
+ Set the status field of a GitHub issue in the project.
46
+
47
+ Args:
48
+ status (str): The status to set. Must be one of the predefined statuses.
49
+ issue_number (int, optional): The issue number. If not provided, issue_node_id must be provided.
50
+ issue_node_id (str, optional): The issue node ID. If not provided, issue_number must be provided.
51
+ """
52
+ if not issue_number and not issue_node_id:
53
+ raise ValueError("Either issue_number or issue_node_id must be provided.")
54
+ if issue_number and issue_node_id:
55
+ raise ValueError("Only one of issue_number or issue_node_id must be provided.")
56
+ if issue_number is not None:
57
+ issue = self.repo.get_issue(issue_number)
58
+ issue_id = self.get_issue_info(issue.node_id)[0]["id"]
59
+ else:
60
+ issue_id = issue_node_id
61
+ field_id, option_id = self.get_status_field_id(field_name=status)
62
+ self.set_field_option(issue_id, field_id, option_id)
63
+
64
+ def run_graphql(self, query: str, variables: dict) -> dict:
65
+ """
66
+ Execute a GraphQL query against the GitHub API.
67
+
68
+ Args:
69
+ query (str): The GraphQL query to execute.
70
+ variables (dict): The variables to pass to the query.
71
+
72
+ Returns:
73
+ dict: The response from the GitHub API.
74
+ """
75
+ response = requests.post(
76
+ self.gh_config.graphql_url,
77
+ json={"query": query, "variables": variables},
78
+ headers=self.gh_config.headers,
79
+ timeout=10,
80
+ )
81
+ if response.status_code != 200:
82
+ raise Exception(
83
+ f"Query failed with status code {response.status_code}: {response.text}"
84
+ )
85
+ return response.json()
86
+
87
+ def get_project_node_id(self):
88
+ """
89
+ Retrieve the project node ID from the GitHub API.
90
+ """
91
+ query = """
92
+ query($owner: String!, $number: Int!) {
93
+ organization(login: $owner) {
94
+ projectV2(number: $number) {
95
+ id
96
+ }
97
+ }
98
+ }
99
+ """
100
+ variables = {"owner": self.gh_config.organization, "number": self.gh_config.project_number}
101
+ resp = self.run_graphql(query, variables)
102
+ return resp["data"]["organization"]["projectV2"]["id"]
103
+
104
+ def get_issue_info(self, issue_node_id: str):
105
+ """
106
+ Get the project-related information for a given issue node ID.
107
+
108
+ Args:
109
+ issue_node_id (str): The node ID of the issue. Please note that this is not the issue number and typically starts with "I".
110
+
111
+ Returns:
112
+ list[dict]: A list of project items associated with the issue.
113
+ """
114
+ query = """
115
+ query($issueId: ID!) {
116
+ node(id: $issueId) {
117
+ ... on Issue {
118
+ projectItems(first: 10) {
119
+ nodes {
120
+ project {
121
+ id
122
+ title
123
+ }
124
+ id
125
+ fieldValues(first: 20) {
126
+ nodes {
127
+ ... on ProjectV2ItemFieldSingleSelectValue {
128
+ name
129
+ field {
130
+ ... on ProjectV2SingleSelectField {
131
+ name
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
142
+ """
143
+ variables = {"issueId": issue_node_id}
144
+ resp = self.run_graphql(query, variables)
145
+ return resp["data"]["node"]["projectItems"]["nodes"]
146
+
147
+ def get_status_field_id(
148
+ self,
149
+ field_name: Literal[
150
+ "Selected for Development",
151
+ "Weekly Backlog",
152
+ "In Development",
153
+ "Ready For Review",
154
+ "On Hold",
155
+ "Done",
156
+ ],
157
+ ) -> tuple[str, str]:
158
+ """
159
+ Get the status field ID and option ID for the given field name in the project.
160
+
161
+ Args:
162
+ field_name (str): The name of the field to retrieve.
163
+ Must be one of the predefined statuses.
164
+
165
+ Returns:
166
+ tuple[str, str]: A tuple containing the field ID and option ID.
167
+ """
168
+ field_id = None
169
+ option_id = None
170
+ project_fields = self.get_project_fields()
171
+ for field in project_fields:
172
+ if field["name"] != "Status":
173
+ continue
174
+ field_id = field["id"]
175
+ for option in field["options"]:
176
+ if option["name"] == field_name:
177
+ option_id = option["id"]
178
+ break
179
+ if not field_id or not option_id:
180
+ raise ValueError(f"Field '{field_name}' not found in project fields.")
181
+
182
+ return field_id, option_id
183
+
184
+ def set_field_option(self, item_id, field_id, option_id):
185
+ """
186
+ Set the option of a project item for a single-select field.
187
+
188
+ Args:
189
+ item_id (str): The ID of the project item to update.
190
+ field_id (str): The ID of the field to update.
191
+ option_id (str): The ID of the option to set.
192
+ """
193
+
194
+ mutation = """
195
+ mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $optionId: String!) {
196
+ updateProjectV2ItemFieldValue(
197
+ input: {
198
+ projectId: $projectId
199
+ itemId: $itemId
200
+ fieldId: $fieldId
201
+ value: { singleSelectOptionId: $optionId }
202
+ }
203
+ ) {
204
+ projectV2Item {
205
+ id
206
+ }
207
+ }
208
+ }
209
+ """
210
+ variables = {
211
+ "projectId": self.project_node_id,
212
+ "itemId": item_id,
213
+ "fieldId": field_id,
214
+ "optionId": option_id,
215
+ }
216
+ return self.run_graphql(mutation, variables)
217
+
218
+ @functools.lru_cache(maxsize=1)
219
+ def get_project_fields(self) -> list[dict]:
220
+ """
221
+ Get the available fields in the project.
222
+ This method caches the result to avoid multiple API calls.
223
+
224
+ Returns:
225
+ list[dict]: A list of fields in the project.
226
+ """
227
+
228
+ query = """
229
+ query($projectId: ID!) {
230
+ node(id: $projectId) {
231
+ ... on ProjectV2 {
232
+ fields(first: 50) {
233
+ nodes {
234
+ ... on ProjectV2SingleSelectField {
235
+ id
236
+ name
237
+ options {
238
+ id
239
+ name
240
+ }
241
+ }
242
+ }
243
+ }
244
+ }
245
+ }
246
+ }
247
+ """
248
+ variables = {"projectId": self.project_node_id}
249
+ resp = self.run_graphql(query, variables)
250
+ return list(filter(bool, resp["data"]["node"]["fields"]["nodes"]))
251
+
252
+ def get_pull_request_linked_issues(self, pr_number: int) -> list[dict]:
253
+ """
254
+ Get the linked issues of a pull request.
255
+
256
+ Args:
257
+ pr_number (int): The pull request number.
258
+
259
+ Returns:
260
+ list[dict]: A list of linked issues.
261
+ """
262
+ query = """
263
+ query($number: Int!, $owner: String!, $repo: String!) {
264
+ repository(owner: $owner, name: $repo) {
265
+ pullRequest(number: $number) {
266
+ id
267
+ closingIssuesReferences(first: 50) {
268
+ edges {
269
+ node {
270
+ id
271
+ body
272
+ number
273
+ title
274
+ }
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+ """
281
+ variables = {
282
+ "number": pr_number,
283
+ "owner": self.gh_config.organization,
284
+ "repo": self.gh_config.repository,
285
+ }
286
+ resp = self.run_graphql(query, variables)
287
+ edges = resp["data"]["repository"]["pullRequest"]["closingIssuesReferences"]["edges"]
288
+ return [edge["node"] for edge in edges if edge.get("node")]
289
+
290
+
291
+ def main():
292
+ # GitHub settings
293
+ token = os.getenv("TOKEN")
294
+ org = os.getenv("ORG")
295
+ repo = os.getenv("REPO")
296
+ project_number = os.getenv("PROJECT_NUMBER")
297
+ pr_number = os.getenv("PR_NUMBER")
298
+
299
+ if not token:
300
+ raise ValueError("GitHub token is not set. Please set the TOKEN environment variable.")
301
+ if not org:
302
+ raise ValueError("GitHub organization is not set. Please set the ORG environment variable.")
303
+ if not repo:
304
+ raise ValueError("GitHub repository is not set. Please set the REPO environment variable.")
305
+ if not project_number:
306
+ raise ValueError(
307
+ "GitHub project number is not set. Please set the PROJECT_NUMBER environment variable."
308
+ )
309
+ if not pr_number:
310
+ raise ValueError(
311
+ "Pull request number is not set. Please set the PR_NUMBER environment variable."
312
+ )
313
+
314
+ project_number = int(project_number)
315
+ pr_number = int(pr_number)
316
+
317
+ gh_config = GHConfig(
318
+ token=token,
319
+ organization=org,
320
+ repository=repo,
321
+ project_number=project_number,
322
+ graphql_url="https://api.github.com/graphql",
323
+ rest_url=f"https://api.github.com/repos/{org}/{repo}/issues",
324
+ headers={"Authorization": f"Bearer {token}", "Accept": "application/vnd.github+json"},
325
+ )
326
+ project_item_handler = ProjectItemHandler(gh_config=gh_config)
327
+
328
+ # Get PR info
329
+ pr = project_item_handler.repo.get_pull(pr_number)
330
+
331
+ # Get the linked issues of the pull request
332
+ linked_issues = project_item_handler.get_pull_request_linked_issues(pr_number=pr_number)
333
+ print(f"Linked issues: {linked_issues}")
334
+
335
+ target_status = "In Development" if pr.draft else "Ready For Review"
336
+ print(f"Target status: {target_status}")
337
+ for issue in linked_issues:
338
+ project_item_handler.set_issue_status(issue_number=issue["number"], status=target_status)
339
+
340
+
341
+ if __name__ == "__main__":
342
+ main()
@@ -0,0 +1,2 @@
1
+ pydantic
2
+ pygithub
@@ -0,0 +1,40 @@
1
+ name: Sync PR to Project
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, edited, ready_for_review, converted_to_draft, reopened, synchronize]
6
+
7
+ jobs:
8
+ sync-project:
9
+ runs-on: ubuntu-latest
10
+
11
+ permissions:
12
+ issues: write
13
+ pull-requests: read
14
+ contents: read
15
+
16
+ env:
17
+ PROJECT_NUMBER: 3 # BEC Project
18
+ ORG: 'bec-project'
19
+ REPO: 'bec_widgets'
20
+ TOKEN: ${{ secrets.ADD_ISSUE_TO_PROJECT }}
21
+ PR_NUMBER: ${{ github.event.pull_request.number }}
22
+
23
+ steps:
24
+ - name: Set up python environment
25
+ uses: actions/setup-python@v4
26
+ with:
27
+ python-version: 3.11
28
+
29
+ - name: Checkout repo
30
+ uses: actions/checkout@v4
31
+ with:
32
+ repository: ${{ github.repository }}
33
+ ref: ${{ github.event.pull_request.head.ref }}
34
+
35
+ - name: Install dependencies
36
+ run: |
37
+ pip install -r ./.github/scripts/pr_issue_sync/requirements.txt
38
+ - name: Sync PR to Project
39
+ run: |
40
+ python ./.github/scripts/pr_issue_sync/pr_issue_sync.py
@@ -1,6 +1,45 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v2.6.0 (2025-05-26)
5
+
6
+ ### Bug Fixes
7
+
8
+ - **image_roi**: Position can be set from rpc
9
+ ([`41b7ca8`](https://github.com/bec-project/bec_widgets/commit/41b7ca8e649d39dd21d09febfa8aabfc8f6f98fc))
10
+
11
+ ### Chores
12
+
13
+ - Migrate issue template to github form syntax
14
+ ([`05489a1`](https://github.com/bec-project/bec_widgets/commit/05489a1c563e20a49fe34d4df97ca0c3c23d8634))
15
+
16
+ ### Continuous Integration
17
+
18
+ - Add pr issue sync
19
+ ([`53377d2`](https://github.com/bec-project/bec_widgets/commit/53377d26e2767b3df7c788330c4d592fc12051ed))
20
+
21
+ ### Features
22
+
23
+ - **image_roi_tree**: Gui roi manager for image widget
24
+ ([`a939c3b`](https://github.com/bec-project/bec_widgets/commit/a939c3b1c4a7bcf1322f2d1d330fdb721ea04d56))
25
+
26
+ - **waveform**: Lmfitdialog cleanup after close
27
+ ([`a020f2d`](https://github.com/bec-project/bec_widgets/commit/a020f2dc7e537493ce4aff5d88ea003956624869))
28
+
29
+ ### Refactoring
30
+
31
+ - **image_roi**: Glowing handles for Rectangle roi
32
+ ([`7a531c1`](https://github.com/bec-project/bec_widgets/commit/7a531c17d6a4411550600ddc8bb9d56ee777259d))
33
+
34
+
35
+ ## v2.5.4 (2025-05-22)
36
+
37
+ ### Bug Fixes
38
+
39
+ - **dock_area**: Menu to add LogPanel into DockArea is temporary disabled
40
+ ([`d4def09`](https://github.com/bec-project/bec_widgets/commit/d4def09a4ecc024fd7e0e90fd975799066e7bb58))
41
+
42
+
4
43
  ## v2.5.3 (2025-05-22)
5
44
 
6
45
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bec_widgets
3
- Version: 2.5.3
3
+ Version: 2.6.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
@@ -602,6 +602,16 @@ class BaseROI(RPCBase):
602
602
  ndarray: Pixel data inside the ROI, or (data, coords) if *returnMappedCoords* is True.
603
603
  """
604
604
 
605
+ @rpc_call
606
+ def set_position(self, x: "float", y: "float"):
607
+ """
608
+ Sets the position of the ROI.
609
+
610
+ Args:
611
+ x (float): The x-coordinate of the new position.
612
+ y (float): The y-coordinate of the new position.
613
+ """
614
+
605
615
 
606
616
  class CircularROI(RPCBase):
607
617
  """Circular Region of Interest with center/diameter tracking and auto-labeling."""
@@ -701,6 +711,16 @@ class CircularROI(RPCBase):
701
711
  ndarray: Pixel data inside the ROI, or (data, coords) if *returnMappedCoords* is True.
702
712
  """
703
713
 
714
+ @rpc_call
715
+ def set_position(self, x: "float", y: "float"):
716
+ """
717
+ Sets the position of the ROI.
718
+
719
+ Args:
720
+ x (float): The x-coordinate of the new position.
721
+ y (float): The y-coordinate of the new position.
722
+ """
723
+
704
724
 
705
725
  class Curve(RPCBase):
706
726
  @rpc_call
@@ -1418,7 +1438,7 @@ class Image(RPCBase):
1418
1438
  self,
1419
1439
  kind: "Literal['rect', 'circle']" = "rect",
1420
1440
  name: "str | None" = None,
1421
- line_width: "int | None" = 10,
1441
+ line_width: "int | None" = 5,
1422
1442
  pos: "tuple[float, float] | None" = (10, 10),
1423
1443
  size: "tuple[float, float] | None" = (50, 50),
1424
1444
  **pg_kwargs,
@@ -2652,6 +2672,16 @@ class RectangularROI(RPCBase):
2652
2672
  ndarray: Pixel data inside the ROI, or (data, coords) if *returnMappedCoords* is True.
2653
2673
  """
2654
2674
 
2675
+ @rpc_call
2676
+ def set_position(self, x: "float", y: "float"):
2677
+ """
2678
+ Sets the position of the ROI.
2679
+
2680
+ Args:
2681
+ x (float): The x-coordinate of the new position.
2682
+ y (float): The y-coordinate of the new position.
2683
+ """
2684
+
2655
2685
 
2656
2686
  class ResetButton(RPCBase):
2657
2687
  """A button that resets the scan queue."""
@@ -114,7 +114,7 @@ class JupyterConsoleWindow(QWidget): # pragma: no cover:
114
114
  #
115
115
  sixth_tab = QWidget()
116
116
  sixth_tab_layout = QVBoxLayout(sixth_tab)
117
- self.im = Image(popups=False)
117
+ self.im = Image(popups=True)
118
118
  self.mi = self.im.main_image
119
119
  sixth_tab_layout.addWidget(self.im)
120
120
  tab_widget.addTab(sixth_tab, "Image Next Gen")
@@ -163,8 +163,11 @@ class BECDockArea(BECWidget, QWidget):
163
163
  tooltip="Add Circular ProgressBar",
164
164
  filled=True,
165
165
  ),
166
+ # FIXME temporarily disabled -> issue #644
166
167
  "log_panel": MaterialIconAction(
167
- icon_name=LogPanel.ICON_NAME, tooltip="Add LogPanel", filled=True
168
+ icon_name=LogPanel.ICON_NAME,
169
+ tooltip="Add LogPanel - Disabled",
170
+ filled=True,
168
171
  ),
169
172
  },
170
173
  ),
@@ -230,9 +233,11 @@ class BECDockArea(BECWidget, QWidget):
230
233
  self.toolbar.widgets["menu_utils"].widgets["progress_bar"].triggered.connect(
231
234
  lambda: self._create_widget_from_toolbar(widget_name="RingProgressBar")
232
235
  )
233
- self.toolbar.widgets["menu_utils"].widgets["log_panel"].triggered.connect(
234
- lambda: self._create_widget_from_toolbar(widget_name="LogPanel")
235
- )
236
+ # FIXME temporarily disabled -> issue #644
237
+ self.toolbar.widgets["menu_utils"].widgets["log_panel"].setEnabled(False)
238
+ # self.toolbar.widgets["menu_utils"].widgets["log_panel"].triggered.connect(
239
+ # lambda: self._create_widget_from_toolbar(widget_name="LogPanel")
240
+ # )
236
241
 
237
242
  # Icons
238
243
  self.toolbar.widgets["attach_all"].action.triggered.connect(self.attach_all)