mx-bluesky 1.5.0__tar.gz → 1.5.1__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.0 → mx_bluesky-1.5.1}/PKG-INFO +4 -3
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/how-to/create-a-release.rst +7 -6
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/pyproject.toml +3 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/_version.py +2 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +8 -8
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +5 -5
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +4 -4
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +2 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +5 -5
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +3 -3
- mx_bluesky-1.5.1/src/mx_bluesky/common/device_setup_plans/robot_load_unload.py +123 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/experiment_plans/common_flyscan_xray_centre_plan.py +1 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +26 -24
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +0 -1
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/nexus/write_nexus.py +2 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/parameters/components.py +7 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/parameters/constants.py +4 -3
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/xrc_result.py +25 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +7 -1
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +26 -8
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +21 -75
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +2 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +9 -4
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +4 -4
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +1 -1
- {mx_bluesky-1.5.0/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_load → mx_bluesky-1.5.1/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_actions}/ispyb_callback.py +28 -19
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +1 -1
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +3 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/external_interaction/config_server.py +0 -11
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/parameters/constants.py +1 -5
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/parameters/gridscan.py +2 -6
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +15 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/parameters/rotation.py +7 -3
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky.egg-info/PKG-INFO +4 -3
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky.egg-info/SOURCES.txt +4 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky.egg-info/requires.txt +3 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/conftest.py +31 -4
- mx_bluesky-1.5.1/tests/system_tests/common/device_setup_plans/test_robot_load_unload.py +59 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/conftest.py +4 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +9 -11
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +10 -5
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +303 -15
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +19 -10
- mx_bluesky-1.5.1/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +55 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json +2 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json +2 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +3 -3
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +2 -2
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +4 -4
- mx_bluesky-1.5.1/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py +230 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/experiment_plans/test_change_aperture_then_move_plan.py +1 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/experiment_plans/test_common_flyscan_xray_centre_plan.py +1 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +0 -1
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_expeye_interaction.py +58 -23
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/conftest.py +1 -0
- mx_bluesky-1.5.1/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +55 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/conftest.py +10 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_hyperion_flyscan_xray_centre_plan.py +29 -10
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +135 -18
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +27 -44
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +78 -22
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +42 -25
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +2 -1
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +12 -15
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +108 -4
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +0 -3
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +8 -65
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/test_main_system.py +11 -13
- mx_bluesky-1.5.0/src/mx_bluesky/hyperion/utils/validation.py +0 -196
- mx_bluesky-1.5.0/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -49
- mx_bluesky-1.5.0/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -26
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.copier-answers.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.coveragerc +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.devcontainer/Dockerfile +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.devcontainer/devcontainer.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.dockerignore +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/CODEOWNERS +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/CONTRIBUTING.md +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/ISSUE_TEMPLATE/issue.md +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/actions/install_requirements/action.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/actions/verify-nexus/Dockerfile +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/actions/verify-nexus/action.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/actions/verify-nexus/entrypoint.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/dependabot.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/pages/index.html +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/pages/make_switcher.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/workflows/_check.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/workflows/_container.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/workflows/_dist.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/workflows/_docs.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/workflows/_pypi.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/workflows/_release.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/workflows/_test.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/workflows/_tox.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/workflows/ci.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.github/workflows/periodic.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.gitignore +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.pre-commit-config.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.vscode/extensions.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.vscode/launch.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.vscode/mx-bluesky.code-workspace +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.vscode/settings.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/.vscode/tasks.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/Dockerfile +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/Dockerfile.blueapi +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/Dockerfile.hyperion +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/LICENSE +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/README.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/catalog-info.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/codecov.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/conftest.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/_api.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/_templates/custom-module-template.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/conf.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/code-map/grid_detect_then_xray_centre.drawio.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/code-map/grid_detect_xrc.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/code-map/index.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/explanations/callback_and_run_logic.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/explanations/containerised_mx_bluesky.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/explanations/decisions.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/how-to/contribute.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/how-to/get-started.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/index.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/reference/standards.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/general/tutorials/profile-tests.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/hyperion/deploying-hyperion.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/hyperion/how-to/update-panda-ioc.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/hyperion/index.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/hyperion/reference/coordinate-systems.puml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/hyperion/reference/coordinate-systems.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/hyperion/reference/gridscan.puml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/hyperion/reference/readme.md +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/hyperion/system-tests.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/index.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/murko-integration/index.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/serial-crystallography-on-i24/how-to/pmac-docs.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/serial-crystallography-on-i24/index.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/images/176701633-b93bba62-b2e7-4740-a863-c6b388beb14f.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/images/207297611-f67dfc25-a3a5-4ade-a1e7-28b54a136fa6.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/images/dls-favicon.ico +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/images/dls-logo.svg +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/images/motor coordinate systems.odg +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/images/motor-coords-omega-0.svg +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/images/motor-coords-omega-alpha.svg +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/docs/index.rst +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/helmcharts/hyperion/Chart.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/helmcharts/hyperion/templates/deployment.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/helmcharts/hyperion/templates/ingress.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/helmcharts/hyperion/templates/service.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/helmcharts/hyperion/templates/zocalo-config.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/helmcharts/hyperion/values.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/helmcharts/redis-to-murko/Chart.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/helmcharts/redis-to-murko/templates/deployment.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/helmcharts/redis-to-murko/values.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/add_assignee_when_pr_opened.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/assigned_issues_to_in_progress.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/get_issue_from_pr.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/get_project_data_and_move_column.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/linkcheck.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/open_prs_to_review.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/opened_issues_to_backlog.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/pin_versions.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/pre_release_workflow.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/rework_prs_to_in_progress.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/test_data/pip_freeze.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/test_data/setup.cfg +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/test_data/setup.cfg.pinned +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/test_data/setup.cfg.unpinned +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/hyperion_other/workflows/test_pin_versions.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/pull_request_template.md +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/run_hyperion.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/run_hyperion_in_podman.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/setup.cfg +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/__main__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/aithre_lasershaping/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/aithre_lasershaping/beamline_safe.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i04/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i04/thawing_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i23/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i23/serial.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/dcid.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/extruder/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s1l.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s2l.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/log.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/device_setup_plans/manipulate_sample.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/device_setup_plans/position_detector.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/device_setup_plans/setup_oav.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/device_setup_plans/setup_panda.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/device_setup_plans/utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/device_setup_plans/xbpm_feedback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/experiment_plans/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/experiment_plans/change_aperture_then_move_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/experiment_plans/common_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/experiment_plans/inner_plans/__init__ .py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/experiment_plans/inner_plans/do_fgs.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/experiment_plans/oav_snapshot_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/experiment_plans/read_hardware.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/experiment_plans/write_sample_status.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/common/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/config_server.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/ispyb/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/nexus/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/external_interaction/nexus/nexus_utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/parameters/device_composites.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/parameters/gridscan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/preprocessors/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/preprocessors/preprocessors.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/protocols/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/protocols/protocols.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/utils/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/utils/context.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/utils/exceptions.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/utils/log.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/utils/tracing.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/common/utils/utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/definitions.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/__main__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/baton_handler.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/device_setup_plans/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/hyperion_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/parameters/cli.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/parameters/components.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/parameters/device_composites.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/parameters/robot_load.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/utils/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/hyperion/utils/context.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky/jupyter_example.ipynb +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/src/mx_bluesky.egg-info/top_level.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/start_jupyter.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/conftest.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/test_config_service.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/agamemnon/example_collect_multipin.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/agamemnon/example_native.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/ispyb-test-credentials.cfg +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/nexus_files/README.md +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/nexus_files/fake_data.h5 +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/rabbitmq-test-credentials.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/scratch/README +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_OAVCentring.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_beamline_parameters.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_config.cfg +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_daq_configuration/OAVCentring_hyperion.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_daq_configuration/display.configuration +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_daq_configuration/lookup/BeamLine_Undulator_toGap.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_det_dist_converter.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_display.configuration +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_images/generate_snapshot_input.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_images/generate_snapshot_output.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_images/ins_15_33_0.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_images/ins_15_33_90.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_images/ins_15_33_expected_0.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_images/ins_15_33_expected_270.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_images/thau_1_91_0.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_images/thau_1_91_90.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_images/thau_1_91_expected_0.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_images/thau_1_91_expected_270.png +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_lookup_table.txt +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/test_mirror_focus.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/test_data/zocalo-test-configuration.yaml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/aithre_lasershaping/test_beamline_safe.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/aithre_lasershaping/test_check_goniometer_performance.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/aithre_lasershaping/test_goniometer_controls.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i04/test_thawing.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i23/test_serial.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/conftest.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/extruder/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/fixed_target/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/web_gui/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/device_setup_plans/test_xbpm_feedback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/experiment_plans/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/experiment_plans/test_common_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/experiment_plans/test_grid_detection_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/experiment_plans/test_oav_snapshot_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/experiment_plans/test_read_hardware.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/common/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/common/test_abstract_event.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/ispyb/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/ispyb/conftest.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/callbacks/test_zocalo_handler.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/conftest.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/test_config_server.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/test_ispyb_utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/xray_centre/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_handler.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/external_interaction/xray_centre/test_nexus_handler.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/parameters/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/parameters/test_components.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/preprocessors/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/preprocessors/test_preprocessors.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/test_do_fgs.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/test_write_sample_status.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/utils/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/common/utils/test_log.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/conftest.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/device_setup_plans/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_hyperion_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/nexus/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/test_baton_handler.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/test_utils.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/utils/__init__.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/tests/unit_tests/test_cli.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/beam_off_trickery.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/build_docker_image.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/build_imginfo.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/deploy/create_venv.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/deploy/deploy_mx_bluesky.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/deploy/test_deploy.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/dev_jaeger_container.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/dls_dev_env.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/docker/entrypoint.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/docker/healthcheck.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/docker/i03-compose.yml +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/generate_plantuml.py +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/graylog/Dockerfile +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/graylog/tcp_input.json +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/procserv_ioc_start.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/run_imginfo.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/setup_graylog.sh +0 -0
- {mx_bluesky-1.5.0 → mx_bluesky-1.5.1}/utility_scripts/strip_metafile.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mx-bluesky
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.1
|
|
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
|
|
@@ -221,7 +221,7 @@ Requires-Dist: ispyb
|
|
|
221
221
|
Requires-Dist: jupyterlab
|
|
222
222
|
Requires-Dist: matplotlib
|
|
223
223
|
Requires-Dist: nexgen>=0.11.0
|
|
224
|
-
Requires-Dist: numpy
|
|
224
|
+
Requires-Dist: numpy==2.2.6
|
|
225
225
|
Requires-Dist: opencv-python
|
|
226
226
|
Requires-Dist: opentelemetry-distro
|
|
227
227
|
Requires-Dist: opentelemetry-exporter-otlp
|
|
@@ -233,13 +233,14 @@ Requires-Dist: requests
|
|
|
233
233
|
Requires-Dist: scanspec
|
|
234
234
|
Requires-Dist: scipy
|
|
235
235
|
Requires-Dist: semver
|
|
236
|
+
Requires-Dist: deepdiff
|
|
236
237
|
Requires-Dist: matplotlib
|
|
237
238
|
Requires-Dist: blueapi>=0.11.1
|
|
238
239
|
Requires-Dist: daq-config-server==0.1.1
|
|
239
240
|
Requires-Dist: ophyd>=1.10.5
|
|
240
241
|
Requires-Dist: ophyd-async>=0.10.0a2
|
|
241
242
|
Requires-Dist: bluesky>=1.13.1
|
|
242
|
-
Requires-Dist: dls-dodal==1.
|
|
243
|
+
Requires-Dist: dls-dodal==1.51.0
|
|
243
244
|
Provides-Extra: dev
|
|
244
245
|
Requires-Dist: black; extra == "dev"
|
|
245
246
|
Requires-Dist: build; extra == "dev"
|
|
@@ -10,12 +10,13 @@ Release
|
|
|
10
10
|
=======
|
|
11
11
|
|
|
12
12
|
1. Create a new branch from main named pre followed by the release version e.g. pre_v0.1.0. The release versions should look like ``v{major}.{minor}.{patch}``.
|
|
13
|
-
2. On this branch pin the up-to-date version of dodal and the latest release of nexgen if necessary.
|
|
14
|
-
3.
|
|
15
|
-
4.
|
|
16
|
-
5.
|
|
17
|
-
6.
|
|
18
|
-
7.
|
|
13
|
+
2. On this branch pin the up-to-date version of dodal and the latest release of nexgen if necessary, then push to GitHub.
|
|
14
|
+
3. Make sure the CI is passing for this new pre-release branch.
|
|
15
|
+
4. Go `here <https://github.com/DiamondLightSource/mx-bluesky/releases/new>`_.
|
|
16
|
+
5. Select Choose a new tag and type the version of the release, then select the branch created in step 1 as the target.
|
|
17
|
+
6. Click on Generate release notes. This will create a starting set of release notes based on PR titles since the last release.
|
|
18
|
+
7. You should now manually go through each line on the release notes and read it from the perspective of a beamline scientist. It should be clear from each what the change means to the beamline and should have links to easily find further info.
|
|
19
|
+
8. Publish the release
|
|
19
20
|
|
|
20
21
|
NOTE FOR USING THE MX-BLUESKY-BLUEAPI IMAGE: If using this image with BlueAPI's helmchart for deployment, the version of dodal which is installed will be the version which is pinned in the BlueAPI, rather than what's in mx-bluesky's pyproject.toml. Before releasing, you should pin BlueAPI to a version which uses a dodal version which is compatible with itself AND mx-bluesky. The deployment will fail if BlueAPI has no version which works with the desired dodal version
|
|
21
22
|
|
|
@@ -24,7 +24,7 @@ dependencies = [
|
|
|
24
24
|
"jupyterlab",
|
|
25
25
|
"matplotlib",
|
|
26
26
|
"nexgen >= 0.11.0",
|
|
27
|
-
"numpy",
|
|
27
|
+
"numpy == 2.2.6", # See https://github.com/DiamondLightSource/mx-bluesky/issues/1119
|
|
28
28
|
"opencv-python", # Needed for I24 ssx moveonclick. To be changed to headless once this is moved to separate ui.
|
|
29
29
|
"opentelemetry-distro",
|
|
30
30
|
"opentelemetry-exporter-otlp",
|
|
@@ -36,6 +36,7 @@ dependencies = [
|
|
|
36
36
|
"scanspec",
|
|
37
37
|
"scipy",
|
|
38
38
|
"semver",
|
|
39
|
+
"deepdiff",
|
|
39
40
|
"matplotlib",
|
|
40
41
|
#
|
|
41
42
|
# These dependencies may be issued as pre-release versions and should have a pin constraint
|
|
@@ -46,7 +47,7 @@ dependencies = [
|
|
|
46
47
|
"ophyd >= 1.10.5",
|
|
47
48
|
"ophyd-async >= 0.10.0a2",
|
|
48
49
|
"bluesky >= 1.13.1",
|
|
49
|
-
"dls-dodal == 1.
|
|
50
|
+
"dls-dodal == 1.51.0",
|
|
50
51
|
]
|
|
51
52
|
|
|
52
53
|
|
|
@@ -23,8 +23,8 @@ from dodal.devices.i24.beamstop import Beamstop
|
|
|
23
23
|
from dodal.devices.i24.dcm import DCM
|
|
24
24
|
from dodal.devices.i24.dual_backlight import DualBacklight
|
|
25
25
|
from dodal.devices.i24.focus_mirrors import FocusMirrorsMode
|
|
26
|
-
from dodal.devices.i24.i24_detector_motion import DetectorMotion
|
|
27
26
|
from dodal.devices.i24.pilatus_metadata import PilatusMetadata
|
|
27
|
+
from dodal.devices.motors import YZStage
|
|
28
28
|
from dodal.devices.zebra.zebra import Zebra
|
|
29
29
|
|
|
30
30
|
from mx_bluesky.beamlines.i24.serial.dcid import (
|
|
@@ -70,7 +70,7 @@ def flush_print(text):
|
|
|
70
70
|
|
|
71
71
|
@log_on_entry
|
|
72
72
|
def initialise_extruder(
|
|
73
|
-
detector_stage:
|
|
73
|
+
detector_stage: YZStage = inject("detector_motion"),
|
|
74
74
|
) -> MsgGenerator:
|
|
75
75
|
SSX_LOGGER.info("Initialise Parameters for extruder data collection on I24.")
|
|
76
76
|
|
|
@@ -98,7 +98,7 @@ def initialise_extruder(
|
|
|
98
98
|
def laser_check(
|
|
99
99
|
mode: str,
|
|
100
100
|
zebra: Zebra = inject("zebra"),
|
|
101
|
-
detector_stage:
|
|
101
|
+
detector_stage: YZStage = inject("detector_motion"),
|
|
102
102
|
) -> MsgGenerator:
|
|
103
103
|
"""Plan to open the shutter and check the laser beam from the viewer by pressing \
|
|
104
104
|
'Laser On' and 'Laser Off' buttons on the edm.
|
|
@@ -138,7 +138,7 @@ def laser_check(
|
|
|
138
138
|
|
|
139
139
|
@log_on_entry
|
|
140
140
|
def enter_hutch(
|
|
141
|
-
detector_stage:
|
|
141
|
+
detector_stage: YZStage = inject("detector_motion"),
|
|
142
142
|
) -> MsgGenerator:
|
|
143
143
|
"""Move the detector stage before entering hutch."""
|
|
144
144
|
yield from bps.mv(detector_stage.z, SAFE_DET_Z)
|
|
@@ -146,12 +146,12 @@ def enter_hutch(
|
|
|
146
146
|
|
|
147
147
|
|
|
148
148
|
@log_on_entry
|
|
149
|
-
def read_parameters(detector_stage:
|
|
149
|
+
def read_parameters(detector_stage: YZStage, attenuator: ReadOnlyAttenuator):
|
|
150
150
|
""" Read the parameters from user input and create the parameter model for an \
|
|
151
151
|
extruder collection.
|
|
152
152
|
|
|
153
153
|
Args:
|
|
154
|
-
detector_stage (
|
|
154
|
+
detector_stage (YZStage): The detector stage device.
|
|
155
155
|
attenuator (ReadOnlyAttenuator): A read-only attenuator device to get the \
|
|
156
156
|
transmission value.
|
|
157
157
|
|
|
@@ -208,7 +208,7 @@ def main_extruder_plan(
|
|
|
208
208
|
aperture: Aperture,
|
|
209
209
|
backlight: DualBacklight,
|
|
210
210
|
beamstop: Beamstop,
|
|
211
|
-
detector_stage:
|
|
211
|
+
detector_stage: YZStage,
|
|
212
212
|
shutter: HutchShutter,
|
|
213
213
|
dcm: DCM,
|
|
214
214
|
mirrors: FocusMirrorsMode,
|
|
@@ -500,7 +500,7 @@ def run_extruder_plan(
|
|
|
500
500
|
aperture: Aperture = inject("aperture"),
|
|
501
501
|
backlight: DualBacklight = inject("backlight"),
|
|
502
502
|
beamstop: Beamstop = inject("beamstop"),
|
|
503
|
-
detector_stage:
|
|
503
|
+
detector_stage: YZStage = inject("detector_motion"),
|
|
504
504
|
shutter: HutchShutter = inject("shutter"),
|
|
505
505
|
dcm: DCM = inject("dcm"),
|
|
506
506
|
mirrors: FocusMirrorsMode = inject("focus_mirrors"),
|
|
@@ -18,9 +18,9 @@ from dodal.devices.i24.beamstop import Beamstop
|
|
|
18
18
|
from dodal.devices.i24.dcm import DCM
|
|
19
19
|
from dodal.devices.i24.dual_backlight import DualBacklight
|
|
20
20
|
from dodal.devices.i24.focus_mirrors import FocusMirrorsMode
|
|
21
|
-
from dodal.devices.i24.i24_detector_motion import DetectorMotion
|
|
22
21
|
from dodal.devices.i24.pilatus_metadata import PilatusMetadata
|
|
23
22
|
from dodal.devices.i24.pmac import PMAC
|
|
23
|
+
from dodal.devices.motors import YZStage
|
|
24
24
|
from dodal.devices.zebra.zebra import Zebra
|
|
25
25
|
|
|
26
26
|
from mx_bluesky.beamlines.i24.serial.dcid import (
|
|
@@ -269,7 +269,7 @@ def start_i24(
|
|
|
269
269
|
aperture: Aperture,
|
|
270
270
|
backlight: DualBacklight,
|
|
271
271
|
beamstop: Beamstop,
|
|
272
|
-
detector_stage:
|
|
272
|
+
detector_stage: YZStage,
|
|
273
273
|
shutter: HutchShutter,
|
|
274
274
|
parameters: FixedTargetParameters,
|
|
275
275
|
dcm: DCM,
|
|
@@ -504,7 +504,7 @@ def main_fixed_target_plan(
|
|
|
504
504
|
aperture: Aperture,
|
|
505
505
|
backlight: DualBacklight,
|
|
506
506
|
beamstop: Beamstop,
|
|
507
|
-
detector_stage:
|
|
507
|
+
detector_stage: YZStage,
|
|
508
508
|
shutter: HutchShutter,
|
|
509
509
|
dcm: DCM,
|
|
510
510
|
mirrors: FocusMirrorsMode,
|
|
@@ -655,7 +655,7 @@ def run_fixed_target_plan(
|
|
|
655
655
|
aperture: Aperture = inject("aperture"),
|
|
656
656
|
backlight: DualBacklight = inject("backlight"),
|
|
657
657
|
beamstop: Beamstop = inject("beamstop"),
|
|
658
|
-
detector_stage:
|
|
658
|
+
detector_stage: YZStage = inject("detector_motion"),
|
|
659
659
|
shutter: HutchShutter = inject("shutter"),
|
|
660
660
|
dcm: DCM = inject("dcm"),
|
|
661
661
|
mirrors: FocusMirrorsMode = inject("focus_mirrors"),
|
|
@@ -707,7 +707,7 @@ def run_plan_in_wrapper(
|
|
|
707
707
|
aperture: Aperture,
|
|
708
708
|
backlight: DualBacklight,
|
|
709
709
|
beamstop: Beamstop,
|
|
710
|
-
detector_stage:
|
|
710
|
+
detector_stage: YZStage,
|
|
711
711
|
shutter: HutchShutter,
|
|
712
712
|
dcm: DCM,
|
|
713
713
|
mirrors: FocusMirrorsMode,
|
|
@@ -16,8 +16,8 @@ from dodal.common import inject
|
|
|
16
16
|
from dodal.devices.attenuator.attenuator import ReadOnlyAttenuator
|
|
17
17
|
from dodal.devices.i24.beamstop import Beamstop, BeamstopPositions
|
|
18
18
|
from dodal.devices.i24.dual_backlight import BacklightPositions, DualBacklight
|
|
19
|
-
from dodal.devices.i24.i24_detector_motion import DetectorMotion
|
|
20
19
|
from dodal.devices.i24.pmac import PMAC, EncReset, LaserSettings
|
|
20
|
+
from dodal.devices.motors import YZStage
|
|
21
21
|
|
|
22
22
|
from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import (
|
|
23
23
|
ChipType,
|
|
@@ -121,14 +121,14 @@ def _is_checker_pattern() -> bool:
|
|
|
121
121
|
|
|
122
122
|
@log_on_entry
|
|
123
123
|
def read_parameters(
|
|
124
|
-
detector_stage:
|
|
124
|
+
detector_stage: YZStage,
|
|
125
125
|
attenuator: ReadOnlyAttenuator,
|
|
126
126
|
) -> MsgGenerator:
|
|
127
127
|
""" Read the parameters from user input and create the parameter model for a fixed \
|
|
128
128
|
target collection.
|
|
129
129
|
|
|
130
130
|
Args:
|
|
131
|
-
detector_stage (
|
|
131
|
+
detector_stage (YZStage): The detector stage device.
|
|
132
132
|
attenuator (ReadOnlyAttenuator): A read-only attenuator device to get the \
|
|
133
133
|
transmission value.
|
|
134
134
|
|
|
@@ -566,7 +566,7 @@ def moveto_preset(
|
|
|
566
566
|
pmac: PMAC = inject("pmac"),
|
|
567
567
|
beamstop: Beamstop = inject("beamstop"),
|
|
568
568
|
backlight: DualBacklight = inject("backlight"),
|
|
569
|
-
det_stage:
|
|
569
|
+
det_stage: YZStage = inject("detector_motion"),
|
|
570
570
|
) -> MsgGenerator:
|
|
571
571
|
# Non Chip Specific Move
|
|
572
572
|
if place == "zero":
|
|
@@ -7,7 +7,7 @@ from dodal.devices.i24.beam_center import DetectorBeamCenter
|
|
|
7
7
|
from dodal.devices.i24.beamstop import Beamstop, BeamstopPositions
|
|
8
8
|
from dodal.devices.i24.dcm import DCM
|
|
9
9
|
from dodal.devices.i24.dual_backlight import BacklightPositions, DualBacklight
|
|
10
|
-
from dodal.devices.
|
|
10
|
+
from dodal.devices.motors import YZStage
|
|
11
11
|
from dodal.devices.util.lookup_tables import (
|
|
12
12
|
linear_interpolation_lut,
|
|
13
13
|
parse_lookup_table,
|
|
@@ -69,7 +69,7 @@ def setup_beamline_for_collection_plan(
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
def move_detector_stage_to_position_plan(
|
|
72
|
-
detector_stage:
|
|
72
|
+
detector_stage: YZStage,
|
|
73
73
|
detector_distance: float,
|
|
74
74
|
):
|
|
75
75
|
SSX_LOGGER.debug("Setup beamline: moving detector stage.")
|
|
@@ -8,7 +8,7 @@ from enum import IntEnum
|
|
|
8
8
|
import bluesky.plan_stubs as bps
|
|
9
9
|
from bluesky.utils import Msg, MsgGenerator
|
|
10
10
|
from dodal.common import inject
|
|
11
|
-
from dodal.devices.
|
|
11
|
+
from dodal.devices.motors import YZStage
|
|
12
12
|
|
|
13
13
|
from mx_bluesky.beamlines.i24.serial.log import SSX_LOGGER
|
|
14
14
|
from mx_bluesky.beamlines.i24.serial.parameters import SSXType
|
|
@@ -38,9 +38,9 @@ class UnknownDetectorType(Exception):
|
|
|
38
38
|
pass
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
def get_detector_type(detector_stage:
|
|
41
|
+
def get_detector_type(detector_stage: YZStage) -> Generator[Msg, None, Detector]:
|
|
42
42
|
det_y = yield from bps.rd(detector_stage.y)
|
|
43
|
-
#
|
|
43
|
+
# YZStage should also be used for this.
|
|
44
44
|
# This should be part of https://github.com/DiamondLightSource/mx_bluesky/issues/51
|
|
45
45
|
if float(det_y) < Eiger.det_y_threshold:
|
|
46
46
|
SSX_LOGGER.info("Eiger detector in use.")
|
|
@@ -53,7 +53,7 @@ def get_detector_type(detector_stage: DetectorMotion) -> Generator[Msg, None, De
|
|
|
53
53
|
raise UnknownDetectorType("Detector not found.")
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
def _move_detector_stage(detector_stage:
|
|
56
|
+
def _move_detector_stage(detector_stage: YZStage, target: float) -> MsgGenerator:
|
|
57
57
|
SSX_LOGGER.info(f"Moving detector stage to target position: {target}.")
|
|
58
58
|
yield from bps.mv(detector_stage.y, target)
|
|
59
59
|
|
|
@@ -82,7 +82,7 @@ def _get_requested_detector(det_type_pv: str) -> str:
|
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
def setup_detector_stage(
|
|
85
|
-
expt_type: SSXType, detector_stage:
|
|
85
|
+
expt_type: SSXType, detector_stage: YZStage = inject("detector_motion")
|
|
86
86
|
) -> MsgGenerator:
|
|
87
87
|
# Grab the correct PV depending on experiment
|
|
88
88
|
# Its value is set with MUX on edm screen
|
|
@@ -13,9 +13,9 @@ from dodal.devices.i24.beamstop import Beamstop
|
|
|
13
13
|
from dodal.devices.i24.dcm import DCM
|
|
14
14
|
from dodal.devices.i24.dual_backlight import BacklightPositions, DualBacklight
|
|
15
15
|
from dodal.devices.i24.focus_mirrors import FocusMirrorsMode
|
|
16
|
-
from dodal.devices.i24.i24_detector_motion import DetectorMotion
|
|
17
16
|
from dodal.devices.i24.pilatus_metadata import PilatusMetadata
|
|
18
17
|
from dodal.devices.i24.pmac import PMAC
|
|
18
|
+
from dodal.devices.motors import YZStage
|
|
19
19
|
from dodal.devices.oav.oav_detector import OAVBeamCentreFile
|
|
20
20
|
from dodal.devices.zebra.zebra import Zebra
|
|
21
21
|
|
|
@@ -104,7 +104,7 @@ def gui_sleep(sec: int) -> MsgGenerator:
|
|
|
104
104
|
@bpp.run_decorator()
|
|
105
105
|
def gui_move_detector(
|
|
106
106
|
det: Literal["eiger", "pilatus"],
|
|
107
|
-
detector_stage:
|
|
107
|
+
detector_stage: YZStage = inject("detector_motion"),
|
|
108
108
|
) -> MsgGenerator:
|
|
109
109
|
det_y_target = Eiger.det_y_target if det == "eiger" else Pilatus.det_y_target
|
|
110
110
|
yield from _move_detector_stage(detector_stage, det_y_target)
|
|
@@ -134,7 +134,7 @@ def gui_run_chip_collection(
|
|
|
134
134
|
aperture: Aperture = inject("aperture"),
|
|
135
135
|
backlight: DualBacklight = inject("backlight"),
|
|
136
136
|
beamstop: Beamstop = inject("beamstop"),
|
|
137
|
-
detector_stage:
|
|
137
|
+
detector_stage: YZStage = inject("detector_motion"),
|
|
138
138
|
shutter: HutchShutter = inject("shutter"),
|
|
139
139
|
dcm: DCM = inject("dcm"),
|
|
140
140
|
mirrors: FocusMirrorsMode = inject("focus_mirrors"),
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import bluesky.plan_stubs as bps
|
|
4
|
+
import bluesky.preprocessors as bpp
|
|
5
|
+
from bluesky.utils import MsgGenerator
|
|
6
|
+
from dodal.devices.aperturescatterguard import ApertureScatterguard, ApertureValue
|
|
7
|
+
from dodal.devices.motors import XYZStage
|
|
8
|
+
from dodal.devices.robot import BartRobot
|
|
9
|
+
from dodal.devices.smargon import CombinedMove, Smargon, StubPosition
|
|
10
|
+
from dodal.plan_stubs.motor_utils import MoveTooLarge, home_and_reset_wrapper
|
|
11
|
+
|
|
12
|
+
from mx_bluesky.common.utils.log import LOGGER
|
|
13
|
+
from mx_bluesky.hyperion.parameters.constants import CONST
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def wait_for_smargon_not_disabled(smargon: Smargon, timeout=60):
|
|
17
|
+
"""Waits for the smargon disabled flag to go low. The robot hardware is responsible
|
|
18
|
+
for setting this to low when it is safe to move. It does this through a physical
|
|
19
|
+
connection between the robot and the smargon.
|
|
20
|
+
"""
|
|
21
|
+
LOGGER.info("Waiting for smargon enabled")
|
|
22
|
+
SLEEP_PER_CHECK = 0.1
|
|
23
|
+
times_to_check = int(timeout / SLEEP_PER_CHECK)
|
|
24
|
+
for _ in range(times_to_check):
|
|
25
|
+
smargon_disabled = yield from bps.rd(smargon.disabled)
|
|
26
|
+
if not smargon_disabled:
|
|
27
|
+
LOGGER.info("Smargon now enabled")
|
|
28
|
+
return
|
|
29
|
+
yield from bps.sleep(SLEEP_PER_CHECK)
|
|
30
|
+
raise TimeoutError(
|
|
31
|
+
"Timed out waiting for smargon to become enabled after robot load"
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _raise_exception_if_moved_out_of_cryojet(exception):
|
|
36
|
+
yield from bps.null()
|
|
37
|
+
if isinstance(exception, MoveTooLarge):
|
|
38
|
+
raise Exception(
|
|
39
|
+
f"Moving {exception.axis} back to {exception.position} after \
|
|
40
|
+
robot load would move it out of the cryojet. The max safe \
|
|
41
|
+
distance is {exception.maximum_move}"
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def do_plan_while_lower_gonio_at_home(plan: MsgGenerator, lower_gonio: XYZStage):
|
|
46
|
+
"""Moves the lower gonio to home then performs the provided plan and moves it back.
|
|
47
|
+
|
|
48
|
+
The lower gonio must be in the correct position for the robot load and we
|
|
49
|
+
want to put it back afterwards. Note we don't need to wait for the move as the robot
|
|
50
|
+
is interlocked to the lower gonio and the move is quicker than the robot takes to
|
|
51
|
+
get to the load position.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
plan (MsgGenerator): The plan to run while the lower gonio is at home.
|
|
55
|
+
lower_gonio (XYZStage): The lower gonio to home.
|
|
56
|
+
"""
|
|
57
|
+
yield from bpp.contingency_wrapper(
|
|
58
|
+
home_and_reset_wrapper(
|
|
59
|
+
plan,
|
|
60
|
+
lower_gonio,
|
|
61
|
+
BartRobot.LOAD_TOLERANCE_MM,
|
|
62
|
+
CONST.HARDWARE.CRYOJET_MARGIN_MM,
|
|
63
|
+
"lower_gonio",
|
|
64
|
+
wait_for_all=False,
|
|
65
|
+
),
|
|
66
|
+
except_plan=_raise_exception_if_moved_out_of_cryojet,
|
|
67
|
+
)
|
|
68
|
+
return "reset-lower_gonio"
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def prepare_for_robot_load(
|
|
72
|
+
aperture_scatterguard: ApertureScatterguard, smargon: Smargon
|
|
73
|
+
):
|
|
74
|
+
yield from bps.abs_set(
|
|
75
|
+
aperture_scatterguard.selected_aperture,
|
|
76
|
+
ApertureValue.OUT_OF_BEAM,
|
|
77
|
+
group="prepare_robot_load",
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
yield from bps.mv(smargon.stub_offsets, StubPosition.RESET_TO_ROBOT_LOAD)
|
|
81
|
+
|
|
82
|
+
yield from bps.mv(smargon, CombinedMove(x=0, y=0, z=0, chi=0, phi=0, omega=0))
|
|
83
|
+
|
|
84
|
+
yield from bps.wait("prepare_robot_load")
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def robot_unload(
|
|
88
|
+
robot: BartRobot,
|
|
89
|
+
smargon: Smargon,
|
|
90
|
+
aperture_scatterguard: ApertureScatterguard,
|
|
91
|
+
lower_gonio: XYZStage,
|
|
92
|
+
visit: str,
|
|
93
|
+
):
|
|
94
|
+
"""Unloads the currently mounted pin into the location that it was loaded from. The
|
|
95
|
+
loaded location is stored on the robot and so need not be provided.
|
|
96
|
+
"""
|
|
97
|
+
yield from prepare_for_robot_load(aperture_scatterguard, smargon)
|
|
98
|
+
sample_id = yield from bps.rd(robot.sample_id)
|
|
99
|
+
|
|
100
|
+
@bpp.run_decorator(
|
|
101
|
+
md={
|
|
102
|
+
"subplan_name": CONST.PLAN.ROBOT_UNLOAD,
|
|
103
|
+
"metadata": {"visit": visit, "sample_id": sample_id},
|
|
104
|
+
"activate_callbacks": [
|
|
105
|
+
"RobotLoadISPyBCallback",
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
)
|
|
109
|
+
def do_robot_unload_and_send_to_ispyb():
|
|
110
|
+
yield from bps.create(name=CONST.DESCRIPTORS.ROBOT_UPDATE)
|
|
111
|
+
yield from bps.read(robot)
|
|
112
|
+
yield from bps.save()
|
|
113
|
+
|
|
114
|
+
def _unload():
|
|
115
|
+
yield from bps.trigger(robot.unload, wait=True)
|
|
116
|
+
yield from wait_for_smargon_not_disabled(smargon)
|
|
117
|
+
|
|
118
|
+
gonio_finished = yield from do_plan_while_lower_gonio_at_home(
|
|
119
|
+
_unload(), lower_gonio
|
|
120
|
+
)
|
|
121
|
+
yield from bps.wait(gonio_finished)
|
|
122
|
+
|
|
123
|
+
yield from do_robot_unload_and_send_to_ispyb()
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import configparser
|
|
2
2
|
from dataclasses import dataclass
|
|
3
3
|
from enum import StrEnum
|
|
4
|
+
from typing import Any, Literal
|
|
4
5
|
|
|
6
|
+
from event_model.documents import Event
|
|
5
7
|
from requests import JSONDecodeError, patch, post
|
|
6
8
|
from requests.auth import AuthBase
|
|
7
9
|
|
|
@@ -63,6 +65,19 @@ assert all(len(value) <= 20 for value in BLSampleStatus), (
|
|
|
63
65
|
)
|
|
64
66
|
|
|
65
67
|
|
|
68
|
+
def create_update_data_from_event_doc(
|
|
69
|
+
mapping: dict[str, str], event: Event
|
|
70
|
+
) -> dict[str, Any]:
|
|
71
|
+
"""Given a mapping between bluesky event data and an event itself this function will
|
|
72
|
+
create a dict that can be used to update exp-eye."""
|
|
73
|
+
event_data = event["data"]
|
|
74
|
+
return {
|
|
75
|
+
target_key: event_data[source_key]
|
|
76
|
+
for source_key, target_key in mapping.items()
|
|
77
|
+
if source_key in event_data
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
66
81
|
class ExpeyeInteraction:
|
|
67
82
|
"""Exposes functionality from the Expeye core API"""
|
|
68
83
|
|
|
@@ -74,24 +89,22 @@ class ExpeyeInteraction:
|
|
|
74
89
|
self._base_url = url
|
|
75
90
|
self._auth = BearerAuth(token)
|
|
76
91
|
|
|
77
|
-
def
|
|
92
|
+
def start_robot_action(
|
|
78
93
|
self,
|
|
94
|
+
action_type: Literal["LOAD", "UNLOAD"],
|
|
79
95
|
proposal_reference: str,
|
|
80
96
|
visit_number: int,
|
|
81
97
|
sample_id: int,
|
|
82
|
-
dewar_location: int,
|
|
83
|
-
container_location: int,
|
|
84
98
|
) -> RobotActionID:
|
|
85
|
-
"""Create a robot
|
|
99
|
+
"""Create a robot action entry in ispyb.
|
|
86
100
|
|
|
87
101
|
Args:
|
|
102
|
+
action_type ("LOAD" | "UNLOAD"): The robot action being performed
|
|
88
103
|
proposal_reference (str): The proposal of the experiment e.g. cm37235
|
|
89
104
|
visit_number (int): The visit number for the proposal, usually this can be
|
|
90
105
|
found added to the end of the proposal e.g. the data for
|
|
91
106
|
visit number 2 of proposal cm37235 is in cm37235-2
|
|
92
107
|
sample_id (int): The id of the sample in the database
|
|
93
|
-
dewar_location (int): Which puck in the dewar the sample is in
|
|
94
|
-
container_location (int): Which pin in that puck has the sample
|
|
95
108
|
|
|
96
109
|
Returns:
|
|
97
110
|
RobotActionID: The id of the robot load action that is created
|
|
@@ -102,39 +115,28 @@ class ExpeyeInteraction:
|
|
|
102
115
|
|
|
103
116
|
data = {
|
|
104
117
|
"startTimestamp": get_current_time_string(),
|
|
118
|
+
"actionType": action_type,
|
|
105
119
|
"sampleId": sample_id,
|
|
106
|
-
"actionType": "LOAD",
|
|
107
|
-
"containerLocation": container_location,
|
|
108
|
-
"dewarLocation": dewar_location,
|
|
109
120
|
}
|
|
110
121
|
response = _send_and_get_response(self._auth, url, data, post)
|
|
111
122
|
return response["robotActionId"]
|
|
112
123
|
|
|
113
|
-
def
|
|
124
|
+
def update_robot_action(
|
|
114
125
|
self,
|
|
115
126
|
action_id: RobotActionID,
|
|
116
|
-
|
|
117
|
-
snapshot_before_path: str,
|
|
118
|
-
snapshot_after_path: str,
|
|
127
|
+
data: dict[str, Any],
|
|
119
128
|
):
|
|
120
|
-
"""Update
|
|
129
|
+
"""Update an existing robot action to contain additional info.
|
|
121
130
|
|
|
122
131
|
Args:
|
|
123
132
|
action_id (RobotActionID): The id of the action to update
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
snapshot_after_path (str): Path to the snapshot after robot load
|
|
133
|
+
data (dict): The data to update with, where the keys match those expected
|
|
134
|
+
by exp-eye.
|
|
127
135
|
"""
|
|
128
136
|
url = self._base_url + self.UPDATE_ROBOT_ACTION.format(action_id=action_id)
|
|
129
|
-
|
|
130
|
-
data = {
|
|
131
|
-
"sampleBarcode": barcode,
|
|
132
|
-
"xtalSnapshotBefore": snapshot_before_path,
|
|
133
|
-
"xtalSnapshotAfter": snapshot_after_path,
|
|
134
|
-
}
|
|
135
137
|
_send_and_get_response(self._auth, url, data, patch)
|
|
136
138
|
|
|
137
|
-
def
|
|
139
|
+
def end_robot_action(self, action_id: RobotActionID, status: str, reason: str):
|
|
138
140
|
"""Finish an existing robot action, providing final information about how it went
|
|
139
141
|
|
|
140
142
|
Args:
|
|
@@ -20,13 +20,13 @@ from mx_bluesky.common.external_interaction.nexus.nexus_utils import (
|
|
|
20
20
|
create_goniometer_axes,
|
|
21
21
|
get_start_and_predicted_end_time,
|
|
22
22
|
)
|
|
23
|
-
from mx_bluesky.common.parameters.components import
|
|
23
|
+
from mx_bluesky.common.parameters.components import DiffractionExperiment
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class NexusWriter:
|
|
27
27
|
def __init__(
|
|
28
28
|
self,
|
|
29
|
-
parameters:
|
|
29
|
+
parameters: DiffractionExperiment,
|
|
30
30
|
data_shape: tuple[int, int, int],
|
|
31
31
|
scan_points: AxesPoints,
|
|
32
32
|
*,
|
|
@@ -238,9 +238,14 @@ class TopNByMaxCountSelection(MultiXtalSelection):
|
|
|
238
238
|
n: int
|
|
239
239
|
|
|
240
240
|
|
|
241
|
+
class TopNByMaxCountForEachSampleSelection(MultiXtalSelection):
|
|
242
|
+
name: Literal["TopNByMaxCountForEachSample"] = "TopNByMaxCountForEachSample" # pyright: ignore [reportIncompatibleVariableOverride]
|
|
243
|
+
n: int
|
|
244
|
+
|
|
245
|
+
|
|
241
246
|
class WithCentreSelection(BaseModel):
|
|
242
|
-
select_centres: TopNByMaxCountSelection =
|
|
243
|
-
discriminator="name", default=TopNByMaxCountSelection(n=1)
|
|
247
|
+
select_centres: TopNByMaxCountSelection | TopNByMaxCountForEachSampleSelection = (
|
|
248
|
+
Field(discriminator="name", default=TopNByMaxCountSelection(n=1))
|
|
244
249
|
)
|
|
245
250
|
|
|
246
251
|
@property
|
|
@@ -15,8 +15,8 @@ TEST_MODE = BEAMLINE == "test"
|
|
|
15
15
|
|
|
16
16
|
@dataclass(frozen=True)
|
|
17
17
|
class DocDescriptorNames:
|
|
18
|
-
# Robot load event descriptor
|
|
19
|
-
|
|
18
|
+
# Robot load/unload event descriptor
|
|
19
|
+
ROBOT_UPDATE = "robot_update"
|
|
20
20
|
# For callbacks to use
|
|
21
21
|
OAV_ROTATION_SNAPSHOT_TRIGGERED = "rotation_snapshot_triggered"
|
|
22
22
|
OAV_GRID_SNAPSHOT_TRIGGERED = "snapshot_to_ispyb"
|
|
@@ -41,8 +41,9 @@ class OavConstants:
|
|
|
41
41
|
@dataclass(frozen=True)
|
|
42
42
|
class PlanNameConstants:
|
|
43
43
|
LOAD_CENTRE_COLLECT = "load_centre_collect"
|
|
44
|
-
# Robot
|
|
44
|
+
# Robot subplans
|
|
45
45
|
ROBOT_LOAD = "robot_load"
|
|
46
|
+
ROBOT_UNLOAD = "robot_unload"
|
|
46
47
|
# Gridscan
|
|
47
48
|
GRID_DETECT_AND_DO_GRIDSCAN = "grid_detect_and_do_gridscan"
|
|
48
49
|
GRID_DETECT_INNER = "grid_detect"
|