mx-bluesky 1.5.2__tar.gz → 1.5.3__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.
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.vscode/mx-bluesky.code-workspace +2 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/PKG-INFO +4 -3
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/conftest.py +1 -1
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/hyperion/reference/coordinate-systems.rst +1 -1
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/index.rst +7 -0
- mx_bluesky-1.5.3/docs/user/hyperion/alerts.rst +68 -0
- mx_bluesky-1.5.3/docs/user/hyperion/configuration.rst +25 -0
- mx_bluesky-1.5.3/docs/user/hyperion/index.rst +25 -0
- mx_bluesky-1.5.3/docs/user/hyperion/logging.rst +41 -0
- mx_bluesky-1.5.3/docs/user/hyperion/pvs.rst +12 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/mx-bluesky-blueapi/values.yaml +0 -6
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/pyproject.toml +6 -4
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/_version.py +16 -3
- mx_bluesky-1.5.3/src/mx_bluesky/beamlines/i04/__init__.py +10 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py +3 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +2 -2
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py +12 -2
- mx_bluesky-1.5.3/src/mx_bluesky/common/external_interaction/alerting/__init__.py +13 -0
- mx_bluesky-1.5.3/src/mx_bluesky/common/external_interaction/alerting/_service.py +82 -0
- mx_bluesky-1.5.3/src/mx_bluesky/common/external_interaction/alerting/log_based_service.py +57 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py +28 -4
- mx_bluesky-1.5.3/src/mx_bluesky/common/external_interaction/config_server.py +154 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/parameters/constants.py +26 -8
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/parameters/gridscan.py +1 -1
- mx_bluesky-1.5.3/src/mx_bluesky/hyperion/__main__.py +195 -0
- mx_bluesky-1.5.3/src/mx_bluesky/hyperion/baton_handler.py +177 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +29 -24
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +4 -1
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +12 -4
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +1 -1
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +2 -3
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +128 -73
- mx_bluesky-1.5.3/src/mx_bluesky/hyperion/external_interaction/alerting/constants.py +12 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +5 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +2 -2
- mx_bluesky-1.5.3/src/mx_bluesky/hyperion/external_interaction/config_server.py +16 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/parameters/cli.py +15 -3
- mx_bluesky-1.5.3/src/mx_bluesky/hyperion/parameters/components.py +10 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/parameters/constants.py +20 -4
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/parameters/gridscan.py +22 -14
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +1 -14
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/parameters/robot_load.py +1 -4
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/parameters/rotation.py +1 -2
- mx_bluesky-1.5.3/src/mx_bluesky/hyperion/plan_runner.py +78 -0
- mx_bluesky-1.5.3/src/mx_bluesky/hyperion/runner.py +189 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky.egg-info/PKG-INFO +4 -3
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky.egg-info/SOURCES.txt +24 -17
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky.egg-info/entry_points.txt +0 -2
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky.egg-info/requires.txt +3 -2
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/conftest.py +39 -12
- mx_bluesky-1.5.3/tests/system_tests/hyperion/external_interaction/alerting/test_log_based_alerts.py +87 -0
- mx_bluesky-1.5.3/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +148 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/system_tests/hyperion/external_interaction/test_baton_handler_soak.py +35 -7
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +0 -1
- mx_bluesky-1.5.3/tests/test_data/agamemnon/example_wait.json +3 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +0 -3
- mx_bluesky-1.5.3/tests/test_data/test_domain_properties +73 -0
- mx_bluesky-1.5.3/tests/test_data/test_domain_properties_with_no_gpu +73 -0
- mx_bluesky-1.5.3/tests/test_data/test_domain_properties_with_panda +73 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py +4 -2
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/device_setup_plans/test_xbpm_feedback.py +0 -5
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/experiment_plans/test_grid_detection_plan.py +16 -0
- mx_bluesky-1.5.3/tests/unit_tests/common/external_interaction/alerting/alerting/test_alerting.py +86 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/conftest.py +1 -3
- mx_bluesky-1.5.3/tests/unit_tests/common/external_interaction/test_config_server.py +158 -0
- mx_bluesky-1.5.3/tests/unit_tests/common/parameters/test_constants.py +25 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/conftest.py +78 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/conftest.py +17 -7
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +32 -5
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +4 -2
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_hyperion_flyscan_xray_centre_plan.py +5 -18
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +4 -8
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +2 -2
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +1 -1
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +2 -3
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +1 -2
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +64 -58
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +3 -11
- mx_bluesky-1.5.3/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +61 -30
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +9 -0
- mx_bluesky-1.5.3/tests/unit_tests/hyperion/external_interaction/nexus/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +124 -59
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +3 -3
- mx_bluesky-1.5.3/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +32 -46
- mx_bluesky-1.5.3/tests/unit_tests/hyperion/test_baton_handler.py +636 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/test_main_system.py +143 -15
- mx_bluesky-1.5.3/tests/unit_tests/hyperion/test_runner.py +95 -0
- mx_bluesky-1.5.3/tests/unit_tests/hyperion/utils/__init__.py +0 -0
- mx_bluesky-1.5.3/tests/unit_tests/t01.py +22 -0
- mx_bluesky-1.5.2/helm/mx-bluesky-blueapi/templates/ispyb-config.yaml +0 -18
- mx_bluesky-1.5.2/hyperion_other/workflows/add_assignee_when_pr_opened.yml +0 -26
- mx_bluesky-1.5.2/hyperion_other/workflows/assigned_issues_to_in_progress.yml +0 -13
- mx_bluesky-1.5.2/hyperion_other/workflows/get_issue_from_pr.yml +0 -51
- mx_bluesky-1.5.2/hyperion_other/workflows/get_project_data_and_move_column.yml +0 -98
- mx_bluesky-1.5.2/hyperion_other/workflows/linkcheck.yml +0 -34
- mx_bluesky-1.5.2/hyperion_other/workflows/open_prs_to_review.yml +0 -19
- mx_bluesky-1.5.2/hyperion_other/workflows/opened_issues_to_backlog.yml +0 -13
- mx_bluesky-1.5.2/hyperion_other/workflows/pin_versions.py +0 -136
- mx_bluesky-1.5.2/hyperion_other/workflows/pre_release_workflow.yml +0 -48
- mx_bluesky-1.5.2/hyperion_other/workflows/rework_prs_to_in_progress.yml +0 -19
- mx_bluesky-1.5.2/hyperion_other/workflows/test_data/pip_freeze.txt +0 -248
- mx_bluesky-1.5.2/hyperion_other/workflows/test_data/setup.cfg +0 -75
- mx_bluesky-1.5.2/hyperion_other/workflows/test_data/setup.cfg.pinned +0 -74
- mx_bluesky-1.5.2/hyperion_other/workflows/test_data/setup.cfg.unpinned +0 -74
- mx_bluesky-1.5.2/hyperion_other/workflows/test_pin_versions.py +0 -79
- mx_bluesky-1.5.2/src/mx_bluesky/beamlines/i04/__init__.py +0 -6
- mx_bluesky-1.5.2/src/mx_bluesky/common/external_interaction/config_server.py +0 -57
- mx_bluesky-1.5.2/src/mx_bluesky/hyperion/__main__.py +0 -323
- mx_bluesky-1.5.2/src/mx_bluesky/hyperion/baton_handler.py +0 -121
- mx_bluesky-1.5.2/src/mx_bluesky/hyperion/external_interaction/config_server.py +0 -35
- mx_bluesky-1.5.2/src/mx_bluesky/hyperion/parameters/components.py +0 -8
- mx_bluesky-1.5.2/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +0 -92
- mx_bluesky-1.5.2/tests/system_tests/hyperion/external_interaction/test_config_service.py +0 -61
- mx_bluesky-1.5.2/tests/unit_tests/common/external_interaction/test_config_server.py +0 -38
- mx_bluesky-1.5.2/tests/unit_tests/hyperion/test_baton_handler.py +0 -266
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.copier-answers.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.coveragerc +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.devcontainer/Dockerfile +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.devcontainer/devcontainer.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.dockerignore +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/CODEOWNERS +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/CONTRIBUTING.md +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/ISSUE_TEMPLATE/issue.md +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/actions/install_requirements/action.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/actions/verify-nexus/Dockerfile +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/actions/verify-nexus/action.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/actions/verify-nexus/entrypoint.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/dependabot.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/pages/index.html +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/pages/make_switcher.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/_check.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/_container.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/_dist.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/_docs.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/_helm.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/_pypi.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/_release.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/_test.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/_tox.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/ci.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.github/workflows/periodic.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.gitignore +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.pre-commit-config.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.vscode/extensions.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.vscode/launch.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.vscode/settings.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/.vscode/tasks.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/Dockerfile +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/Dockerfile.blueapi +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/Dockerfile.hyperion +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/LICENSE +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/README.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/catalog-info.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/codecov.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/_api.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/_templates/custom-module-template.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/conf.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/code-map/grid_detect_then_xray_centre.drawio.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/code-map/grid_detect_xrc.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/code-map/index.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/explanations/callback_and_run_logic.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/explanations/containerised_mx_bluesky.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/explanations/decisions.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/how-to/contribute.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/how-to/create-a-release.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/how-to/get-started.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/index.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/reference/standards.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/general/tutorials/profile-tests.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/hyperion/deploying-hyperion.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/hyperion/how-to/update-panda-ioc.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/hyperion/index.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/hyperion/reference/coordinate-systems.puml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/hyperion/reference/gridscan.puml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/hyperion/reference/readme.md +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/hyperion/system-tests.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/index.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/murko-integration/index.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/serial-crystallography-on-i24/how-to/pmac-docs.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/serial-crystallography-on-i24/index.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/images/176701633-b93bba62-b2e7-4740-a863-c6b388beb14f.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/images/207297611-f67dfc25-a3a5-4ade-a1e7-28b54a136fa6.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/images/dls-favicon.ico +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/images/dls-logo.svg +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/images/motor coordinate systems.odg +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/images/motor-coords-omega-0.svg +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/images/motor-coords-omega-alpha.svg +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/hyperion/Chart.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/hyperion/templates/deployment.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/hyperion/templates/ingress.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/hyperion/templates/service.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/hyperion/templates/zocalo-config.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/hyperion/values.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/mx-bluesky-blueapi/Chart.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/mx-bluesky-blueapi/templates/zocalo-config.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/redis-to-murko/Chart.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/redis-to-murko/templates/deployment.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/helm/redis-to-murko/values.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/pull_request_template.md +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/run_hyperion.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/run_hyperion_in_podman.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/setup.cfg +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/__main__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/aithre_lasershaping/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/aithre_lasershaping/beamline_safe.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i04/experiment_plans/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i04/thawing_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i23/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i23/serial.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/dcid.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/extruder/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s1l.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s2l.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/log.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/device_setup_plans/manipulate_sample.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/device_setup_plans/position_detector.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/device_setup_plans/robot_load_unload.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/device_setup_plans/setup_oav.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/device_setup_plans/setup_panda.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/device_setup_plans/utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/device_setup_plans/xbpm_feedback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/experiment_plans/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/experiment_plans/change_aperture_then_move_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/experiment_plans/common_flyscan_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/experiment_plans/common_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/experiment_plans/inner_plans/__init__ .py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/experiment_plans/inner_plans/do_fgs.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/experiment_plans/inner_plans/write_sample_status.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/experiment_plans/oav_snapshot_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/common/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/ispyb/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/nexus/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/nexus/nexus_utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/external_interaction/nexus/write_nexus.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/parameters/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/parameters/components.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/parameters/device_composites.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/preprocessors/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/preprocessors/preprocessors.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/protocols/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/protocols/protocols.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/utils/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/utils/context.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/utils/exceptions.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/utils/log.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/utils/tracing.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/utils/utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/common/xrc_result.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/definitions.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/device_setup_plans/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/hyperion_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
- {mx_bluesky-1.5.2/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.5.3/src/mx_bluesky/hyperion/external_interaction/alerting}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_actions/ispyb_callback.py +0 -0
- {mx_bluesky-1.5.2/src/mx_bluesky/phase1_zebra/device_setup_plans → mx_bluesky-1.5.3/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/parameters/device_composites.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/utils/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/hyperion/utils/context.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/jupyter_example.ipynb +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/phase1_zebra/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests → mx_bluesky-1.5.3/src/mx_bluesky/phase1_zebra/device_setup_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/phase1_zebra/device_setup_plans/setup_zebra.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky.egg-info/top_level.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/start_jupyter.sh +0 -0
- {mx_bluesky-1.5.2/tests/system_tests → mx_bluesky-1.5.3/tests}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/system_tests/hyperion → mx_bluesky-1.5.3/tests/system_tests}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/system_tests/common/device_setup_plans/test_robot_load_unload.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/system_tests/conftest.py +0 -0
- {mx_bluesky-1.5.2/tests/system_tests/hyperion/external_interaction → mx_bluesky-1.5.3/tests/system_tests/hyperion}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/system_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.5.3/tests/system_tests/hyperion/external_interaction}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests → mx_bluesky-1.5.3/tests/system_tests/hyperion/external_interaction/alerting}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/beamlines → mx_bluesky-1.5.3/tests/system_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/system_tests/hyperion/external_interaction/conftest.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/agamemnon/example_collect_multipin.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/agamemnon/example_native.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/ispyb-test-credentials.cfg +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/nexus_files/README.md +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/nexus_files/fake_data.h5 +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/rabbitmq-test-credentials.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/scratch/README +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_OAVCentring.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_beamline_parameters.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_config.cfg +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_daq_configuration/OAVCentring_hyperion.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_daq_configuration/display.configuration +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_daq_configuration/lookup/BeamLine_Undulator_toGap.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_det_dist_converter.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_display.configuration +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_images/generate_snapshot_input.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_images/generate_snapshot_output.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_images/ins_15_33_0.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_images/ins_15_33_90.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_images/ins_15_33_expected_0.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_images/ins_15_33_expected_270.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_images/thau_1_91_0.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_images/thau_1_91_90.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_images/thau_1_91_expected_0.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_images/thau_1_91_expected_270.png +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_lookup_table.txt +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/test_mirror_focus.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/test_data/zocalo-test-configuration.yaml +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24 → mx_bluesky-1.5.3/tests/unit_tests}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24/serial → mx_bluesky-1.5.3/tests/unit_tests/beamlines}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/aithre_lasershaping/test_beamline_safe.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/aithre_lasershaping/test_check_goniometer_performance.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/aithre_lasershaping/test_goniometer_controls.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i04/test_i04_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i04/test_thawing.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i23/test_serial.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24/serial/extruder → mx_bluesky-1.5.3/tests/unit_tests/beamlines/i24}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24/serial/fixed_target → mx_bluesky-1.5.3/tests/unit_tests/beamlines/i24/serial}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/conftest.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24/serial/setup_beamline → mx_bluesky-1.5.3/tests/unit_tests/beamlines/i24/serial/extruder}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24/serial/web_gui → mx_bluesky-1.5.3/tests/unit_tests/beamlines/i24/serial/fixed_target}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/common → mx_bluesky-1.5.3/tests/unit_tests/beamlines/i24/serial/setup_beamline}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/common/experiment_plans → mx_bluesky-1.5.3/tests/unit_tests/beamlines/i24/serial/web_gui}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/common/experiment_plans/inner_plans → mx_bluesky-1.5.3/tests/unit_tests/common}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/common/external_interaction → mx_bluesky-1.5.3/tests/unit_tests/common/experiment_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/common/external_interaction/callbacks → mx_bluesky-1.5.3/tests/unit_tests/common/experiment_plans/inner_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/experiment_plans/inner_plans/test_do_fgs.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/experiment_plans/inner_plans/test_read_hardware.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/experiment_plans/inner_plans/test_write_sample_status.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/experiment_plans/test_change_aperture_then_move_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/experiment_plans/test_common_flyscan_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/experiment_plans/test_common_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/experiment_plans/test_oav_snapshot_plan.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/common/external_interaction/callbacks/common → mx_bluesky-1.5.3/tests/unit_tests/common/external_interaction}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/common/external_interaction/callbacks/ispyb → mx_bluesky-1.5.3/tests/unit_tests/common/external_interaction/alerting}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/common/parameters → mx_bluesky-1.5.3/tests/unit_tests/common/external_interaction/alerting/alerting}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/common/preprocessors → mx_bluesky-1.5.3/tests/unit_tests/common/external_interaction/callbacks}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/common/utils → mx_bluesky-1.5.3/tests/unit_tests/common/external_interaction/callbacks/common}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/callbacks/common/test_abstract_event.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/hyperion → mx_bluesky-1.5.3/tests/unit_tests/common/external_interaction/callbacks/ispyb}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/callbacks/ispyb/conftest.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_expeye_interaction.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/callbacks/test_zocalo_handler.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/test_ispyb_utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/xray_centre/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_handler.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/external_interaction/xray_centre/test_nexus_handler.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/hyperion/device_setup_plans → mx_bluesky-1.5.3/tests/unit_tests/common/parameters}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/parameters/test_components.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/hyperion/experiment_plans → mx_bluesky-1.5.3/tests/unit_tests/common/preprocessors}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/preprocessors/test_preprocessors.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.5.3/tests/unit_tests/common/utils}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/common/utils/test_log.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.5.3/tests/unit_tests/hyperion}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.5.3/tests/unit_tests/hyperion/device_setup_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.5.3/tests/unit_tests/hyperion/experiment_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/conftest.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_hyperion_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/hyperion/external_interaction/nexus → mx_bluesky-1.5.3/tests/unit_tests/hyperion/external_interaction}/__init__.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/hyperion/parameters → mx_bluesky-1.5.3/tests/unit_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -0
- {mx_bluesky-1.5.2/tests/unit_tests/hyperion/utils → mx_bluesky-1.5.3/tests/unit_tests/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/test_utils.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/tests/unit_tests/test_cli.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/beam_off_trickery.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/build_docker_image.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/build_imginfo.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/deploy/create_venv.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/deploy/deploy_mx_bluesky.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/deploy/test_deploy.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/dev_jaeger_container.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/dls_dev_env.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/docker/entrypoint.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/docker/healthcheck.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/docker/i03-compose.yml +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/generate_plantuml.py +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/graylog/Dockerfile +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/graylog/tcp_input.json +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/procserv_ioc_start.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/run_imginfo.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/setup_graylog.sh +0 -0
- {mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/utility_scripts/strip_metafile.py +0 -0
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
"editor.defaultFormatter": "ms-python.black-formatter"
|
|
14
14
|
},
|
|
15
15
|
"python.defaultInterpreterPath": ".venv/bin/python",
|
|
16
|
+
"python.analysis.extraPaths": ["../dodal"],
|
|
17
|
+
"python.analysis.autoImportCompletions": true,
|
|
16
18
|
"terminal.integrated.gpuAcceleration": "off",
|
|
17
19
|
"esbonio.sphinx.confDir": ""
|
|
18
20
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mx-bluesky
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.3
|
|
4
4
|
Summary: Bluesky tools for MX Beamlines at DLS
|
|
5
5
|
Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -235,12 +235,13 @@ Requires-Dist: scipy
|
|
|
235
235
|
Requires-Dist: semver
|
|
236
236
|
Requires-Dist: deepdiff
|
|
237
237
|
Requires-Dist: matplotlib
|
|
238
|
+
Requires-Dist: cachetools
|
|
239
|
+
Requires-Dist: daq-config-server>=v1.0.0-rc.2
|
|
238
240
|
Requires-Dist: blueapi>=0.15.0
|
|
239
|
-
Requires-Dist: daq-config-server==0.1.1
|
|
240
241
|
Requires-Dist: ophyd>=1.10.5
|
|
241
242
|
Requires-Dist: ophyd-async>=0.10.0a2
|
|
242
243
|
Requires-Dist: bluesky>=1.13.1
|
|
243
|
-
Requires-Dist: dls-dodal
|
|
244
|
+
Requires-Dist: dls-dodal>=1.55.0
|
|
244
245
|
Provides-Extra: dev
|
|
245
246
|
Requires-Dist: black; extra == "dev"
|
|
246
247
|
Requires-Dist: build; extra == "dev"
|
|
@@ -19,5 +19,5 @@ def pytest_addoption(parser):
|
|
|
19
19
|
@pytest.fixture(scope="session", autouse=True)
|
|
20
20
|
def default_session_fixture() -> Iterator[None]:
|
|
21
21
|
print("Patching bluesky 0MQ Publisher in __main__ for the whole session")
|
|
22
|
-
with patch("mx_bluesky.hyperion.
|
|
22
|
+
with patch("mx_bluesky.hyperion.runner.Publisher"):
|
|
23
23
|
yield
|
{mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/docs/developer/hyperion/reference/coordinate-systems.rst
RENAMED
|
@@ -20,7 +20,7 @@ defined by ``rotation_direction`` which can be ``POSITIVE`` or ``NEGATIVE``
|
|
|
20
20
|
|
|
21
21
|
The coordinate systems of the underlying hardware may differ from the request. At Diamond traditionally the omega
|
|
22
22
|
axis is implemented to be in the opposite direction, therefore the commands sent to the hardware are transformed and
|
|
23
|
-
the ``omega_flip``
|
|
23
|
+
the ``omega_flip`` flag controls this behaviour, which by default is set to ``True`` as this is
|
|
24
24
|
generally expected to be required for the beamlines here.
|
|
25
25
|
|
|
26
26
|
In the Nexus output file, there is provision for describing the choice of axis orientations in the nexus file, and
|
|
@@ -16,7 +16,14 @@ The documentation consists of a Developer Guide for MX-Bluesky, which also inclu
|
|
|
16
16
|
|
|
17
17
|
The Developer Guide contains documentation on how to install, develop and contribute changes to MX-Bluesky; explanations about the purpose of the software and some of the technical concepts; as well as how-to guides and tutorials.
|
|
18
18
|
|
|
19
|
+
.. grid-item-card:: :material-regular:`code;4em`
|
|
20
|
+
:link: user/hyperion/index
|
|
21
|
+
:link-type: doc
|
|
22
|
+
|
|
23
|
+
The User Guide for the Hyperion UDC Service
|
|
24
|
+
|
|
19
25
|
.. toctree::
|
|
20
26
|
:hidden:
|
|
21
27
|
|
|
22
28
|
developer/index
|
|
29
|
+
user/hyperion/index
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
Alerts
|
|
2
|
+
------
|
|
3
|
+
|
|
4
|
+
Hyperion can be configured to raise in order to notify staff of issues with data collections or with Hyperion
|
|
5
|
+
itself.
|
|
6
|
+
|
|
7
|
+
The currently supported alerting backend uses graylog alerting to send email alert notifications.
|
|
8
|
+
|
|
9
|
+
Graylog Alert Configuration
|
|
10
|
+
===========================
|
|
11
|
+
|
|
12
|
+
When hyperion generates an alert it will generate the alert in the form of a log message that will be logged to graylog
|
|
13
|
+
in the normal way.
|
|
14
|
+
|
|
15
|
+
The log message will have the message ``***ALERT*** summary=<summary> content=<content>`` and will have the following
|
|
16
|
+
metadata as fields in the log message.
|
|
17
|
+
|
|
18
|
+
.. csv-table:: Log message fields
|
|
19
|
+
:widths: auto
|
|
20
|
+
:header: "Field", "Description"
|
|
21
|
+
|
|
22
|
+
"alert_summary", "A single line summary of the alert, that could e.g. be used in an email summary"
|
|
23
|
+
"alert_content", "The plain text body of the alert message"
|
|
24
|
+
"beamline", "Beamline on which the alert was raised"
|
|
25
|
+
"container", "Container ID that was being processed"
|
|
26
|
+
"ispyb_url", "Link to the ISPyB page of the affected sample"
|
|
27
|
+
"graylog_url", "Link to the graylog stream in the minutes up to the event"
|
|
28
|
+
"proposal", "Proposal that was being processed"
|
|
29
|
+
"sample_id", "Sample ID that was being processed"
|
|
30
|
+
"visit", "Visit that was being processed"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
In order to configure alerts in Graylog you will need appropriate Graylog permissions to edit Event Definitions and
|
|
34
|
+
Notifications.
|
|
35
|
+
|
|
36
|
+
Event Definitions define which log messages will trigger a Graylog Event, and the information that is contained in
|
|
37
|
+
the event.
|
|
38
|
+
|
|
39
|
+
Notifications are triggered by a Graylog Event and define how the information in the event is dispatched to the
|
|
40
|
+
recipient(s).
|
|
41
|
+
|
|
42
|
+
For the authoritative Graylog documentation, please see https://go2docs.graylog.org/current/interacting_with_your_log_data/alerts.html
|
|
43
|
+
|
|
44
|
+
Notification Configuration
|
|
45
|
+
--------------------------
|
|
46
|
+
|
|
47
|
+
Go to the Alerts->Notifications tab in Graylog, you should see a searchable list of notifications, clicking on the
|
|
48
|
+
notification you want to edit and click the "Edit Notification" button.
|
|
49
|
+
|
|
50
|
+
For an email notification, you can edit the subject, recipients, and the plain-text and HTML body.
|
|
51
|
+
|
|
52
|
+
Inside the subject and body fields, you can include metadata from the event, for example ``${event.timestamp}`` will
|
|
53
|
+
expand to the event timestamp.
|
|
54
|
+
|
|
55
|
+
All the fields that are available in the event are available under the ``event.fields`` object, e.g. ``${event.fields.alert_summary}``
|
|
56
|
+
|
|
57
|
+
Event Definitions
|
|
58
|
+
-----------------
|
|
59
|
+
|
|
60
|
+
In order to access fields from the log message, including the ones explicitly added by Hyperion and also any other
|
|
61
|
+
ones that graylog appends to the message, you must configure the Event Definition.
|
|
62
|
+
|
|
63
|
+
To configure the Event Definition, go to the Alerts->Event Definitions tab and click on the notification definition,
|
|
64
|
+
then click "Edit Event Definition".
|
|
65
|
+
|
|
66
|
+
Under Filter & Aggregation you can configure the conditions under which an event will be generated.
|
|
67
|
+
Under Fields you can add custom fields to the event, for each additional field that you want to use in the
|
|
68
|
+
notification, you should click Add Custom Field, then populate the fields, see the existing definitions as a guide.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Configuration
|
|
2
|
+
-------------
|
|
3
|
+
|
|
4
|
+
Configuration of several properties that control Hyperion execution are available. These can be edited in the
|
|
5
|
+
``domain.properties`` file typically found in
|
|
6
|
+
|
|
7
|
+
::
|
|
8
|
+
|
|
9
|
+
/dls_sw/<beamline>/software/daq_configuration/domain.properties
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
.. csv-table:: Configuration properties
|
|
13
|
+
:widths: auto
|
|
14
|
+
:header: "Property Name", "Type", "Description"
|
|
15
|
+
|
|
16
|
+
"gda.gridscan.hyperion.flaskServerAddress", "host:port", "Configures the Hyperion server address that GDA connects to."
|
|
17
|
+
"gda.gridscan.hyperion.multipin", "boolean", "Controls whether multipin collection is enabled."
|
|
18
|
+
"gda.hyperion.use_grid_snapshots_for_rotation", "boolean", "If true, then rotation snapshots are generated from the grid snapshots instead of directly capturing them"
|
|
19
|
+
"gda.mx.hyperion.enabled", "boolean", "Controls whether GDA invokes Hyperion or performs collection itself"
|
|
20
|
+
"gda.mx.hyperion.panda.runnup_distance_mm", "double", "Controls the panda runup distance."
|
|
21
|
+
"gda.mx.hyperion.xrc.box_size", "double", "Configures the grid scan box size in microns."
|
|
22
|
+
"gda.mx.hyperion.use_panda_for_gridscans", "boolean", "If true then the Panda is used instead of the Zebra for XRC gridscans"
|
|
23
|
+
"gda.mx.hyperion.xrc.use_gpu_results", "boolean", "If true, then zocalo gridscan processing uses the GPU results"
|
|
24
|
+
"gda.mx.hyperion.xrc.use_roi_mode", "boolean", "If true then ROI mode is used."
|
|
25
|
+
"gda.mx.udc.hyperion.enable", "boolean", "Enables baton passing to Hyperion."
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Hyperion User Guide
|
|
2
|
+
===================
|
|
3
|
+
|
|
4
|
+
The Hyperion User Guide describes how to run, configure and troubleshoot Hyperion. For installation instructions, see
|
|
5
|
+
the Developer Guide.
|
|
6
|
+
|
|
7
|
+
What is Hyperion?
|
|
8
|
+
-----------------
|
|
9
|
+
|
|
10
|
+
Hyperion is a service for running high throughput unattended data collection (UDC). It does not provide a user
|
|
11
|
+
interface, instead instructions are pulled from Agamemnon which is controlled by information obtained in ISPyB.
|
|
12
|
+
|
|
13
|
+
Running Hyperion
|
|
14
|
+
----------------
|
|
15
|
+
|
|
16
|
+
When installed, Hyperion should be running automatically. If it is not running, it can be (re)started from GDA by
|
|
17
|
+
invoking ``hyperion_restart()`` from the Jython console.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
.. toctree::
|
|
21
|
+
:caption: Topics
|
|
22
|
+
:maxdepth: 1
|
|
23
|
+
:glob:
|
|
24
|
+
|
|
25
|
+
*
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
Logging
|
|
2
|
+
-------
|
|
3
|
+
|
|
4
|
+
Hyperion logs to a number of different locations. The sections below describe the locations that are configured via
|
|
5
|
+
environment variables for a standard server install; for kubernetes deployments please check the deployment
|
|
6
|
+
``values.yaml`` for the configured locations.
|
|
7
|
+
|
|
8
|
+
Graylog
|
|
9
|
+
~~~~~~~
|
|
10
|
+
|
|
11
|
+
Graylog is the recommended way to view logs. It is used for more centralised logging which is also more easily
|
|
12
|
+
searched and archived. Log messages are sent to the `Hyperion graylog stream <https://graylog.diamond.ac.uk/streams/66264f5519ccca6d1c9e4e03/search>`_.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
Startup Log
|
|
16
|
+
~~~~~~~~~~~
|
|
17
|
+
|
|
18
|
+
When ``hyperion_restart()`` is called by GDA, it will log the initial console output to a log file. This log file
|
|
19
|
+
location is
|
|
20
|
+
controlled by the ``gda.logs.dir`` property and is typically ``/dls_sw/<beamline>/logs/bluesky``.
|
|
21
|
+
|
|
22
|
+
On kubernetes deployments, the initial startup is sent to standard IO and is captured as part of the standard
|
|
23
|
+
kubernetes logging facility.
|
|
24
|
+
|
|
25
|
+
Log files
|
|
26
|
+
~~~~~~~~~
|
|
27
|
+
|
|
28
|
+
By default, Hyperion logs to the filesystem.
|
|
29
|
+
|
|
30
|
+
The log file location is controlled by the ``LOG_DIR`` environment value. Typically this can be found in
|
|
31
|
+
``/dls_sw/<beamline>/logs/bluesky``
|
|
32
|
+
|
|
33
|
+
Debug Log
|
|
34
|
+
~~~~~~~~~
|
|
35
|
+
|
|
36
|
+
The standard logs files do not record all messages, only those at INFO level or higher, in order to keep storage
|
|
37
|
+
requirements to a minimum.
|
|
38
|
+
In the event of an error occurring, then trace-level logging for the most recent events (by default 5000) is flushed
|
|
39
|
+
to a separate set of log files. Due to the size of these files, they are stored separately from the main log files
|
|
40
|
+
. These logs are located in ``/dls/tmp/<beamline>/logs/bluesky`` by default, or
|
|
41
|
+
otherwise as specified by the ``DEBUG_LOG_DIR`` environment variable.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Special PVs
|
|
2
|
+
-----------
|
|
3
|
+
|
|
4
|
+
Baton
|
|
5
|
+
~~~~~
|
|
6
|
+
|
|
7
|
+
In order to arbitrate access to the beamline between Hyperion and GDA there are two baton string PVs REQUESTED_USER and
|
|
8
|
+
CURRENT_USER.
|
|
9
|
+
|
|
10
|
+
Hyperion will only start operating once REQUESTED_USER has been set to Hyperion, at which point it will set
|
|
11
|
+
CURRENT_USER. To request the baton from Hyperion, set REQUESTED_USER to some other value, when Hyperion completes the
|
|
12
|
+
current action, it will relinquish CURRENT_USER.
|
|
@@ -38,16 +38,17 @@ dependencies = [
|
|
|
38
38
|
"semver",
|
|
39
39
|
"deepdiff",
|
|
40
40
|
"matplotlib",
|
|
41
|
+
"cachetools",
|
|
41
42
|
#
|
|
42
43
|
# These dependencies may be issued as pre-release versions and should have a pin constraint
|
|
43
44
|
# as by default pip-install will not upgrade to a pre-release.
|
|
44
45
|
#
|
|
46
|
+
"daq-config-server>=v1.0.0-rc.2",
|
|
45
47
|
"blueapi >= 0.15.0",
|
|
46
|
-
"daq-config-server == 0.1.1",
|
|
47
48
|
"ophyd >= 1.10.5",
|
|
48
49
|
"ophyd-async >= 0.10.0a2",
|
|
49
50
|
"bluesky >= 1.13.1",
|
|
50
|
-
"dls-dodal
|
|
51
|
+
"dls-dodal >= 1.55.0",
|
|
51
52
|
]
|
|
52
53
|
|
|
53
54
|
|
|
@@ -94,8 +95,6 @@ run_extruder = "mx_bluesky.beamlines.i24.serial.run_serial:run_extruder"
|
|
|
94
95
|
run_fixed_target = "mx_bluesky.beamlines.i24.serial.run_serial:run_fixed_target"
|
|
95
96
|
hyperion = "mx_bluesky.hyperion.__main__:main"
|
|
96
97
|
hyperion-callbacks = "mx_bluesky.hyperion.external_interaction.callbacks.__main__:main"
|
|
97
|
-
hyperion-generate-test-nexus = "mx_bluesky.hyperion.utils.validation:generate_test_nexus"
|
|
98
|
-
hyperion-populate-test-and-meta-files = "mx_bluesky.hyperion.utils.validation:copy_test_meta_data_files"
|
|
99
98
|
redis_to_murko = "mx_bluesky.beamlines.i04.redis_to_murko_forwarder:main"
|
|
100
99
|
|
|
101
100
|
[project.urls]
|
|
@@ -122,6 +121,7 @@ markers = [
|
|
|
122
121
|
"skip_log_setup: marks tests so that loggers are not setup before the test.",
|
|
123
122
|
"skip_in_pycharm: marks test as not working in pycharm testrunner",
|
|
124
123
|
"system_test: marks tests as a system test",
|
|
124
|
+
"requires: marks a test as having an external dependency such as a service or hardware",
|
|
125
125
|
]
|
|
126
126
|
addopts = """
|
|
127
127
|
--tb=native -vv --doctest-modules --doctest-glob="*.rst" --durations=10
|
|
@@ -142,6 +142,8 @@ filterwarnings = [
|
|
|
142
142
|
# Ignore warning about deprecations in python-workflows encountered during system tests
|
|
143
143
|
# https://github.com/DiamondLightSource/python-workflows/issues/188
|
|
144
144
|
"ignore:.*`Field` should not be instantiated.*:marshmallow.warnings.ChangedInMarshmallow4Warning",
|
|
145
|
+
#Remove when we drop python 3.11
|
|
146
|
+
"ignore:.*__contains__ will no longer raise TypeError.*:DeprecationWarning",
|
|
145
147
|
]
|
|
146
148
|
# Doctest python code in docs, python code in src docstrings, test functions in tests
|
|
147
149
|
testpaths = "docs src tests/unit_tests"
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
# file generated by setuptools-scm
|
|
2
2
|
# don't change, don't track in version control
|
|
3
3
|
|
|
4
|
-
__all__ = [
|
|
4
|
+
__all__ = [
|
|
5
|
+
"__version__",
|
|
6
|
+
"__version_tuple__",
|
|
7
|
+
"version",
|
|
8
|
+
"version_tuple",
|
|
9
|
+
"__commit_id__",
|
|
10
|
+
"commit_id",
|
|
11
|
+
]
|
|
5
12
|
|
|
6
13
|
TYPE_CHECKING = False
|
|
7
14
|
if TYPE_CHECKING:
|
|
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
|
|
|
9
16
|
from typing import Union
|
|
10
17
|
|
|
11
18
|
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
+
COMMIT_ID = Union[str, None]
|
|
12
20
|
else:
|
|
13
21
|
VERSION_TUPLE = object
|
|
22
|
+
COMMIT_ID = object
|
|
14
23
|
|
|
15
24
|
version: str
|
|
16
25
|
__version__: str
|
|
17
26
|
__version_tuple__: VERSION_TUPLE
|
|
18
27
|
version_tuple: VERSION_TUPLE
|
|
28
|
+
commit_id: COMMIT_ID
|
|
29
|
+
__commit_id__: COMMIT_ID
|
|
19
30
|
|
|
20
|
-
__version__ = version = '1.5.
|
|
21
|
-
__version_tuple__ = version_tuple = (1, 5,
|
|
31
|
+
__version__ = version = '1.5.3'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 5, 3)
|
|
33
|
+
|
|
34
|
+
__commit_id__ = commit_id = 'gd31a95a33'
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from mx_bluesky.beamlines.i04.experiment_plans.i04_grid_detect_then_xray_centre_plan import (
|
|
2
|
+
i04_grid_detect_then_xray_centre,
|
|
3
|
+
)
|
|
4
|
+
from mx_bluesky.beamlines.i04.thawing_plan import thaw, thaw_and_stream_to_redis
|
|
5
|
+
|
|
6
|
+
__all__ = [
|
|
7
|
+
"thaw",
|
|
8
|
+
"thaw_and_stream_to_redis",
|
|
9
|
+
"i04_grid_detect_then_xray_centre",
|
|
10
|
+
]
|
|
@@ -67,6 +67,7 @@ from mx_bluesky.common.preprocessors.preprocessors import (
|
|
|
67
67
|
transmission_and_xbpm_feedback_for_collection_decorator,
|
|
68
68
|
)
|
|
69
69
|
from mx_bluesky.common.utils.context import device_composite_from_context
|
|
70
|
+
from mx_bluesky.common.utils.log import LOGGER
|
|
70
71
|
from mx_bluesky.phase1_zebra.device_setup_plans.setup_zebra import (
|
|
71
72
|
setup_zebra_for_gridscan,
|
|
72
73
|
tidy_up_zebra_after_gridscan,
|
|
@@ -184,9 +185,11 @@ def get_ready_for_oav_and_close_shutter(
|
|
|
184
185
|
):
|
|
185
186
|
yield from bps.wait(PlanGroupCheckpointConstants.GRID_READY_FOR_DC)
|
|
186
187
|
group = "get_ready_for_oav_and_close_shutter"
|
|
188
|
+
LOGGER.info("Non-udc tidy: Seting up beamline for OAV")
|
|
187
189
|
yield from setup_beamline_for_OAV(
|
|
188
190
|
smargon, backlight, aperture_scatterguard, group=group
|
|
189
191
|
)
|
|
192
|
+
LOGGER.info("Non-udc tidy: Closing detector shutter")
|
|
190
193
|
yield from bps.abs_set(
|
|
191
194
|
detector_motion.shutter,
|
|
192
195
|
0,
|
{mx_bluesky-1.5.2 → mx_bluesky-1.5.3}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml
RENAMED
|
@@ -7,11 +7,11 @@ env:
|
|
|
7
7
|
events:
|
|
8
8
|
broadcast_status_events: false
|
|
9
9
|
api:
|
|
10
|
-
|
|
10
|
+
url: http://localhost:25565
|
|
11
11
|
cors:
|
|
12
12
|
allow_credentials: True
|
|
13
13
|
origins:
|
|
14
14
|
- "*"
|
|
15
15
|
stomp:
|
|
16
16
|
enabled: true
|
|
17
|
-
|
|
17
|
+
url: http://i24-control.diamond.ac.uk:61613
|
|
@@ -6,6 +6,7 @@ from typing import TYPE_CHECKING
|
|
|
6
6
|
import bluesky.plan_stubs as bps
|
|
7
7
|
import numpy as np
|
|
8
8
|
from blueapi.core import BlueskyContext
|
|
9
|
+
from bluesky.utils import MsgGenerator
|
|
9
10
|
from dodal.devices.oav.oav_detector import OAV
|
|
10
11
|
from dodal.devices.oav.pin_image_recognition import PinTipDetection
|
|
11
12
|
from dodal.devices.oav.pin_image_recognition.utils import NONE_VALUE
|
|
@@ -49,6 +50,16 @@ def get_min_and_max_y_of_pin(
|
|
|
49
50
|
return min_y, max_y
|
|
50
51
|
|
|
51
52
|
|
|
53
|
+
def optimum_grid_detect_angles(smargon: Smargon) -> MsgGenerator[list[float]]:
|
|
54
|
+
"""We need to match the 0 and -90 that the fast grid scan performs but the order in
|
|
55
|
+
which we do the grid detection does not matter so we do the closest angle first."""
|
|
56
|
+
current_omega = yield from bps.rd(smargon.omega)
|
|
57
|
+
if current_omega < -45:
|
|
58
|
+
return [-90, 0]
|
|
59
|
+
else:
|
|
60
|
+
return [0, -90]
|
|
61
|
+
|
|
62
|
+
|
|
52
63
|
def grid_detection_plan(
|
|
53
64
|
composite: OavGridDetectionComposite,
|
|
54
65
|
parameters: OAVParameters,
|
|
@@ -90,8 +101,7 @@ def grid_detection_plan(
|
|
|
90
101
|
|
|
91
102
|
grid_width_pixels = int(grid_width_microns / microns_per_pixel_x)
|
|
92
103
|
|
|
93
|
-
|
|
94
|
-
for angle in [0, -90]:
|
|
104
|
+
for angle in (yield from optimum_grid_detect_angles(smargon)):
|
|
95
105
|
yield from bps.mv(smargon.omega, angle)
|
|
96
106
|
# need to wait for the OAV image to update
|
|
97
107
|
# See #673 for improvements
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from mx_bluesky.common.external_interaction.alerting._service import (
|
|
2
|
+
AlertService,
|
|
3
|
+
Metadata,
|
|
4
|
+
get_alerting_service,
|
|
5
|
+
set_alerting_service,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"AlertService",
|
|
10
|
+
"Metadata",
|
|
11
|
+
"get_alerting_service",
|
|
12
|
+
"set_alerting_service",
|
|
13
|
+
]
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from datetime import UTC, datetime, timedelta
|
|
2
|
+
from enum import StrEnum
|
|
3
|
+
from typing import Protocol
|
|
4
|
+
from urllib.parse import quote, urlencode
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Metadata(StrEnum):
|
|
8
|
+
"""Metadata fields that can be specified by the caller when raising an alert."""
|
|
9
|
+
|
|
10
|
+
CONTAINER = "container"
|
|
11
|
+
SAMPLE_ID = "sample_id"
|
|
12
|
+
VISIT = "visit"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ExtraMetadata(StrEnum):
|
|
16
|
+
"""Additional metadata fields that are automatically appended by
|
|
17
|
+
the AlertService implementations."""
|
|
18
|
+
|
|
19
|
+
ALERT_CONTENT = "alert_content"
|
|
20
|
+
ALERT_SUMMARY = "alert_summary"
|
|
21
|
+
BEAMLINE = "beamline"
|
|
22
|
+
GRAYLOG_URL = "graylog_url"
|
|
23
|
+
ISPYB_URL = "ispyb_url"
|
|
24
|
+
PROPOSAL = "proposal"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class AlertService(Protocol):
|
|
28
|
+
"""
|
|
29
|
+
Implemented by any backend that provides the ability to dispatch alerts to some
|
|
30
|
+
service that is capable of disseminating them via any of a variety of media such
|
|
31
|
+
as email, SMS, instant messaging, etc etc.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def raise_alert(self, summary: str, content: str, metadata: dict[Metadata, str]):
|
|
35
|
+
"""
|
|
36
|
+
Raise an alert that will be forwarded to beamline support staff, which might
|
|
37
|
+
for example be used as the basis for an incident in an incident reporting system.
|
|
38
|
+
Args:
|
|
39
|
+
summary: One line summary of the alert, that might for instance be used
|
|
40
|
+
in an email subject line.
|
|
41
|
+
content: Plain text content detailing the nature of the incident.
|
|
42
|
+
metadata: A dict of strings that can be included as metadata in the alert for
|
|
43
|
+
those backends that support it. The summary and content will be included
|
|
44
|
+
by default.
|
|
45
|
+
"""
|
|
46
|
+
pass
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
_alert_service: AlertService
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def get_alerting_service() -> AlertService:
|
|
53
|
+
"""Get the alert service for this instance."""
|
|
54
|
+
return _alert_service
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def set_alerting_service(service: AlertService):
|
|
58
|
+
"""Set the alert service for this instance, call when the beamline is initialised."""
|
|
59
|
+
global _alert_service
|
|
60
|
+
_alert_service = service
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def ispyb_url(sample_id: str):
|
|
64
|
+
return f"https://ispyb.diamond.ac.uk/samples/sid/{quote(sample_id)}"
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def graylog_url(stream_id: str):
|
|
68
|
+
now = datetime.now(UTC)
|
|
69
|
+
from_utc = now - timedelta(minutes=5)
|
|
70
|
+
from_timestamp = from_utc.isoformat()
|
|
71
|
+
# Add 1 second for graylog timing jitter
|
|
72
|
+
to_utc = now + timedelta(seconds=1)
|
|
73
|
+
to_timestamp = to_utc.isoformat()
|
|
74
|
+
query_string = urlencode(
|
|
75
|
+
{
|
|
76
|
+
"streams": stream_id,
|
|
77
|
+
"rangetype": "absolute",
|
|
78
|
+
"from": from_timestamp,
|
|
79
|
+
"to": to_timestamp,
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
return "https://graylog.diamond.ac.uk/search?" + query_string
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import cast
|
|
3
|
+
|
|
4
|
+
from dodal.log import LOGGER
|
|
5
|
+
from dodal.utils import get_beamline_name
|
|
6
|
+
|
|
7
|
+
from mx_bluesky.common.external_interaction.alerting import Metadata
|
|
8
|
+
from mx_bluesky.common.external_interaction.alerting._service import (
|
|
9
|
+
ExtraMetadata,
|
|
10
|
+
graylog_url,
|
|
11
|
+
ispyb_url,
|
|
12
|
+
)
|
|
13
|
+
from mx_bluesky.common.external_interaction.callbacks.common.ispyb_mapping import (
|
|
14
|
+
get_proposal_and_session_from_visit_string,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class LoggingAlertService:
|
|
19
|
+
"""
|
|
20
|
+
Implement an alert service that raises alerts by generating a specially formatted
|
|
21
|
+
log message, that may be intercepted by a logging service such as graylog and
|
|
22
|
+
used to dispatch the alert.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(self, graylog_stream_id: str, level=logging.WARNING):
|
|
26
|
+
"""
|
|
27
|
+
Create a new instance of the service
|
|
28
|
+
Args:
|
|
29
|
+
level: The python logging level at which to generate the message
|
|
30
|
+
"""
|
|
31
|
+
super().__init__()
|
|
32
|
+
self._level = level
|
|
33
|
+
self._graylog_stream_id = graylog_stream_id
|
|
34
|
+
|
|
35
|
+
def _append_extra_metadata(self, metadata: dict[Metadata, str]) -> dict[str, str]:
|
|
36
|
+
with_extras = cast(dict, metadata.copy())
|
|
37
|
+
with_extras[ExtraMetadata.GRAYLOG_URL] = graylog_url(self._graylog_stream_id)
|
|
38
|
+
with_extras[ExtraMetadata.BEAMLINE] = get_beamline_name("")
|
|
39
|
+
if sample_id := metadata.get(Metadata.SAMPLE_ID, None):
|
|
40
|
+
with_extras[ExtraMetadata.ISPYB_URL] = ispyb_url(sample_id)
|
|
41
|
+
if visit := metadata.get(Metadata.VISIT, None):
|
|
42
|
+
proposal, _ = get_proposal_and_session_from_visit_string(visit)
|
|
43
|
+
with_extras[ExtraMetadata.PROPOSAL] = proposal
|
|
44
|
+
return with_extras
|
|
45
|
+
|
|
46
|
+
def raise_alert(self, summary: str, content: str, metadata: dict[Metadata, str]):
|
|
47
|
+
message = f"***ALERT*** summary={summary} content={content}"
|
|
48
|
+
with_extras = self._append_extra_metadata(metadata)
|
|
49
|
+
LOGGER.log(
|
|
50
|
+
self._level,
|
|
51
|
+
message,
|
|
52
|
+
extra={
|
|
53
|
+
ExtraMetadata.ALERT_SUMMARY: summary,
|
|
54
|
+
ExtraMetadata.ALERT_CONTENT: content,
|
|
55
|
+
}
|
|
56
|
+
| with_extras,
|
|
57
|
+
)
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
from dodal.utils import get_beamline_name
|
|
1
2
|
from event_model import RunStart, RunStop
|
|
2
3
|
|
|
4
|
+
from mx_bluesky.common.external_interaction.alerting import (
|
|
5
|
+
Metadata,
|
|
6
|
+
get_alerting_service,
|
|
7
|
+
)
|
|
3
8
|
from mx_bluesky.common.external_interaction.callbacks.common.plan_reactive_callback import (
|
|
4
9
|
PlanReactiveCallback,
|
|
5
10
|
)
|
|
@@ -18,30 +23,36 @@ class SampleHandlingCallback(PlanReactiveCallback):
|
|
|
18
23
|
def __init__(self, record_loaded_on_success=False):
|
|
19
24
|
super().__init__(log=ISPYB_ZOCALO_CALLBACK_LOGGER)
|
|
20
25
|
self._sample_id: int | None = None
|
|
26
|
+
self._visit: str | None = None
|
|
21
27
|
self._descriptor: str | None = None
|
|
22
28
|
self._run_id: str | None = None
|
|
29
|
+
self._container: int | None = None
|
|
23
30
|
|
|
24
31
|
# Record 'sample loaded' if document successfully stops
|
|
25
32
|
self.record_loaded_on_success = record_loaded_on_success
|
|
26
33
|
|
|
27
34
|
def activity_gated_start(self, doc: RunStart):
|
|
28
35
|
if not self._sample_id and self.active:
|
|
29
|
-
|
|
36
|
+
metadata = doc.get("metadata", {})
|
|
37
|
+
sample_id = metadata.get("sample_id")
|
|
30
38
|
self.log.info(f"Recording sample ID at run start {sample_id}")
|
|
31
39
|
self._sample_id = sample_id
|
|
40
|
+
self._visit = metadata.get("visit")
|
|
32
41
|
self._run_id = self.activity_uid
|
|
42
|
+
self._container = metadata.get("container")
|
|
33
43
|
|
|
34
44
|
def activity_gated_stop(self, doc: RunStop) -> RunStop:
|
|
35
45
|
if self._run_id == doc.get("run_start"):
|
|
36
46
|
expeye = ExpeyeInteraction()
|
|
37
47
|
if doc["exit_status"] != "success":
|
|
48
|
+
reason = doc.get("reason", "")
|
|
38
49
|
exception_type, message = SampleException.type_and_message_from_reason(
|
|
39
|
-
|
|
50
|
+
reason
|
|
40
51
|
)
|
|
41
52
|
self.log.info(
|
|
42
53
|
f"Sample handling callback intercepted exception of type {exception_type}: {message}"
|
|
43
54
|
)
|
|
44
|
-
self._record_exception(exception_type, expeye)
|
|
55
|
+
self._record_exception(exception_type, expeye, reason)
|
|
45
56
|
|
|
46
57
|
elif self.record_loaded_on_success:
|
|
47
58
|
self._record_loaded(expeye)
|
|
@@ -51,10 +62,23 @@ class SampleHandlingCallback(PlanReactiveCallback):
|
|
|
51
62
|
|
|
52
63
|
return doc
|
|
53
64
|
|
|
54
|
-
def _record_exception(
|
|
65
|
+
def _record_exception(
|
|
66
|
+
self, exception_type: str, expeye: ExpeyeInteraction, reason: str
|
|
67
|
+
):
|
|
55
68
|
assert self._sample_id, "Unable to record exception due to no sample ID"
|
|
56
69
|
sample_status = self._decode_sample_status(exception_type)
|
|
57
70
|
expeye.update_sample_status(self._sample_id, sample_status)
|
|
71
|
+
if sample_status == BLSampleStatus.ERROR_BEAMLINE:
|
|
72
|
+
beamline = get_beamline_name("")
|
|
73
|
+
get_alerting_service().raise_alert(
|
|
74
|
+
f"UDC encountered an error on {beamline}",
|
|
75
|
+
f"Hyperion encountered the following beamline error: {reason}",
|
|
76
|
+
{
|
|
77
|
+
Metadata.SAMPLE_ID: str(self._sample_id),
|
|
78
|
+
Metadata.VISIT: self._visit or "",
|
|
79
|
+
Metadata.CONTAINER: str(self._container),
|
|
80
|
+
},
|
|
81
|
+
)
|
|
58
82
|
|
|
59
83
|
def _decode_sample_status(self, exception_type: str) -> BLSampleStatus:
|
|
60
84
|
match exception_type:
|