mx-bluesky 1.4.3__tar.gz → 1.4.5__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.
Files changed (453) hide show
  1. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/Dockerfile.release +6 -0
  2. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/PKG-INFO +3 -3
  3. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/helmchart/templates/deployment.yaml +0 -1
  4. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/pyproject.toml +3 -3
  5. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/run_hyperion.sh +3 -11
  6. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/_version.py +2 -2
  7. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +2 -2
  8. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +2 -2
  9. mx_bluesky-1.4.5/src/mx_bluesky/common/device_setup_plans/setup_panda.py +9 -0
  10. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +4 -15
  11. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +9 -1
  12. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/parameters/components.py +0 -1
  13. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/parameters/constants.py +16 -0
  14. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/parameters/gridscan.py +6 -1
  15. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/plans/do_fgs.py +0 -6
  16. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/utils/exceptions.py +2 -1
  17. mx_bluesky-1.4.5/src/mx_bluesky/definitions.py +4 -0
  18. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/__main__.py +8 -43
  19. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +9 -8
  20. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +10 -0
  21. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -15
  22. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +11 -8
  23. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +8 -0
  24. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +23 -16
  25. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +1 -5
  26. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +1 -8
  27. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +12 -4
  28. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +2 -0
  29. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +24 -5
  30. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/external_interaction/config_server.py +13 -2
  31. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/parameters/cli.py +1 -9
  32. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/parameters/constants.py +6 -1
  33. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/parameters/gridscan.py +5 -5
  34. mx_bluesky-1.4.5/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +1006 -0
  35. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/utils/validation.py +20 -17
  36. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky.egg-info/PKG-INFO +3 -3
  37. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky.egg-info/SOURCES.txt +5 -2
  38. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky.egg-info/requires.txt +2 -2
  39. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/conftest.py +75 -47
  40. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/conftest.py +1 -1
  41. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/experiment_plans/test_fgs_plan.py +18 -13
  42. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/experiment_plans/test_plan_system.py +6 -9
  43. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +1 -1
  44. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/test_aperturescatterguard_system.py +2 -2
  45. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +2 -1
  46. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +2 -1
  47. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +2 -1
  48. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +2 -1
  49. mx_bluesky-1.4.5/tests/test_data/test_daq_configuration/lookup/BeamLine_Undulator_toGap.txt +60 -0
  50. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i04/test_thawing.py +5 -5
  51. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/conftest.py +22 -11
  52. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/device_setup_plans/test_read_hardware_for_setup.py +1 -1
  53. mx_bluesky-1.4.5/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +42 -0
  54. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/callbacks/test_zocalo_handler.py +2 -9
  55. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +17 -0
  56. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/plan_stubs/test_do_fgs.py +3 -9
  57. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/conftest.py +17 -0
  58. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/conftest.py +7 -1
  59. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +1 -1
  60. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +25 -23
  61. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +1 -1
  62. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/device_setup_plans/test_xbpm_feedback.py +50 -5
  63. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/conftest.py +31 -14
  64. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_flyscan_xray_centre_plan.py +49 -36
  65. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_grid_detection_plan.py +2 -2
  66. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +61 -38
  67. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_multi_rotation_scan_plan.py +32 -6
  68. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +3 -6
  69. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +1 -1
  70. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +1 -38
  71. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +21 -0
  72. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +2 -3
  73. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +1 -1
  74. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +42 -3
  75. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/test_main_system.py +45 -116
  76. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/build_docker_image.sh +7 -0
  77. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/deploy/deploy_hyperion_to_k8s.sh +0 -2
  78. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/deploy/deploy_mx_bluesky.py +0 -1
  79. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/docker/entrypoint.sh +3 -10
  80. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/docker/i03-compose.yml +0 -1
  81. mx_bluesky-1.4.3/src/mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py +0 -80
  82. mx_bluesky-1.4.3/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -964
  83. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.copier-answers.yml +0 -0
  84. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.coveragerc +0 -0
  85. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.devcontainer/Dockerfile +0 -0
  86. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.devcontainer/devcontainer.json +0 -0
  87. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.dockerignore +0 -0
  88. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/CONTRIBUTING.md +0 -0
  89. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  90. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  91. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
  92. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/actions/install_requirements/action.yml +0 -0
  93. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/actions/verify-nexus/Dockerfile +0 -0
  94. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/actions/verify-nexus/action.yml +0 -0
  95. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/actions/verify-nexus/entrypoint.sh +0 -0
  96. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/dependabot.yml +0 -0
  97. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/pages/index.html +0 -0
  98. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/pages/make_switcher.py +0 -0
  99. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/workflows/_check.yml +0 -0
  100. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/workflows/_container.yml +0 -0
  101. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/workflows/_dist.yml +0 -0
  102. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/workflows/_docs.yml +0 -0
  103. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/workflows/_pypi.yml +0 -0
  104. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/workflows/_release.yml +0 -0
  105. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/workflows/_test.yml +0 -0
  106. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/workflows/_tox.yml +0 -0
  107. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/workflows/ci.yml +0 -0
  108. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.github/workflows/periodic.yml +0 -0
  109. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.gitignore +0 -0
  110. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.pre-commit-config.yaml +0 -0
  111. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.vscode/extensions.json +0 -0
  112. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.vscode/launch.json +0 -0
  113. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.vscode/mx-bluesky.code-workspace +0 -0
  114. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
  115. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.vscode/settings.json +0 -0
  116. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/.vscode/tasks.json +0 -0
  117. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/Dockerfile +0 -0
  118. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/LICENSE +0 -0
  119. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/README.rst +0 -0
  120. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/catalog-info.yaml +0 -0
  121. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/codecov.yml +0 -0
  122. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/conftest.py +0 -0
  123. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/_api.rst +0 -0
  124. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/_templates/custom-module-template.rst +0 -0
  125. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/conf.py +0 -0
  126. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  127. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
  128. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
  129. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/explanations/decisions.rst +0 -0
  130. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/how-to/contribute.rst +0 -0
  131. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/how-to/create-a-release.rst +0 -0
  132. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
  133. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
  134. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
  135. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
  136. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
  137. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
  138. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/how-to/get-started.rst +0 -0
  139. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/index.rst +0 -0
  140. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/reference/standards.rst +0 -0
  141. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/general/tutorials/profile-tests.rst +0 -0
  142. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/hyperion/deploying-hyperion.rst +0 -0
  143. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/hyperion/index.rst +0 -0
  144. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/hyperion/reference/gridscan.puml +0 -0
  145. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
  146. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/hyperion/reference/readme.md +0 -0
  147. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/index.rst +0 -0
  148. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
  149. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
  150. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/murko-integration/index.rst +0 -0
  151. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  152. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
  153. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
  154. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
  155. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/serial-crystallography-on-i24/how-to/stage-pmac-moves.rst +0 -0
  156. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/serial-crystallography-on-i24/index.rst +0 -0
  157. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +0 -0
  158. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/images/dls-favicon.ico +0 -0
  159. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/images/dls-logo.svg +0 -0
  160. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/docs/index.rst +0 -0
  161. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/helmchart/Chart.yaml +0 -0
  162. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/helmchart/templates/ingress.yaml +0 -0
  163. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/helmchart/templates/service.yaml +0 -0
  164. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/helmchart/values.yaml +0 -0
  165. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/add_assignee_when_pr_opened.yml +0 -0
  166. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/assigned_issues_to_in_progress.yml +0 -0
  167. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/code.yml +0 -0
  168. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/container_tests.sh +0 -0
  169. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/get_issue_from_pr.yml +0 -0
  170. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/get_project_data_and_move_column.yml +0 -0
  171. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/linkcheck.yml +0 -0
  172. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/open_prs_to_review.yml +0 -0
  173. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/opened_issues_to_backlog.yml +0 -0
  174. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/pin_versions.py +0 -0
  175. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/pre_release_workflow.yml +0 -0
  176. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/rework_prs_to_in_progress.yml +0 -0
  177. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/test_data/pip_freeze.txt +0 -0
  178. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/test_data/setup.cfg +0 -0
  179. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/test_data/setup.cfg.pinned +0 -0
  180. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/test_data/setup.cfg.unpinned +0 -0
  181. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/hyperion_other/workflows/test_pin_versions.py +0 -0
  182. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/run_hyperion_in_podman.sh +0 -0
  183. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/setup.cfg +0 -0
  184. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/__init__.py +0 -0
  185. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/__main__.py +0 -0
  186. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/__init__.py +0 -0
  187. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i04/__init__.py +0 -0
  188. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
  189. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +0 -0
  190. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i04/thawing_plan.py +0 -0
  191. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/__init__.py +0 -0
  192. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/__init__.py +0 -0
  193. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +0 -0
  194. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/dcid.py +0 -0
  195. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
  196. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +0 -0
  197. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  198. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/extruder/__init__.py +0 -0
  199. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +0 -0
  200. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
  201. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
  202. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
  203. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  204. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
  205. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  206. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  207. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  208. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  209. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +0 -0
  210. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png +0 -0
  211. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png +0 -0
  212. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  213. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
  214. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +0 -0
  215. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +0 -0
  216. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
  217. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/log.py +0 -0
  218. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +0 -0
  219. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
  220. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +0 -0
  221. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  222. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  223. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  224. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  225. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +0 -0
  226. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
  227. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
  228. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
  229. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
  230. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +0 -0
  231. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  232. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
  233. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -0
  234. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +0 -0
  235. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +0 -0
  236. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +0 -0
  237. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
  238. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +0 -0
  239. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/__init__.py +0 -0
  240. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/device_setup_plans/read_hardware_for_setup.py +0 -0
  241. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/__init__.py +0 -0
  242. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/common/__init__.py +0 -0
  243. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py +0 -0
  244. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/common/aperture_change_callback.py +0 -0
  245. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py +0 -0
  246. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +0 -0
  247. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +0 -0
  248. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py +0 -0
  249. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py +0 -0
  250. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +0 -0
  251. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py +0 -0
  252. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -0
  253. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +0 -0
  254. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/config_server.py +0 -0
  255. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/ispyb/__init__.py +0 -0
  256. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +0 -0
  257. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +0 -0
  258. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +0 -0
  259. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +0 -0
  260. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/nexus/__init__.py +0 -0
  261. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/nexus/nexus_utils.py +0 -0
  262. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/nexus/write_nexus.py +0 -0
  263. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/external_interaction/test_config_server.py +0 -0
  264. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/plans/__init__.py +0 -0
  265. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/utils/log.py +0 -0
  266. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/utils/tracing.py +0 -0
  267. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/common/utils/utils.py +0 -0
  268. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/__init__.py +0 -0
  269. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/__init__.py +0 -0
  270. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/check_beamstop.py +0 -0
  271. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +0 -0
  272. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py +0 -0
  273. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/position_detector.py +0 -0
  274. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py +0 -0
  275. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/setup_oav.py +0 -0
  276. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -0
  277. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +0 -0
  278. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +0 -0
  279. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -0
  280. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py +0 -0
  281. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/common/xrc_result.py +0 -0
  282. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py +0 -0
  283. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
  284. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +0 -0
  285. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +0 -0
  286. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +0 -0
  287. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
  288. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
  289. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +0 -0
  290. {mx_bluesky-1.4.3/src/mx_bluesky/hyperion/external_interaction/callbacks/common → mx_bluesky-1.4.5/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  291. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +0 -0
  292. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +0 -0
  293. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +0 -0
  294. {mx_bluesky-1.4.3/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.4.5/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling}/__init__.py +0 -0
  295. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/sample_handling_callback.py +0 -0
  296. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
  297. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/parameters/components.py +0 -0
  298. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +0 -0
  299. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/parameters/robot_load.py +0 -0
  300. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/parameters/rotation.py +0 -0
  301. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/hyperion/utils/context.py +0 -0
  302. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky/jupyter_example.ipynb +0 -0
  303. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
  304. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
  305. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/src/mx_bluesky.egg-info/top_level.txt +0 -0
  306. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/start_jupyter.sh +0 -0
  307. {mx_bluesky-1.4.3/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.4.5/tests}/__init__.py +0 -0
  308. {mx_bluesky-1.4.3/tests → mx_bluesky-1.4.5/tests/system_tests}/__init__.py +0 -0
  309. {mx_bluesky-1.4.3/tests/system_tests → mx_bluesky-1.4.5/tests/system_tests/hyperion}/__init__.py +0 -0
  310. {mx_bluesky-1.4.3/tests/system_tests/hyperion → mx_bluesky-1.4.5/tests/system_tests/hyperion/experiment_plans}/__init__.py +0 -0
  311. {mx_bluesky-1.4.3/tests/system_tests/hyperion/experiment_plans → mx_bluesky-1.4.5/tests/system_tests/hyperion/external_interaction}/__init__.py +0 -0
  312. {mx_bluesky-1.4.3/tests/system_tests/hyperion/external_interaction → mx_bluesky-1.4.5/tests/system_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  313. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
  314. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/external_interaction/conftest.py +0 -0
  315. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/external_interaction/test_config_service.py +0 -0
  316. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +0 -0
  317. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +0 -0
  318. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +0 -0
  319. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +0 -0
  320. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/system_tests/hyperion/test_device_setups_and_cleanups.py +0 -0
  321. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/nexus_files/README.md +0 -0
  322. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/nexus_files/fake_data.h5 +0 -0
  323. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
  324. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
  325. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
  326. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
  327. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
  328. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
  329. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
  330. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +0 -0
  331. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -0
  332. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
  333. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
  334. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
  335. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters_nomove.json +0 -0
  336. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
  337. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
  338. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
  339. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
  340. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/scratch/README +0 -0
  341. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_OAVCentring.json +0 -0
  342. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
  343. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  344. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_beamline_parameters.txt +0 -0
  345. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
  346. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_config.cfg +0 -0
  347. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
  348. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  349. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  350. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +0 -0
  351. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_det_dist_converter.txt +0 -0
  352. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_display.configuration +0 -0
  353. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
  354. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_lookup_table.txt +0 -0
  355. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/test_data/test_mirror_focus.json +0 -0
  356. {mx_bluesky-1.4.3/tests/system_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.5/tests/unit_tests}/__init__.py +0 -0
  357. {mx_bluesky-1.4.3/tests/unit_tests → mx_bluesky-1.4.5/tests/unit_tests/beamlines}/__init__.py +0 -0
  358. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
  359. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +0 -0
  360. {mx_bluesky-1.4.3/tests/unit_tests/beamlines → mx_bluesky-1.4.5/tests/unit_tests/beamlines/i24}/__init__.py +0 -0
  361. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/__init__.py +0 -0
  362. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/extruder/__init__.py +0 -0
  363. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +0 -0
  364. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  365. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +0 -0
  366. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +0 -0
  367. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
  368. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +0 -0
  369. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +0 -0
  370. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +0 -0
  371. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +0 -0
  372. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  373. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
  374. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +0 -0
  375. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +0 -0
  376. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +0 -0
  377. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +0 -0
  378. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
  379. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
  380. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +0 -0
  381. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/__init__.py +0 -0
  382. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/__init__.py +0 -0
  383. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/callbacks/__init__.py +0 -0
  384. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/callbacks/common/__init__.py +0 -0
  385. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/callbacks/common/test_abstract_event.py +0 -0
  386. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/callbacks/ispyb/__init__.py +0 -0
  387. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/callbacks/ispyb/conftest.py +0 -0
  388. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_expeye_interaction.py +0 -0
  389. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +0 -0
  390. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +0 -0
  391. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
  392. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/conftest.py +0 -0
  393. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +0 -0
  394. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/test_ispyb_utils.py +0 -0
  395. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/xray_centre/__init__.py +0 -0
  396. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_handler.py +0 -0
  397. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_mapping.py +0 -0
  398. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/external_interaction/xray_centre/test_nexus_handler.py +0 -0
  399. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/utils/__init__.py +0 -0
  400. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/common/utils/test_log.py +0 -0
  401. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/__init__.py +0 -0
  402. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/device_setup_plans/__init__.py +0 -0
  403. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/device_setup_plans/test_check_beamstop.py +0 -0
  404. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +0 -0
  405. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +0 -0
  406. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +0 -0
  407. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/__init__.py +0 -0
  408. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -0
  409. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_change_aperture_then_move_plan.py +0 -0
  410. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
  411. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_grid_detect_then_xray_centre_plan.py +0 -0
  412. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_oav_snapshot_plan.py +0 -0
  413. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +0 -0
  414. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
  415. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/__init__.py +0 -0
  416. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
  417. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -0
  418. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +0 -0
  419. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
  420. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +0 -0
  421. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/__init__.py +0 -0
  422. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +0 -0
  423. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
  424. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -0
  425. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/nexus/__init__.py +0 -0
  426. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +0 -0
  427. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +0 -0
  428. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
  429. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
  430. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
  431. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +0 -0
  432. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
  433. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
  434. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/test_utils.py +0 -0
  435. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/utils/__init__.py +0 -0
  436. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
  437. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
  438. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/tests/unit_tests/test_cli.py +0 -0
  439. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/beam_off_trickery.sh +0 -0
  440. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/build_imginfo.sh +0 -0
  441. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/deploy/create_venv.py +0 -0
  442. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
  443. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/deploy/test_deploy.py +0 -0
  444. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/dev_jaeger_container.sh +0 -0
  445. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/dls_dev_env.sh +0 -0
  446. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/docker/healthcheck.sh +0 -0
  447. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/generate_plantuml.py +0 -0
  448. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/graylog/Dockerfile +0 -0
  449. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/graylog/tcp_input.json +0 -0
  450. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/procserv_ioc_start.sh +0 -0
  451. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/run_imginfo.sh +0 -0
  452. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/setup_graylog.sh +0 -0
  453. {mx_bluesky-1.4.3 → mx_bluesky-1.4.5}/utility_scripts/strip_metafile.py +0 -0
@@ -1,5 +1,11 @@
1
1
  FROM python:3.11 AS build
2
2
 
3
+ ARG DEBIAN_FRONTEND=noninteractive
4
+
5
+ RUN apt update -y && apt upgrade -y
6
+ # Needed for python cv2 dependency
7
+ RUN apt install -y libgl1 libglib2.0-0
8
+
3
9
  RUN pip install setuptools_scm
4
10
 
5
11
  # Copy the pyproject.toml and install dependencies for better caching when developing
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mx-bluesky
3
- Version: 1.4.3
3
+ Version: 1.4.5
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
@@ -237,9 +237,9 @@ Requires-Dist: matplotlib
237
237
  Requires-Dist: blueapi>=0.5.0
238
238
  Requires-Dist: daq-config-server>=0.1.1
239
239
  Requires-Dist: ophyd==1.9.0
240
- Requires-Dist: ophyd-async>=0.8a5
240
+ Requires-Dist: ophyd-async>=0.9.0a2
241
241
  Requires-Dist: bluesky>=1.13
242
- Requires-Dist: dls-dodal==1.38.0
242
+ Requires-Dist: dls-dodal==1.40.0
243
243
  Provides-Extra: dev
244
244
  Requires-Dist: black; extra == "dev"
245
245
  Requires-Dist: build; extra == "dev"
@@ -119,7 +119,6 @@ spec:
119
119
  value: "/dls_sw/apps/zocalo/live/configuration.yaml"
120
120
  - name: ISPYB_CONFIG_PATH
121
121
  value: "/dls_sw/dasc/mariadb/credentials/ispyb-hyperion-{{ .Values.hyperion.beamline }}.cfg"
122
- args: [ "--external-callbacks" ]
123
122
  {{- end }}
124
123
  readinessProbe:
125
124
  exec:
@@ -44,9 +44,9 @@ dependencies = [
44
44
  "blueapi >= 0.5.0",
45
45
  "daq-config-server >= 0.1.1",
46
46
  "ophyd == 1.9.0",
47
- "ophyd-async >= 0.8a5",
47
+ "ophyd-async >= 0.9.0a2",
48
48
  "bluesky >= 1.13",
49
- "dls-dodal == 1.38.0",
49
+ "dls-dodal == 1.40.0",
50
50
  ]
51
51
 
52
52
 
@@ -121,7 +121,7 @@ markers = [
121
121
  "skip_in_pycharm: marks test as not working in pycharm testrunner",
122
122
  ]
123
123
  addopts = """
124
- --tb=native -vv --doctest-modules --doctest-glob="*.rst"
124
+ --tb=native -vv --doctest-modules --doctest-glob="*.rst" --durations=10
125
125
  """
126
126
  # https://iscinumpy.gitlab.io/post/bound-version-constraints/#watch-for-warnings
127
127
  filterwarnings = [
@@ -5,7 +5,6 @@ START=1
5
5
  SKIP_STARTUP_CONNECTION=false
6
6
  VERBOSE_EVENT_LOGGING=false
7
7
  IN_DEV=false
8
- EXTERNAL_CALLBACK_SERVICE=false
9
8
 
10
9
  for option in "$@"; do
11
10
  case $option in
@@ -28,9 +27,6 @@ for option in "$@"; do
28
27
  --verbose-event-logging)
29
28
  VERBOSE_EVENT_LOGGING=true
30
29
  ;;
31
- --external-callbacks)
32
- EXTERNAL_CALLBACK_SERVICE=true
33
- ;;
34
30
 
35
31
  --help|--info|--h)
