bec-server 3.146.2__tar.gz → 3.147.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.
- {bec_server-3.146.2 → bec_server-3.147.0}/PKG-INFO +1 -1
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/bec_message_handler.py +64 -1
- {bec_server-3.146.2 → bec_server-3.147.0}/pyproject.toml +2 -1
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_device_manager_ds.py +8 -9
- {bec_server-3.146.2 → bec_server-3.147.0}/.gitignore +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/.zed/debug.json +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/README.md +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/actors/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/actors/actor.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/actors/builtin_actor_manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/actors/manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/actors/scan_interlock.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/actors/worker.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/bec_server_utils/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/bec_server_utils/launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/bec_server_utils/service_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/bec_server_utils/subprocess_launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/bec_server_utils/tmux_launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/data_processing/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/data_processing/cli/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/data_processing/cli/launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/data_processing/dap_server.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/data_processing/dap_service.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/data_processing/dap_service_manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/data_processing/image_analysis_service.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/data_processing/lmfit1d_service.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/cli/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/cli/launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/device_server.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/devices/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/devices/config_update_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/devices/device_serializer.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/devices/devicemanager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/friendly_device_exceptions.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/rpc_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/tests/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/tests/utils.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/file_writer/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/file_writer/async_writer.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/file_writer/cli/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/file_writer/cli/launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/file_writer/default_writer.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/file_writer/file_writer.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/file_writer/file_writer_manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/file_writer/merged_dicts.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/file_writer_plugins/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/file_writer_plugins/cSAXS.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/Containerfile.bec_linux_base +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/Containerfile.requirements +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/Containerfile.worker +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/_dev_runner.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/builtin_procedures.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/constants.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/container_utils.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/container_worker.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/oop_worker_base.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/procedure_registry.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/protocol.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/subprocess_worker.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/worker_base.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_bundler/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_bundler/bec_emitter.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_bundler/cli/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_bundler/cli/launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_bundler/emitter.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_bundler/scan_bundler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/beamline_state_manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/cli/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/cli/launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/direct_scan_worker.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/errors.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/generator_scan_worker.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/instruction_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/path_optimization.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scan_assembler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scan_guard.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scan_gui_models.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scan_manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scan_plugins/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scan_plugins/otf_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scan_queue.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scan_server.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scan_stubs.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scan_worker.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/acquire.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/cont_line_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/fermat_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/grid_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/hexagonal_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/legacy_scans.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/line_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/line_sweep_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/list_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/log_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/move.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/multi_region_grid_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/multi_region_line_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/position_generators.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/round_roi_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/round_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/scan_actions.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/scan_argument_modifier.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/scan_base.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/scan_components.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/scan_modifier.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/time_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/updated_move.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/tests/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/tests/fixtures.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/tests/scan_fixtures.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/tests/scan_hook_tests.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/tests/utils.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/types.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/atlas/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/atlas/atlas_active_client_emitter.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/atlas/atlas_connector.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/atlas/atlas_forwarder.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/atlas/atlas_metadata_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/atlas/config_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/cli/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/cli/launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/scihub.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/service_handler/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/service_handler/service_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/test/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/test/actor_test_utils.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/bec_server/test/helpers.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_actors/test_actors.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_bec_server_utils/test_main.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_bec_server_utils/test_service_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_bec_server_utils/test_tmux_launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_data_processing/conftest.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_data_processing/test_dap_cli_launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_data_processing/test_dap_server.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_data_processing/test_dap_service_manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_data_processing/test_image_analysis_service.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_data_processing/test_lmfit1d_service.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/conftest.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_config_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_device_instructions.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_device_serializer.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_device_server.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_device_server_cli_launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_rpc_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_file_writer/conftest.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_file_writer/test_async_file_writer.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_file_writer/test_file_writer.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_file_writer/test_file_writer_cli_launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_file_writer/test_file_writer_manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_bundler/conftest.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_bundler/test_bec_emitter.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_bundler/test_scan_bundler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_bundler/test_scan_bundler_cli_launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/conftest.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/__init__.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_acquire.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_cont_line_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_fermat_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_grid_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_hexagonal_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_line_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_line_sweep_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_list_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_log_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_move_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_multi_region_grid_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_multi_region_line_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_position_generators.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_relative_scan_return_to_start.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_round_roi_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_round_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_scan_actions.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_scan_components.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_time_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_updated_move_scan.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_beamline_state_manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_builtin_actor_manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_container_utils.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_direct_scan_worker.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_generator_scan_worker.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_instruction_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_legacy_scans.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_path_optimization.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_procedure_container_worker.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_procedures.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_argument_modifier.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_assembler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_guard.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_gui_models.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_interlock.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_modifier.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_server_cli_launch.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_server_queue.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_server_scan_manager.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_stub_status.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_stubs.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_worker.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scihub/conftest.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scihub/test_atlas_active_client_emitter.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scihub/test_atlas_config_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scihub/test_atlas_connector.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scihub/test_atlas_forwarder.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scihub/test_atlas_metadata_handler.py +0 -0
- {bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scihub/test_scihub_cli_launch.py +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import TYPE_CHECKING
|
|
3
|
+
from typing import TYPE_CHECKING, Iterable, TypedDict
|
|
4
4
|
|
|
5
|
+
import numpy as np
|
|
5
6
|
from ophyd import OphydObject
|
|
6
7
|
from ophyd_devices.utils import bec_signals as bms
|
|
7
8
|
|
|
@@ -16,6 +17,11 @@ if TYPE_CHECKING: # pragma: no cover
|
|
|
16
17
|
from bec_server.device_server.devices.devicemanager import DeviceManagerDS
|
|
17
18
|
|
|
18
19
|
|
|
20
|
+
class _AsyncSignalIndexState(TypedDict):
|
|
21
|
+
scan_id: str
|
|
22
|
+
indices: dict[str, int]
|
|
23
|
+
|
|
24
|
+
|
|
19
25
|
class BECMessageHandler:
|
|
20
26
|
"""
|
|
21
27
|
A message handler for the BEC device server that processes and emits messages related to device signals.
|
|
@@ -32,6 +38,7 @@ class BECMessageHandler:
|
|
|
32
38
|
self.device_manager = device_manager
|
|
33
39
|
self.connector: RedisConnector = device_manager.connector
|
|
34
40
|
self.devices = device_manager.devices
|
|
41
|
+
self._async_signal_index_state: dict[tuple[str, str], _AsyncSignalIndexState] = {}
|
|
35
42
|
|
|
36
43
|
def emit(self, obj: OphydObject, message: messages.BECMessage):
|
|
37
44
|
"""
|
|
@@ -156,15 +163,71 @@ class BECMessageHandler:
|
|
|
156
163
|
f"Signal metadata is None for device {device_name} and signal {signal_name}."
|
|
157
164
|
)
|
|
158
165
|
return
|
|
166
|
+
|
|
167
|
+
indices = self._get_async_signal_indices(
|
|
168
|
+
obj=obj, scan_id=scan_id, signal_names=message.signals.keys()
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
# we augment the message metadata with the async signal indices so that
|
|
172
|
+
# downstream consumers can know which message corresponds to which async signal update
|
|
173
|
+
message.metadata["async_indices"] = indices
|
|
174
|
+
|
|
175
|
+
pipe = self.connector.pipeline()
|
|
159
176
|
self.connector.xadd(
|
|
160
177
|
MessageEndpoints.device_async_signal(
|
|
161
178
|
scan_id=scan_id, device=device_name, signal=signal_name
|
|
162
179
|
),
|
|
163
180
|
{"data": message},
|
|
164
181
|
max_size=obj.signal_metadata.get("max_size", 1000),
|
|
182
|
+
pipe=pipe,
|
|
165
183
|
expire=obj.signal_metadata.get("expire", 600), # default to 10 minutes (600 seconds)
|
|
166
184
|
)
|
|
167
185
|
|
|
186
|
+
# NOTE: We are storing the shape information. This means that
|
|
187
|
+
# - a single value update will have shape [] (scalar)
|
|
188
|
+
# - an empty array will have shape [0]
|
|
189
|
+
# - a 1D array of length N will have shape [N]
|
|
190
|
+
# - a 2D array of shape (M, N) will have shape [M, N]
|
|
191
|
+
index_message = messages.DeviceAsyncSignalIndexMessage(
|
|
192
|
+
scan_id=scan_id,
|
|
193
|
+
device=device_name,
|
|
194
|
+
signal=signal_name,
|
|
195
|
+
shapes={
|
|
196
|
+
current_signal_name: list(np.shape(signal_data["value"]))
|
|
197
|
+
for current_signal_name, signal_data in message.signals.items()
|
|
198
|
+
},
|
|
199
|
+
indices=indices,
|
|
200
|
+
async_update=messages.DeviceAsyncUpdate.model_validate(
|
|
201
|
+
message.metadata["async_update"]
|
|
202
|
+
),
|
|
203
|
+
)
|
|
204
|
+
self.connector.rpush(
|
|
205
|
+
MessageEndpoints.device_async_signal_index(
|
|
206
|
+
scan_id=scan_id, device=device_name, signal=signal_name
|
|
207
|
+
),
|
|
208
|
+
index_message,
|
|
209
|
+
pipe=pipe,
|
|
210
|
+
expire=3600, # expire after 1 hour; note that this is longer than the async signal message itself
|
|
211
|
+
)
|
|
212
|
+
pipe.execute()
|
|
213
|
+
|
|
214
|
+
def _get_async_signal_indices(
|
|
215
|
+
self, obj: bms.DynamicSignal, scan_id: str, signal_names: Iterable[str]
|
|
216
|
+
) -> dict[str, int]:
|
|
217
|
+
state_key = (obj.root.name, obj.name)
|
|
218
|
+
state = self._async_signal_index_state.get(state_key)
|
|
219
|
+
if state is None or state["scan_id"] != scan_id:
|
|
220
|
+
state = _AsyncSignalIndexState(scan_id=scan_id, indices={})
|
|
221
|
+
self._async_signal_index_state[state_key] = state
|
|
222
|
+
|
|
223
|
+
out = {}
|
|
224
|
+
indices = state["indices"]
|
|
225
|
+
for signal_name in signal_names:
|
|
226
|
+
current_index = indices.get(signal_name, -1) + 1
|
|
227
|
+
indices[signal_name] = current_index
|
|
228
|
+
out[signal_name] = current_index
|
|
229
|
+
return out
|
|
230
|
+
|
|
168
231
|
def _get_scan_status_message(self) -> messages.ScanStatusMessage | None:
|
|
169
232
|
"""
|
|
170
233
|
Get the current scan status message from the device manager.
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "bec-server"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.147.0"
|
|
8
8
|
description = "BEC server"
|
|
9
9
|
requires-python = ">=3.11"
|
|
10
10
|
classifiers = [
|
|
@@ -132,6 +132,7 @@ Homepage = "https://github.com/bec-project/bec"
|
|
|
132
132
|
|
|
133
133
|
|
|
134
134
|
|
|
135
|
+
|
|
135
136
|
|
|
136
137
|
|
|
137
138
|
[tool.hatch.build.targets.wheel]
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_device_manager_ds.py
RENAMED
|
@@ -24,13 +24,10 @@ def dm_with_devices_and_status(dm_with_devices):
|
|
|
24
24
|
Fixture that adds the scan_info message to the device manager
|
|
25
25
|
"""
|
|
26
26
|
device_manager = dm_with_devices
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
scan_id="12345", status="open", info={"num_points": 10, "RID": "RID123"}
|
|
32
|
-
)
|
|
33
|
-
yield device_manager
|
|
27
|
+
device_manager.scan_info.msg = messages.ScanStatusMessage(
|
|
28
|
+
scan_id="12345", status="open", info={"num_points": 10, "RID": "RID123"}
|
|
29
|
+
)
|
|
30
|
+
yield device_manager
|
|
34
31
|
|
|
35
32
|
|
|
36
33
|
class ControllerMock:
|
|
@@ -421,7 +418,8 @@ def test_device_manager_ds_obj_callback_progress_signal_disabled_device(dm_with_
|
|
|
421
418
|
[
|
|
422
419
|
None,
|
|
423
420
|
messages.DeviceMessage(
|
|
424
|
-
signals={"async_signal": {"value": np.random.rand(10), "timestamp": time.time()}}
|
|
421
|
+
signals={"async_signal": {"value": np.random.rand(10), "timestamp": time.time()}},
|
|
422
|
+
metadata={"async_update": {"type": "add", "max_shape": [None]}},
|
|
425
423
|
),
|
|
426
424
|
"some string",
|
|
427
425
|
],
|
|
@@ -446,7 +444,8 @@ def test_device_manager_ds_obj_callback_async_signal_incomplete_info(dm_with_dev
|
|
|
446
444
|
dm_with_devices.devices.bec_signals_device.metadata = metadata
|
|
447
445
|
|
|
448
446
|
msg = messages.DeviceMessage(
|
|
449
|
-
signals={"async_signal": {"value": np.random.rand(10), "timestamp": time.time()}}
|
|
447
|
+
signals={"async_signal": {"value": np.random.rand(10), "timestamp": time.time()}},
|
|
448
|
+
metadata={"async_update": {"type": "add", "max_shape": [None]}},
|
|
450
449
|
)
|
|
451
450
|
with mock.patch.object(device_manager.connector, "xadd") as mock_xadd:
|
|
452
451
|
device_manager._obj_callback_bec_message_signal(obj=device.async_signal, value=msg)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/data_processing/image_analysis_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/devices/config_update_handler.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/devices/device_serializer.py
RENAMED
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/device_server/friendly_device_exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/procedures/Containerfile.bec_linux_base
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/multi_region_grid_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/multi_region_line_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/position_generators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scan_server/scans/scan_argument_modifier.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/atlas/atlas_active_client_emitter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/bec_server/scihub/service_handler/service_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_bec_server_utils/test_service_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_data_processing/test_dap_cli_launch.py
RENAMED
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_data_processing/test_dap_service_manager.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_data_processing/test_image_analysis_service.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_data_processing/test_lmfit1d_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_device_instructions.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_device_serializer.py
RENAMED
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_device_server/test_device_server_cli_launch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_file_writer/test_file_writer_cli_launch.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_file_writer/test_file_writer_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_bundler/test_scan_bundler_cli_launch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_cont_line_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_fermat_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_grid_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_hexagonal_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_line_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_line_sweep_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_list_scan.py
RENAMED
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_move_scan.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_round_roi_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_round_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_scan_actions.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_scan_components.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_time_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/scans_v4/test_updated_move_scan.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_beamline_state_manager.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_builtin_actor_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_direct_scan_worker.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_generator_scan_worker.py
RENAMED
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_instruction_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_procedure_container_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_argument_modifier.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_server_cli_launch.py
RENAMED
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scan_server/test_scan_server_scan_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-3.146.2 → bec_server-3.147.0}/tests/tests_scihub/test_atlas_active_client_emitter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|