mx-bluesky 1.5.0__tar.gz → 1.5.2__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 (543) hide show
  1. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/workflows/_container.yml +33 -8
  2. mx_bluesky-1.5.2/.github/workflows/_helm.yml +23 -0
  3. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/workflows/ci.yml +8 -0
  4. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.pre-commit-config.yaml +1 -1
  5. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/Dockerfile.blueapi +4 -2
  6. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/PKG-INFO +5 -4
  7. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/how-to/create-a-release.rst +7 -6
  8. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/hyperion/deploying-hyperion.rst +10 -0
  9. {mx_bluesky-1.5.0/helmcharts → mx_bluesky-1.5.2/helm}/hyperion/templates/deployment.yaml +8 -41
  10. {mx_bluesky-1.5.0/helmcharts → mx_bluesky-1.5.2/helm}/hyperion/values.yaml +1 -1
  11. mx_bluesky-1.5.2/helm/mx-bluesky-blueapi/Chart.yaml +16 -0
  12. mx_bluesky-1.5.2/helm/mx-bluesky-blueapi/templates/ispyb-config.yaml +18 -0
  13. mx_bluesky-1.5.2/helm/mx-bluesky-blueapi/templates/zocalo-config.yaml +38 -0
  14. mx_bluesky-1.5.2/helm/mx-bluesky-blueapi/values.yaml +19 -0
  15. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/pyproject.toml +16 -5
  16. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/_version.py +2 -2
  17. mx_bluesky-1.5.2/src/mx_bluesky/beamlines/i04/__init__.py +6 -0
  18. mx_bluesky-1.5.2/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +110 -0
  19. mx_bluesky-1.5.2/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py +259 -0
  20. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +8 -8
  21. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +8 -6
  22. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +4 -4
  23. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +2 -2
  24. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +5 -5
  25. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +3 -3
  26. mx_bluesky-1.5.2/src/mx_bluesky/common/device_setup_plans/robot_load_unload.py +123 -0
  27. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/experiment_plans/change_aperture_then_move_plan.py +5 -1
  28. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/experiment_plans/common_flyscan_xray_centre_plan.py +27 -3
  29. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/experiment_plans/common_grid_detect_then_xray_centre_plan.py +1 -0
  30. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/experiment_plans/inner_plans/do_fgs.py +3 -1
  31. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +26 -24
  32. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +11 -7
  33. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/nexus/write_nexus.py +2 -2
  34. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/parameters/components.py +7 -2
  35. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/parameters/constants.py +5 -3
  36. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/parameters/device_composites.py +1 -1
  37. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/parameters/gridscan.py +1 -0
  38. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/xrc_result.py +25 -2
  39. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/__main__.py +1 -1
  40. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/baton_handler.py +36 -4
  41. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +4 -93
  42. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +19 -31
  43. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +26 -8
  44. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +21 -75
  45. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +2 -2
  46. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +14 -9
  47. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +4 -4
  48. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +1 -1
  49. {mx_bluesky-1.5.0/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_load → mx_bluesky-1.5.2/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_actions}/ispyb_callback.py +28 -19
  50. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +1 -1
  51. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +3 -0
  52. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/external_interaction/config_server.py +0 -11
  53. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/parameters/constants.py +2 -7
  54. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/parameters/gridscan.py +2 -6
  55. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +15 -0
  56. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/parameters/rotation.py +7 -3
  57. mx_bluesky-1.5.2/src/mx_bluesky/hyperion/utils/context.py +33 -0
  58. mx_bluesky-1.5.2/src/mx_bluesky/phase1_zebra/__init__.py +1 -0
  59. mx_bluesky-1.5.2/src/mx_bluesky/phase1_zebra/device_setup_plans/setup_zebra.py +112 -0
  60. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky.egg-info/PKG-INFO +5 -4
  61. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky.egg-info/SOURCES.txt +32 -16
  62. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky.egg-info/requires.txt +4 -3
  63. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/conftest.py +63 -10
  64. mx_bluesky-1.5.2/tests/system_tests/common/device_setup_plans/test_robot_load_unload.py +59 -0
  65. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/system_tests/hyperion/external_interaction/conftest.py +8 -6
  66. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +9 -11
  67. mx_bluesky-1.5.2/tests/system_tests/hyperion/external_interaction/test_baton_handler_soak.py +113 -0
  68. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +10 -5
  69. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +29 -0
  70. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +308 -17
  71. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +1 -1
  72. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +3 -1
  73. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +19 -10
  74. mx_bluesky-1.5.2/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +55 -0
  75. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json +2 -2
  76. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json +2 -2
  77. mx_bluesky-1.5.2/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +207 -0
  78. mx_bluesky-1.5.2/tests/unit_tests/beamlines/i04/test_i04_grid_detect_then_xray_centre_plan.py +363 -0
  79. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i04/test_thawing.py +1 -0
  80. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +3 -3
  81. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +2 -2
  82. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +4 -4
  83. mx_bluesky-1.5.2/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py +230 -0
  84. {mx_bluesky-1.5.0/tests/unit_tests/common/experiment_plans → mx_bluesky-1.5.2/tests/unit_tests/common/experiment_plans/inner_plans}/test_read_hardware.py +1 -1
  85. {mx_bluesky-1.5.0/tests/unit_tests/common → mx_bluesky-1.5.2/tests/unit_tests/common/experiment_plans/inner_plans}/test_write_sample_status.py +1 -1
  86. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/experiment_plans/test_change_aperture_then_move_plan.py +1 -0
  87. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/experiment_plans/test_common_flyscan_xray_centre_plan.py +2 -18
  88. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/experiment_plans/test_common_grid_detect_then_xray_centre_plan.py +0 -18
  89. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +0 -1
  90. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_expeye_interaction.py +58 -23
  91. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +29 -0
  92. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +3 -1
  93. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/conftest.py +12 -35
  94. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/conftest.py +0 -5
  95. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +6 -6
  96. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +13 -3
  97. mx_bluesky-1.5.2/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +55 -0
  98. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/conftest.py +31 -2
  99. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_hyperion_flyscan_xray_centre_plan.py +29 -10
  100. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +135 -18
  101. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +27 -44
  102. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +78 -22
  103. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +42 -25
  104. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +2 -1
  105. mx_bluesky-1.5.2/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/__init__.py +0 -0
  106. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +12 -15
  107. mx_bluesky-1.5.2/tests/unit_tests/hyperion/external_interaction/nexus/__init__.py +0 -0
  108. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +108 -4
  109. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +0 -3
  110. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +1 -1
  111. mx_bluesky-1.5.2/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
  112. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +8 -65
  113. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/test_baton_handler.py +114 -26
  114. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/test_main_system.py +43 -24
  115. mx_bluesky-1.5.2/tests/unit_tests/hyperion/utils/__init__.py +0 -0
  116. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh +13 -1
  117. mx_bluesky-1.5.0/src/mx_bluesky/beamlines/i04/__init__.py +0 -3
  118. mx_bluesky-1.5.0/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -55
  119. mx_bluesky-1.5.0/src/mx_bluesky/hyperion/utils/context.py +0 -19
  120. mx_bluesky-1.5.0/src/mx_bluesky/hyperion/utils/validation.py +0 -196
  121. mx_bluesky-1.5.0/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -49
  122. mx_bluesky-1.5.0/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -107
  123. mx_bluesky-1.5.0/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -26
  124. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.copier-answers.yml +0 -0
  125. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.coveragerc +0 -0
  126. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.devcontainer/Dockerfile +0 -0
  127. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.devcontainer/devcontainer.json +0 -0
  128. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.dockerignore +0 -0
  129. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/CODEOWNERS +0 -0
  130. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/CONTRIBUTING.md +0 -0
  131. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  132. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  133. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/actions/install_requirements/action.yml +0 -0
  134. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/actions/verify-nexus/Dockerfile +0 -0
  135. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/actions/verify-nexus/action.yml +0 -0
  136. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/actions/verify-nexus/entrypoint.sh +0 -0
  137. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/dependabot.yml +0 -0
  138. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/pages/index.html +0 -0
  139. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/pages/make_switcher.py +0 -0
  140. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/workflows/_check.yml +0 -0
  141. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/workflows/_dist.yml +0 -0
  142. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/workflows/_docs.yml +0 -0
  143. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/workflows/_pypi.yml +0 -0
  144. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/workflows/_release.yml +0 -0
  145. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/workflows/_test.yml +0 -0
  146. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/workflows/_tox.yml +0 -0
  147. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.github/workflows/periodic.yml +0 -0
  148. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.gitignore +0 -0
  149. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.vscode/extensions.json +0 -0
  150. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.vscode/launch.json +0 -0
  151. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.vscode/mx-bluesky.code-workspace +0 -0
  152. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
  153. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.vscode/settings.json +0 -0
  154. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/.vscode/tasks.json +0 -0
  155. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/Dockerfile +0 -0
  156. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/Dockerfile.hyperion +0 -0
  157. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/LICENSE +0 -0
  158. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/README.rst +0 -0
  159. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/catalog-info.yaml +0 -0
  160. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/codecov.yml +0 -0
  161. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/conftest.py +0 -0
  162. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/_api.rst +0 -0
  163. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/_templates/custom-module-template.rst +0 -0
  164. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/conf.py +0 -0
  165. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/code-map/grid_detect_then_xray_centre.drawio.png +0 -0
  166. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/code-map/grid_detect_xrc.rst +0 -0
  167. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/code-map/index.rst +0 -0
  168. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/explanations/callback_and_run_logic.rst +0 -0
  169. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/explanations/containerised_mx_bluesky.rst +0 -0
  170. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  171. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
  172. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
  173. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/explanations/decisions.rst +0 -0
  174. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/how-to/contribute.rst +0 -0
  175. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
  176. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
  177. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
  178. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
  179. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
  180. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
  181. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/how-to/get-started.rst +0 -0
  182. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/index.rst +0 -0
  183. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/reference/standards.rst +0 -0
  184. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/general/tutorials/profile-tests.rst +0 -0
  185. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/hyperion/how-to/update-panda-ioc.rst +0 -0
  186. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/hyperion/index.rst +0 -0
  187. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/hyperion/reference/coordinate-systems.puml +0 -0
  188. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/hyperion/reference/coordinate-systems.rst +0 -0
  189. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/hyperion/reference/gridscan.puml +0 -0
  190. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
  191. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/hyperion/reference/readme.md +0 -0
  192. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/hyperion/system-tests.rst +0 -0
  193. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/index.rst +0 -0
  194. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
  195. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
  196. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/murko-integration/index.rst +0 -0
  197. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  198. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
  199. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
  200. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/serial-crystallography-on-i24/how-to/pmac-docs.rst +0 -0
  201. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
  202. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/serial-crystallography-on-i24/index.rst +0 -0
  203. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +0 -0
  204. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/images/176701633-b93bba62-b2e7-4740-a863-c6b388beb14f.png +0 -0
  205. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/images/207297611-f67dfc25-a3a5-4ade-a1e7-28b54a136fa6.png +0 -0
  206. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/images/dls-favicon.ico +0 -0
  207. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/images/dls-logo.svg +0 -0
  208. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/images/motor coordinate systems.odg +0 -0
  209. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/images/motor-coords-omega-0.svg +0 -0
  210. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/images/motor-coords-omega-alpha.svg +0 -0
  211. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/docs/index.rst +0 -0
  212. {mx_bluesky-1.5.0/helmcharts → mx_bluesky-1.5.2/helm}/hyperion/Chart.yaml +0 -0
  213. {mx_bluesky-1.5.0/helmcharts → mx_bluesky-1.5.2/helm}/hyperion/templates/ingress.yaml +0 -0
  214. {mx_bluesky-1.5.0/helmcharts → mx_bluesky-1.5.2/helm}/hyperion/templates/service.yaml +0 -0
  215. {mx_bluesky-1.5.0/helmcharts → mx_bluesky-1.5.2/helm}/hyperion/templates/zocalo-config.yaml +0 -0
  216. {mx_bluesky-1.5.0/helmcharts → mx_bluesky-1.5.2/helm}/redis-to-murko/Chart.yaml +0 -0
  217. {mx_bluesky-1.5.0/helmcharts → mx_bluesky-1.5.2/helm}/redis-to-murko/templates/deployment.yaml +0 -0
  218. {mx_bluesky-1.5.0/helmcharts → mx_bluesky-1.5.2/helm}/redis-to-murko/values.yaml +0 -0
  219. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/add_assignee_when_pr_opened.yml +0 -0
  220. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/assigned_issues_to_in_progress.yml +0 -0
  221. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/get_issue_from_pr.yml +0 -0
  222. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/get_project_data_and_move_column.yml +0 -0
  223. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/linkcheck.yml +0 -0
  224. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/open_prs_to_review.yml +0 -0
  225. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/opened_issues_to_backlog.yml +0 -0
  226. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/pin_versions.py +0 -0
  227. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/pre_release_workflow.yml +0 -0
  228. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/rework_prs_to_in_progress.yml +0 -0
  229. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/test_data/pip_freeze.txt +0 -0
  230. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/test_data/setup.cfg +0 -0
  231. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/test_data/setup.cfg.pinned +0 -0
  232. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/test_data/setup.cfg.unpinned +0 -0
  233. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/hyperion_other/workflows/test_pin_versions.py +0 -0
  234. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/pull_request_template.md +0 -0
  235. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/run_hyperion.sh +0 -0
  236. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/run_hyperion_in_podman.sh +0 -0
  237. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/setup.cfg +0 -0
  238. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/__init__.py +0 -0
  239. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/__main__.py +0 -0
  240. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/__init__.py +0 -0
  241. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/aithre_lasershaping/__init__.py +0 -0
  242. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/aithre_lasershaping/beamline_safe.py +0 -0
  243. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +0 -0
  244. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +0 -0
  245. {mx_bluesky-1.5.0/src/mx_bluesky/beamlines/i24 → mx_bluesky-1.5.2/src/mx_bluesky/beamlines/i04/experiment_plans}/__init__.py +0 -0
  246. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +0 -0
  247. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i04/thawing_plan.py +0 -0
  248. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i23/__init__.py +0 -0
  249. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i23/serial.py +0 -0
  250. {mx_bluesky-1.5.0/src/mx_bluesky/beamlines/i24/serial/extruder → mx_bluesky-1.5.2/src/mx_bluesky/beamlines/i24}/__init__.py +0 -0
  251. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/__init__.py +0 -0
  252. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +0 -0
  253. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/dcid.py +0 -0
  254. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
  255. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +0 -0
  256. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  257. {mx_bluesky-1.5.0/src/mx_bluesky/beamlines/i24/serial/fixed_target → mx_bluesky-1.5.2/src/mx_bluesky/beamlines/i24/serial/extruder}/__init__.py +0 -0
  258. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
  259. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
  260. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
  261. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  262. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
  263. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  264. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  265. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  266. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  267. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +0 -0
  268. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s1l.png +0 -0
  269. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s2l.png +0 -0
  270. {mx_bluesky-1.5.0/src/mx_bluesky/beamlines/i24/serial/web_gui_plans → mx_bluesky-1.5.2/src/mx_bluesky/beamlines/i24/serial/fixed_target}/__init__.py +0 -0
  271. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
  272. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
  273. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +0 -0
  274. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/log.py +0 -0
  275. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +0 -0
  276. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
  277. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +0 -0
  278. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  279. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  280. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  281. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  282. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +0 -0
  283. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
  284. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
  285. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
  286. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
  287. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +0 -0
  288. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  289. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
  290. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -0
  291. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +0 -0
  292. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +0 -0
  293. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
  294. {mx_bluesky-1.5.0/src/mx_bluesky/common → mx_bluesky-1.5.2/src/mx_bluesky/beamlines/i24/serial/web_gui_plans}/__init__.py +0 -0
  295. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +0 -0
  296. {mx_bluesky-1.5.0/src/mx_bluesky/common/external_interaction → mx_bluesky-1.5.2/src/mx_bluesky/common}/__init__.py +0 -0
  297. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/device_setup_plans/manipulate_sample.py +0 -0
  298. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/device_setup_plans/position_detector.py +0 -0
  299. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/device_setup_plans/setup_oav.py +0 -0
  300. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/device_setup_plans/setup_panda.py +0 -0
  301. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/device_setup_plans/utils.py +0 -0
  302. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/device_setup_plans/xbpm_feedback.py +0 -0
  303. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/experiment_plans/__init__.py +0 -0
  304. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/experiment_plans/inner_plans/__init__ .py +0 -0
  305. {mx_bluesky-1.5.0/src/mx_bluesky/common/experiment_plans → mx_bluesky-1.5.2/src/mx_bluesky/common/experiment_plans/inner_plans}/read_hardware.py +0 -0
  306. {mx_bluesky-1.5.0/src/mx_bluesky/common/experiment_plans → mx_bluesky-1.5.2/src/mx_bluesky/common/experiment_plans/inner_plans}/write_sample_status.py +0 -0
  307. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py +0 -0
  308. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/experiment_plans/oav_snapshot_plan.py +0 -0
  309. {mx_bluesky-1.5.0/src/mx_bluesky/common/external_interaction/callbacks/common → mx_bluesky-1.5.2/src/mx_bluesky/common/external_interaction}/__init__.py +0 -0
  310. {mx_bluesky-1.5.0/src/mx_bluesky/common/external_interaction/callbacks/sample_handling → mx_bluesky-1.5.2/src/mx_bluesky/common/external_interaction/callbacks/common}/__init__.py +0 -0
  311. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py +0 -0
  312. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py +0 -0
  313. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +0 -0
  314. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +0 -0
  315. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py +0 -0
  316. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py +0 -0
  317. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +0 -0
  318. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +0 -0
  319. {mx_bluesky-1.5.0/src/mx_bluesky/common/external_interaction/callbacks/xray_centre → mx_bluesky-1.5.2/src/mx_bluesky/common/external_interaction/callbacks/sample_handling}/__init__.py +0 -0
  320. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py +0 -0
  321. {mx_bluesky-1.5.0/src/mx_bluesky/common/external_interaction/ispyb → mx_bluesky-1.5.2/src/mx_bluesky/common/external_interaction/callbacks/xray_centre}/__init__.py +0 -0
  322. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +0 -0
  323. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -0
  324. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +0 -0
  325. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/config_server.py +0 -0
  326. {mx_bluesky-1.5.0/src/mx_bluesky/common/external_interaction/nexus → mx_bluesky-1.5.2/src/mx_bluesky/common/external_interaction/ispyb}/__init__.py +0 -0
  327. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +0 -0
  328. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +0 -0
  329. {mx_bluesky-1.5.0/src/mx_bluesky/common/preprocessors → mx_bluesky-1.5.2/src/mx_bluesky/common/external_interaction/nexus}/__init__.py +0 -0
  330. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/external_interaction/nexus/nexus_utils.py +0 -0
  331. {mx_bluesky-1.5.0/src/mx_bluesky/common/protocols → mx_bluesky-1.5.2/src/mx_bluesky/common/parameters}/__init__.py +0 -0
  332. {mx_bluesky-1.5.0/src/mx_bluesky/common/utils → mx_bluesky-1.5.2/src/mx_bluesky/common/preprocessors}/__init__.py +0 -0
  333. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/preprocessors/preprocessors.py +0 -0
  334. {mx_bluesky-1.5.0/src/mx_bluesky/hyperion/device_setup_plans → mx_bluesky-1.5.2/src/mx_bluesky/common/protocols}/__init__.py +0 -0
  335. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/protocols/protocols.py +0 -0
  336. {mx_bluesky-1.5.0/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.5.2/src/mx_bluesky/common/utils}/__init__.py +0 -0
  337. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/utils/context.py +0 -0
  338. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/utils/exceptions.py +0 -0
  339. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/utils/log.py +0 -0
  340. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/utils/tracing.py +0 -0
  341. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/common/utils/utils.py +0 -0
  342. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/definitions.py +0 -0
  343. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/__init__.py +0 -0
  344. {mx_bluesky-1.5.0/tests → mx_bluesky-1.5.2/src/mx_bluesky/hyperion/device_setup_plans}/__init__.py +0 -0
  345. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +0 -0
  346. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +0 -0
  347. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +0 -0
  348. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +0 -0
  349. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -0
  350. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -0
  351. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/hyperion_grid_detect_then_xray_centre_plan.py +0 -0
  352. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
  353. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +0 -0
  354. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +0 -0
  355. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +0 -0
  356. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
  357. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
  358. {mx_bluesky-1.5.0/tests/system_tests → mx_bluesky-1.5.2/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  359. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +0 -0
  360. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +0 -0
  361. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
  362. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/parameters/cli.py +0 -0
  363. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/parameters/components.py +0 -0
  364. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/parameters/device_composites.py +0 -0
  365. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/parameters/robot_load.py +0 -0
  366. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
  367. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/hyperion/utils/__init__.py +0 -0
  368. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky/jupyter_example.ipynb +0 -0
  369. {mx_bluesky-1.5.0/tests/system_tests/hyperion → mx_bluesky-1.5.2/src/mx_bluesky/phase1_zebra/device_setup_plans}/__init__.py +0 -0
  370. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
  371. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
  372. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/src/mx_bluesky.egg-info/top_level.txt +0 -0
  373. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/start_jupyter.sh +0 -0
  374. {mx_bluesky-1.5.0/tests/system_tests/hyperion/external_interaction → mx_bluesky-1.5.2/tests}/__init__.py +0 -0
  375. {mx_bluesky-1.5.0/tests/system_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.5.2/tests/system_tests}/__init__.py +0 -0
  376. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/system_tests/conftest.py +0 -0
  377. {mx_bluesky-1.5.0/tests/unit_tests → mx_bluesky-1.5.2/tests/system_tests/hyperion}/__init__.py +0 -0
  378. {mx_bluesky-1.5.0/tests/unit_tests/beamlines → mx_bluesky-1.5.2/tests/system_tests/hyperion/external_interaction}/__init__.py +0 -0
  379. {mx_bluesky-1.5.0/tests/unit_tests/beamlines/i24 → mx_bluesky-1.5.2/tests/system_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  380. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
  381. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/system_tests/hyperion/external_interaction/test_config_service.py +0 -0
  382. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/agamemnon/example_collect_multipin.json +0 -0
  383. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/agamemnon/example_native.json +0 -0
  384. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/ispyb-test-credentials.cfg +0 -0
  385. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/nexus_files/README.md +0 -0
  386. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/nexus_files/fake_data.h5 +0 -0
  387. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
  388. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
  389. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
  390. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
  391. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
  392. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
  393. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
  394. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
  395. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +0 -0
  396. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
  397. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
  398. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
  399. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
  400. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
  401. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
  402. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
  403. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
  404. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
  405. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/rabbitmq-test-credentials.yml +0 -0
  406. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/scratch/README +0 -0
  407. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_OAVCentring.json +0 -0
  408. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
  409. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  410. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_beamline_parameters.txt +0 -0
  411. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
  412. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_config.cfg +0 -0
  413. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_daq_configuration/OAVCentring_hyperion.json +0 -0
  414. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_daq_configuration/display.configuration +0 -0
  415. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
  416. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  417. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  418. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_daq_configuration/lookup/BeamLine_Undulator_toGap.txt +0 -0
  419. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +0 -0
  420. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_det_dist_converter.txt +0 -0
  421. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_display.configuration +0 -0
  422. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_images/generate_snapshot_input.png +0 -0
  423. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_images/generate_snapshot_output.png +0 -0
  424. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_images/ins_15_33_0.png +0 -0
  425. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_images/ins_15_33_90.png +0 -0
  426. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_images/ins_15_33_expected_0.png +0 -0
  427. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_images/ins_15_33_expected_270.png +0 -0
  428. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_images/thau_1_91_0.png +0 -0
  429. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_images/thau_1_91_90.png +0 -0
  430. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_images/thau_1_91_expected_0.png +0 -0
  431. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_images/thau_1_91_expected_270.png +0 -0
  432. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
  433. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_lookup_table.txt +0 -0
  434. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/test_mirror_focus.json +0 -0
  435. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/test_data/zocalo-test-configuration.yaml +0 -0
  436. {mx_bluesky-1.5.0/tests/unit_tests/beamlines/i24/serial → mx_bluesky-1.5.2/tests/unit_tests}/__init__.py +0 -0
  437. {mx_bluesky-1.5.0/tests/unit_tests/beamlines/i24/serial/extruder → mx_bluesky-1.5.2/tests/unit_tests/beamlines}/__init__.py +0 -0
  438. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/aithre_lasershaping/test_beamline_safe.py +0 -0
  439. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/aithre_lasershaping/test_check_goniometer_performance.py +0 -0
  440. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/aithre_lasershaping/test_goniometer_controls.py +0 -0
  441. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +0 -0
  442. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i23/test_serial.py +0 -0
  443. {mx_bluesky-1.5.0/tests/unit_tests/beamlines/i24/serial/fixed_target → mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24}/__init__.py +0 -0
  444. {mx_bluesky-1.5.0/tests/unit_tests/beamlines/i24/serial/setup_beamline → mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24/serial}/__init__.py +0 -0
  445. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/conftest.py +0 -0
  446. {mx_bluesky-1.5.0/tests/unit_tests/beamlines/i24/serial/web_gui → mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24/serial/extruder}/__init__.py +0 -0
  447. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +0 -0
  448. {mx_bluesky-1.5.0/tests/unit_tests/common → mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24/serial/fixed_target}/__init__.py +0 -0
  449. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +0 -0
  450. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
  451. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +0 -0
  452. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +0 -0
  453. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +0 -0
  454. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +0 -0
  455. {mx_bluesky-1.5.0/tests/unit_tests/common/experiment_plans → mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24/serial/setup_beamline}/__init__.py +0 -0
  456. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
  457. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +0 -0
  458. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +0 -0
  459. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
  460. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
  461. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +0 -0
  462. {mx_bluesky-1.5.0/tests/unit_tests/common/external_interaction → mx_bluesky-1.5.2/tests/unit_tests/beamlines/i24/serial/web_gui}/__init__.py +0 -0
  463. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +0 -0
  464. {mx_bluesky-1.5.0/tests/unit_tests/common/external_interaction/callbacks → mx_bluesky-1.5.2/tests/unit_tests/common}/__init__.py +0 -0
  465. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +0 -0
  466. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/device_setup_plans/test_xbpm_feedback.py +0 -0
  467. {mx_bluesky-1.5.0/tests/unit_tests/common/external_interaction/callbacks/common → mx_bluesky-1.5.2/tests/unit_tests/common/experiment_plans}/__init__.py +0 -0
  468. {mx_bluesky-1.5.0/tests/unit_tests/common/external_interaction/callbacks/ispyb → mx_bluesky-1.5.2/tests/unit_tests/common/experiment_plans/inner_plans}/__init__.py +0 -0
  469. {mx_bluesky-1.5.0/tests/unit_tests/common → mx_bluesky-1.5.2/tests/unit_tests/common/experiment_plans/inner_plans}/test_do_fgs.py +0 -0
  470. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/experiment_plans/test_grid_detection_plan.py +0 -0
  471. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/experiment_plans/test_oav_snapshot_plan.py +0 -0
  472. {mx_bluesky-1.5.0/tests/unit_tests/common/parameters → mx_bluesky-1.5.2/tests/unit_tests/common/external_interaction}/__init__.py +0 -0
  473. {mx_bluesky-1.5.0/tests/unit_tests/common/preprocessors → mx_bluesky-1.5.2/tests/unit_tests/common/external_interaction/callbacks}/__init__.py +0 -0
  474. {mx_bluesky-1.5.0/tests/unit_tests/common/utils → mx_bluesky-1.5.2/tests/unit_tests/common/external_interaction/callbacks/common}/__init__.py +0 -0
  475. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/callbacks/common/test_abstract_event.py +0 -0
  476. {mx_bluesky-1.5.0/tests/unit_tests/hyperion → mx_bluesky-1.5.2/tests/unit_tests/common/external_interaction/callbacks/ispyb}/__init__.py +0 -0
  477. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/callbacks/ispyb/conftest.py +0 -0
  478. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +0 -0
  479. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
  480. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/callbacks/test_zocalo_handler.py +0 -0
  481. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/conftest.py +0 -0
  482. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +0 -0
  483. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/test_config_server.py +0 -0
  484. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/test_ispyb_utils.py +0 -0
  485. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/xray_centre/__init__.py +0 -0
  486. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_handler.py +0 -0
  487. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_mapping.py +0 -0
  488. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/external_interaction/xray_centre/test_nexus_handler.py +0 -0
  489. {mx_bluesky-1.5.0/tests/unit_tests/hyperion/device_setup_plans → mx_bluesky-1.5.2/tests/unit_tests/common/parameters}/__init__.py +0 -0
  490. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/parameters/test_components.py +0 -0
  491. {mx_bluesky-1.5.0/tests/unit_tests/hyperion/experiment_plans → mx_bluesky-1.5.2/tests/unit_tests/common/preprocessors}/__init__.py +0 -0
  492. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/preprocessors/test_preprocessors.py +0 -0
  493. {mx_bluesky-1.5.0/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.5.2/tests/unit_tests/common/utils}/__init__.py +0 -0
  494. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/common/utils/test_log.py +0 -0
  495. {mx_bluesky-1.5.0/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.5.2/tests/unit_tests/hyperion}/__init__.py +0 -0
  496. {mx_bluesky-1.5.0/tests/unit_tests/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.5.2/tests/unit_tests/hyperion/device_setup_plans}/__init__.py +0 -0
  497. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +0 -0
  498. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +0 -0
  499. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +0 -0
  500. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +0 -0
  501. {mx_bluesky-1.5.0/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.5.2/tests/unit_tests/hyperion/experiment_plans}/__init__.py +0 -0
  502. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
  503. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_hyperion_grid_detect_then_xray_centre_plan.py +0 -0
  504. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +0 -0
  505. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +0 -0
  506. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +0 -0
  507. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +0 -0
  508. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
  509. {mx_bluesky-1.5.0/tests/unit_tests/hyperion/external_interaction/nexus → mx_bluesky-1.5.2/tests/unit_tests/hyperion/external_interaction}/__init__.py +0 -0
  510. {mx_bluesky-1.5.0/tests/unit_tests/hyperion/parameters → mx_bluesky-1.5.2/tests/unit_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  511. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -0
  512. {mx_bluesky-1.5.0/tests/unit_tests/hyperion/utils → mx_bluesky-1.5.2/tests/unit_tests/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  513. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +0 -0
  514. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
  515. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -0
  516. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +0 -0
  517. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
  518. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
  519. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
  520. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
  521. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/test_utils.py +0 -0
  522. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
  523. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
  524. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/tests/unit_tests/test_cli.py +0 -0
  525. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/beam_off_trickery.sh +0 -0
  526. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/build_docker_image.sh +0 -0
  527. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/build_imginfo.sh +0 -0
  528. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/deploy/create_venv.py +0 -0
  529. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
  530. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/deploy/deploy_mx_bluesky.py +0 -0
  531. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/deploy/test_deploy.py +0 -0
  532. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/dev_jaeger_container.sh +0 -0
  533. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/dls_dev_env.sh +0 -0
  534. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/docker/entrypoint.sh +0 -0
  535. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/docker/healthcheck.sh +0 -0
  536. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/docker/i03-compose.yml +0 -0
  537. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/generate_plantuml.py +0 -0
  538. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/graylog/Dockerfile +0 -0
  539. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/graylog/tcp_input.json +0 -0
  540. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/procserv_ioc_start.sh +0 -0
  541. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/run_imginfo.sh +0 -0
  542. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/setup_graylog.sh +0 -0
  543. {mx_bluesky-1.5.0 → mx_bluesky-1.5.2}/utility_scripts/strip_metafile.py +0 -0
@@ -42,18 +42,39 @@ jobs:
42
42
  file: Dockerfile.blueapi
43
43
  load: true
44
44
 
45
- - name: Create tags for publishing image
46
- id: meta
45
+ - name: Create tags for publishing Hyperion image
46
+ id: meta-hyperion
47
47
  uses: docker/metadata-action@v5
48
48
  with:
49
49
  images: |
50
50
  ghcr.io/${{ github.repository }}
51
+ labels: |
52
+ org.opencontainers.image.title=mx-bluesky
53
+ org.opencontainers.image.description=Hyperion service for MX Unattended Data Collection
54
+ annotations: |
55
+ org.opencontainers.image.title=mx-bluesky
56
+ org.opencontainers.image.description=Hyperion service for MX Unattended Data Collection
57
+ tags: |
58
+ type=ref,event=tag
59
+ type=raw,value=latest
60
+
61
+ - name: Create tags for publishing BlueAPI image
62
+ id: meta-blueapi
63
+ uses: docker/metadata-action@v5
64
+ with:
65
+ images: |
51
66
  ghcr.io/${{ github.repository }}-blueapi
67
+ labels: |
68
+ org.opencontainers.image.title=mx-bluesky-blueapi
69
+ org.opencontainers.image.description=BlueAPI plans, stubs and utilities for MX beamlines
70
+ annotations: |
71
+ org.opencontainers.image.title=mx-bluesky-blueapi
72
+ org.opencontainers.image.description=BlueAPI plans, stubs and utilities for MX beamlines
52
73
  tags: |
53
74
  type=ref,event=tag
54
75
  type=raw,value=latest
55
76
 
56
- - name: Push cached image to container registry
77
+ - name: Push cached Hyperion image to container registry
57
78
  if: github.ref_type == 'tag'
58
79
  uses: docker/build-push-action@v6
59
80
  env:
@@ -64,10 +85,12 @@ jobs:
64
85
  context: .
65
86
  file: Dockerfile.hyperion
66
87
  push: true
67
- tags: ${{ steps.meta.outputs.tags }}
68
- labels: ${{ steps.meta.outputs.labels }}
88
+ tags: ${{ steps.meta-hyperion.outputs.tags }}
89
+ labels: ${{ steps.meta-hyperion.outputs.labels }}
90
+ # Set the annotations to make the description appear in the GH repo page
91
+ annotations: ${{ steps.meta-hyperion.outputs.annotations }}
69
92
 
70
- - name: Push Dockerfile.blueapi image to container registry
93
+ - name: Push cached BlueAPI image to container registry
71
94
  if: github.ref_type == 'tag'
72
95
  uses: docker/build-push-action@v6
73
96
  env:
@@ -76,5 +99,7 @@ jobs:
76
99
  context: .
77
100
  file: Dockerfile.blueapi
78
101
  push: true
79
- tags: ${{ steps.meta.outputs.tags }}
80
- labels: ${{ steps.meta.outputs.labels }}
102
+ tags: ${{ steps.meta-blueapi.outputs.tags }}
103
+ labels: ${{ steps.meta-blueapi.outputs.labels }}
104
+ # Set the annotations to make the description appear in the GH repo page
105
+ annotations: ${{ steps.meta-blueapi.outputs.annotations }}
@@ -0,0 +1,23 @@
1
+ on:
2
+ workflow_call:
3
+
4
+ jobs:
5
+ build:
6
+ runs-on: ubuntu-latest
7
+
8
+ steps:
9
+ - name: Install Helm
10
+ uses: Azure/setup-helm@v4.3.0
11
+ id: install
12
+
13
+ - name: Helm login to GHCR
14
+ if: ${{ github.event_name == 'push' && github.ref_type == 'tag' }}
15
+ run: |
16
+ echo ${{ secrets.GITHUB_TOKEN }} | helm registry login ghcr.io/${{ github.repository }} --username ${{ github.repository_owner }} --password-stdin
17
+
18
+ - name: Package and push chart
19
+ if: ${{ github.event_name == 'push' && github.ref_type == 'tag' }}
20
+ run: |
21
+ helm dependencies update helm/mx-bluesky-blueapi
22
+ helm package helm/mx-bluesky-blueapi --version ${{ steps.meta.outputs.version }} --app-version ${{ steps.meta.outputs.version }} -d /tmp/
23
+ helm push /tmp/mx-bluesky-blueapi-${{ steps.meta.outputs.version }}.tgz oci://ghcr.io/diamondlightsource/charts
@@ -38,6 +38,14 @@ jobs:
38
38
  contents: read
39
39
  packages: write
40
40
 
41
+ helm:
42
+ needs: container
43
+ if: needs.check.outputs.branch-pr == ''
44
+ uses: ./.github/workflows/_helm.yml
45
+ permissions:
46
+ contents: read
47
+ packages: write
48
+
41
49
  docs:
42
50
  needs: check
43
51
  if: needs.check.outputs.branch-pr == ''
@@ -6,7 +6,7 @@ repos:
6
6
  args: ["--maxkb=500"]
7
7
  - id: check-yaml
8
8
  args: ["--allow-multiple-documents"]
9
- exclude: ^helmcharts/
9
+ exclude: ^helm/
10
10
  - id: check-merge-conflict
11
11
  - id: end-of-file-fixer
12
12
 
@@ -1,5 +1,7 @@
1
- # See https://github.com/DiamondLightSource/mx-bluesky/issues/1004
2
- FROM ghcr.io/diamondlightsource/blueapi:0.10.1
1
+ # Before changing this BlueAPI version number, you should check that
2
+ # the BlueAPI pin in pyproject.toml is compatible, else the version will
3
+ # be overridden
4
+ FROM ghcr.io/diamondlightsource/blueapi:1.0.0-rc.2
3
5
 
4
6
  ARG DEBIAN_FRONTEND=noninteractive
5
7
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mx-bluesky
3
- Version: 1.5.0
3
+ Version: 1.5.2
4
4
  Summary: Bluesky tools for MX Beamlines at DLS
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -221,7 +221,7 @@ Requires-Dist: ispyb
221
221
  Requires-Dist: jupyterlab
222
222
  Requires-Dist: matplotlib
223
223
  Requires-Dist: nexgen>=0.11.0
224
- Requires-Dist: numpy
224
+ Requires-Dist: numpy==2.2.6
225
225
  Requires-Dist: opencv-python
226
226
  Requires-Dist: opentelemetry-distro
227
227
  Requires-Dist: opentelemetry-exporter-otlp
@@ -233,13 +233,14 @@ Requires-Dist: requests
233
233
  Requires-Dist: scanspec
234
234
  Requires-Dist: scipy
235
235
  Requires-Dist: semver
236
+ Requires-Dist: deepdiff
236
237
  Requires-Dist: matplotlib
237
- Requires-Dist: blueapi>=0.11.1
238
+ Requires-Dist: blueapi>=0.15.0
238
239
  Requires-Dist: daq-config-server==0.1.1
239
240
  Requires-Dist: ophyd>=1.10.5
240
241
  Requires-Dist: ophyd-async>=0.10.0a2
241
242
  Requires-Dist: bluesky>=1.13.1
242
- Requires-Dist: dls-dodal==1.49.0
243
+ Requires-Dist: dls-dodal==1.52.0
243
244
  Provides-Extra: dev
244
245
  Requires-Dist: black; extra == "dev"
245
246
  Requires-Dist: build; extra == "dev"
@@ -10,12 +10,13 @@ Release
10
10
  =======
11
11
 
12
12
  1. Create a new branch from main named pre followed by the release version e.g. pre_v0.1.0. The release versions should look like ``v{major}.{minor}.{patch}``.
13
- 2. On this branch pin the up-to-date version of dodal and the latest release of nexgen if necessary.
14
- 3. Go `here <https://github.com/DiamondLightSource/mx-bluesky/releases/new>`_.
15
- 4. Select Choose a new tag and type the version of the release, then select the branch created in step 1 as the target.
16
- 5. Click on Generate release notes. This will create a starting set of release notes based on PR titles since the last release.
17
- 6. You should now manually go through each line on the release notes and read it from the perspective of a beamline scientist. It should be clear from each what the change means to the beamline and should have links to easily find further info.
18
- 7. Publish the release
13
+ 2. On this branch pin the up-to-date version of dodal and the latest release of nexgen if necessary, then push to GitHub.
14
+ 3. Make sure the CI is passing for this new pre-release branch.
15
+ 4. Go `here <https://github.com/DiamondLightSource/mx-bluesky/releases/new>`_.
16
+ 5. Select Choose a new tag and type the version of the release, then select the branch created in step 1 as the target.
17
+ 6. Click on Generate release notes. This will create a starting set of release notes based on PR titles since the last release.
18
+ 7. You should now manually go through each line on the release notes and read it from the perspective of a beamline scientist. It should be clear from each what the change means to the beamline and should have links to easily find further info.
19
+ 8. Publish the release
19
20
 
20
21
  NOTE FOR USING THE MX-BLUESKY-BLUEAPI IMAGE: If using this image with BlueAPI's helmchart for deployment, the version of dodal which is installed will be the version which is pinned in the BlueAPI, rather than what's in mx-bluesky's pyproject.toml. Before releasing, you should pin BlueAPI to a version which uses a dodal version which is compatible with itself AND mx-bluesky. The deployment will fail if BlueAPI has no version which works with the desired dodal version
21
22
 
@@ -80,6 +80,16 @@ are not already present:
80
80
  * ``rmq-creds``
81
81
  * ``rmq-api-reader``
82
82
 
83
+ In addition, an ispyb credentials secret must be created with the following name:
84
+ * ``ispyb-hyperion-cfg``
85
+
86
+
87
+ For creating the secrets, use ``kubectl create secret``:
88
+
89
+ ::
90
+
91
+ kubectl create secret -n i03-beamline generic ispyb-hyperion-cfg --from-file=ispyb.cfg=<path-to-ispyb-hyperion-ixx.cfg>
92
+
83
93
  Production deployment
84
94
  ~~~~~~~~~~~~~~~~~~~~~
85
95
 
@@ -68,48 +68,13 @@ spec:
68
68
  name: {{ .secretName }}
69
69
  {{- end -}} {{/* range */}}
70
70
  {{- end -}} {{/* if */}}
71
+ - name: ispyb-secrets
72
+ secret:
73
+ type: secret
74
+ secretName: ispyb-hyperion-cfg
71
75
  containers:
72
76
  - name: hyperion
73
- image: {{ .Values.application.imageRepository}}/mx-bluesky:{{ .Values.application.appVersion }}
74
- securityContext:
75
- capabilities:
76
- # Required for hostNetwork
77
- drop:
78
- - AUDIT_WRITE
79
- - CHOWN
80
- - DAC_OVERRIDE
81
- - FOWNER
82
- - FSETID
83
- - KILL
84
- - MKNOD
85
- - NET_BIND_SERVICE
86
- - NET_RAW
87
- - SETFCAP
88
- - SETGID
89
- - SETPCAP
90
- - SETUID
91
- - SYS_CHROOT
92
- - AUDIT_CONTROL
93
- - BLOCK_SUSPEND
94
- - DAC_READ_SEARCH
95
- - IPC_LOCK
96
- - IPC_OWNER
97
- - LEASE
98
- - LINUX_IMMUTABLE
99
- - MAC_ADMIN
100
- - MAC_OVERRIDE
101
- - SYS_ADMIN
102
- - SYS_BOOT
103
- - SYS_MODULE
104
- - SYS_NICE
105
- - SYS_PACCT
106
- - SYS_MODULE
107
- - SYS_PTRACE
108
- - SYS_RESOURCE
109
- - SYS_TIME
110
- - SYS_TTY_CONFIG
111
- - SYSLOG
112
- - WAKE_ALARM
77
+ image: {{ .Values.application.imageRepository}}/mx-bluesky:{{ .Values.application.appVersion }}
113
78
  resources:
114
79
  limits:
115
80
  cpu: "1"
@@ -133,7 +98,7 @@ spec:
133
98
  - name: ZOCALO_CONFIG
134
99
  value: "/zocalo/config/configuration.yaml"
135
100
  - name: ISPYB_CONFIG_PATH
136
- value: "/dls_sw/dasc/mariadb/credentials/ispyb-hyperion-{{ .Values.application.beamline }}.cfg"
101
+ value: "/ispyb/secrets/ispyb.cfg"
137
102
  {{- end }}
138
103
  readinessProbe:
139
104
  exec:
@@ -166,4 +131,6 @@ spec:
166
131
  name: zocalo-config
167
132
  - mountPath: "/zocalo/secrets"
168
133
  name: zocalo-secrets
134
+ - mountPath: "/ispyb/secrets"
135
+ name: ispyb-secrets
169
136
  hostNetwork: true
@@ -9,7 +9,7 @@ application:
9
9
  beamline: i03
10
10
  dev: false
11
11
  logDir: "/dls_sw/i03/logs/bluesky/hyperion-k8s"
12
- debugLogDir: "/dls/tmp/i03/logs/bluesky"
12
+ debugLogDir: "/dls/tmp/i03/logs/bluesky-k8s"
13
13
  dataDir: "/dls/i03/data"
14
14
  # These should be overridden at install time
15
15
  projectDir: SET_ON_INSTALL
@@ -0,0 +1,16 @@
1
+ apiVersion: v2
2
+ name: mx-bluesky-blueapi
3
+ description: A helm chart deploying a worker pod that runs Bluesky plans
4
+
5
+ # This chart provides extra configuration to a BlueAPI application which is generic to all MX beamlines,
6
+ # and does not startup an application by itself. A BlueAPI service in ixx-services should add this chart
7
+ # as a dependency. It currently mounts zocalo and ispyb credentials as config maps, with the assumption
8
+ # that the beamline cluster have these secrets available. In the future, this helmchart may change to a
9
+ # library type
10
+ type: application
11
+
12
+ # This is the chart version. This version number should be incremented each time you make changes
13
+ # to the chart and its templates, including the app version.
14
+ # Versions are expected to follow Semantic Versioning (https://semver.org/)
15
+ # This is updated automatically by CI, the appVersion is automatically inserted by CI
16
+ version: 0.1.1
@@ -0,0 +1,18 @@
1
+ apiVersion: v1
2
+ kind: ConfigMap
3
+ metadata:
4
+ name: "{{ .Release.Name }}-ispyb-config"
5
+ namespace: "{{ .Release.Namespace }}"
6
+ labels:
7
+ app.kubernetes.io/name: ispyb-config
8
+ app.kubernetes.io/instance: "{{ .Release.Name }}-ispyb-config"
9
+ app.kubernetes.io/version: "{{ .Chart.Version }}"
10
+ app.kubernetes.io/part-of: mx-bluesky-blueapi
11
+ data:
12
+ configuration.yaml: |-
13
+ version: 1
14
+ {{- if .Values.ispyb.secrets }}
15
+ {{- range .Values.ispyb.secrets }}
16
+ {{ .name }}: "/ispyb/secrets/{{ .fileName }}"
17
+ {{- end -}} {{/* range */}}
18
+ {{- end -}} {{/* if */}}
@@ -0,0 +1,38 @@
1
+ apiVersion: v1
2
+ kind: ConfigMap
3
+ metadata:
4
+ name: "zocalo-config"
5
+ namespace: "{{ .Release.Namespace }}"
6
+ labels:
7
+ app.kubernetes.io/name: zocalo-config
8
+ app.kubernetes.io/instance: "{{ .Release.Name }}-zocalo-config"
9
+ app.kubernetes.io/version: "{{ .Chart.Version }}"
10
+ app.kubernetes.io/part-of: mx-bluesky-blueapi
11
+ data:
12
+ configuration.yaml: |-
13
+ version: 1
14
+ graylog:
15
+ plugin: graylog
16
+ {{- .Values.zocalo.graylog | toYaml | nindent 6 }}
17
+ {{- if .Values.zocalo.secrets }}
18
+ {{- range .Values.zocalo.secrets }}
19
+ {{ .name }}: "/zocalo/secrets/{{ .fileName }}"
20
+ {{- end -}} {{/* range */}}
21
+ {{- end -}} {{/* if */}}
22
+
23
+
24
+ default-transport:
25
+ plugin: transport
26
+ default: {{ .Values.zocalo.defaultTransport }}
27
+
28
+ environments:
29
+
30
+ bluesky:
31
+ logging: graylog
32
+ plugins:
33
+ - default-transport
34
+ {{- if .Values.zocalo.secrets }}
35
+ {{- range .Values.zocalo.secrets }}
36
+ - {{ .name }}
37
+ {{- end -}} {{/* range */}}
38
+ {{- end -}} {{/* if */}}
@@ -0,0 +1,19 @@
1
+ zocalo:
2
+ defaultTransport: "PikaTransport"
3
+ graylog:
4
+ host: graylog-log-target.diamond.ac.uk
5
+ port: 12208
6
+ protocol: UDP
7
+ secrets:
8
+ - name: rabbitmq
9
+ secretName: rmq-creds
10
+ fileName: rabbitmq-credentials.yml
11
+ - name: rabbitmq-api-reader
12
+ secretName: rmq-api-reader
13
+ fileName: rabbitmq-api-reader.yml
14
+
15
+ ispyb:
16
+ secrets:
17
+ - name: ispyb-creds
18
+ secretName: ispyb-creds
19
+ fileName: ispyb-credentials.yml
@@ -24,7 +24,7 @@ dependencies = [
24
24
  "jupyterlab",
25
25
  "matplotlib",
26
26
  "nexgen >= 0.11.0",
27
- "numpy",
27
+ "numpy == 2.2.6", # See https://github.com/DiamondLightSource/mx-bluesky/issues/1119
28
28
  "opencv-python", # Needed for I24 ssx moveonclick. To be changed to headless once this is moved to separate ui.
29
29
  "opentelemetry-distro",
30
30
  "opentelemetry-exporter-otlp",
@@ -36,17 +36,18 @@ dependencies = [
36
36
  "scanspec",
37
37
  "scipy",
38
38
  "semver",
39
+ "deepdiff",
39
40
  "matplotlib",
40
41
  #
41
42
  # These dependencies may be issued as pre-release versions and should have a pin constraint
42
43
  # as by default pip-install will not upgrade to a pre-release.
43
44
  #
44
- "blueapi >= 0.11.1",
45
+ "blueapi >= 0.15.0",
45
46
  "daq-config-server == 0.1.1",
46
47
  "ophyd >= 1.10.5",
47
48
  "ophyd-async >= 0.10.0a2",
48
49
  "bluesky >= 1.13.1",
49
- "dls-dodal == 1.49.0",
50
+ "dls-dodal == 1.52.0",
50
51
  ]
51
52
 
52
53
 
@@ -247,5 +248,15 @@ modules = "mx_bluesky.beamlines.*"
247
248
  [[tool.importlinter.contracts]]
248
249
  name = "Beamlines do not import from hyperion"
249
250
  type = "forbidden"
250
- source_modules = "mx_bluesky.beamlines.*"
251
- forbidden_modules = "mx_bluesky.hyperion"
251
+ source_modules = "mx_bluesky.beamlines.**"
252
+ forbidden_modules = "mx_bluesky.hyperion.**"
253
+
254
+ [[tool.importlinter.contracts]]
255
+ name = "Only Hyperion and i04 can import from phase1_zebra"
256
+ type = "forbidden"
257
+ source_modules = ["mx_bluesky.beamlines.**", "mx_bluesky.common.**"]
258
+ forbidden_modules = ["mx_bluesky.phase1_zebra.**"]
259
+ ignore_imports = [
260
+ "mx_bluesky.beamlines.i04.** -> mx_bluesky.phase1_zebra.**",
261
+ "mx_bluesky.hyperion.** -> mx_bluesky.phase1_zebra.**",
262
+ ]
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.5.0'
21
- __version_tuple__ = version_tuple = (1, 5, 0)
20
+ __version__ = version = '1.5.2'
21
+ __version_tuple__ = version_tuple = (1, 5, 2)
@@ -0,0 +1,6 @@
1
+ from mx_bluesky.beamlines.i04.experiment_plans import (
2
+ i04_grid_detect_then_xray_centre_plan,
3
+ )
4
+ from mx_bluesky.beamlines.i04.thawing_plan import thaw, thaw_and_stream_to_redis
5
+
6
+ __all__ = ["thaw", "thaw_and_stream_to_redis", "i04_grid_detect_then_xray_centre_plan"]
@@ -0,0 +1,110 @@
1
+ import copy
2
+ import json
3
+ from datetime import timedelta
4
+ from typing import TypedDict
5
+
6
+ from bluesky.callbacks import CallbackBase
7
+ from dodal.log import LOGGER
8
+ from event_model.documents import Event, RunStart, RunStop
9
+ from redis import StrictRedis
10
+
11
+
12
+ class OmegaReading(TypedDict):
13
+ value: float
14
+ timestamp: float
15
+
16
+
17
+ def extrapolate_omega(
18
+ latest_omega: OmegaReading, previous_omega: OmegaReading, image_timestamp: float
19
+ ) -> float:
20
+ """Extrapolate an image omega from previous omegas.
21
+
22
+ There are a number of assumptions in this calculation:
23
+ * The speed of the smargon is fixed
24
+ * The timestamps from the two different devices are synchronised and match the data
25
+ exactly
26
+
27
+ These are accepted to be reasonable based on larger errors likely coming from murko
28
+ itself and that the results ultimately will be averaged out.
29
+ """
30
+ omega_per_sec = (latest_omega["value"] - previous_omega["value"]) / (
31
+ latest_omega["timestamp"] - previous_omega["timestamp"]
32
+ )
33
+ time_elapsed = image_timestamp - latest_omega["timestamp"]
34
+ return latest_omega["value"] + time_elapsed * omega_per_sec
35
+
36
+
37
+ class MurkoCallback(CallbackBase):
38
+ """A callback that triggers murko processing of images.
39
+
40
+ It combines metadata readings from e.g the goniometer rotation with the uuid's given
41
+ to us by an `OAVToRedisForwarder` (which describe the location of images in redis).
42
+ And writes these as a package to redis. A separate service then forwards this to murko.
43
+
44
+ The metadata and image data arrive independently, it is expected that the image data
45
+ is arriving at a faster rate than gonio metadata and so the value of omega for when
46
+ the image arrives is extrapolated based on previous omega readings.
47
+ """
48
+
49
+ DATA_EXPIRY_DAYS = 7
50
+
51
+ def __init__(self, redis_host: str, redis_password: str, redis_db: int = 0):
52
+ self.redis_client = StrictRedis(
53
+ host=redis_host, password=redis_password, db=redis_db
54
+ )
55
+ self.last_uuid = None
56
+ self.previous_omegas: list[OmegaReading] = []
57
+
58
+ def start(self, doc: RunStart) -> RunStart | None:
59
+ self.sample_id = doc.get("sample_id")
60
+ self.murko_metadata = {
61
+ "zoom_percentage": doc.get("zoom_percentage"),
62
+ "microns_per_x_pixel": doc.get("microns_per_x_pixel"),
63
+ "microns_per_y_pixel": doc.get("microns_per_y_pixel"),
64
+ "beam_centre_i": doc.get("beam_centre_i"),
65
+ "beam_centre_j": doc.get("beam_centre_j"),
66
+ "sample_id": self.sample_id,
67
+ }
68
+ self.last_uuid = None
69
+ self.previous_omegas = []
70
+ LOGGER.info(f"Starting to stream metadata to murko under {self.sample_id}")
71
+ return doc
72
+
73
+ def event(self, doc: Event) -> Event:
74
+ if latest_omega := doc["data"].get("smargon-omega"):
75
+ if len(self.previous_omegas) <= 2 and self.last_uuid:
76
+ # For the first few images there's not enough data to extrapolate so we
77
+ # match them one to one
78
+ self.call_murko(self.last_uuid, latest_omega)
79
+ self.previous_omegas.append(
80
+ OmegaReading(
81
+ value=latest_omega,
82
+ timestamp=doc["timestamps"]["smargon-omega"],
83
+ )
84
+ )
85
+ elif (uuid := doc["data"].get("oav_to_redis_forwarder-uuid")) is not None:
86
+ if len(self.previous_omegas) >= 2:
87
+ omega = extrapolate_omega(
88
+ self.previous_omegas[-1],
89
+ self.previous_omegas[-2],
90
+ doc["timestamps"]["oav_to_redis_forwarder-uuid"],
91
+ )
92
+ LOGGER.info(f"Using extrapolated omega of {omega}")
93
+ self.call_murko(uuid, omega)
94
+ self.last_uuid = uuid
95
+ return doc
96
+
97
+ def call_murko(self, uuid: str, omega: float):
98
+ metadata = copy.deepcopy(self.murko_metadata)
99
+ metadata["omega_angle"] = omega
100
+ metadata["uuid"] = uuid
101
+
102
+ # Send metadata to REDIS and trigger murko
103
+ redis_key = f"murko:{metadata['sample_id']}:metadata"
104
+ self.redis_client.hset(redis_key, uuid, json.dumps(metadata))
105
+ self.redis_client.expire(redis_key, timedelta(days=self.DATA_EXPIRY_DAYS))
106
+ self.redis_client.publish("murko", json.dumps(metadata))
107
+
108
+ def stop(self, doc: RunStop) -> RunStop | None:
109
+ LOGGER.info(f"Finished streaming {self.sample_id} to murko")
110
+ return doc