36
32
 
@@ -119,11 +115,9 @@ if [[ $START == 1 ]]; then
119
115
 
120
116
  #Add future arguments here
121
117
  declare -A h_only_args=( ["SKIP_STARTUP_CONNECTION"]="$SKIP_STARTUP_CONNECTION"
122
- ["VERBOSE_EVENT_LOGGING"]="$VERBOSE_EVENT_LOGGING"
123
- ["EXTERNAL_CALLBACK_SERVICE"]="$EXTERNAL_CALLBACK_SERVICE" )
118
+ ["VERBOSE_EVENT_LOGGING"]="$VERBOSE_EVENT_LOGGING" )
124
119
  declare -A h_only_arg_strings=( ["SKIP_STARTUP_CONNECTION"]="--skip-startup-connection"
125
- ["VERBOSE_EVENT_LOGGING"]="--verbose-event-logging"
126
- ["EXTERNAL_CALLBACK_SERVICE"]="--external-callbacks")
120
+ ["VERBOSE_EVENT_LOGGING"]="--verbose-event-logging" )
127
121
 
128
122
  declare -A h_and_cb_args=( ["IN_DEV"]="$IN_DEV" )
129
123
  declare -A h_and_cb_arg_strings=( ["IN_DEV"]="--dev" )
@@ -146,9 +140,7 @@ if [[ $START == 1 ]]; then
146
140
 
