mx-bluesky 1.5.6__tar.gz → 1.5.8__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.8/.devcontainer/devcontainer.json +75 -0
- mx_bluesky-1.5.8/.vscode/mx-bluesky-dev-container.code-workspace +23 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.vscode/mx-bluesky.code-workspace +3 -1
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/PKG-INFO +2 -2
- mx_bluesky-1.5.8/docs/developer/general/how-to/get-started.md +33 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/hyperion/index.rst +1 -0
- mx_bluesky-1.5.8/docs/developer/hyperion/reference/baton.rst +22 -0
- mx_bluesky-1.5.8/docs/developer/hyperion/reference/gda-baton.puml +192 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/hyperion/reference/gridscan.puml +3 -3
- mx_bluesky-1.5.8/docs/images/417717258-afbd813c-8941-445c-9fdf-255c167453cf.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/user/hyperion/index.rst +19 -6
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/user/hyperion/troubleshooting.rst +6 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/pyproject.toml +1 -1
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/_version.py +3 -3
- mx_bluesky-1.5.8/src/mx_bluesky/beamlines/i02_1/parameters/gridscan.py +35 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py +6 -3
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +3 -1
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i04/thawing_plan.py +15 -8
- mx_bluesky-1.5.8/src/mx_bluesky/beamlines/i24/jungfrau_commissioning/do_external_acquisition.py +44 -0
- mx_bluesky-1.5.8/src/mx_bluesky/beamlines/i24/jungfrau_commissioning/do_internal_acquisition.py +46 -0
- mx_bluesky-1.5.8/src/mx_bluesky/beamlines/i24/jungfrau_commissioning/plan_utils.py +73 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/device_setup_plans/robot_load_unload.py +2 -1
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/common_flyscan_xray_centre_plan.py +4 -3
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/inner_plans/do_fgs.py +7 -8
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +6 -6
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +30 -22
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +73 -15
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -20
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/parameters/device_composites.py +2 -2
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/parameters/gridscan.py +67 -49
- mx_bluesky-1.5.8/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +25 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +2 -2
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +10 -2
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +37 -1
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/parameters/device_composites.py +2 -2
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/parameters/gridscan.py +3 -3
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky.egg-info/PKG-INFO +2 -2
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky.egg-info/SOURCES.txt +13 -1
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky.egg-info/requires.txt +1 -1
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/conftest.py +43 -72
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/conftest.py +2 -1
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +18 -3
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/external_interaction/conftest.py +28 -1
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +11 -8
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +148 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +12 -2
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i04/test_i04_grid_detect_then_xray_centre_plan.py +2 -2
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +18 -3
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i04/test_thawing.py +29 -0
- mx_bluesky-1.5.8/tests/unit_tests/beamlines/i24/jungfrau_commissioning/test_do_external_acquisition.py +59 -0
- mx_bluesky-1.5.8/tests/unit_tests/beamlines/i24/jungfrau_commissioning/test_do_internal_acquisition.py +51 -0
- mx_bluesky-1.5.8/tests/unit_tests/beamlines/i24/jungfrau_commissioning/test_plan_utils.py +84 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/experiment_plans/inner_plans/test_do_fgs.py +22 -32
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/experiment_plans/test_common_flyscan_xray_centre_plan.py +32 -18
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/callbacks/test_zocalo_handler.py +77 -3
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +75 -6
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_handler.py +22 -10
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/xray_centre/test_nexus_handler.py +3 -3
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/conftest.py +42 -37
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +28 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +8 -5
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +4 -1
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +4 -4
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/test_baton_handler.py +2 -2
- mx_bluesky-1.5.8/tests/unit_tests/hyperion/utils/__init__.py +0 -0
- mx_bluesky-1.5.6/.devcontainer/devcontainer.json +0 -46
- mx_bluesky-1.5.6/docs/developer/general/how-to/get-started.rst +0 -26
- mx_bluesky-1.5.6/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +0 -20
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.copier-answers.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.coveragerc +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.devcontainer/Dockerfile +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.dockerignore +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/CODEOWNERS +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/CONTRIBUTING.md +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/ISSUE_TEMPLATE/issue.md +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/actions/install_requirements/action.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/actions/verify-nexus/Dockerfile +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/actions/verify-nexus/action.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/actions/verify-nexus/entrypoint.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/dependabot.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/pages/index.html +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/pages/make_switcher.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/_check.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/_container.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/_dist.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/_docs.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/_helm.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/_pypi.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/_release.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/_test.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/_tox.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/ci.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.github/workflows/periodic.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.gitignore +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.pre-commit-config.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.vscode/extensions.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.vscode/launch.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.vscode/settings.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/.vscode/tasks.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/Dockerfile +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/Dockerfile.blueapi +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/Dockerfile.hyperion +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/LICENSE +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/README.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/catalog-info.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/codecov.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/conftest.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/_api.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/_templates/custom-module-template.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/conf.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/code-map/grid_detect_then_xray_centre.drawio.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/code-map/grid_detect_xrc.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/code-map/index.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/explanations/callback_and_run_logic.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/explanations/containerised_mx_bluesky.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/explanations/decisions.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/how-to/contribute.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/how-to/create-a-release.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/index.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/reference/standards.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/general/tutorials/profile-tests.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/hyperion/deploying-hyperion.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/hyperion/how-to/update-panda-ioc.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/hyperion/reference/coordinate-systems.puml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/hyperion/reference/coordinate-systems.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/hyperion/reference/readme.md +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/hyperion/system-tests.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/index.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/murko-integration/explanations/DrawioImages.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/murko-integration/images/Murko.drawio.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/murko-integration/index.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/serial-crystallography-on-i24/how-to/pmac-docs.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/serial-crystallography-on-i24/index.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/images/176701633-b93bba62-b2e7-4740-a863-c6b388beb14f.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/images/207297611-f67dfc25-a3a5-4ade-a1e7-28b54a136fa6.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/images/dls-favicon.ico +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/images/dls-logo.svg +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/images/motor coordinate systems.odg +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/images/motor-coords-omega-0.svg +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/images/motor-coords-omega-alpha.svg +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/index.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/user/hyperion/alerts.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/user/hyperion/configuration.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/user/hyperion/pvs.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/docs/user/hyperion/running.rst +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/hyperion/Chart.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/hyperion/templates/deployment.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/hyperion/templates/ingress.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/hyperion/templates/service.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/hyperion/templates/zocalo-config.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/hyperion/values.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/mx-bluesky-blueapi/Chart.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/mx-bluesky-blueapi/templates/zocalo-config.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/mx-bluesky-blueapi/values.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/redis-to-murko/Chart.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/redis-to-murko/templates/deployment.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/helm/redis-to-murko/values.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/pull_request_template.md +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/run_hyperion.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/run_hyperion_in_podman.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/setup.cfg +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/__main__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/aithre_lasershaping/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/aithre_lasershaping/beamline_safe.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/beamlines/i04/experiment_plans → mx_bluesky-1.5.8/src/mx_bluesky/beamlines/i02_1/parameters}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i04/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/beamlines/i24 → mx_bluesky-1.5.8/src/mx_bluesky/beamlines/i04/experiment_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i23/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i23/serial.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/beamlines/i24/serial/extruder → mx_bluesky-1.5.8/src/mx_bluesky/beamlines/i24}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/dcid.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/beamlines/i24/serial/fixed_target → mx_bluesky-1.5.8/src/mx_bluesky/beamlines/i24/serial/extruder}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s1l.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s2l.png +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/beamlines/i24/serial/web_gui_plans → mx_bluesky-1.5.8/src/mx_bluesky/beamlines/i24/serial/fixed_target}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/log.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common → mx_bluesky-1.5.8/src/mx_bluesky/beamlines/i24/serial/web_gui_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common/external_interaction → mx_bluesky-1.5.8/src/mx_bluesky/common}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/device_setup_plans/manipulate_sample.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/device_setup_plans/position_detector.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/device_setup_plans/setup_oav.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/device_setup_plans/setup_panda.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/device_setup_plans/utils.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/device_setup_plans/xbpm_feedback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/change_aperture_then_move_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/common_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/inner_plans/__init__ .py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/inner_plans/udc_default_state.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/inner_plans/write_sample_status.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/experiment_plans/oav_snapshot_plan.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common/external_interaction/callbacks/common → mx_bluesky-1.5.8/src/mx_bluesky/common/external_interaction}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/alerting/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/alerting/_service.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/alerting/log_based_service.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common/external_interaction/callbacks/sample_handling → mx_bluesky-1.5.8/src/mx_bluesky/common/external_interaction/callbacks/common}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common/external_interaction/callbacks/xray_centre → mx_bluesky-1.5.8/src/mx_bluesky/common/external_interaction/callbacks/sample_handling}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common/external_interaction/ispyb → mx_bluesky-1.5.8/src/mx_bluesky/common/external_interaction/callbacks/xray_centre}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/config_server.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common/external_interaction/nexus → mx_bluesky-1.5.8/src/mx_bluesky/common/external_interaction/ispyb}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common/parameters → mx_bluesky-1.5.8/src/mx_bluesky/common/external_interaction/nexus}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/nexus/nexus_utils.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/external_interaction/nexus/write_nexus.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common/preprocessors → mx_bluesky-1.5.8/src/mx_bluesky/common/parameters}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/parameters/components.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/parameters/constants.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common/protocols → mx_bluesky-1.5.8/src/mx_bluesky/common/preprocessors}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/preprocessors/preprocessors.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/common/utils → mx_bluesky-1.5.8/src/mx_bluesky/common/protocols}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/protocols/protocols.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/hyperion/device_setup_plans → mx_bluesky-1.5.8/src/mx_bluesky/common/utils}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/utils/context.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/utils/exceptions.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/utils/log.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/utils/tracing.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/utils/utils.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/common/xrc_result.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/definitions.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/__main__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/baton_handler.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/hyperion/external_interaction/alerting → mx_bluesky-1.5.8/src/mx_bluesky/hyperion/device_setup_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/hyperion_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.5.8/src/mx_bluesky/hyperion/external_interaction/alerting}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/alerting/constants.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/alert_on_container_change.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_actions/ispyb_callback.py +0 -0
- {mx_bluesky-1.5.6/src/mx_bluesky/phase1_zebra/device_setup_plans → mx_bluesky-1.5.8/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/external_interaction/config_server.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/parameters/cli.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/parameters/components.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/parameters/constants.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/parameters/robot_load.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/parameters/rotation.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/plan_runner.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/plan_runner_api.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/runner.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/utils/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/hyperion/utils/context.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/jupyter_example.ipynb +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/phase1_zebra/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests → mx_bluesky-1.5.8/src/mx_bluesky/phase1_zebra/device_setup_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/phase1_zebra/device_setup_plans/setup_zebra.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky.egg-info/top_level.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/start_jupyter.sh +0 -0
- {mx_bluesky-1.5.6/tests/system_tests → mx_bluesky-1.5.8/tests}/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests/system_tests/hyperion → mx_bluesky-1.5.8/tests/system_tests}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/common/device_setup_plans/test_robot_load_unload.py +0 -0
- {mx_bluesky-1.5.6/tests/system_tests/hyperion/external_interaction → mx_bluesky-1.5.8/tests/system_tests/hyperion}/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests/system_tests/hyperion/external_interaction/alerting → mx_bluesky-1.5.8/tests/system_tests/hyperion/external_interaction}/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests/system_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.5.8/tests/system_tests/hyperion/external_interaction/alerting}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/external_interaction/alerting/test_log_based_alerts.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests → mx_bluesky-1.5.8/tests/system_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/external_interaction/test_baton_handler_soak.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/system_tests/hyperion/test_main_udc.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/agamemnon/example_collect_multipin.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/agamemnon/example_native.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/agamemnon/example_wait.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/ispyb-test-credentials.cfg +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/nexus_files/README.md +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/nexus_files/fake_data.h5 +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/rabbitmq-test-credentials.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/scratch/README +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_OAVCentring.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_beamline_parameters.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_config.cfg +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_daq_configuration/OAVCentring_hyperion.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_daq_configuration/display.configuration +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_daq_configuration/lookup/BeamLine_Undulator_toGap.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_det_dist_converter.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_display.configuration +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_domain_properties +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_domain_properties_with_no_gpu +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_domain_properties_with_panda +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_images/generate_snapshot_input.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_images/generate_snapshot_output.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_images/ins_15_33_0.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_images/ins_15_33_90.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_images/ins_15_33_expected_0.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_images/ins_15_33_expected_270.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_images/thau_1_91_0.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_images/thau_1_91_90.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_images/thau_1_91_expected_0.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_images/thau_1_91_expected_270.png +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_lookup_table.txt +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/test_mirror_focus.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/test_data/zocalo-test-configuration.yaml +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/beamlines → mx_bluesky-1.5.8/tests/unit_tests}/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/beamlines/i24 → mx_bluesky-1.5.8/tests/unit_tests/beamlines}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/aithre_lasershaping/test_beamline_safe.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/aithre_lasershaping/test_check_goniometer_performance.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/aithre_lasershaping/test_goniometer_controls.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i23/test_serial.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/beamlines/i24/serial → mx_bluesky-1.5.8/tests/unit_tests/beamlines/i24}/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/beamlines/i24/serial/extruder → mx_bluesky-1.5.8/tests/unit_tests/beamlines/i24/serial}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/conftest.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/beamlines/i24/serial/fixed_target → mx_bluesky-1.5.8/tests/unit_tests/beamlines/i24/serial/extruder}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/beamlines/i24/serial/setup_beamline → mx_bluesky-1.5.8/tests/unit_tests/beamlines/i24/serial/fixed_target}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/beamlines/i24/serial/web_gui → mx_bluesky-1.5.8/tests/unit_tests/beamlines/i24/serial/setup_beamline}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common → mx_bluesky-1.5.8/tests/unit_tests/beamlines/i24/serial/web_gui}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/experiment_plans → mx_bluesky-1.5.8/tests/unit_tests/common}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/device_setup_plans/test_xbpm_feedback.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/experiment_plans/inner_plans → mx_bluesky-1.5.8/tests/unit_tests/common/experiment_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/external_interaction → mx_bluesky-1.5.8/tests/unit_tests/common/experiment_plans/inner_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/experiment_plans/inner_plans/test_read_hardware.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/experiment_plans/inner_plans/test_udc_default_state.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/experiment_plans/inner_plans/test_write_sample_status.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/experiment_plans/test_change_aperture_then_move_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/experiment_plans/test_common_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/experiment_plans/test_grid_detection_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/experiment_plans/test_oav_snapshot_plan.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/external_interaction/alerting → mx_bluesky-1.5.8/tests/unit_tests/common/external_interaction}/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/external_interaction/alerting → mx_bluesky-1.5.8/tests/unit_tests/common/external_interaction}/alerting/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/external_interaction/callbacks → mx_bluesky-1.5.8/tests/unit_tests/common/external_interaction/alerting/alerting}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/alerting/alerting/test_alerting.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/external_interaction/callbacks/common → mx_bluesky-1.5.8/tests/unit_tests/common/external_interaction/callbacks}/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/external_interaction/callbacks/ispyb → mx_bluesky-1.5.8/tests/unit_tests/common/external_interaction/callbacks/common}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/callbacks/common/test_abstract_event.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/parameters → mx_bluesky-1.5.8/tests/unit_tests/common/external_interaction/callbacks/ispyb}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/conftest.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_expeye_interaction.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/conftest.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/test_config_server.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/test_ispyb_utils.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/xray_centre/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_mapping.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/preprocessors → mx_bluesky-1.5.8/tests/unit_tests/common/parameters}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/parameters/test_components.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/parameters/test_constants.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/common/utils → mx_bluesky-1.5.8/tests/unit_tests/common/preprocessors}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/preprocessors/test_preprocessors.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/hyperion → mx_bluesky-1.5.8/tests/unit_tests/common/utils}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/common/utils/test_log.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/hyperion/device_setup_plans → mx_bluesky-1.5.8/tests/unit_tests/hyperion}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/conftest.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/hyperion/experiment_plans → mx_bluesky-1.5.8/tests/unit_tests/hyperion/device_setup_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.5.8/tests/unit_tests/hyperion/experiment_plans}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/conftest.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_hyperion_flyscan_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_hyperion_grid_detect_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.5.8/tests/unit_tests/hyperion/external_interaction}/__init__.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.5.8/tests/unit_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/hyperion/external_interaction/nexus → mx_bluesky-1.5.8/tests/unit_tests/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/callbacks/test_alert_on_container_change.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/hyperion/parameters → mx_bluesky-1.5.8/tests/unit_tests/hyperion/external_interaction/nexus}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +0 -0
- {mx_bluesky-1.5.6/tests/unit_tests/hyperion/utils → mx_bluesky-1.5.8/tests/unit_tests/hyperion/parameters}/__init__.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/test_main_system.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/test_plan_runner_api.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/test_runner.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/test_utils.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/t01.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/tests/unit_tests/test_cli.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/build_docker_image.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/build_imginfo.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/deploy/create_venv.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/deploy/deploy_mx_bluesky.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/deploy/test_deploy.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/dev_jaeger_container.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/dls_dev_env.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/docker/entrypoint.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/docker/healthcheck.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/docker/i03-compose.yml +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/generate_plantuml.py +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/graylog/Dockerfile +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/graylog/tcp_input.json +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/procserv_ioc_start.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/request_baton.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/run_imginfo.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/setup_graylog.sh +0 -0
- {mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/utility_scripts/strip_metafile.py +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// For format details, see https://containers.dev/implementors/json_reference/
|
|
2
|
+
{
|
|
3
|
+
"name": "Python 3 Developer Container",
|
|
4
|
+
"build": {
|
|
5
|
+
"dockerfile": "../Dockerfile",
|
|
6
|
+
"target": "developer"
|
|
7
|
+
},
|
|
8
|
+
"remoteEnv": {
|
|
9
|
+
// Allow X11 apps to run inside the container
|
|
10
|
+
"DISPLAY": "${localEnv:DISPLAY}"
|
|
11
|
+
},
|
|
12
|
+
"customizations": {
|
|
13
|
+
"vscode": {
|
|
14
|
+
// Set *default* container specific settings.json values on container create.
|
|
15
|
+
"settings": {
|
|
16
|
+
"python.defaultInterpreterPath": "/venv/bin/python"
|
|
17
|
+
},
|
|
18
|
+
// Add the IDs of extensions you want installed when the container is created.
|
|
19
|
+
"extensions": [
|
|
20
|
+
"ms-python.python",
|
|
21
|
+
"github.vscode-github-actions",
|
|
22
|
+
"tamasfe.even-better-toml",
|
|
23
|
+
"redhat.vscode-yaml",
|
|
24
|
+
"ryanluker.vscode-coverage-gutters",
|
|
25
|
+
"charliermarsh.ruff",
|
|
26
|
+
"ms-azuretools.vscode-docker"
|
|
27
|
+
],
|
|
28
|
+
"python.testing.pytestArgs": [
|
|
29
|
+
"--cov=mx_bluesky",
|
|
30
|
+
"--cov-report",
|
|
31
|
+
"xml:cov.xml"
|
|
32
|
+
],
|
|
33
|
+
"python.testing.unittestEnabled": false,
|
|
34
|
+
"python.testing.pytestEnabled": true,
|
|
35
|
+
"python.defaultInterpreterPath": "/venv/bin/python",
|
|
36
|
+
"editor.formatOnSave": true,
|
|
37
|
+
"editor.codeActionsOnSave": {
|
|
38
|
+
"source.organizeImports": "explicit"
|
|
39
|
+
},
|
|
40
|
+
"files.insertFinalNewline": true,
|
|
41
|
+
"[python]": {
|
|
42
|
+
"editor.rulers": [
|
|
43
|
+
88
|
|
44
|
+
],
|
|
45
|
+
"editor.codeActionsOnSave": {
|
|
46
|
+
"source.fixAll.ruff": "explicit",
|
|
47
|
+
"source.organizeImports.ruff": "explicit"
|
|
48
|
+
},
|
|
49
|
+
"editor.defaultFormatter": "charliermarsh.ruff"
|
|
50
|
+
},
|
|
51
|
+
"terminal.integrated.gpuAcceleration": "off",
|
|
52
|
+
"python.analysis.typeCheckingMode": "basic"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"features": {
|
|
56
|
+
// Some default things like git config
|
|
57
|
+
// add in eternal history and other bash features
|
|
58
|
+
"ghcr.io/diamondlightsource/devcontainer-features/bash-config:1": {}
|
|
59
|
+
},
|
|
60
|
+
// Create the config folder for the bash-config feature
|
|
61
|
+
"initializeCommand": "mkdir -p ${localEnv:HOME}/.config/bash-config",
|
|
62
|
+
"runArgs": [
|
|
63
|
+
// Allow the container to access the host X11 display and EPICS CA
|
|
64
|
+
"--net=host",
|
|
65
|
+
// Make sure SELinux does not disable with access to host filesystems like tmp
|
|
66
|
+
"--security-opt=label=disable"
|
|
67
|
+
],
|
|
68
|
+
// Mount the parent as /workspaces so we can pip install peers as editable
|
|
69
|
+
"workspaceMount": "source=${localWorkspaceFolder}/..,target=/workspaces,type=bind",
|
|
70
|
+
"mounts": [
|
|
71
|
+
"source=/dls_sw/apps/dials/latest/latest/modules/dlstbx/src/dlstbx/,target=/dls_sw/apps/dials/latest/latest/modules/dlstbx/src/dlstbx/,type=bind,consistency=cached"
|
|
72
|
+
],
|
|
73
|
+
// After the container is created, install the python project in editable form
|
|
74
|
+
"postCreateCommand": "pip install $([ -f dev-requirements.txt ] && echo '-c dev-requirements.txt') -e '.[dev]' && pip install -e /workspaces/dodal[dev] && pre-commit install && ln -s /dls_sw/apps/dials/latest/latest/modules/dlstbx/src/dlstbx/ /venv/lib/python3.12/site-packages/dlstbx"
|
|
75
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"folders": [
|
|
3
|
+
{
|
|
4
|
+
"path": ".."
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"path": "../../dodal"
|
|
8
|
+
},
|
|
9
|
+
],
|
|
10
|
+
"settings": {
|
|
11
|
+
"python.languageServer": "Pylance",
|
|
12
|
+
"[python]": {
|
|
13
|
+
"editor.defaultFormatter": "ms-python.black-formatter"
|
|
14
|
+
},
|
|
15
|
+
"python.defaultInterpreterPath": "venv/bin/python",
|
|
16
|
+
"python.analysis.extraPaths": [
|
|
17
|
+
"../dodal"
|
|
18
|
+
],
|
|
19
|
+
"python.analysis.autoImportCompletions": true,
|
|
20
|
+
"terminal.integrated.gpuAcceleration": "off",
|
|
21
|
+
"esbonio.sphinx.confDir": ""
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
"editor.defaultFormatter": "ms-python.black-formatter"
|
|
14
14
|
},
|
|
15
15
|
"python.defaultInterpreterPath": ".venv/bin/python",
|
|
16
|
-
"python.analysis.extraPaths": [
|
|
16
|
+
"python.analysis.extraPaths": [
|
|
17
|
+
"../dodal"
|
|
18
|
+
],
|
|
17
19
|
"python.analysis.autoImportCompletions": true,
|
|
18
20
|
"terminal.integrated.gpuAcceleration": "off",
|
|
19
21
|
"esbonio.sphinx.confDir": ""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mx-bluesky
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.8
|
|
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
|
|
@@ -241,7 +241,7 @@ Requires-Dist: blueapi>=0.15.0
|
|
|
241
241
|
Requires-Dist: ophyd>=1.10.5
|
|
242
242
|
Requires-Dist: ophyd-async>=0.10.0a2
|
|
243
243
|
Requires-Dist: bluesky>=1.13.1
|
|
244
|
-
Requires-Dist: dls-dodal==1.
|
|
244
|
+
Requires-Dist: dls-dodal==1.61.0
|
|
245
245
|
Provides-Extra: dev
|
|
246
246
|
Requires-Dist: black; extra == "dev"
|
|
247
247
|
Requires-Dist: build; extra == "dev"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Get Started with mx-bluesky
|
|
2
|
+
|
|
3
|
+
## Development Environment
|
|
4
|
+
|
|
5
|
+
We recommend using devcontainers with vscode as the IDE when developing using a DLS machine. Here's how you can set this up:
|
|
6
|
+
|
|
7
|
+
- Clone this repo using SSH: `git clone git@github.com:DiamondLightSource/mx-bluesky.git`.
|
|
8
|
+
- At the same directory level as you were in for step 1, clone dodal using SSH: `git clone git@github.com:DiamondLightSource/dodal.git`.
|
|
9
|
+
You should now have a directory structure looking like`/some_path/mx-bluesky` and `/some_path/dodal`.
|
|
10
|
+
- In a terminal, move to the mx-bluesky directory and open vscode:
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
cd /some_path/mx-bluesky
|
|
14
|
+
module load vscode
|
|
15
|
+
code .
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
- Make sure you have the [devcontainers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) installed in vscode.
|
|
19
|
+
- In vscode, press `shift+ctrl+p`, and type "Dev Containers: Open Folder in Container", then select the mx-bluesky folder.
|
|
20
|
+
- Once this has built, in vscode at the top right, click `File -> Open workspace from file`, then select `mx-bluesky/.vscode/mx-bluesky-dev-container.code-workspace`.
|
|
21
|
+
- This should get dodal and mx-bluesky opened up in your workspace with all the correct settings. To prove to yourself that the environment is correct, type `tox -e tests` in a terminal in your devcontainer while inside the dodal and inside the mx-bluesky directory.
|
|
22
|
+
|
|
23
|
+
### Notes
|
|
24
|
+
- The devcontainer initially takes quite a long time to build. It will be much faster every other time, and only needs to be rebuild if we change the container environment.
|
|
25
|
+
- The first time you make a commit after building, you will need to follow some git prompts to set your git name and email.
|
|
26
|
+
- The old `dls_dev_env.sh` script creates a virtual environment in `mx-bluesky/.venv`, while the devcontainer creates one in `mx-bluesky/venv`. This is the only reason why we need separate code-workspace files.
|
|
27
|
+
|
|
28
|
+
## Supported Python versions
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
As a standard for the python versions to support, we are using the [numpy deprecation policy](https://numpy.org/neps/nep-0029-deprecation_policy.html)
|
|
32
|
+
|
|
33
|
+
Currently supported versions are: 3.11, 3.12.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Hyperion Baton
|
|
2
|
+
==============
|
|
3
|
+
|
|
4
|
+
The Hyperion baton is controlled by two PVs; these are described under `Special PVs`_
|
|
5
|
+
|
|
6
|
+
An approximate outline of how the various baton workflows operates is outlined in the flowcharts below:
|
|
7
|
+
|
|
8
|
+
.. image:: ../../../images/417717258-afbd813c-8941-445c-9fdf-255c167453cf.png
|
|
9
|
+
|
|
10
|
+
.. _Special PVs: ../../../user/hyperion/pvs.html
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
GDA-side Baton Integration
|
|
14
|
+
--------------------------
|
|
15
|
+
|
|
16
|
+
Below is a diagram showing how baton-handling in GDA integrates the GDA baton with the Hyperion Baton PV, using the
|
|
17
|
+
``HyperionUDCRunner``.
|
|
18
|
+
|
|
19
|
+
The diagram represents an interim stage; at some point ``GDAUDCRunner`` can be eliminated and the baton management
|
|
20
|
+
simplified.
|
|
21
|
+
|
|
22
|
+
.. uml:: gda-baton.puml
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
@startuml
|
|
2
|
+
title GDA Baton Management
|
|
3
|
+
|
|
4
|
+
package Server {
|
|
5
|
+
class Thread
|
|
6
|
+
class JythonServerThread extends Thread {
|
|
7
|
+
authorisationLevel: int
|
|
8
|
+
int getAuthorisationLevel()
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface IBatonManager {
|
|
12
|
+
ClientDetails getClientInformation((myJSFIdentifier)
|
|
13
|
+
boolean requestBaton(uniqueIdentifier)
|
|
14
|
+
void returnBaton((uniqueIdentifier)
|
|
15
|
+
void assignBaton(myJSFIdentifier, indexOfReceiver, indexOfPasser)
|
|
16
|
+
boolean isBatonHeld()
|
|
17
|
+
boolean amIBatonHolder(myJSFIdentifier)
|
|
18
|
+
int effectiveAuthorisationLevelOf(uniqueId)
|
|
19
|
+
void addFacade(uniqueId, info: ClientDetails)
|
|
20
|
+
void removeFacade(uniqueId)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
class BatonManager implements IBatonManager {
|
|
24
|
+
useBaton = true
|
|
25
|
+
useRBAC = true
|
|
26
|
+
firstClientTakesBaton = true
|
|
27
|
+
batonHolder: String
|
|
28
|
+
facadeNames: Map<String, ClientInfo>
|
|
29
|
+
leaseHolders: Map<String, Long>
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
note "Each client has a facade name aka uniqueId aka jsfIdentifier\n\
|
|
33
|
+
There is a LeaseRefresher that periodically sends a BatonLeaseRenewRequest\n\
|
|
34
|
+
to all clients, any interaction with the BatonManager extends the lease.\n\n\
|
|
35
|
+
On first client registration, if firstClientTakesBaton is true then it will\n\
|
|
36
|
+
assume the baton if it is not the server or an automated client." as batonManagerNote
|
|
37
|
+
|
|
38
|
+
BatonManager .. batonManagerNote
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
interface IJythonServerNotifier {
|
|
42
|
+
void notifyServer(source, data)
|
|
43
|
+
}
|
|
44
|
+
interface LocalJython
|
|
45
|
+
class JythonServer implements LocalJython {
|
|
46
|
+
batonManager: BatonManager
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
note "JythonServer registers a client with the BatonManager via forwarding of addFacade()\n\
|
|
50
|
+
The authorisationLevel is determined by asking the Authoriser" as jythonServerNote
|
|
51
|
+
|
|
52
|
+
JythonServer .. jythonServerNote
|
|
53
|
+
|
|
54
|
+
interface Authoriser {
|
|
55
|
+
int getAuthorisationLevel(username)
|
|
56
|
+
int getDefaultPermissions(username)
|
|
57
|
+
isLocalStaff(username)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
class FileAuthoriser implements Authoriser
|
|
61
|
+
note "Gets the permissions from user_permissions.xml" as fileAuthoriserNote
|
|
62
|
+
FileAuthoriser .. fileAuthoriserNote
|
|
63
|
+
class LdapAuthoriser extends FileAuthoriser
|
|
64
|
+
class SingleFileAuthoriser implements Authoriser
|
|
65
|
+
note "Authorisation method is determined by gda.gui.AcquisitionGUI.authorisationMethod" as authoriserNote
|
|
66
|
+
|
|
67
|
+
Authoriser .. authoriserNote
|
|
68
|
+
|
|
69
|
+
together {
|
|
70
|
+
class UDCBatonHandler {
|
|
71
|
+
runner: IUDCRunner
|
|
72
|
+
}
|
|
73
|
+
interface IUDCRunner
|
|
74
|
+
class GDAUDCRunner implements IUDCRunner
|
|
75
|
+
class HyperionUDCRunner implements IUDCRunner
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
note "\
|
|
79
|
+
Creates the UDC Client by calling getUnattendedClientFacade() during configuration.\n\
|
|
80
|
+
Creates the UDC Runner according to the gda.mx.udc.hyperion.enable property.\
|
|
81
|
+
" as udcBatonHandlerNote
|
|
82
|
+
UDCBatonHandler .. udcBatonHandlerNote
|
|
83
|
+
|
|
84
|
+
class Device {
|
|
85
|
+
protectionLevel: int
|
|
86
|
+
}
|
|
87
|
+
class DeviceInterceptor
|
|
88
|
+
note "DeviceInterceptor is an interceptor on specific methods of Device, if the current thread\n\
|
|
89
|
+
has an authorisationLevel below the protectionLevel of the device, and\n\
|
|
90
|
+
the call is made from Jython the method call throws AccessDeniedException." as deviceNote
|
|
91
|
+
Device .. deviceNote
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class UDCCompleteEvent
|
|
96
|
+
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
package Common {
|
|
100
|
+
together {
|
|
101
|
+
class BatonChanged
|
|
102
|
+
class BatonRequested
|
|
103
|
+
class BatonLeaseRenewRequest
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
interface Jython {
|
|
107
|
+
boolean amIBatonHolder(myJSFIdentifier)
|
|
108
|
+
int addFacade(jsfIdentifier, hostname, username, fullName, visitId)
|
|
109
|
+
boolean isBatonHeld()
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
class ClientInfo {
|
|
113
|
+
index: int
|
|
114
|
+
userId: String
|
|
115
|
+
fullName: String
|
|
116
|
+
hostname: String
|
|
117
|
+
authorisationLevel: int
|
|
118
|
+
visitID: String
|
|
119
|
+
|
|
120
|
+
boolean isServer()
|
|
121
|
+
boolean isAutomatedUser()
|
|
122
|
+
}
|
|
123
|
+
note "isServer and isAutomatedUser are determined by the authorisationLevel" as clientInfoNote
|
|
124
|
+
ClientInfo .. clientInfoNote
|
|
125
|
+
|
|
126
|
+
class ClientDetails extends ClientInfo {
|
|
127
|
+
hasBaton: boolean
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
interface IAuthorisationHolder {
|
|
131
|
+
int getAuthorisationLevel()
|
|
132
|
+
int getAuthorisationLevelAtRegistration()
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
interface IBatonStateProvider {
|
|
136
|
+
boolean amIBatonHolder()
|
|
137
|
+
boolean isBatonHeld()
|
|
138
|
+
void addBatonChangedObserver(observer)
|
|
139
|
+
void deleteBatonChangedObserver(observer)
|
|
140
|
+
}
|
|
141
|
+
note "Access is enforced in the client via calls to amIBatonHolder()" as iBatonStateProviderNote
|
|
142
|
+
|
|
143
|
+
class JythonServerFacade implements IBatonStateProvider, IAuthorisationHolder {
|
|
144
|
+
commandServer: Jython
|
|
145
|
+
visitID: String
|
|
146
|
+
{static} JythonServerFacade getUnattendedClientFacade()
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
package Client {
|
|
151
|
+
class ApplicationWorkbenchAdvisor
|
|
152
|
+
note "ApplicationWorkbenchAdvisor receives the BatonLeaseRenewRequest and uses IBatonStateProvider\n\
|
|
153
|
+
to renew the lease by calling amIBatonHolder()" as applicationWorkbenchAdvisorNote
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
'Server -up-> Common
|
|
157
|
+
'Common -up[hidden]-> Client
|
|
158
|
+
ApplicationWorkbenchAdvisor ..[norank] applicationWorkbenchAdvisorNote
|
|
159
|
+
|
|
160
|
+
ApplicationWorkbenchAdvisor --down> IBatonStateProvider
|
|
161
|
+
|
|
162
|
+
IBatonStateProvider .. iBatonStateProviderNote
|
|
163
|
+
LocalJython -up-|> Jython
|
|
164
|
+
LocalJython --|> IJythonServerNotifier
|
|
165
|
+
|
|
166
|
+
JythonServerFacade o-> Jython
|
|
167
|
+
JythonServer o->BatonManager
|
|
168
|
+
JythonServer --> Authoriser
|
|
169
|
+
|
|
170
|
+
JythonServer --> JythonServerThread
|
|
171
|
+
|
|
172
|
+
BatonChanged --> UDCBatonHandler : handles
|
|
173
|
+
BatonRequested --> UDCBatonHandler : handles
|
|
174
|
+
UDCCompleteEvent --> UDCBatonHandler : handles
|
|
175
|
+
|
|
176
|
+
UDCBatonHandler -[norank]-> JythonServerFacade
|
|
177
|
+
UDCBatonHandler o-> IUDCRunner
|
|
178
|
+
BatonManager -up-> BatonChanged : fires
|
|
179
|
+
BatonManager -up-> BatonRequested : fires
|
|
180
|
+
BatonManager -up-> BatonLeaseRenewRequest : fires
|
|
181
|
+
GDAUDCRunner -[norank]-> UDCCompleteEvent : fires
|
|
182
|
+
BatonManager *-[norank]-> ClientInfo
|
|
183
|
+
|
|
184
|
+
UDCCompleteEvent --> GDAUDCRunner : handles
|
|
185
|
+
HyperionUDCRunner --> UDCCompleteEvent : fires
|
|
186
|
+
|
|
187
|
+
DeviceInterceptor --> Device
|
|
188
|
+
DeviceInterceptor --> JythonServerThread
|
|
189
|
+
|
|
190
|
+
BatonManager -up-> IJythonServerNotifier
|
|
191
|
+
|
|
192
|
+
@enduml
|
|
@@ -97,13 +97,13 @@ class GridScanParamsCommon {
|
|
|
97
97
|
z2_start_mm
|
|
98
98
|
}
|
|
99
99
|
class PandAGridScanParams
|
|
100
|
-
class
|
|
100
|
+
class ZebraGridScanParamsThreeD
|
|
101
101
|
|
|
102
102
|
AbstractExperimentBase <|-- AbstractExperimentWithBeamParams
|
|
103
103
|
AbstractExperimentWithBeamParams <|-- GridScanParamsCommon
|
|
104
104
|
GridScanParamsCommon <|-- PandAGridScanParams
|
|
105
|
-
GridScanParamsCommon <|--
|
|
105
|
+
GridScanParamsCommon <|-- ZebraGridScanParamsThreeD
|
|
106
106
|
|
|
107
|
-
HyperionThreeDGridScan -->
|
|
107
|
+
HyperionThreeDGridScan --> ZebraGridScanParamsThreeD : generates
|
|
108
108
|
HyperionThreeDGridScan --> PandAGridScanParams : generates
|
|
109
109
|
@enduml
|
|
@@ -2,7 +2,7 @@ Hyperion User Guide
|
|
|
2
2
|
===================
|
|
3
3
|
|
|
4
4
|
The Hyperion User Guide describes how to run, configure and troubleshoot Hyperion. For installation instructions, see
|
|
5
|
-
the Developer Guide.
|
|
5
|
+
the `Developer Guide`_.
|
|
6
6
|
|
|
7
7
|
What is Hyperion?
|
|
8
8
|
-----------------
|
|
@@ -16,25 +16,38 @@ The software supports two modes of operation:
|
|
|
16
16
|
* GDA mode (where GDA fetches and decodes the Agamemnon
|
|
17
17
|
instructions). GDA mode will be removed in a future release.
|
|
18
18
|
|
|
19
|
-
The mode of operation is determined by configuration using the ``gda.mx.udc.hyperion.enable`` parameter
|
|
19
|
+
The mode of operation is determined by configuration using the ``gda.mx.udc.hyperion.enable`` parameter inside
|
|
20
|
+
GDA properties. See `configuration`_ for other properties that control Hyperions behavior.
|
|
20
21
|
|
|
21
22
|
Once Hyperion has received a request, either from GDA or directly from Agamemnon, it will do the following tasks:
|
|
22
23
|
|
|
23
|
-
- Robot Load (if
|
|
24
|
-
- Pin tip
|
|
25
|
-
- Xray Centring
|
|
24
|
+
- Robot Load (if the requested sample has not yet been loaded)
|
|
25
|
+
- Pin tip centring using the OAV
|
|
26
|
+
- Xray Centring using 2 2D gridscans
|
|
26
27
|
- A number of data collections, depending on the number of centres returned from Zocalo and the applied selection criteria
|
|
27
28
|
|
|
28
29
|
During this it will generate the following outputs:
|
|
29
30
|
|
|
30
31
|
- Snapshots on robot load, XRC and rotations
|
|
31
32
|
- Data collections in ISPyB for the gridscans and rotations as well as entries for robot load/unload
|
|
32
|
-
-
|
|
33
|
+
- NeXus files for each data collection
|
|
33
34
|
- Alert notifications on loading a new container and on beamline error conditions when intervention is required.
|
|
34
35
|
|
|
36
|
+
To increase throughput, the behavior of Hyperion differs in many ways from UDC under GDA. The main ways this manifests
|
|
37
|
+
to a user is:
|
|
38
|
+
|
|
39
|
+
- Xray Centring is 2 2D gridscans (rather than the one gridscan and one line scan in GDA). For speed, the eiger is only
|
|
40
|
+
armed once for both of these and the data is split up after the fact. This means on the filesystem there is one set of
|
|
41
|
+
hdf files for both gridscans but two NeXus files. The two grid scans are stored in ISPyB under one data collection
|
|
42
|
+
group so at first glance it may look like one gridscan in synchweb but you can click through to see both scans.
|
|
43
|
+
- If an xray centre cannot be done on a pin (because it is too long/short or bent), or if no diffraction is found in the
|
|
44
|
+
xray centring data, the sample will be immediately unloaded without a rotation scan being done and the next sample loaded.
|
|
45
|
+
|
|
35
46
|
For a more detailed breakdown of the operation, it may be helpful to browse the `Code Map`_
|
|
36
47
|
|
|
37
48
|
.. _Code Map: ../../developer/code-map
|
|
49
|
+
.. _Developer Guide: ../../developer/hyperion/deploying-hyperion
|
|
50
|
+
.. _configuration: ./configuration
|
|
38
51
|
|
|
39
52
|
.. toctree::
|
|
40
53
|
:caption: Topics
|
|
@@ -15,6 +15,12 @@ Graylog
|
|
|
15
15
|
Graylog is the recommended way to view logs. It is used for more centralised logging which is also more easily
|
|
16
16
|
searched and archived. Log messages are sent to the `Hyperion graylog stream <https://graylog.diamond.ac.uk/streams/66264f5519ccca6d1c9e4e03/search>`_.
|
|
17
17
|
|
|
18
|
+
To find different severity of message you can search for ``level: X``. Where X is:
|
|
19
|
+
|
|
20
|
+
* ``3``: Errors messages - usually causing Hyperion to have stopped. Note that no diffraction is currently logged as an error but this doesn't stop Hyperion, only skip the sample. This will be improved by https://github.com/DiamondLightSource/mx-bluesky/issues/427.
|
|
21
|
+
* ``4``: Warnings - usually not a major problem
|
|
22
|
+
* ``6``: Info - Just telling you what Hyperion is doing
|
|
23
|
+
|
|
18
24
|
|
|
19
25
|
Startup Log
|
|
20
26
|
~~~~~~~~~~~
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '1.5.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 5,
|
|
31
|
+
__version__ = version = '1.5.8'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 5, 8)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'gc6d1815ac'
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from dodal.devices.i02_1.fast_grid_scan import ZebraGridScanParamsTwoD
|
|
2
|
+
from scanspec.specs import Product
|
|
3
|
+
|
|
4
|
+
from mx_bluesky.common.parameters.components import SplitScan, WithOptionalEnergyChange
|
|
5
|
+
from mx_bluesky.common.parameters.gridscan import SpecifiedGrid
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class SpecifiedTwoDGridScan(
|
|
9
|
+
SpecifiedGrid[ZebraGridScanParamsTwoD],
|
|
10
|
+
SplitScan,
|
|
11
|
+
WithOptionalEnergyChange,
|
|
12
|
+
):
|
|
13
|
+
"""Parameters representing a so-called 2D grid scan, which consists of doing a
|
|
14
|
+
gridscan in X and Y."""
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def scan_spec(self) -> Product[str]:
|
|
18
|
+
"""A fully specified ScanSpec object representing the grid, with x, y, z and
|
|
19
|
+
omega positions."""
|
|
20
|
+
return self.grid_1_spec
|
|
21
|
+
|
|
22
|
+
@property
|
|
23
|
+
def FGS_params(self) -> ZebraGridScanParamsTwoD:
|
|
24
|
+
return ZebraGridScanParamsTwoD(
|
|
25
|
+
x_steps=self.x_steps,
|
|
26
|
+
y_steps=self.y_steps,
|
|
27
|
+
x_step_size_mm=self.x_step_size_um / 1000,
|
|
28
|
+
y_step_size_mm=self.y_step_size_um / 1000,
|
|
29
|
+
x_start_mm=self.x_start_um / 1000,
|
|
30
|
+
y1_start_mm=self.y_start_um / 1000,
|
|
31
|
+
z1_start_mm=self.z_start_um / 1000,
|
|
32
|
+
set_stub_offsets=self._set_stub_offsets,
|
|
33
|
+
transmission_fraction=0.5,
|
|
34
|
+
dwell_time_ms=self.exposure_time_s,
|
|
35
|
+
)
|
|
@@ -13,7 +13,7 @@ from dodal.devices.common_dcm import BaseDCM
|
|
|
13
13
|
from dodal.devices.detector.detector_motion import DetectorMotion
|
|
14
14
|
from dodal.devices.eiger import EigerDetector
|
|
15
15
|
from dodal.devices.fast_grid_scan import (
|
|
16
|
-
|
|
16
|
+
ZebraFastGridScanThreeD,
|
|
17
17
|
set_fast_grid_scan_params,
|
|
18
18
|
)
|
|
19
19
|
from dodal.devices.flux import Flux
|
|
@@ -48,6 +48,7 @@ from mx_bluesky.common.external_interaction.callbacks.common.zocalo_callback imp
|
|
|
48
48
|
)
|
|
49
49
|
from mx_bluesky.common.external_interaction.callbacks.xray_centre.ispyb_callback import (
|
|
50
50
|
GridscanISPyBCallback,
|
|
51
|
+
generate_start_info_from_omega_map,
|
|
51
52
|
)
|
|
52
53
|
from mx_bluesky.common.external_interaction.callbacks.xray_centre.nexus_callback import (
|
|
53
54
|
GridscanNexusFileCallback,
|
|
@@ -80,7 +81,7 @@ def i04_grid_detect_then_xray_centre(
|
|
|
80
81
|
backlight: Backlight = inject("backlight"),
|
|
81
82
|
beamstop: Beamstop = inject("beamstop"),
|
|
82
83
|
dcm: BaseDCM = inject("dcm"),
|
|
83
|
-
zebra_fast_grid_scan:
|
|
84
|
+
zebra_fast_grid_scan: ZebraFastGridScanThreeD = inject("zebra_fast_grid_scan"),
|
|
84
85
|
flux: Flux = inject("flux"),
|
|
85
86
|
oav: OAV = inject("oav"),
|
|
86
87
|
pin_tip_detection: PinTipDetection = inject("pin_tip_detection"),
|
|
@@ -198,7 +199,9 @@ def create_gridscan_callbacks() -> tuple[
|
|
|
198
199
|
GridscanISPyBCallback(
|
|
199
200
|
param_type=GridCommon,
|
|
200
201
|
emit=ZocaloCallback(
|
|
201
|
-
PlanNameConstants.DO_FGS,
|
|
202
|
+
PlanNameConstants.DO_FGS,
|
|
203
|
+
EnvironmentConstants.ZOCALO_ENV,
|
|
204
|
+
generate_start_info_from_omega_map,
|
|
202
205
|
),
|
|
203
206
|
),
|
|
204
207
|
)
|
{mx_bluesky-1.5.6 → mx_bluesky-1.5.8}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py
RENAMED
|
@@ -7,7 +7,7 @@ from typing import TypedDict
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
import zmq
|
|
9
9
|
from dodal.devices.i04.constants import RedisConstants
|
|
10
|
-
from dodal.devices.i04.murko_results import
|
|
10
|
+
from dodal.devices.i04.murko_results import MurkoResult
|
|
11
11
|
from numpy.typing import NDArray
|
|
12
12
|
from PIL import Image
|
|
13
13
|
from redis import StrictRedis
|
|
@@ -16,6 +16,8 @@ from mx_bluesky.common.utils.log import LOGGER
|
|
|
16
16
|
|
|
17
17
|
MURKO_ADDRESS = "tcp://i04-murko-prod.diamond.ac.uk:8008"
|
|
18
18
|
|
|
19
|
+
FullMurkoResults = dict[str, list[MurkoResult]]
|
|
20
|
+
|
|
19
21
|
|
|
20
22
|
class MurkoRequest(TypedDict):
|
|
21
23
|
"""See https://github.com/MartinSavko/murko#usage for more information."""
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from collections.abc import Callable
|
|
2
|
+
from functools import partial
|
|
2
3
|
|
|
3
4
|
import bluesky.plan_stubs as bps
|
|
4
5
|
import bluesky.preprocessors as bpp
|
|
5
|
-
from bluesky.preprocessors import run_decorator,
|
|
6
|
+
from bluesky.preprocessors import run_decorator, subs_decorator
|
|
6
7
|
from bluesky.utils import MsgGenerator
|
|
7
8
|
from dodal.common import inject
|
|
8
9
|
from dodal.devices.i04.constants import RedisConstants
|
|
@@ -42,7 +43,7 @@ def thaw_and_stream_to_redis(
|
|
|
42
43
|
robot: BartRobot = inject("robot"),
|
|
43
44
|
thawer: Thawer = inject("thawer"),
|
|
44
45
|
smargon: Smargon = inject("smargon"),
|
|
45
|
-
oav: OAV = inject("
|
|
46
|
+
oav: OAV = inject("oav_full_screen"),
|
|
46
47
|
oav_to_redis_forwarder: OAVToRedisForwarder = inject("oav_to_redis_forwarder"),
|
|
47
48
|
) -> MsgGenerator:
|
|
48
49
|
"""Turns on the thawer and rotates the sample by {rotation} degrees to thaw it, then
|
|
@@ -84,7 +85,7 @@ def thaw_and_murko_centre(
|
|
|
84
85
|
robot: BartRobot = inject("robot"),
|
|
85
86
|
thawer: Thawer = inject("thawer"),
|
|
86
87
|
smargon: Smargon = inject("smargon"),
|
|
87
|
-
oav: OAV = inject("
|
|
88
|
+
oav: OAV = inject("oav_full_screen"),
|
|
88
89
|
murko_results: MurkoResultsDevice = inject("murko_results"),
|
|
89
90
|
oav_to_redis_forwarder: OAVToRedisForwarder = inject("oav_to_redis_forwarder"),
|
|
90
91
|
) -> MsgGenerator:
|
|
@@ -109,14 +110,14 @@ def thaw_and_murko_centre(
|
|
|
109
110
|
defaults are always correct
|
|
110
111
|
"""
|
|
111
112
|
|
|
113
|
+
MURKO_RESULTS_GROUP = "get_results"
|
|
114
|
+
|
|
112
115
|
def centre_then_switch_forwarder_to_ROI() -> MsgGenerator:
|
|
113
116
|
yield from bps.complete(oav_to_redis_forwarder, wait=True)
|
|
114
117
|
|
|
115
|
-
yield from bps.trigger(murko_results, group="get_results")
|
|
116
|
-
|
|
117
118
|
yield from bps.mv(oav_to_redis_forwarder.selected_source, Source.ROI.value)
|
|
118
119
|
|
|
119
|
-
yield from bps.wait(
|
|
120
|
+
yield from bps.wait(MURKO_RESULTS_GROUP)
|
|
120
121
|
x_predict = yield from bps.rd(murko_results.x_mm)
|
|
121
122
|
y_predict = yield from bps.rd(murko_results.y_mm)
|
|
122
123
|
z_predict = yield from bps.rd(murko_results.z_mm)
|
|
@@ -127,7 +128,13 @@ def thaw_and_murko_centre(
|
|
|
127
128
|
|
|
128
129
|
yield from bps.kickoff(oav_to_redis_forwarder, wait=True)
|
|
129
130
|
|
|
130
|
-
yield from
|
|
131
|
+
sample_id = yield from bps.rd(robot.sample_id)
|
|
132
|
+
yield from bps.mv(murko_results.sample_id, str(sample_id))
|
|
133
|
+
|
|
134
|
+
yield from bps.stage(murko_results, wait=True)
|
|
135
|
+
yield from bps.trigger(murko_results, group=MURKO_RESULTS_GROUP)
|
|
136
|
+
|
|
137
|
+
yield from bpp.contingency_wrapper(
|
|
131
138
|
_thaw_and_stream_to_redis(
|
|
132
139
|
time_to_thaw,
|
|
133
140
|
rotation,
|
|
@@ -138,7 +145,7 @@ def thaw_and_murko_centre(
|
|
|
138
145
|
oav_to_redis_forwarder,
|
|
139
146
|
centre_then_switch_forwarder_to_ROI,
|
|
140
147
|
),
|
|
141
|
-
|
|
148
|
+
final_plan=partial(bps.unstage, murko_results, wait=True),
|
|
142
149
|
)
|
|
143
150
|
|
|
144
151
|
|