bec-server 3.150.0__tar.gz → 3.150.2__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 (211) hide show
  1. {bec_server-3.150.0 → bec_server-3.150.2}/PKG-INFO +1 -1
  2. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/data_processing/cli/launch.py +1 -4
  3. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/device_server.py +0 -1
  4. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/file_writer/file_writer_manager.py +1 -1
  5. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/beamline_state_manager.py +0 -2
  6. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/direct_scan_worker.py +0 -1
  7. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scan_manager.py +0 -4
  8. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scan_queue.py +0 -1
  9. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scan_worker.py +0 -1
  10. {bec_server-3.150.0 → bec_server-3.150.2}/pyproject.toml +1 -1
  11. bec_server-3.150.0/bec_server/data_processing/image_analysis_service.py +0 -142
  12. bec_server-3.150.0/tests/tests_data_processing/test_image_analysis_service.py +0 -105
  13. {bec_server-3.150.0 → bec_server-3.150.2}/.gitignore +0 -0
  14. {bec_server-3.150.0 → bec_server-3.150.2}/.zed/debug.json +0 -0
  15. {bec_server-3.150.0 → bec_server-3.150.2}/README.md +0 -0
  16. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/__init__.py +0 -0
  17. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/actors/__init__.py +0 -0
  18. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/actors/actor.py +0 -0
  19. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/actors/builtin_actor_manager.py +0 -0
  20. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/actors/manager.py +0 -0
  21. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/actors/scan_interlock.py +0 -0
  22. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/actors/worker.py +0 -0
  23. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/bec_server_utils/__init__.py +0 -0
  24. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/bec_server_utils/launch.py +0 -0
  25. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/bec_server_utils/service_handler.py +0 -0
  26. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/bec_server_utils/subprocess_launch.py +0 -0
  27. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/bec_server_utils/tmux_launch.py +0 -0
  28. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/data_processing/__init__.py +0 -0
  29. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/data_processing/cli/__init__.py +0 -0
  30. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/data_processing/dap_server.py +0 -0
  31. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/data_processing/dap_service.py +0 -0
  32. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/data_processing/dap_service_manager.py +0 -0
  33. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/data_processing/lmfit1d_service.py +0 -0
  34. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/__init__.py +0 -0
  35. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/bec_message_handler.py +0 -0
  36. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/cli/__init__.py +0 -0
  37. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/cli/launch.py +0 -0
  38. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/devices/__init__.py +0 -0
  39. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/devices/config_update_handler.py +0 -0
  40. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/devices/device_serializer.py +0 -0
  41. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/devices/devicemanager.py +0 -0
  42. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/friendly_device_exceptions.py +0 -0
  43. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/rpc_handler.py +0 -0
  44. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/tests/__init__.py +0 -0
  45. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/device_server/tests/utils.py +0 -0
  46. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/file_writer/__init__.py +0 -0
  47. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/file_writer/async_writer.py +0 -0
  48. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/file_writer/cli/__init__.py +0 -0
  49. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/file_writer/cli/launch.py +0 -0
  50. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/file_writer/default_writer.py +0 -0
  51. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/file_writer/file_writer.py +0 -0
  52. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/file_writer/merged_dicts.py +0 -0
  53. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/file_writer_plugins/__init__.py +0 -0
  54. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/file_writer_plugins/cSAXS.py +0 -0
  55. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/Containerfile.bec_linux_base +0 -0
  56. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/Containerfile.requirements +0 -0
  57. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/Containerfile.worker +0 -0
  58. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/__init__.py +0 -0
  59. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/_dev_runner.py +0 -0
  60. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/builtin_procedures.py +0 -0
  61. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/constants.py +0 -0
  62. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/container_utils.py +0 -0
  63. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/container_worker.py +0 -0
  64. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/manager.py +0 -0
  65. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/oop_worker_base.py +0 -0
  66. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/procedure_registry.py +0 -0
  67. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/protocol.py +0 -0
  68. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/subprocess_worker.py +0 -0
  69. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/procedures/worker_base.py +0 -0
  70. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_bundler/__init__.py +0 -0
  71. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_bundler/bec_emitter.py +0 -0
  72. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_bundler/cli/__init__.py +0 -0
  73. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_bundler/cli/launch.py +0 -0
  74. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_bundler/emitter.py +0 -0
  75. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_bundler/scan_bundler.py +0 -0
  76. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/__init__.py +0 -0
  77. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/cli/__init__.py +0 -0
  78. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/cli/launch.py +0 -0
  79. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/errors.py +0 -0
  80. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/generator_scan_worker.py +0 -0
  81. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/instruction_handler.py +0 -0
  82. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/path_optimization.py +0 -0
  83. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scan_assembler.py +0 -0
  84. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scan_guard.py +0 -0
  85. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scan_gui_models.py +0 -0
  86. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scan_plugins/__init__.py +0 -0
  87. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scan_plugins/otf_scan.py +0 -0
  88. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scan_server.py +0 -0
  89. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scan_stubs.py +0 -0
  90. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/__init__.py +0 -0
  91. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/acquire.py +0 -0
  92. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/cont_line_scan.py +0 -0
  93. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/fermat_scan.py +0 -0
  94. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/grid_scan.py +0 -0
  95. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/hexagonal_scan.py +0 -0
  96. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/legacy_scans.py +0 -0
  97. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/line_scan.py +0 -0
  98. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/line_sweep_scan.py +0 -0
  99. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/list_scan.py +0 -0
  100. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/log_scan.py +0 -0
  101. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/move.py +0 -0
  102. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/multi_region_grid_scan.py +0 -0
  103. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/multi_region_line_scan.py +0 -0
  104. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/position_generators.py +0 -0
  105. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/round_roi_scan.py +0 -0
  106. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/round_scan.py +0 -0
  107. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/scan_actions.py +0 -0
  108. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/scan_argument_modifier.py +0 -0
  109. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/scan_base.py +0 -0
  110. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/scan_components.py +0 -0
  111. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/scan_modifier.py +0 -0
  112. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/time_scan.py +0 -0
  113. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/scans/updated_move.py +0 -0
  114. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/tests/__init__.py +0 -0
  115. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/tests/fixtures.py +0 -0
  116. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/tests/scan_fixtures.py +0 -0
  117. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/tests/scan_hook_tests.py +0 -0
  118. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/tests/utils.py +0 -0
  119. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scan_server/types.py +0 -0
  120. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/__init__.py +0 -0
  121. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/atlas/__init__.py +0 -0
  122. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/atlas/atlas_active_client_emitter.py +0 -0
  123. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/atlas/atlas_connector.py +0 -0
  124. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/atlas/atlas_forwarder.py +0 -0
  125. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/atlas/atlas_metadata_handler.py +0 -0
  126. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/atlas/config_handler.py +0 -0
  127. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/cli/__init__.py +0 -0
  128. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/cli/launch.py +0 -0
  129. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/scihub.py +0 -0
  130. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/service_handler/__init__.py +0 -0
  131. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/scihub/service_handler/service_handler.py +0 -0
  132. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/test/__init__.py +0 -0
  133. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/test/actor_test_utils.py +0 -0
  134. {bec_server-3.150.0 → bec_server-3.150.2}/bec_server/test/helpers.py +0 -0
  135. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_actors/test_actors.py +0 -0
  136. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_bec_server_utils/test_main.py +0 -0
  137. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_bec_server_utils/test_service_handler.py +0 -0
  138. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_bec_server_utils/test_tmux_launch.py +0 -0
  139. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_data_processing/conftest.py +0 -0
  140. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_data_processing/test_dap_cli_launch.py +0 -0
  141. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_data_processing/test_dap_server.py +0 -0
  142. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_data_processing/test_dap_service_manager.py +0 -0
  143. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_data_processing/test_lmfit1d_service.py +0 -0
  144. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_device_server/conftest.py +0 -0
  145. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_device_server/test_config_handler.py +0 -0
  146. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_device_server/test_device_instructions.py +0 -0
  147. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_device_server/test_device_manager_ds.py +0 -0
  148. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_device_server/test_device_serializer.py +0 -0
  149. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_device_server/test_device_server.py +0 -0
  150. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_device_server/test_device_server_cli_launch.py +0 -0
  151. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_device_server/test_rpc_handler.py +0 -0
  152. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_file_writer/conftest.py +0 -0
  153. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_file_writer/test_async_file_writer.py +0 -0
  154. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_file_writer/test_file_writer.py +0 -0
  155. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_file_writer/test_file_writer_cli_launch.py +0 -0
  156. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_file_writer/test_file_writer_manager.py +0 -0
  157. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_bundler/conftest.py +0 -0
  158. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_bundler/test_bec_emitter.py +0 -0
  159. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_bundler/test_scan_bundler.py +0 -0
  160. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_bundler/test_scan_bundler_cli_launch.py +0 -0
  161. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/conftest.py +0 -0
  162. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/__init__.py +0 -0
  163. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_acquire.py +0 -0
  164. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_cont_line_scan.py +0 -0
  165. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_fermat_scan.py +0 -0
  166. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_grid_scan.py +0 -0
  167. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_hexagonal_scan.py +0 -0
  168. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_line_scan.py +0 -0
  169. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_line_sweep_scan.py +0 -0
  170. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_list_scan.py +0 -0
  171. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_log_scan.py +0 -0
  172. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_move_scan.py +0 -0
  173. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_multi_region_grid_scan.py +0 -0
  174. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_multi_region_line_scan.py +0 -0
  175. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_position_generators.py +0 -0
  176. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_relative_scan_return_to_start.py +0 -0
  177. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_round_roi_scan.py +0 -0
  178. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_round_scan.py +0 -0
  179. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_scan_actions.py +0 -0
  180. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_scan_components.py +0 -0
  181. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_time_scan.py +0 -0
  182. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/scans_v4/test_updated_move_scan.py +0 -0
  183. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_beamline_state_manager.py +0 -0
  184. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_builtin_actor_manager.py +0 -0
  185. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_container_utils.py +0 -0
  186. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_direct_scan_worker.py +0 -0
  187. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_generator_scan_worker.py +0 -0
  188. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_instruction_handler.py +0 -0
  189. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_legacy_scans.py +0 -0
  190. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_path_optimization.py +0 -0
  191. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_procedure_container_worker.py +0 -0
  192. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_procedures.py +0 -0
  193. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_argument_modifier.py +0 -0
  194. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_assembler.py +0 -0
  195. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_guard.py +0 -0
  196. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_gui_models.py +0 -0
  197. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_interlock.py +0 -0
  198. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_modifier.py +0 -0
  199. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_server_cli_launch.py +0 -0
  200. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_server_queue.py +0 -0
  201. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_server_scan_manager.py +0 -0
  202. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_stub_status.py +0 -0
  203. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_stubs.py +0 -0
  204. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scan_server/test_scan_worker.py +0 -0
  205. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scihub/conftest.py +0 -0
  206. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scihub/test_atlas_active_client_emitter.py +0 -0
  207. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scihub/test_atlas_config_handler.py +0 -0
  208. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scihub/test_atlas_connector.py +0 -0
  209. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scihub/test_atlas_forwarder.py +0 -0
  210. {bec_server-3.150.0 → bec_server-3.150.2}/tests/tests_scihub/test_atlas_metadata_handler.py +0 -0
  211. {bec_server-3.150.0 → bec_server-3.150.2}/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.150.0