147
141
  unset PYEPICS_LIBCA
148
142
  hyperion `echo $h_commands;`>$start_log_path 2>&1 &
149
- if [ $EXTERNAL_CALLBACK_SERVICE == true ]; then
150
- hyperion-callbacks `echo $cb_commands;`>$callback_start_log_path 2>&1 &
151
- fi
143
+ hyperion-callbacks `echo $cb_commands;`>$callback_start_log_path 2>&1 &
152
144
  echo "$(date) Waiting for Hyperion to start"
153
145
 
154
146
  for i in {1..30}
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.4.3'
16
- __version_tuple__ = version_tuple = (1, 4, 3)
15
+ __version__ = version = '1.4.5'
16
+ __version_tuple__ = version_tuple = (1, 4, 5)
@@ -215,6 +215,6 @@ def start_viewer(oav: OAV, pmac: PMAC, RE: RunEngine, oav1: str = OAV1_CAM):
215
215
  if __name__ == "__main__":
216
216
  RE = RunEngine(call_returns_result=True)
217
217
  # Get devices out of dodal
218
- oav: OAV = i24.oav()
219
- pmac: PMAC = i24.pmac()
218
+ oav: OAV = i24.oav(connect_immediately=True)
219
+ pmac: PMAC = i24.pmac(connect_immediately=True)
220
220
  start_viewer(oav, pmac, RE)
