bec-server 3.124.2__tar.gz → 3.124.4__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 (206) hide show
  1. {bec_server-3.124.2 → bec_server-3.124.4}/PKG-INFO +1 -1
  2. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/device_server.py +10 -3
  3. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/atlas/atlas_metadata_handler.py +13 -9
  4. {bec_server-3.124.2 → bec_server-3.124.4}/pyproject.toml +3 -1
  5. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_device_server/test_device_server.py +69 -0
  6. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scihub/test_atlas_metadata_handler.py +3 -1
  7. {bec_server-3.124.2 → bec_server-3.124.4}/.gitignore +0 -0
  8. {bec_server-3.124.2 → bec_server-3.124.4}/.zed/debug.json +0 -0
  9. {bec_server-3.124.2 → bec_server-3.124.4}/README.md +0 -0
  10. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/__init__.py +0 -0
  11. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/actors/__init__.py +0 -0
  12. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/actors/actor.py +0 -0
  13. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/actors/manager.py +0 -0
  14. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/actors/worker.py +0 -0
  15. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/bec_server_utils/__init__.py +0 -0
  16. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/bec_server_utils/launch.py +0 -0
  17. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/bec_server_utils/service_handler.py +0 -0
  18. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/bec_server_utils/subprocess_launch.py +0 -0
  19. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/bec_server_utils/tmux_launch.py +0 -0
  20. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/data_processing/__init__.py +0 -0
  21. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/data_processing/cli/__init__.py +0 -0
  22. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/data_processing/cli/launch.py +0 -0
  23. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/data_processing/dap_server.py +0 -0
  24. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/data_processing/dap_service.py +0 -0
  25. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/data_processing/dap_service_manager.py +0 -0
  26. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/data_processing/image_analysis_service.py +0 -0
  27. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/data_processing/lmfit1d_service.py +0 -0
  28. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/__init__.py +0 -0
  29. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/bec_message_handler.py +0 -0
  30. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/cli/__init__.py +0 -0
  31. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/cli/launch.py +0 -0
  32. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/devices/__init__.py +0 -0
  33. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/devices/config_update_handler.py +0 -0
  34. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/devices/device_serializer.py +0 -0
  35. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/devices/devicemanager.py +0 -0
  36. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/rpc_handler.py +0 -0
  37. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/tests/__init__.py +0 -0
  38. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/device_server/tests/utils.py +0 -0
  39. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/file_writer/__init__.py +0 -0
  40. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/file_writer/async_writer.py +0 -0
  41. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/file_writer/cli/__init__.py +0 -0
  42. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/file_writer/cli/launch.py +0 -0
  43. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/file_writer/default_writer.py +0 -0
  44. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/file_writer/file_writer.py +0 -0
  45. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/file_writer/file_writer_manager.py +0 -0
  46. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/file_writer/merged_dicts.py +0 -0
  47. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/file_writer_plugins/__init__.py +0 -0
  48. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/file_writer_plugins/cSAXS.py +0 -0
  49. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/Containerfile.bec_linux_base +0 -0
  50. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/Containerfile.requirements +0 -0
  51. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/Containerfile.worker +0 -0
  52. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/__init__.py +0 -0
  53. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/_dev_runner.py +0 -0
  54. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/builtin_procedures.py +0 -0
  55. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/constants.py +0 -0
  56. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/container_utils.py +0 -0
  57. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/container_worker.py +0 -0
  58. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/manager.py +0 -0
  59. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/oop_worker_base.py +0 -0
  60. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/procedure_registry.py +0 -0
  61. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/protocol.py +0 -0
  62. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/subprocess_worker.py +0 -0
  63. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/procedures/worker_base.py +0 -0
  64. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_bundler/__init__.py +0 -0
  65. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_bundler/bec_emitter.py +0 -0
  66. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_bundler/cli/__init__.py +0 -0
  67. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_bundler/cli/launch.py +0 -0
  68. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_bundler/emitter.py +0 -0
  69. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_bundler/scan_bundler.py +0 -0
  70. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/__init__.py +0 -0
  71. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/beamline_state_manager.py +0 -0
  72. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/cli/__init__.py +0 -0
  73. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/cli/launch.py +0 -0
  74. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/direct_scan_worker.py +0 -0
  75. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/errors.py +0 -0
  76. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/generator_scan_worker.py +0 -0
  77. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/instruction_handler.py +0 -0
  78. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/path_optimization.py +0 -0
  79. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scan_assembler.py +0 -0
  80. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scan_guard.py +0 -0
  81. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scan_gui_models.py +0 -0
  82. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scan_manager.py +0 -0
  83. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scan_plugins/__init__.py +0 -0
  84. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scan_plugins/otf_scan.py +0 -0
  85. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scan_queue.py +0 -0
  86. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scan_server.py +0 -0
  87. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scan_stubs.py +0 -0
  88. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scan_worker.py +0 -0
  89. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/__init__.py +0 -0
  90. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/acquire.py +0 -0
  91. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/cont_line_scan.py +0 -0
  92. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/fermat_scan.py +0 -0
  93. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/grid_scan.py +0 -0
  94. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/hexagonal_scan.py +0 -0
  95. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/legacy_scans.py +0 -0
  96. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/line_scan.py +0 -0
  97. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/line_sweep_scan.py +0 -0
  98. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/list_scan.py +0 -0
  99. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/log_scan.py +0 -0
  100. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/move.py +0 -0
  101. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/multi_region_grid_scan.py +0 -0
  102. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/multi_region_line_scan.py +0 -0
  103. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/position_generators.py +0 -0
  104. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/round_roi_scan.py +0 -0
  105. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/round_scan.py +0 -0
  106. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/scan_actions.py +0 -0
  107. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/scan_argument_modifier.py +0 -0
  108. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/scan_base.py +0 -0
  109. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/scan_components.py +0 -0
  110. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/scan_modifier.py +0 -0
  111. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/time_scan.py +0 -0
  112. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/scans/updated_move.py +0 -0
  113. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/tests/__init__.py +0 -0
  114. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/tests/fixtures.py +0 -0
  115. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/tests/scan_fixtures.py +0 -0
  116. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/tests/scan_hook_tests.py +0 -0
  117. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/tests/utils.py +0 -0
  118. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scan_server/types.py +0 -0
  119. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/__init__.py +0 -0
  120. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/atlas/__init__.py +0 -0
  121. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/atlas/atlas_active_client_emitter.py +0 -0
  122. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/atlas/atlas_connector.py +0 -0
  123. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/atlas/atlas_forwarder.py +0 -0
  124. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/atlas/config_handler.py +0 -0
  125. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/cli/__init__.py +0 -0
  126. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/cli/launch.py +0 -0
  127. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/scihub.py +0 -0
  128. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/service_handler/__init__.py +0 -0
  129. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/scihub/service_handler/service_handler.py +0 -0
  130. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/test/__init__.py +0 -0
  131. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/test/actor_test_utils.py +0 -0
  132. {bec_server-3.124.2 → bec_server-3.124.4}/bec_server/test/helpers.py +0 -0
  133. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_actors/test_actors.py +0 -0
  134. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_bec_server_utils/test_main.py +0 -0
  135. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_bec_server_utils/test_service_handler.py +0 -0
  136. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_bec_server_utils/test_tmux_launch.py +0 -0
  137. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_data_processing/conftest.py +0 -0
  138. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_data_processing/test_dap_cli_launch.py +0 -0
  139. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_data_processing/test_dap_server.py +0 -0
  140. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_data_processing/test_dap_service_manager.py +0 -0
  141. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_data_processing/test_image_analysis_service.py +0 -0
  142. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_data_processing/test_lmfit1d_service.py +0 -0
  143. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_device_server/conftest.py +0 -0
  144. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_device_server/test_config_handler.py +0 -0
  145. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_device_server/test_device_instructions.py +0 -0
  146. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_device_server/test_device_manager_ds.py +0 -0
  147. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_device_server/test_device_serializer.py +0 -0
  148. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_device_server/test_device_server_cli_launch.py +0 -0
  149. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_device_server/test_rpc_handler.py +0 -0
  150. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_file_writer/conftest.py +0 -0
  151. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_file_writer/test_async_file_writer.py +0 -0
  152. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_file_writer/test_file_writer.py +0 -0
  153. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_file_writer/test_file_writer_cli_launch.py +0 -0
  154. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_file_writer/test_file_writer_manager.py +0 -0
  155. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_bundler/conftest.py +0 -0
  156. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_bundler/test_bec_emitter.py +0 -0
  157. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_bundler/test_scan_bundler.py +0 -0
  158. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_bundler/test_scan_bundler_cli_launch.py +0 -0
  159. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/conftest.py +0 -0
  160. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/__init__.py +0 -0
  161. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_acquire.py +0 -0
  162. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_cont_line_scan.py +0 -0
  163. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_fermat_scan.py +0 -0
  164. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_grid_scan.py +0 -0
  165. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_hexagonal_scan.py +0 -0
  166. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_line_scan.py +0 -0
  167. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_line_sweep_scan.py +0 -0
  168. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_list_scan.py +0 -0
  169. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_log_scan.py +0 -0
  170. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_move_scan.py +0 -0
  171. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_multi_region_grid_scan.py +0 -0
  172. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_multi_region_line_scan.py +0 -0
  173. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_position_generators.py +0 -0
  174. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_relative_scan_return_to_start.py +0 -0
  175. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_round_roi_scan.py +0 -0
  176. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_round_scan.py +0 -0
  177. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_scan_actions.py +0 -0
  178. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_scan_components.py +0 -0
  179. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_time_scan.py +0 -0
  180. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/scans_v4/test_updated_move_scan.py +0 -0
  181. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_beamline_state_manager.py +0 -0
  182. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_container_utils.py +0 -0
  183. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_direct_scan_worker.py +0 -0
  184. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_generator_scan_worker.py +0 -0
  185. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_instruction_handler.py +0 -0
  186. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_legacy_scans.py +0 -0
  187. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_path_optimization.py +0 -0
  188. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_procedure_container_worker.py +0 -0
  189. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_procedures.py +0 -0
  190. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_argument_modifier.py +0 -0
  191. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_assembler.py +0 -0
  192. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_guard.py +0 -0
  193. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_gui_models.py +0 -0
  194. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_modifier.py +0 -0
  195. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_server_cli_launch.py +0 -0
  196. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_server_queue.py +0 -0
  197. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_server_scan_manager.py +0 -0
  198. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_stub_status.py +0 -0
  199. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_stubs.py +0 -0
  200. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scan_server/test_scan_worker.py +0 -0
  201. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scihub/conftest.py +0 -0
  202. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scihub/test_atlas_active_client_emitter.py +0 -0
  203. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scihub/test_atlas_config_handler.py +0 -0
  204. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scihub/test_atlas_connector.py +0 -0
  205. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scihub/test_atlas_forwarder.py +0 -0
  206. {bec_server-3.124.2 → bec_server-3.124.4}/tests/tests_scihub/test_scihub_cli_launch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bec-server