3
+ Version: 3.150.2
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
@@ -8,7 +8,6 @@ import bec_server.data_processing as data_processing
8
8
  from bec_lib.bec_service import parse_cmdline_args
9
9
  from bec_lib.logger import bec_logger
10
10
  from bec_lib.redis_connector import RedisConnector
11
- from bec_server.data_processing.image_analysis_service import ImageAnalysisService
12
11
  from bec_server.data_processing.lmfit1d_service import LmfitService1D
13
12
 
14
13
  logger = bec_logger.logger
@@ -22,9 +21,7 @@ def main():
22
21
  _, _, config = parse_cmdline_args()
23
22
 
24
23
  bec_server = data_processing.dap_server.DAPServer(
25
- config=config,
26
- connector_cls=RedisConnector,
27
- provided_services=[LmfitService1D, ImageAnalysisService],
24
+ config=config, connector_cls=RedisConnector, provided_services=[LmfitService1D]
28
25
  )
29
26
  bec_server.start()
30
27
 
@@ -429,7 +429,6 @@ class DeviceServer(BECService):
429
429
  dev.obj.stop()
430
430
  except Exception as exc: # pylint: disable=broad-except
431
431
  content = traceback.format_exc()
432
- logger.error(content)
433
432
  error_info = messages.ErrorInfo(
434
433
  error_message=content,
435
434
  compact_error_message=traceback.format_exc(limit=0),
@@ -424,7 +424,7 @@ class FileWriterManager(BECService):
424
424
  # pylint: disable=unused-variable
425
425
  except Exception as exc:
426
426
  content = traceback.format_exc()
427
- logger.error(f"Failed to write to file {file_path}. Error: {content}")
427
+ logger.error(f"Failed to write to file {file_path}.")
428
428
  error_info = messages.ErrorInfo(
429
429
  error_message=content,
430
430
  compact_error_message=traceback.format_exc(limit=0),
@@ -6,7 +6,6 @@ from bec_lib import bl_states, messages
6
6
  from bec_lib.alarm_handler import Alarms
7
7
  from bec_lib.devicemanager import DeviceManagerBase
8
8
  from bec_lib.endpoints import MessageEndpoints
9
- from bec_lib.logger import bec_logger
10
9
  from bec_lib.messages import ErrorInfo
11
10
  from bec_lib.redis_connector import RedisConnector
12
11
 
@@ -32,7 +31,6 @@ class BeamlineStateManager:
32
31
  self.update_states(msg)
33
32
  except Exception as exc:
34
33
  content = traceback.format_exc()
35
- bec_logger.logger.error(content)
36
34
  info = ErrorInfo(
37
35
  exception_type=type(exc).__name__,
38
36
  error_message=content,
@@ -187,7 +187,6 @@ class DirectScanWorker:
187
187
  exc (Exception): The exception that was raised, which will be included in the alarm information.
188
188
  """
189
189
 
190
- logger.error(content)
191
190
  error_info = messages.ErrorInfo(
192
191
  error_message=content,
193
192
  compact_error_message=traceback.format_exc(limit=0),
@@ -115,9 +115,6 @@ class ScanManager:
115
115
  for name, scan_cls in members:
116
116
 
117
117
  if not scan_cls.scan_name.isidentifier():
118
- logger.error(
119
- f"Invalid scan_name '{scan_cls.scan_name}' for scan class {name}. scan_name must be a valid Python identifier, that is, it can only contain letters, numbers, and underscores, and must not start with a number. Skipping."
120
- )
121
118
  self.parent.connector.raise_alarm(
122
119
  severity=Alarms.WARNING,
123
120
  info=ErrorInfo(
@@ -130,7 +127,6 @@ class ScanManager:
130
127
  continue
131
128
 
132
129
  if scan_cls.scan_name in self.available_scans:
133
- logger.error(f"{scan_cls.scan_name} already exists. Skipping.")
134
130
  self.parent.connector.raise_alarm(
135
131
  severity=Alarms.WARNING,
136
132
  info=ErrorInfo(
@@ -90,7 +90,6 @@ class QueueManager:
90
90
  # pylint: disable=broad-except
91
91
  except Exception as exc:
92
92
  content = traceback.format_exc()
93
- logger.error(content)
94
93
  error_info = messages.ErrorInfo(
95
94
  error_message=content,
96
95
  compact_error_message=traceback.format_exc(limit=0),
@@ -80,7 +80,6 @@ class ScanWorker(threading.Thread):
80
80
  # pylint: disable=broad-except
81
81
  except Exception as exc:
82
82
  content = traceback.format_exc()
83
- logger.error(content)
84
83
  error_info = messages.ErrorInfo(
85
84
  error_message=content,
86
85
  compact_error_message=traceback.format_exc(limit=0),
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec-server"
7
- version = "3.150.0"
7
+ version = "3.150.2"
8
8
  description = "BEC server"
9
9
  requires-python = ">=3.11"
10
10
  classifiers = [
@@ -1,142 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from enum import Enum
4
- from typing import TYPE_CHECKING
5
-
6
- import numpy as np
7
- from scipy.ndimage import center_of_mass
8
- from typeguard import typechecked
9
-
10
- from bec_lib.device_monitor_plugin import DeviceMonitorPlugin
11
- from bec_lib.logger import bec_logger
12
- from bec_server.data_processing.dap_service import DAPError, DAPServiceBase
13
-
14
- if TYPE_CHECKING:
15
- from bec_lib.client import BECClient
16
- from bec_lib.device import DeviceBase
17
- from bec_lib.scan_items import ScanItem
18
-
19
- logger = bec_logger.logger
20
-
21
-
22
- class ReturnType(str, Enum):
23
- """The possible return data types for the image analysis service."""
24
-
25
- MIN = "min"
26
- MAX = "max"
27
- MEAN = "mean"
28
- MEDIAN = "median"
29
- STD = "std"
30
- CENTER_OF_MASS = "center_of_mass"
31
-
32
-
33
- class ImageAnalysisService(DAPServiceBase):
34
- """Service for image analysis."""
35
-
36
- def __init__(self, *args, **kwargs):
37
- super().__init__(*args, **kwargs)
38
- self.device_monitor_plugin = DeviceMonitorPlugin(self.client.connector)
39
- self.data = []
40
- self.device = None
41
- self.return_type = None
42
-
43
- def configure(self, scan_item=None, device=None, images=None, return_type=None, **kwargs):
44
- # TODO Add type hints for np.ndarray and list[np.ndarray] do not work yet in the signature_serializer
45
- # This will be addressed in a different MR, issue is created #395
46
- # scan_item: ScanItem | str = None,
47
- # device: DeviceBase | str = None,
48
- # images: np.ndarray | list[np.ndarray] | None = None,
49
- # **kwargs,
50
- # ):
51
- """Configure the image analysis service. Either provide a scan item and a device which
52
- has a 2D monitor active, or provide the images directly. If no data is found for the input
53
- the service will return an empty stream output.
54
-
55
- Args:
56
- scan_item: Scan Item to consider for the analysis
57
- device: The device for the 2D monitor data
58
- images: Alternatively, you can provide the images directly
59
- return_type: The type of data to return, can be "min", "max", "mean", "median", "std", "center_of_mass"
60
- """
61
- if return_type is None:
62
- return_type = ReturnType.CENTER_OF_MASS
63
- else:
64
- return_type = ReturnType(return_type)
65
- self.return_type = return_type
66
- # If images are provided, use them
67
- if images is not None:
68
- if isinstance(images, np.ndarray):
69
- self.data = [images]
70
- elif isinstance(images, list) and all(
71
- isinstance(image, np.ndarray) for image in images
72
- ):
73
- self.data = images
74
- return
75
- # Else if scan item is provided, get the images
76
- if device is None or scan_item is None:
77
- raise DAPError(
78
- f"Either provide a device: {device} and scan_id {scan_item} or images {images}"
79
- )
80
- self.device = str(device)
81
- self.data = self.get_images_for_scan_item(scan_id=scan_item)
82
-
83
- def get_images_for_scan_item(self, scan_id: str) -> list[np.ndarray]:
84
- """Get the data for the scan item."""
85
- self.scan_id = scan_id
86
- data = self.device_monitor_plugin.get_data_for_scan(device=self.device, scan=self.scan_id)
87
- if len(data) == 0:
88
- logger.warning(f"No data found for scan {scan_id} and device {self.device}")
89
- return data
90
-
91
- @typechecked
92
- def compute_statistics(self, images: list[np.ndarray]) -> dict:
93
- """Compute the image analysis.
94
-
95
- Args:
96
- images: The images to analyze
97
-
98
- Returns:
99
- dict: The statistics
100
- """
101
- stacked_images = np.stack(images, axis=0)
102
- stats = {
103
- "min": stacked_images.min(axis=(1, 2)),
104
- "max": stacked_images.max(axis=(1, 2)),
105
- "mean": stacked_images.mean(axis=(1, 2)),
106
- "median": np.median(stacked_images, axis=(1, 2)),
107
- "std": np.std(stacked_images, axis=(1, 2)),
108
- "center_of_mass": np.array([center_of_mass(img) for img in images]),
109
- }
110
- return stats
111
-
112
- def process(self):
113
- """Process the image analysis."""
114
- stats = self.compute_statistics(self.data)
115
- metadata = {"scan_id": self.scan_id, "device": self.device, "stats": stats}
116
- stream_output = self._compute_stream_output(stats)
117
- return stream_output, metadata
118
-
119
- @classmethod
120
- def get_user_friendly_name(cls, *args, **kwargs):
121
- """
122
- Get the user friendly name for the service.
123
- """
124
- return "image_analysis"
125
-
126
- def _compute_stream_output(self, stats: dict) -> dict:
127
- """
128
- Compute the stream output from the statistics.
129
-
130
- Args:
131
- stats (dict): Statistics
132
-
133
- Returns:
134
- dict: Stream output
135
- """
136
- if self.return_type == ReturnType.CENTER_OF_MASS:
137
- return {"x": stats["center_of_mass"].T[0], "y": stats["center_of_mass"].T[1]}
138
- else:
139
- ret_type = self.return_type.value
140
- values = stats[ret_type]
141
- length = len(values)
142
- return {"x": np.linspace(0, length - 1, length), "y": values}
@@ -1,105 +0,0 @@
1
- from unittest import mock
2
-
3
- import numpy as np
4
- import pytest
5
-
6
- from bec_server.data_processing.image_analysis_service import (
7
- DAPError,
8
- ImageAnalysisService,
9
- ReturnType,
10
- )
11
-
12
-
13
- @pytest.fixture
14
- def image_analysis_service():
15
- yield ImageAnalysisService(client=mock.MagicMock())
16
-
17
-
18
- def test_image_analysis_configure(image_analysis_service):
19
- """Test the configure method of the image analysis service."""
20
-
21
- # Test with scan item
22
- scan_item = mock.MagicMock()
23
- dummy_data = [np.linspace(0, 1, 100) for _ in range(10)]
24
- scan_item.return_value = "mock_scan_id"
25
- with mock.patch.object(
26
- image_analysis_service, "get_images_for_scan_item", return_value=dummy_data
27
- ):
28
- image_analysis_service.configure(scan_item=scan_item, device="eiger")
29
- assert image_analysis_service.data == dummy_data
30
- assert image_analysis_service.device == "eiger"
31
- assert image_analysis_service.return_type == ReturnType.CENTER_OF_MASS
32
- # Reset the imageanalysisService
33
- image_analysis_service.data = []
34
- image_analysis_service.device = None
35
- image_analysis_service.return_type = None
36
-
37
- # Missing device argument
38
- with pytest.raises(DAPError):
39
- image_analysis_service.configure(scan_item=scan_item)
40
-
41
- # Reset the imageanalysisService
42
- image_analysis_service.data = []
43
- image_analysis_service.device = None
44
- image_analysis_service.return_type = None
45
-
46
- # Missing scan item
47
- with pytest.raises(DAPError):
48
- image_analysis_service.configure(device="eiger")
49
-
50
- # Reset the imageanalysisService
51
- image_analysis_service.data = []
52
- image_analysis_service.device = None
53
- image_analysis_service.return_type = None
54
-
55
- # Test with images
56
- image_analysis_service.configure(images=dummy_data)
57
- assert image_analysis_service.data == dummy_data
58
-
59
-
60
- def test_get_images_for_scan_item(image_analysis_service):
61
- """Test the get_images_for_scan_item method of the image analysis service."""
62
-
63
- dummy_data = [np.linspace(0, 1, 100) for _ in range(10)]
64
-
65
- with mock.patch.object(
66
- image_analysis_service.device_monitor_plugin,
67
- "get_data_for_scan",
68
- side_effect=[dummy_data, []],
69
- ):
70
- # Test with existing scan id
71
- scan_id = "mock_scan_id"
72
- image_analysis_service.scan_id = scan_id
73
- data = image_analysis_service.get_images_for_scan_item(scan_id)
74
- assert data == dummy_data
75
- assert image_analysis_service.scan_id == scan_id
76
-
77
- # Test with empty return
78
- data = image_analysis_service.get_images_for_scan_item(scan_id)
79
- assert data == []
80
-
81
-
82
- def test_compute_statistics(image_analysis_service):
83
- """Test the compute_statistics method of the image analysis service."""
84
-
85
- dummy_data = [np.zeros((10, 10)), np.ones((10, 10))]
86
- stats = image_analysis_service.compute_statistics(dummy_data)
87
- assert stats["min"].shape == (2,)
88
- assert stats["max"].shape == (2,)
89
- assert np.isclose(stats["mean"], np.array([0, 1])).all()
90
- assert np.isclose(stats["min"], np.array([0, 1])).all()
91
-
92
-
93
- def test_get_stream_output(image_analysis_service):
94
- """Test the get_stream_output method of the image analysis service."""
95
- dummy_data = [np.ones((10, 10)), np.ones((10, 10))]
96
- stats = image_analysis_service.compute_statistics(dummy_data)
97
- image_analysis_service.return_type = ReturnType.MIN
98
- stream_output = image_analysis_service._compute_stream_output(stats)
99
- assert np.isclose(stream_output["x"], np.linspace(0, 1, 2)).all()
100
- assert (stream_output["y"] == stats["min"]).all()
101
- # Test center of Mass
102
- image_analysis_service.return_type = ReturnType.CENTER_OF_MASS
103
- stream_output = image_analysis_service._compute_stream_output(stats)
104
- assert (stream_output["x"] == stats["center_of_mass"].T[0]).all()
105
- assert (stream_output["y"] == stats["center_of_mass"].T[1]).all()
File without changes
File without changes