@@ -21,9 +21,9 @@ from mx_bluesky.beamlines.i24.serial.setup_beamline.ca import caget, caput
21
21
 
22
22
  def get_beam_center_device(detector_in_use: str) -> DetectorBeamCenter:
23
23
  if detector_in_use == "eiger":
24
- return i24.eiger_beam_center()
24
+ return i24.eiger_beam_center(connect_immediately=True)
25
25
  else:
26
- return i24.pilatus_beam_center()
26
+ return i24.pilatus_beam_center(connect_immediately=True)
27
27
 
28
28
 
29
29
  def compute_beam_center_position_from_lut(
@@ -0,0 +1,9 @@
1
+ from ophyd_async.core import YamlSettingsProvider
2
+ from ophyd_async.fastcs.panda import HDFPanda
3
+ from ophyd_async.plan_stubs import apply_panda_settings, retrieve_settings
4
+
5
+
6
+ def load_panda_from_yaml(yaml_directory: str, yaml_file_name: str, panda: HDFPanda):
7
+ provider = YamlSettingsProvider(yaml_directory)
8
+ settings = yield from retrieve_settings(provider, yaml_file_name, panda)
9
+ yield from apply_panda_settings(settings)
@@ -7,7 +7,6 @@ from dodal.devices.zocalo import ZocaloStartInfo, ZocaloTrigger
7
7
 
8
8
  from mx_bluesky.common.parameters.constants import (
9
9
  DocDescriptorNames,
10
- TriggerConstants,
11
10
  )
12
11
  from mx_bluesky.common.utils.exceptions import ISPyBDepositionNotMade
13
12
  from mx_bluesky.common.utils.log import ISPYB_ZOCALO_CALLBACK_LOGGER
@@ -30,27 +29,17 @@ class ZocaloCallback(CallbackBase):
30
29
 
31
30
  def _reset_state(self):
32
31
  self.run_uid: str | None = None
33
- self.triggering_plan: str | None = None
34
- self.zocalo_interactor: ZocaloTrigger | None = None
35
32
  self.zocalo_info: list[ZocaloStartInfo] = []
36
33
  self.descriptors: dict[str, EventDescriptor] = {}
37
34
 
38
- def __init__(
39
- self,
40
- ):
35
+ def __init__(self, triggering_plan: str, zocalo_environment: str):
41
36
  super().__init__()
37
+ self.triggering_plan = triggering_plan
38
+ self.zocalo_interactor = ZocaloTrigger(zocalo_environment)
42
39
  self._reset_state()
43
40
 
44
41
  def start(self, doc: RunStart):
45
42
  ISPYB_ZOCALO_CALLBACK_LOGGER.info("Zocalo handler received start document.")
46
- if triggering_plan := doc.get(TriggerConstants.ZOCALO):
47
- self.triggering_plan = triggering_plan
48
- assert isinstance(zocalo_environment := doc.get("zocalo_environment"), str)
49
- ISPYB_ZOCALO_CALLBACK_LOGGER.info(
50
- f"Zocalo environment set to {zocalo_environment}."
51
- )
52
- self.zocalo_interactor = ZocaloTrigger(zocalo_environment)
53
-
54
43
  if self.triggering_plan and doc.get("subplan_name") == self.triggering_plan:
55
44
  self.run_uid = doc.get("uid")
56
45
  assert isinstance(scan_points := doc.get("scan_points"), list)
@@ -58,6 +47,7 @@ class ZocaloCallback(CallbackBase):
58
47
  isinstance(ispyb_ids := doc.get("ispyb_dcids"), tuple)
59
48
  and len(ispyb_ids) > 0
60
49
  ):