3
- Version: 3.124.2
3
+ Version: 3.124.4
4
4
  Summary: BEC server
5
5
  Project-URL: Bug Tracker, https://github.com/bec-project/bec/issues
6
6
  Project-URL: Homepage, https://github.com/bec-project/bec
@@ -216,10 +216,12 @@ class RequestHandler:
216
216
  if len(request_info["status_objects"]) != request_info["num_status_objects"]:
217
217
  return
218
218
 
219
- if all(status_obj.done for status_obj in self._storage[instr_id]["status_objects"]):
219
+ status_objects = request_info["status_objects"]
220
+
221
+ if all(status_obj.done for status_obj in status_objects):
220
222
  exceptions = [
221
223
  (status_obj.exception(), status_obj)
222
- for status_obj in self._storage[instr_id]["status_objects"]
224
+ for status_obj in status_objects
223
225
  if isinstance(status_obj, StatusBase)
224
226
  ]
225
227
  if any(val for val, _ in exceptions):
@@ -777,6 +779,11 @@ class DeviceServer(BECService):
777
779
  # if the user requested a response on a single status object, we need to send it
778
780
  # to the device_req_status_container
779
781
  request_id = status.instruction.metadata["RID"]
782
+ metadata["error_info"] = (
783
+ self.requests_handler.get_error_info(status.exception(), status)
784
+ if status.exception()
785
+ else None
786
+ )
780
787
  dev_msg = messages.DeviceReqStatusMessage(
781
788
  device=device_name, success=status.success, request_id=request_id, metadata=metadata
782
789
  )
