bec-server 4.1.3__tar.gz → 4.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bec_server-4.1.3 → bec_server-4.1.4}/PKG-INFO +1 -1
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scan_queue.py +29 -7
- {bec_server-4.1.3 → bec_server-4.1.4}/pyproject.toml +1 -1
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_server_queue.py +123 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/.gitignore +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/.zed/debug.json +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/README.md +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/actors/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/actors/actor.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/actors/builtin_actor_manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/actors/manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/actors/scan_interlock.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/actors/worker.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/bec_server_utils/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/bec_server_utils/launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/bec_server_utils/service_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/bec_server_utils/subprocess_launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/bec_server_utils/tmux_launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/data_processing/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/data_processing/cli/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/data_processing/cli/launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/data_processing/dap_server.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/data_processing/dap_service.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/data_processing/dap_service_manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/data_processing/lmfit1d_service.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/bec_message_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/cli/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/cli/launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/device_server.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/devices/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/devices/config_update_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/devices/device_serializer.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/devices/devicemanager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/friendly_device_exceptions.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/ophyd_callback_monitor.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/rpc_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/tests/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/device_server/tests/utils.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/file_writer/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/file_writer/async_writer.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/file_writer/cli/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/file_writer/cli/launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/file_writer/default_writer.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/file_writer/file_writer.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/file_writer/file_writer_manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/file_writer/merged_dicts.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/Containerfile.bec_linux_base +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/Containerfile.requirements +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/Containerfile.worker +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/_dev_runner.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/builtin_procedures.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/constants.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/container_utils.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/container_worker.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/oop_worker_base.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/procedure_registry.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/protocol.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/subprocess_worker.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/procedures/worker_base.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_bundler/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_bundler/bec_emitter.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_bundler/cli/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_bundler/cli/launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_bundler/emitter.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_bundler/scan_bundler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/beamline_state_manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/cli/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/cli/launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/device_lock_registry.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/direct_scan_worker.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/errors.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/instruction_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scan_assembler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scan_guard.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scan_manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scan_server.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scan_worker.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/acquire.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/cont_line_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/device_rpc.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/fermat_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/grid_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/hexagonal_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/line_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/line_sweep_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/list_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/log_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/move.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/multi_region_grid_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/multi_region_line_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/path_optimization.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/position_generators.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/round_roi_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/round_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/scan_actions.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/scan_argument_modifier.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/scan_base.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/scan_components.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/scan_modifier.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/scan_status.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/time_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/updated_move.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/tests/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/tests/fixtures.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/tests/scan_fixtures.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/tests/scan_hook_tests.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/tests/utils.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/atlas/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/atlas/atlas_active_client_emitter.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/atlas/atlas_connector.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/atlas/atlas_forwarder.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/atlas/atlas_metadata_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/atlas/atlas_plugin_repo_emitter.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/atlas/config_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/cli/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/cli/launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/scihub.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/service_handler/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scihub/service_handler/service_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/test/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/test/actor_test_utils.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/bec_server/test/helpers.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_actors/test_actors.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_bec_server_utils/test_main.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_bec_server_utils/test_service_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_bec_server_utils/test_subprocess_launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_bec_server_utils/test_tmux_launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_data_processing/conftest.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_data_processing/test_dap_cli_launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_data_processing/test_dap_server.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_data_processing/test_dap_service_manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_data_processing/test_lmfit1d_service.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_device_server/conftest.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_device_server/test_config_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_device_server/test_device_instructions.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_device_server/test_device_manager_ds.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_device_server/test_device_serializer.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_device_server/test_device_server.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_device_server/test_device_server_cli_launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_device_server/test_ophyd_callback_monitor.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_device_server/test_rpc_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_file_writer/conftest.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_file_writer/test_async_file_writer.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_file_writer/test_file_writer.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_file_writer/test_file_writer_cli_launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_file_writer/test_file_writer_manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_bundler/conftest.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_bundler/test_bec_emitter.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_bundler/test_scan_bundler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_bundler/test_scan_bundler_cli_launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/conftest.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/__init__.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_acquire.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_cont_line_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_device_rpc_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_fermat_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_grid_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_hexagonal_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_line_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_line_sweep_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_list_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_log_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_move_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_multi_region_grid_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_multi_region_line_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_position_generators.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_relative_scan_return_to_start.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_round_roi_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_round_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_scan_actions.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_scan_components.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_scan_status.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_time_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_updated_move_scan.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_beamline_state_manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_builtin_actor_manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_container_utils.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_device_lock_registry.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_direct_scan_worker.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_instruction_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_path_optimization.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_procedure_container_worker.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_procedures.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_argument_modifier.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_assembler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_fixture_imports.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_guard.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_interlock.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_modifier.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_server_cli_launch.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_server_scan_manager.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_worker.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scihub/conftest.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scihub/test_atlas_active_client_emitter.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scihub/test_atlas_config_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scihub/test_atlas_connector.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scihub/test_atlas_forwarder.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scihub/test_atlas_metadata_handler.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scihub/test_atlas_plugin_repo_emitter.py +0 -0
- {bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scihub/test_scihub_cli_launch.py +0 -0
|
@@ -459,15 +459,19 @@ class QueueManager:
|
|
|
459
459
|
Expected: {instruction_queue}, actual: {instruction_queue.worker.current_instruction_queue_item}. Skipping abort."
|
|
460
460
|
)
|
|
461
461
|
return
|
|
462
|
-
que.worker_status = InstructionQueueStatus.STOPPED
|
|
463
462
|
if instruction_queue.scan_id and instruction_queue.scan_id[-1] is None:
|
|
464
463
|
stop_id = instruction_queue.queue_id
|
|
465
464
|
else:
|
|
466
465
|
stop_id = instruction_queue.scan_id
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
466
|
+
try:
|
|
467
|
+
self.stop_all_devices(
|
|
468
|
+
stop_id=stop_id,
|
|
469
|
+
devices=self._get_owned_devices_for_instruction_queue(instruction_queue),
|
|
470
|
+
)
|
|
471
|
+
finally:
|
|
472
|
+
# Attempt publication before cleanup, but still interrupt on publish failure.
|
|
473
|
+
if instruction_queue.status != InstructionQueueStatus.COMPLETED:
|
|
474
|
+
instruction_queue.status = InstructionQueueStatus.STOPPED
|
|
471
475
|
|
|
472
476
|
def _cancel_queue_item(self, target_queue_item: DirectInstructionQueueItem, queue: str) -> None:
|
|
473
477
|
"""
|
|
@@ -528,8 +532,26 @@ class QueueManager:
|
|
|
528
532
|
que = self.queues[queue]
|
|
529
533
|
with AutoResetCM(que):
|
|
530
534
|
que.status = ScanQueueStatus.PAUSED
|
|
531
|
-
|
|
532
|
-
|
|
535
|
+
instruction_queue = que.scan_worker.current_instruction_queue_item
|
|
536
|
+
if (
|
|
537
|
+
instruction_queue is not None
|
|
538
|
+
and instruction_queue.status != InstructionQueueStatus.COMPLETED
|
|
539
|
+
):
|
|
540
|
+
scan_ids = instruction_queue.scan_id
|
|
541
|
+
stop_id = (
|
|
542
|
+
instruction_queue.queue_id if scan_ids and scan_ids[-1] is None else scan_ids
|
|
543
|
+
)
|
|
544
|
+
try:
|
|
545
|
+
self.stop_all_devices(
|
|
546
|
+
stop_id=stop_id,
|
|
547
|
+
devices=self._get_owned_devices_for_instruction_queue(instruction_queue),
|
|
548
|
+
)
|
|
549
|
+
finally:
|
|
550
|
+
instruction_queue.status = InstructionQueueStatus.STOPPED
|
|
551
|
+
que.clear()
|
|
552
|
+
else:
|
|
553
|
+
que.worker_status = InstructionQueueStatus.STOPPED
|
|
554
|
+
que.clear()
|
|
533
555
|
|
|
534
556
|
@requires_queue
|
|
535
557
|
def set_restart(
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import threading
|
|
2
2
|
import time
|
|
3
|
+
from contextlib import nullcontext
|
|
3
4
|
from unittest import mock
|
|
4
5
|
|
|
5
6
|
import pytest
|
|
@@ -1017,6 +1018,128 @@ def test_set_abort_with_no_owned_devices_sends_stop_none(queuemanager_mock):
|
|
|
1017
1018
|
} in queue_manager.connector.message_sent
|
|
1018
1019
|
|
|
1019
1020
|
|
|
1021
|
+
@pytest.mark.parametrize("action", ["abort", "clear"])
|
|
1022
|
+
@pytest.mark.parametrize("has_scan_id", [False, True])
|
|
1023
|
+
@pytest.mark.parametrize("publish_fails", [False, True])
|
|
1024
|
+
def test_device_stop_precedes_worker_shutdown(
|
|
1025
|
+
dormant_scan_queue, action, has_scan_id, publish_fails
|
|
1026
|
+
):
|
|
1027
|
+
queue = dormant_scan_queue
|
|
1028
|
+
manager = queue.queue_manager
|
|
1029
|
+
registry = manager.parent.device_lock_registry
|
|
1030
|
+
item = DirectInstructionQueueItem(queue, mock.Mock(), queue.scan_worker)
|
|
1031
|
+
scan = _build_dummy_v4_scan("scan-id" if has_scan_id else None)
|
|
1032
|
+
scan.scan_info.metadata["RID"] = "stop-rid"
|
|
1033
|
+
item.scans = [scan]
|
|
1034
|
+
item.scan_msgs = [_queued_scan_message(rid="stop-rid")]
|
|
1035
|
+
item.active_scan = scan
|
|
1036
|
+
queue.queue.append(item)
|
|
1037
|
+
queue.active_instruction_queue = item
|
|
1038
|
+
queue.scan_worker.current_instruction_queue_item = item
|
|
1039
|
+
item.status = InstructionQueueStatus.RUNNING
|
|
1040
|
+
registry.get_owned_devices = mock.Mock(return_value=["samx"])
|
|
1041
|
+
manager.connector.message_sent = []
|
|
1042
|
+
original_stop = item.stop
|
|
1043
|
+
|
|
1044
|
+
def release_on_shutdown():
|
|
1045
|
+
# Model the direct worker releasing ownership immediately on interruption.
|
|
1046
|
+
registry.get_owned_devices.return_value = []
|
|
1047
|
+
stops = [
|
|
1048
|
+
sent["msg"]
|
|
1049
|
+
for sent in manager.connector.message_sent
|
|
1050
|
+
if sent["queue"] == MessageEndpoints.stop_devices()
|
|
1051
|
+
]
|
|
1052
|
+
if publish_fails:
|
|
1053
|
+
assert not stops
|
|
1054
|
+
else:
|
|
1055
|
+
assert len(stops) == 1
|
|
1056
|
+
assert stops[0].value == ["samx"]
|
|
1057
|
+
expected_stop_id = item.scan_id if has_scan_id else item.queue_id
|
|
1058
|
+
assert stops[0].metadata["stop_id"] == expected_stop_id
|
|
1059
|
+
original_stop()
|
|
1060
|
+
|
|
1061
|
+
def fail_stop_publication(endpoint, msg):
|
|
1062
|
+
assert endpoint == MessageEndpoints.stop_devices()
|
|
1063
|
+
assert msg.value == ["samx"]
|
|
1064
|
+
raise RuntimeError("Stop publication failed")
|
|
1065
|
+
|
|
1066
|
+
publication = (
|
|
1067
|
+
mock.patch.object(manager.connector, "send", side_effect=fail_stop_publication)
|
|
1068
|
+
if publish_fails
|
|
1069
|
+
else nullcontext()
|
|
1070
|
+
)
|
|
1071
|
+
expected_error = (
|
|
1072
|
+
pytest.raises(RuntimeError, match="Stop publication failed")
|
|
1073
|
+
if publish_fails
|
|
1074
|
+
else nullcontext()
|
|
1075
|
+
)
|
|
1076
|
+
with publication, mock.patch.object(item, "stop", side_effect=release_on_shutdown):
|
|
1077
|
+
with expected_error:
|
|
1078
|
+
getattr(manager, f"set_{action}")(queue="primary")
|
|
1079
|
+
assert item.status == InstructionQueueStatus.STOPPED
|
|
1080
|
+
assert queue.status == ScanQueueStatus.PAUSED
|
|
1081
|
+
if action == "clear":
|
|
1082
|
+
assert not queue.queue
|
|
1083
|
+
assert queue.active_instruction_queue is None
|
|
1084
|
+
|
|
1085
|
+
|
|
1086
|
+
@pytest.mark.parametrize("retire_target", [False, True])
|
|
1087
|
+
@pytest.mark.parametrize("publish_fails", [False, True])
|
|
1088
|
+
def test_abort_preserves_completed_target_and_following_item(
|
|
1089
|
+
dormant_scan_queue, retire_target, publish_fails
|
|
1090
|
+
):
|
|
1091
|
+
# pylint: disable=redefined-outer-name
|
|
1092
|
+
queue = dormant_scan_queue
|
|
1093
|
+
manager = queue.queue_manager
|
|
1094
|
+
manager.add_to_queue("primary", _queued_scan_message(rid="original"))
|
|
1095
|
+
manager.add_to_queue("primary", _queued_scan_message(rid="following"))
|
|
1096
|
+
original, following = queue.queue
|
|
1097
|
+
original.active_scan = original.scans[0]
|
|
1098
|
+
original.status = InstructionQueueStatus.RUNNING
|
|
1099
|
+
queue.active_instruction_queue = original
|
|
1100
|
+
queue.scan_worker.current_instruction_queue_item = original
|
|
1101
|
+
send = manager.connector.send
|
|
1102
|
+
|
|
1103
|
+
def complete_during_publication(endpoint, msg):
|
|
1104
|
+
assert endpoint == MessageEndpoints.stop_devices()
|
|
1105
|
+
# Model the worker completing and optionally retiring the original during publication.
|
|
1106
|
+
original.status = InstructionQueueStatus.COMPLETED
|
|
1107
|
+
queue.scan_worker.current_instruction_queue_item = None
|
|
1108
|
+
if retire_target:
|
|
1109
|
+
assert queue.queue.popleft() is original
|
|
1110
|
+
if publish_fails:
|
|
1111
|
+
raise RuntimeError("Stop publication failed")
|
|
1112
|
+
send(endpoint, msg)
|
|
1113
|
+
|
|
1114
|
+
expected_error = (
|
|
1115
|
+
pytest.raises(RuntimeError, match="Stop publication failed")
|
|
1116
|
+
if publish_fails
|
|
1117
|
+
else nullcontext()
|
|
1118
|
+
)
|
|
1119
|
+
with mock.patch.object(manager.connector, "send", side_effect=complete_during_publication):
|
|
1120
|
+
with expected_error:
|
|
1121
|
+
manager.set_abort(request_id="original")
|
|
1122
|
+
|
|
1123
|
+
assert original.status == InstructionQueueStatus.COMPLETED
|
|
1124
|
+
assert following.status == InstructionQueueStatus.PENDING
|
|
1125
|
+
assert not following.scans[0]._shutdown_event.is_set()
|
|
1126
|
+
assert queue.status == ScanQueueStatus.PAUSED
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
def test_clear_pending_queue_does_not_stop_devices(dormant_scan_queue):
|
|
1130
|
+
queue = dormant_scan_queue
|
|
1131
|
+
manager = queue.queue_manager
|
|
1132
|
+
manager.add_to_queue("primary", _queued_scan_message())
|
|
1133
|
+
manager.connector.message_sent = []
|
|
1134
|
+
|
|
1135
|
+
manager.set_clear(queue="primary")
|
|
1136
|
+
|
|
1137
|
+
assert not queue.queue
|
|
1138
|
+
assert not any(
|
|
1139
|
+
sent["queue"] == MessageEndpoints.stop_devices() for sent in manager.connector.message_sent
|
|
1140
|
+
)
|
|
1141
|
+
|
|
1142
|
+
|
|
1020
1143
|
@pytest.mark.timeout(5)
|
|
1021
1144
|
def test_set_clear_sends_message(queuemanager_mock):
|
|
1022
1145
|
queue_manager = queuemanager_mock()
|
|
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.1.3 → bec_server-4.1.4}/bec_server/device_server/devices/config_update_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-4.1.3 → bec_server-4.1.4}/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
|
{bec_server-4.1.3 → bec_server-4.1.4}/bec_server/scan_server/scans/multi_region_grid_scan.py
RENAMED
|
File without changes
|
{bec_server-4.1.3 → bec_server-4.1.4}/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.1.3 → bec_server-4.1.4}/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.1.3 → bec_server-4.1.4}/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.1.3 → bec_server-4.1.4}/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.1.3 → bec_server-4.1.4}/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.1.3 → bec_server-4.1.4}/tests/tests_device_server/test_device_server_cli_launch.py
RENAMED
|
File without changes
|
{bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_device_server/test_ophyd_callback_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-4.1.3 → bec_server-4.1.4}/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.1.3 → bec_server-4.1.4}/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.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_multi_region_grid_scan.py
RENAMED
|
File without changes
|
{bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_multi_region_line_scan.py
RENAMED
|
File without changes
|
{bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_position_generators.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.1.3 → bec_server-4.1.4}/tests/tests_scan_server/scans/test_updated_move_scan.py
RENAMED
|
File without changes
|
{bec_server-4.1.3 → bec_server-4.1.4}/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.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_procedure_container_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
{bec_server-4.1.3 → bec_server-4.1.4}/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.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_server_cli_launch.py
RENAMED
|
File without changes
|
{bec_server-4.1.3 → bec_server-4.1.4}/tests/tests_scan_server/test_scan_server_scan_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bec_server-4.1.3 → bec_server-4.1.4}/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
|