50
+ ISPYB_ZOCALO_CALLBACK_LOGGER.info(f"Zocalo triggering for {ispyb_ids}")
61
51
  ids_and_shape = list(zip(ispyb_ids, scan_points, strict=False))
62
52
  start_frame = 0
63
53
  self.zocalo_info = []
@@ -82,7 +72,6 @@ class ZocaloCallback(CallbackBase):
82
72
  filename = doc["data"]["eiger_odin_file_writer_id"]
83
73
  for start_info in self.zocalo_info:
84
74
  start_info.filename = filename
85
- assert self.zocalo_interactor is not None
86
75
  self.zocalo_interactor.run_start(start_info)
87
76
  return doc
88
77
 
@@ -43,7 +43,10 @@ from mx_bluesky.common.parameters.constants import DocDescriptorNames, PlanNameC
43
43
  from mx_bluesky.common.parameters.gridscan import (
44
44
  GridCommon,
45
45
  )
46
- from mx_bluesky.common.utils.exceptions import ISPyBDepositionNotMade
46
+ from mx_bluesky.common.utils.exceptions import (
47
+ ISPyBDepositionNotMade,
48
+ SampleException,
49
+ )
47
50
  from mx_bluesky.common.utils.log import ISPYB_ZOCALO_CALLBACK_LOGGER, set_dcgid_tag
48
51
 
49
52
  if TYPE_CHECKING:
@@ -281,5 +284,10 @@ class GridscanISPyBCallback(BaseISPyBCallback):
281
284
  )
282
285
  if self.ispyb_ids == IspybIds():
283
286
  raise ISPyBDepositionNotMade("ispyb was not initialised at run start")
287
+ exception_type, message = SampleException.type_and_message_from_reason(
288
+ doc.get("reason", "")
289
+ )
290
+ if exception_type:
291
+ doc["reason"] = message
284
292
  return super().activity_gated_stop(doc)
285
293
  return self._tag_doc(doc)
@@ -93,7 +93,6 @@ class IspybExperimentType(StrEnum):
93
93
 
94
94
  class MxBlueskyParameters(BaseModel):
95
95
  model_config = ConfigDict(
96
- arbitrary_types_allowed=True,
97
96
  extra="allow",
98
97
  )
99
98
 
@@ -1,3 +1,4 @@
1
+ import os
1
2
  from enum import Enum
2
3
 
3
4
  from dodal.devices.aperturescatterguard import ApertureValue
@@ -6,6 +7,8 @@ from dodal.devices.zocalo.zocalo_constants import ZOCALO_ENV as ZOCALO_ENV_FROM_
6
7
  from dodal.utils import get_beamline_name
7
8
  from pydantic.dataclasses import dataclass
8
9
 
10
+ from mx_bluesky.definitions import ROOT_DIR
11
+
9
12
  BEAMLINE = get_beamline_name("test")
10
13
  TEST_MODE = BEAMLINE == "test"
11
14
 
@@ -75,6 +78,10 @@ class HardwareConstants:
75
78
  THAWING_TIME = 20
76
79
  TIP_OFFSET_UM = 0
77
80
 
81
+ # Value quoted in https://www.dectris.com/en/detectors/x-ray-detectors/eiger2/eiger2-for-synchrotrons/eiger2-x/,
82
+ # causes dropped frames, so increase value for safety
83
+ PANDA_FGS_EIGER_DEADTIME_S = 5e-5
84
+
78
85
 
79
86
  @dataclass(frozen=True)
80
87
  class GridscanParamConstants:
@@ -118,6 +125,15 @@ class PlanGroupCheckpointConstants:
118
125
  READY_FOR_OAV = "ready_for_oav"
119
126
 
120
127
 
128
+ # Eventually replace below with https://github.com/DiamondLightSource/mx-bluesky/issues/798
129
+ @dataclass(frozen=True)
130
+ class DeviceSettingsConstants:
131
+ PANDA_FLYSCAN_SETTINGS_FILENAME = "panda-gridscan"
132
+ PANDA_FLYSCAN_SETTINGS_DIR = os.path.abspath(
133
+ f"{ROOT_DIR}/hyperion/resources/panda/{PANDA_FLYSCAN_SETTINGS_FILENAME}"
134
+ )
135
+
136
+
121
137
  @dataclass(frozen=True)
