bec-server 4.3.2__tar.gz → 4.4.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-4.3.2 → bec_server-4.4.0}/PKG-INFO +1 -1
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/devices/config_update_handler.py +6 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/file_writer/file_writer.py +4 -1
- {bec_server-4.3.2 → bec_server-4.4.0}/pyproject.toml +1 -1
- bec_server-4.4.0/tests/tests_device_server/test_config_metadata_refresh.py +56 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_file_writer/test_file_writer.py +29 -1
- {bec_server-4.3.2 → bec_server-4.4.0}/.gitignore +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/.zed/debug.json +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/README.md +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/actors/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/actors/actor.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/actors/builtin_actor_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/actors/manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/actors/scan_interlock.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/actors/worker.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/bec_server_utils/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/bec_server_utils/launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/bec_server_utils/service_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/bec_server_utils/subprocess_launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/bec_server_utils/tmux_launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/data_processing/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/data_processing/cli/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/data_processing/cli/launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/data_processing/dap_server.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/data_processing/dap_service.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/data_processing/dap_service_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/data_processing/lmfit1d_service.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/bec_message_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/cli/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/cli/launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/device_server.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/devices/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/devices/device_serializer.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/devices/devicemanager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/friendly_device_exceptions.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/ophyd_callback_monitor.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/rpc_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/tests/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/tests/utils.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/file_writer/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/file_writer/async_writer.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/file_writer/cli/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/file_writer/cli/launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/file_writer/default_writer.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/file_writer/file_writer_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/file_writer/merged_dicts.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/Containerfile.bec_linux_base +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/Containerfile.requirements +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/Containerfile.worker +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/_dev_runner.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/builtin_procedures.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/constants.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/container_utils.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/container_worker.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/oop_worker_base.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/procedure_registry.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/protocol.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/queue_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/subprocess_worker.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/procedures/worker_base.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_bundler/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_bundler/bec_emitter.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_bundler/cli/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_bundler/cli/launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_bundler/emitter.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_bundler/scan_bundler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/beamline_state_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/cli/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/cli/launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/device_lock_registry.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/direct_scan_worker.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/errors.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/instruction_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scan_assembler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scan_guard.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scan_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scan_queue.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scan_server.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scan_worker.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/acquire.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/cont_line_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/device_rpc.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/fermat_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/grid_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/hexagonal_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/line_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/line_sweep_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/list_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/log_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/move.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/multi_region_grid_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/multi_region_line_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/path_optimization.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/position_generators.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/round_roi_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/round_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/scan_actions.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/scan_argument_modifier.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/scan_base.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/scan_components.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/scan_modifier.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/scan_status.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/time_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/updated_move.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/tests/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/tests/fixtures.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/tests/scan_fixtures.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/tests/scan_hook_tests.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/tests/utils.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/atlas/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/atlas/atlas_active_client_emitter.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/atlas/atlas_connector.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/atlas/atlas_forwarder.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/atlas/atlas_metadata_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/atlas/atlas_plugin_repo_emitter.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/atlas/config_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/cli/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/cli/launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/scihub.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/service_handler/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scihub/service_handler/service_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/test/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/test/actor_test_utils.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/bec_server/test/helpers.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_actors/test_actors.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_bec_server_utils/test_main.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_bec_server_utils/test_service_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_bec_server_utils/test_subprocess_launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_bec_server_utils/test_tmux_launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_data_processing/conftest.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_data_processing/test_dap_cli_launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_data_processing/test_dap_server.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_data_processing/test_dap_service_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_data_processing/test_lmfit1d_service.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/conftest.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/test_config_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/test_device_instructions.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/test_device_manager_ds.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/test_device_serializer.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/test_device_server.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/test_device_server_cli_launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/test_ophyd_callback_monitor.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/test_rpc_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_file_writer/conftest.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_file_writer/test_async_file_writer.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_file_writer/test_file_writer_cli_launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_file_writer/test_file_writer_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_bundler/conftest.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_bundler/test_bec_emitter.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_bundler/test_scan_bundler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_bundler/test_scan_bundler_cli_launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/conftest.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/__init__.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_acquire.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_cont_line_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_device_rpc_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_fermat_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_grid_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_hexagonal_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_line_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_line_sweep_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_list_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_log_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_move_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_multi_region_grid_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_multi_region_line_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_position_preview.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_relative_scan_return_to_start.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_round_roi_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_round_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_scan_actions.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_scan_components.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_scan_status.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_time_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_updated_move_scan.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_beamline_state_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_builtin_actor_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_container_utils.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_device_lock_registry.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_direct_scan_worker.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_instruction_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_path_optimization.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_procedure_container_worker.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_procedure_queue_pool.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_procedure_submission.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_procedure_subprocess_worker.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_procedures.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_argument_modifier.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_assembler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_fixture_imports.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_guard.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_interlock.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_modifier.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_server_cli_launch.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_server_queue.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_server_scan_manager.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_worker.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scihub/conftest.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scihub/test_atlas_active_client_emitter.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scihub/test_atlas_config_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scihub/test_atlas_connector.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scihub/test_atlas_forwarder.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scihub/test_atlas_metadata_handler.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scihub/test_atlas_plugin_repo_emitter.py +0 -0
- {bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scihub/test_scihub_cli_launch.py +0 -0
{bec_server-4.3.2 → bec_server-4.4.0}/bec_server/device_server/devices/config_update_handler.py
RENAMED
|
@@ -238,8 +238,14 @@ class ConfigUpdateHandler:
|
|
|
238
238
|
# apply config
|
|
239
239
|
try:
|
|
240
240
|
self.device_manager.update_config(device.obj, new_config)
|
|
241
|
+
# Persistence flags and other signal metadata can change with config.
|
|
242
|
+
# Publish before acknowledgement and the subsequent proxy update.
|
|
243
|
+
error = self.device_manager.publish_device_info(device.obj)
|
|
244
|
+
if error is not None:
|
|
245
|
+
raise error
|
|
241
246
|
except Exception as exc:
|
|
242
247
|
self.device_manager.update_config(device.obj, old_config)
|
|
248
|
+
self.device_manager.publish_device_info(device.obj)
|
|
243
249
|
raise DeviceConfigError(f"Error during object update. {exc}")
|
|
244
250
|
|
|
245
251
|
if "limits" in dev_config["deviceConfig"]:
|
|
@@ -9,6 +9,7 @@ from collections import defaultdict
|
|
|
9
9
|
from copy import deepcopy
|
|
10
10
|
|
|
11
11
|
import h5py
|
|
12
|
+
import numpy as np
|
|
12
13
|
from pydantic import BaseModel
|
|
13
14
|
|
|
14
15
|
from bec_lib import messages, plugin_helper
|
|
@@ -164,6 +165,8 @@ class HDF5StorageWriter:
|
|
|
164
165
|
data = json.dumps(data)
|
|
165
166
|
elif not all(isinstance(x, type(data[0])) for x in data):
|
|
166
167
|
data = json.dumps(data)
|
|
168
|
+
if isinstance(data, np.ndarray) and data.dtype.kind == "U":
|
|
169
|
+
data = data.astype(h5py.string_dtype(encoding="utf-8"))
|
|
167
170
|
dataset = container.create_dataset(name, data=data)
|
|
168
171
|
self.add_attribute(dataset, val.attrs)
|
|
169
172
|
self.add_content(dataset, val._storage)
|
|
@@ -175,7 +178,7 @@ class HDF5StorageWriter:
|
|
|
175
178
|
container.attrs["signal"] = "value"
|
|
176
179
|
except Exception:
|
|
177
180
|
content = traceback.format_exc()
|
|
178
|
-
logger.error(f"Failed to write dataset {name}: {content}")
|
|
181
|
+
logger.error(f"Failed to write dataset {container.name}/{name}: {content}")
|
|
179
182
|
return
|
|
180
183
|
|
|
181
184
|
def add_attribute(self, container: typing.Any, attributes: dict):
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Runtime config updates publish signal metadata before acknowledgement."""
|
|
2
|
+
|
|
3
|
+
import threading
|
|
4
|
+
from types import SimpleNamespace
|
|
5
|
+
from unittest import mock
|
|
6
|
+
|
|
7
|
+
import pytest
|
|
8
|
+
|
|
9
|
+
from bec_lib.bec_errors import DeviceConfigError
|
|
10
|
+
from bec_lib.messages import DeviceConfigMessage
|
|
11
|
+
from bec_server.device_server.devices.config_update_handler import ConfigUpdateHandler
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def make_handler():
|
|
15
|
+
device = SimpleNamespace(save_roi_data=True)
|
|
16
|
+
manager = SimpleNamespace(
|
|
17
|
+
devices={
|
|
18
|
+
"camera": SimpleNamespace(
|
|
19
|
+
obj=device, enabled=True, _config={"deviceConfig": {"save_roi_data": True}}
|
|
20
|
+
)
|
|
21
|
+
},
|
|
22
|
+
update_config=mock.Mock(
|
|
23
|
+
side_effect=lambda obj, cfg: setattr(obj, "save_roi_data", cfg["save_roi_data"])
|
|
24
|
+
),
|
|
25
|
+
publish_device_info=mock.Mock(return_value=None),
|
|
26
|
+
)
|
|
27
|
+
return SimpleNamespace(device_manager=manager), device
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_update_config_republishes_metadata_after_applying_values():
|
|
31
|
+
handler, device = make_handler()
|
|
32
|
+
observed = []
|
|
33
|
+
handler.device_manager.publish_device_info.side_effect = lambda obj: observed.append(
|
|
34
|
+
obj.save_roi_data
|
|
35
|
+
)
|
|
36
|
+
msg = DeviceConfigMessage(
|
|
37
|
+
action="update", config={"camera": {"deviceConfig": {"save_roi_data": False}}}
|
|
38
|
+
)
|
|
39
|
+
ConfigUpdateHandler._update_config(handler, msg, threading.Event())
|
|
40
|
+
assert observed == [False]
|
|
41
|
+
handler.device_manager.publish_device_info.assert_called_once_with(device)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def test_failed_metadata_publication_restores_old_config_and_metadata():
|
|
45
|
+
handler, device = make_handler()
|
|
46
|
+
handler.device_manager.publish_device_info.side_effect = [
|
|
47
|
+
RuntimeError("Metadata unavailable"),
|
|
48
|
+
None,
|
|
49
|
+
]
|
|
50
|
+
msg = DeviceConfigMessage(
|
|
51
|
+
action="update", config={"camera": {"deviceConfig": {"save_roi_data": False}}}
|
|
52
|
+
)
|
|
53
|
+
with pytest.raises(DeviceConfigError, match="Metadata unavailable"):
|
|
54
|
+
ConfigUpdateHandler._update_config(handler, msg, threading.Event())
|
|
55
|
+
assert device.save_roi_data is True
|
|
56
|
+
assert handler.device_manager.publish_device_info.call_count == 2
|
|
@@ -10,7 +10,11 @@ from bec_lib import messages, plugin_helper
|
|
|
10
10
|
from bec_lib.endpoints import MessageEndpoints
|
|
11
11
|
from bec_server.file_writer import HDF5FileWriter
|
|
12
12
|
from bec_server.file_writer.default_writer import DefaultFormat
|
|
13
|
-
from bec_server.file_writer.file_writer import
|
|
13
|
+
from bec_server.file_writer.file_writer import (
|
|
14
|
+
AdditionalScanMetadata,
|
|
15
|
+
HDF5Storage,
|
|
16
|
+
HDF5StorageWriter,
|
|
17
|
+
)
|
|
14
18
|
from bec_server.file_writer.file_writer_manager import ScanStorage
|
|
15
19
|
|
|
16
20
|
|
|
@@ -647,3 +651,27 @@ def test_hdf5_writer_forwards_written_async_signals(tmp_path, hdf5_file_writer,
|
|
|
647
651
|
)
|
|
648
652
|
|
|
649
653
|
assert CapturingFormatForTest.last_written_async_signals == {"waveform": ["waveform_data"]}
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
@pytest.mark.parametrize(
|
|
657
|
+
"data",
|
|
658
|
+
[
|
|
659
|
+
np.array(["cam.acquire_time", "roi1.selected_operations"]),
|
|
660
|
+
np.array([["µm", "曝光"], ["ROI", ""]]),
|
|
661
|
+
np.array([], dtype="U33"),
|
|
662
|
+
np.array("roi1.selected_operations"),
|
|
663
|
+
],
|
|
664
|
+
)
|
|
665
|
+
def test_storage_writer_numpy_unicode(tmp_path, data):
|
|
666
|
+
"""Configuration string arrays retain their shape and Unicode text in HDF5."""
|
|
667
|
+
storage = HDF5Storage()
|
|
668
|
+
dataset = storage.create_dataset("value", data=data)
|
|
669
|
+
dataset.attrs["description"] = "Configuration names"
|
|
670
|
+
path = tmp_path / "strings.h5"
|
|
671
|
+
with h5py.File(path, "w") as handle:
|
|
672
|
+
HDF5StorageWriter.write(storage._storage, handle)
|
|
673
|
+
with h5py.File(path, "r") as handle:
|
|
674
|
+
assert "value" in handle
|
|
675
|
+
assert handle["value"].shape == data.shape
|
|
676
|
+
np.testing.assert_array_equal(handle["value"].asstr()[()], data)
|
|
677
|
+
assert handle["value"].attrs["description"] == "Configuration names"
|
|
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-4.3.2 → bec_server-4.4.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
|
|
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-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/multi_region_grid_scan.py
RENAMED
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.0}/bec_server/scan_server/scans/multi_region_line_scan.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.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-4.3.2 → bec_server-4.4.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
|
|
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-4.3.2 → bec_server-4.4.0}/tests/tests_bec_server_utils/test_subprocess_launch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_data_processing/test_dap_service_manager.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
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/test_device_server_cli_launch.py
RENAMED
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_device_server/test_ophyd_callback_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_file_writer/test_file_writer_cli_launch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_bundler/test_scan_bundler_cli_launch.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-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_multi_region_grid_scan.py
RENAMED
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_multi_region_line_scan.py
RENAMED
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_position_preview.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
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/scans/test_updated_move_scan.py
RENAMED
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_beamline_state_manager.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-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_procedure_container_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_procedure_subprocess_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.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-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_server_cli_launch.py
RENAMED
|
File without changes
|
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.0}/tests/tests_scan_server/test_scan_server_scan_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-4.3.2 → bec_server-4.4.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
|
|
File without changes
|