@@ -786,7 +793,7 @@ class DeviceServer(BECService):
786
793
  MessageEndpoints.device_req_status(request_id),
787
794
  {"data": dev_msg},
788
795
  pipe=pipe,
789
- expire=60,
796
+ expire=3600,
790
797
  )
791
798
  pipe.execute()
792
799
 
@@ -147,15 +147,19 @@ class AtlasMetadataHandler:
147
147
  if self._account is None:
148
148
  return
149
149
  info = self._deployment_info
150
- if info is None:
151
- return
152
- if info.active_session is None:
153
- return
154
- if info.active_session.experiment is None:
155
- return
156
- if info.active_session.experiment.pgroup == self._account:
157
- return
158
- self.send_atlas_update({"account": self._account})
150
+
151
+ def is_account_same(info: messages.DeploymentInfoMessage | None) -> bool:
152
+ if info is None:
153
+ return False
154
+ if info.active_session is None:
155
+ return False
156
+ if info.active_session.experiment is None:
157
+ return False
158
+ return info.active_session.experiment.pgroup == self._account
159
+
160
+ if not is_account_same(info):
161
+ msg = messages.VariableMessage(value=self._account)
162
+ self.send_atlas_update({"account": msg})
159
163
 
160
164
  def _handle_account_info(self, msg, emit_update=True, **_kwargs) -> None:
161
165
  """
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec-server"
7
- version = "3.124.2"
7
+ version = "3.124.4"
8
8
  description = "BEC server"
9
9
  requires-python = ">=3.11"
10
10
  classifiers = [
@@ -72,6 +72,8 @@ Homepage = "https://github.com/bec-project/bec"
72
72
 
73
73
 
74
74
 
75
+
76
+
75
77
 
76
78
  [tool.hatch.build.targets.wheel]
77
79
  include = ["*"]
@@ -130,6 +130,49 @@ def test_device_server_status_callback(
130
130
  logger.remove(sink_id)
131
131
 
132
132
 
133
+ @pytest.mark.parametrize("status_success", [True, False])
134
+ def test_device_server_status_callback_response_includes_error_info(
135
+ device_server_mock, ophyd_device_mock, status_success
136
+ ):
137
+ device_server = device_server_mock
138
+ dev = ophyd_device_mock
139
+ dev._kind = Kind.normal
140
+ instr = messages.DeviceInstructionMessage(
141
+ device=dev.name,
142
+ action="set",
143
+ parameter={},
144
+ metadata={
145
+ "stream": "primary",
146
+ "device_instr_id": "diid",
147
+ "RID": "request-id",
148
+ "response": True,
149
+ },
150
+ )
151
+
152
+ status = DeviceStatus(dev)
153
+ device_server._add_status_object_info(status, instruction=instr, device=dev)
154
+ if status_success:
155
+ status.set_finished()
156
+ else:
157
+ status.set_exception(RuntimeError("motor failed"))
158
+
159
+ with mock.patch.object(device_server, "_read_device") as mock_read_device:
160
+ with mock.patch.object(device_server.connector, "xadd") as xadd_mock:
161
+ device_server.status_callback(status)
162
+
163
+ mock_read_device.assert_called_once_with(instr)
164
+ xadd_mock.assert_called_once()
165
+ dev_msg = xadd_mock.call_args.args[1]["data"]
166
+ assert isinstance(dev_msg, messages.DeviceReqStatusMessage)
167
+ assert dev_msg.success is status_success
168
+ if status_success:
169
+ assert dev_msg.metadata["error_info"] is None
170
+ else:
171
+ assert dev_msg.metadata["error_info"] is not None
172
+ assert dev_msg.metadata["error_info"].exception_type == "RuntimeError"
173
+ assert "motor failed" in dev_msg.metadata["error_info"].error_message
174
+
175
+
133
176
  @pytest.mark.parametrize(
134
177
  "instr",
135
178
  [
@@ -1064,3 +1107,29 @@ def test_request_handler_ignores_response_if_stop_id(device_server_mock, stop_id
1064
1107
  stop_mock.assert_called()
1065
1108
  status.set_exception(RuntimeError("Test exception"))
1066
1109
  send_mock.assert_not_called()
1110
+
1111
+
1112
+ def test_request_handler_update_instruction_uses_snapshot_when_request_removed(device_server_mock):
1113
+ device_server = device_server_mock
1114
+ request = messages.DeviceInstructionMessage(
1115
+ device="test_device", action="complete", parameter={}, metadata={"device_instr_id": "diid"}
1116
+ )
1117
+
1118
+ status = StatusBase()
1119
+ status.set_finished()
1120
+ request_info = {
1121
+ "instr": request,
1122
+ "status_objects": [status],
1123
+ "num_status_objects": 1,
1124
+ "done": False,
1125
+ "is_status_obj": True,
1126
+ }
1127
+
1128
+ with mock.patch.object(
1129
+ device_server.requests_handler, "get_request", return_value=request_info
1130
+ ):
1131
+ with mock.patch.object(device_server.requests_handler, "set_finished") as set_finished_mock:
1132
+ device_server.requests_handler._storage.clear()
1133
+ device_server.requests_handler._update_instruction("diid", is_status_obj=True)
1134
+
1135
+ set_finished_mock.assert_called_once_with("diid", success=True)
@@ -298,7 +298,9 @@ def test_update_account_if_needed_different_account_forwards(atlas_connector):
298
298
  with mock.patch.object(handler, "send_atlas_update") as mock_send_update:
299
299
  handler._update_account_if_needed()
300
300
 
301
- mock_send_update.assert_called_once_with({"account": "local-account"})
301
+ mock_send_update.assert_called_once_with(
302
+ {"account": messages.VariableMessage(value="local-account")}
303
+ )
302
304
 
303
305
 
304
306
  def test_handle_deployment_info_valid(atlas_connector):
File without changes
File without changes