122
138
  class SimConstants:
123
139
  BEAMLINE = "BL03S"
@@ -29,8 +29,13 @@ class GridCommon(
29
29
  DiffractionExperimentWithSample,
30
30
  OptionalGonioAngleStarts,
31
31
  ):
32
- """Parameters used in every MX diffraction experiment using grids. This model should be used by plans which have no knowledge of the grid specifications - i.e before automatic grid detection has completed"""
32
+ """
33
+ Parameters used in every MX diffraction experiment using grids. This model should
34
+ be used by plans which have no knowledge of the grid specifications - i.e before
35
+ automatic grid detection has completed
36
+ """
33
37
 
38
+ box_size_um: float = Field(default=GridscanParamConstants.BOX_WIDTH_UM)
34
39
  grid_width_um: float = Field(default=GridscanParamConstants.WIDTH_UM)
35
40
  exposure_time_s: float = Field(default=GridscanParamConstants.EXPOSURE_TIME_S)
36
41
 
@@ -18,9 +18,7 @@ from mx_bluesky.common.device_setup_plans.read_hardware_for_setup import (
18
18
  read_hardware_for_zocalo,
19
19
  )
20
20
  from mx_bluesky.common.parameters.constants import (
21
- EnvironmentConstants,
22
21
  PlanNameConstants,
23
- TriggerConstants,
24
22
  )
25
23
  from mx_bluesky.common.utils.tracing import TRACER
26
24
 
@@ -70,7 +68,6 @@ def kickoff_and_complete_gridscan(
70
68
  scan_points: list[AxesPoints[Axis]],
71
69
  scan_start_indices: list[int],
72
70
  plan_during_collection: Callable[[], MsgGenerator] | None = None,
73
- zocalo_environment: str = EnvironmentConstants.ZOCALO_ENV,
74
71
  ):
75
72
  """Triggers a grid scan motion program and waits for completion, accounting for synchrotron topup.
76
73
  If the RunEngine is subscribed to ZocaloCallback, this plan will also trigger Zocalo.
@@ -86,7 +83,6 @@ def kickoff_and_complete_gridscan(
86
83
  scan_start_indices (list[int]): Contains the first index of each grid scan
87
84
  plan_during_collection (Optional, MsgGenerator): Generic plan called in between kickoff and completion,
88
85
  eg waiting on zocalo.
89
- zocalo_environment (Optional, str) Used for zocalo connection
90
86
  """
91
87
 
92
88
  assert len(scan_points) == len(scan_start_indices), (
@@ -100,10 +96,8 @@ def kickoff_and_complete_gridscan(
100
96
  @bpp.run_decorator(
101
97
  md={
102
98
  "subplan_name": plan_name,
103
- TriggerConstants.ZOCALO: plan_name,
104
99
  "scan_points": scan_points,
105
100
  "scan_start_indices": scan_start_indices,
106
- "zocalo_environment": zocalo_environment,
107
101
  }
108
102
  )
109
103
  @bpp.contingency_decorator(
@@ -39,7 +39,8 @@ T = TypeVar("T")
39
39
  class CrystalNotFoundException(SampleException):
40
40
  """Raised if grid detection completed normally but no crystal was found."""
41
41
 
42
- pass
42
+ def __init__(self, *args):
43
+ super().__init__("Diffraction not found, skipping sample.")
43
44
 
44
45
 
45
46
  def catch_exception_and_warn(
@@ -0,0 +1,4 @@
1
+ import os
2
+
3
+ # Change once Python<3.12 is dropped - see https://github.com/DiamondLightSource/mx-bluesky/issues/798
4
+ ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -4,6 +4,7 @@ import threading
4
4
  from collections.abc import Callable
5
5
  from dataclasses import asdict
6
6
  from queue import Queue
7
+ from sys import argv
7
8
  from traceback import format_exception
8
9
  from typing import Any
9
10
 
@@ -37,12 +38,6 @@ from mx_bluesky.hyperion.experiment_plans.experiment_registry import (
37
38
  PLAN_REGISTRY,
38
39
  PlanNotFound,
39
40
  )
40
- from mx_bluesky.hyperion.external_interaction.callbacks.__main__ import (
41
- setup_logging as setup_callback_logging,
42
- )
43
- from mx_bluesky.hyperion.external_interaction.callbacks.common.callback_util import (
44
- CallbacksFactory,
45
- )
46
41
  from mx_bluesky.hyperion.parameters.cli import parse_cli_args
47
42
  from mx_bluesky.hyperion.parameters.constants import CONST
48
43
  from mx_bluesky.hyperion.utils.context import setup_context
@@ -56,7 +51,6 @@ class Command:
56
51
  devices: Any | None = None
57
52
  experiment: Callable[[Any, Any], MsgGenerator] | None = None
58
53
  parameters: MxBlueskyParameters | None = None
59
- callbacks: CallbacksFactory | None = None
60
54
 
61
55
 
62
56
  @dataclass
@@ -88,7 +82,6 @@ class BlueskyRunner:
88
82
  RE: RunEngine,
89
83
  context: BlueskyContext,
90
84
  skip_startup_connection=False,
91
- use_external_callbacks: bool = False,
92
85
  ) -> None:
93
86
  self.command_queue: Queue[Command] = Queue()
94
87
  self.current_status: StatusAndMessage = StatusAndMessage(Status.IDLE)
@@ -99,15 +92,12 @@ class BlueskyRunner:
99
92
 
100
93
  self.RE = RE
101
94
  self.context = context
102
- self.subscribed_per_plan_callbacks: list[int] = []
103
95
  RE.subscribe(self.aperture_change_callback)
104
96
  RE.subscribe(self.logging_uid_tag_callback)
105
97
 
106
- self.use_external_callbacks = use_external_callbacks
107
- if self.use_external_callbacks:
108
- LOGGER.info("Connecting to external callback ZMQ proxy...")
109
- self.publisher = Publisher(f"localhost:{CONST.CALLBACK_0MQ_PROXY_PORTS[0]}")
110
- RE.subscribe(self.publisher)
98
+ LOGGER.info("Connecting to external callback ZMQ proxy...")
99
+ self.publisher = Publisher(f"localhost:{CONST.CALLBACK_0MQ_PROXY_PORTS[0]}")
100
+ RE.subscribe(self.publisher)
111
101
 
112
102
  if VERBOSE_EVENT_LOGGING:
113
103
  RE.subscribe(VerbosePlanExecutionLoggingCallback())
@@ -123,7 +113,6 @@ class BlueskyRunner:
123
113
  experiment: Callable,
124
114
  parameters: MxBlueskyParameters,
125
115
  plan_name: str,
126
- callbacks: CallbacksFactory | None,
127
116
  ) -> StatusAndMessage:
128
117
  LOGGER.info(f"Started with parameters: {parameters.model_dump_json(indent=2)}")
129
118
 
@@ -142,7 +131,6 @@ class BlueskyRunner:
142
131
  devices=devices,
143
132
  experiment=experiment,
144
133
  parameters=parameters,
145
- callbacks=callbacks,
146
134
  )
147
135
  )
148
136
  return StatusAndMessage(Status.SUCCESS)
@@ -181,17 +169,6 @@ class BlueskyRunner:
181
169
  if command.experiment is None:
182
170
  raise ValueError("No experiment provided for START")
183
171
  try:
184
- if (
185
- not self.use_external_callbacks
186
- and command.callbacks
187
- and (cbs := command.callbacks())
188
- ):
189
- LOGGER.info(
190
- f"Using callbacks for this plan: {not self.use_external_callbacks} - {cbs}"
191
- )
192
- self.subscribed_per_plan_callbacks += [
193
- self.RE.subscribe(cb) for cb in cbs
194
- ]
195
172
  with TRACER.start_span("do_run"):
196
173
  self.RE(command.experiment(command.devices, command.parameters))
197
174
 
@@ -212,11 +189,6 @@ class BlueskyRunner:
212
189
  self.last_run_aborted = False
213
190
  else:
214
191
  self.current_status = make_error_status_and_message(exception)
215
- finally:
216
- [
217
- self.RE.unsubscribe(cb)
218
- for cb in self.subscribed_per_plan_callbacks
219
- ]
220
192
 
221
193
 
222
194
  def compose_start_args(context: BlueskyContext, plan_name: str, action: Actions):
@@ -225,7 +197,6 @@ def compose_start_args(context: BlueskyContext, plan_name: str, action: Actions)
225
197
  raise PlanNotFound(f"Experiment plan '{plan_name}' not found in registry.")
226
198
 
227
199
  experiment_internal_param_type = experiment_registry_entry.get("param_type")
228
- callback_type = experiment_registry_entry.get("callback_collection_type")
229
200
  plan = context.plan_functions.get(plan_name)
230
201
  if experiment_internal_param_type is None:
231
202
  raise PlanNotFound(
@@ -243,7 +214,7 @@ def compose_start_args(context: BlueskyContext, plan_name: str, action: Actions)
243
214
  raise ValueError(
244
215
  f"Supplied parameters don't match the plan for this endpoint {request.data}, for plan {plan_name}"
245
216
  ) from e
246
- return plan, parameters, plan_name, callback_type
217
+ return plan, parameters, plan_name
247
218
 
248
219
 
249
220
  class RunExperiment(Resource):
@@ -256,12 +227,10 @@ class RunExperiment(Resource):
256
227
  status_and_message = StatusAndMessage(Status.FAILED, f"{action} not understood")
257
228
  if action == Actions.START.value:
258
229
  try:
259
- plan, params, plan_name, callback_type = compose_start_args(
230
+ plan, params, plan_name = compose_start_args(
260
231
  self.context, plan_name, action
261
232
  )
262
- status_and_message = self.runner.start(
263
- plan, params, plan_name, callback_type
264
- )
233
+ status_and_message = self.runner.start(plan, params, plan_name)
265
234
  except Exception as e:
266
235
  status_and_message = make_error_status_and_message(e)
267
236
  LOGGER.error(format_exception(e))
@@ -312,7 +281,6 @@ def create_app(
312
281
  test_config=None,
313
282
  RE: RunEngine = RunEngine({}),
314
283
  skip_startup_connection: bool = False,
315
- use_external_callbacks: bool = False,
316
284
  ) -> tuple[Flask, BlueskyRunner]:
317
285
  context = setup_context(
318
286
  wait_for_connection=not skip_startup_connection,
@@ -320,7 +288,6 @@ def create_app(
320
288
  runner = BlueskyRunner(
321
289
  RE,
322
290
  context=context,
323
- use_external_callbacks=use_external_callbacks,
324
291
  skip_startup_connection=skip_startup_connection,
325
292
  )
326
293
  app = Flask(__name__)
@@ -350,11 +317,9 @@ def create_targets():
350
317
  do_default_logging_setup(
351
318
  CONST.LOG_FILE_NAME, CONST.GRAYLOG_PORT, dev_mode=args.dev_mode
352
319
  )
353
- if not args.use_external_callbacks:
354
- setup_callback_logging(args.dev_mode)
320
+ LOGGER.info(f"Hyperion launched with args:{argv}")
355
321
  app, runner = create_app(
356
322
  skip_startup_connection=args.skip_startup_connection,
357
- use_external_callbacks=args.use_external_callbacks,
358
323
  )
359
324
  return app, runner, hyperion_port, args.dev_mode
360
325
 
@@ -1,6 +1,5 @@
1
1
  from datetime import datetime
2
2
  from enum import Enum
3
- from importlib import resources
4
3
  from pathlib import Path
5
4
 
6
5
  import bluesky.plan_stubs as bps
@@ -8,15 +7,15 @@ from bluesky.utils import MsgGenerator
8
7
  from dodal.common.beamlines.beamline_utils import get_path_provider
9
8
  from dodal.devices.fast_grid_scan import PandAGridScanParams
10
9
  from dodal.devices.smargon import Smargon
11
- from ophyd_async.core import load_device
12
10
  from ophyd_async.fastcs.panda import (
13
11
  HDFPanda,
14
12
  SeqTable,
15
13
  SeqTrigger,
16
14
  )
17
15
 
18
- import mx_bluesky.hyperion.resources.panda as panda_resource
16
+ from mx_bluesky.common.device_setup_plans.setup_panda import load_panda_from_yaml
19
17
  from mx_bluesky.common.utils.log import LOGGER
18
+ from mx_bluesky.hyperion.parameters.constants import DeviceSettingsConstants
20
19
 
21
20
  MM_TO_ENCODER_COUNTS = 200000
22
21
  GENERAL_TIMEOUT = 60
@@ -76,7 +75,8 @@ def _get_seq_table(
76
75
 
77
76
  num_pulses = parameters.x_steps
78
77
 
79
- delay_between_pulses = time_between_steps_ms * TICKS_PER_MS
78
+ # Integer precision here is 1e-6s, so casting is safe
79
+ delay_between_pulses = int(time_between_steps_ms * TICKS_PER_MS)
80
80
 
81
81
  assert delay_between_pulses > PULSE_WIDTH_US
82
82
 
@@ -145,10 +145,11 @@ def setup_panda_for_flyscan(
145
145
 
146
146
  yield from bps.stage(panda, group="panda-config")
147
147
 
148
- with resources.as_file(
149
- resources.files(panda_resource) / "panda-gridscan.yaml"
150
- ) as config_yaml_path:
151
- yield from load_device(panda, str(config_yaml_path))
148
+ yield from load_panda_from_yaml(
149
+ DeviceSettingsConstants.PANDA_FLYSCAN_SETTINGS_DIR,
150
+ DeviceSettingsConstants.PANDA_FLYSCAN_SETTINGS_FILENAME,
151
+ panda,
152
+ )
152
153
 
153
154
  initial_x = yield from bps.rd(smargon.x.user_readback)
154
155
  initial_y = yield from bps.rd(smargon.y.user_readback)
@@ -2,6 +2,8 @@ from bluesky import plan_stubs as bps
2
2
  from bluesky.preprocessors import finalize_wrapper
3
3
  from bluesky.utils import make_decorator
4
4
  from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
5
+ from dodal.devices.dcm import DCM
6
+ from dodal.devices.undulator import Undulator
5
7
  from dodal.devices.xbpm_feedback import Pause, XBPMFeedback
6
8
 
7
9
  from mx_bluesky.common.utils.log import LOGGER
@@ -49,8 +51,10 @@ def _unpause_xbpm_feedback_and_set_transmission_to_1(
49
51
 
50
52
  def transmission_and_xbpm_feedback_for_collection_wrapper(
51
53
  plan,
54
+ undulator: Undulator,
52
55
  xbpm_feedback: XBPMFeedback,
53
56
  attenuator: BinaryFilterAttenuator,
57
+ dcm: DCM,
54
58
  desired_transmission_fraction: float,
55
59
  ):
56
60
  """Sets the transmission for the data collection, ensuring the xbpm feedback is valid
@@ -66,6 +70,9 @@ def transmission_and_xbpm_feedback_for_collection_wrapper(
66
70
  mostly accounts for slow thermal drift so it is safe to assume that the beam is
67
71
  stable during a collection.
68
72
 
73
+ In the case of a beam dump, undulator gap may not return. Therefore, we check here
74
+ that the undulator gap is correct after XBPM is stable, and before collection.
75
+
69
76
  Args:
70
77
  plan: The plan performing the data collection
71
78
  xbpm_feedback (XBPMFeedback): The XBPM device that is responsible for keeping
@@ -78,6 +85,9 @@ def transmission_and_xbpm_feedback_for_collection_wrapper(
78
85
  yield from _check_and_pause_feedback(
79
86
  xbpm_feedback, attenuator, desired_transmission_fraction
80
87
  )
88
+ # Verify Undulator gap is correct, as may not be after a beam dump
89
+ energy_in_kev = yield from bps.rd(dcm.energy_in_kev.user_readback)
90
+ yield from bps.abs_set(undulator, energy_in_kev, wait=True)
81
91
  return (yield from plan)
82
92
 
83
93
  return (
@@ -11,13 +11,6 @@ from mx_bluesky.hyperion.experiment_plans import (
11
11
  pin_centre_then_xray_centre_plan,
12
12
  robot_load_then_centre_plan,
13
13
  )
14
- from mx_bluesky.hyperion.external_interaction.callbacks.common.callback_util import (
15
- CallbacksFactory,
16
- create_gridscan_callbacks,
17
- create_load_centre_collect_callbacks,
18
- create_robot_load_and_centre_callbacks,
19
- create_rotation_callbacks,
20
- )
21
14
  from mx_bluesky.hyperion.parameters.gridscan import (
22
15
  GridScanWithEdgeDetect,
23
16
  HyperionSpecifiedThreeDGridScan,
@@ -47,44 +40,36 @@ class ExperimentRegistryEntry(TypedDict):
47
40
  | LoadCentreCollect
48
41
  | RobotLoadThenCentre
49
42
  ]
50
- callbacks_factory: CallbacksFactory
51
43
 
52
44
 
53
45
  PLAN_REGISTRY: dict[str, ExperimentRegistryEntry] = {
54
46
  "flyscan_xray_centre": {
55
47
  "setup": flyscan_xray_centre_plan.create_devices,
56
48
  "param_type": HyperionSpecifiedThreeDGridScan,
57
- "callbacks_factory": create_gridscan_callbacks,
58
49
  },
59
50
  "grid_detect_then_xray_centre": {
60
51
  "setup": grid_detect_then_xray_centre_plan.create_devices,
61
52
  "param_type": GridScanWithEdgeDetect,
62
- "callbacks_factory": create_gridscan_callbacks,
63
53
  },
64
54
  "rotation_scan": {
65
55
  "setup": rotation_scan_plan.create_devices,
66
56
  "param_type": RotationScan,
67
- "callbacks_factory": create_rotation_callbacks,
68
57
  },
69
58
  "pin_tip_centre_then_xray_centre": {
70
59
  "setup": pin_centre_then_xray_centre_plan.create_devices,
71
60
  "param_type": PinTipCentreThenXrayCentre,
72
- "callbacks_factory": create_gridscan_callbacks,
73
61
  },
74
62
  "robot_load_then_centre": {
75
63
  "setup": robot_load_then_centre_plan.create_devices,
76
64
  "param_type": RobotLoadThenCentre,
77
- "callbacks_factory": create_robot_load_and_centre_callbacks,
78
65
  },
79
66
  "multi_rotation_scan": {
80
67
  "setup": rotation_scan_plan.create_devices,
81
68
  "param_type": MultiRotationScan,
82
- "callbacks_factory": create_rotation_callbacks,
83
69
  },
84
70
  "load_centre_collect_full": {
85
71
  "setup": load_centre_collect_full_plan.create_devices,
86
72
  "param_type": LoadCentreCollect,
87
- "callbacks_factory": create_load_centre_collect_callbacks,
88
73
  },
89
74
  }
90
75