mx-bluesky 1.5.5__tar.gz → 1.5.6__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 (554) hide show
  1. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/PKG-INFO +2 -2
  2. mx_bluesky-1.5.6/docs/developer/murko-integration/explanations/DrawioImages.rst +13 -0
  3. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/murko-integration/explanations/architecture.rst +1 -1
  4. mx_bluesky-1.5.6/docs/developer/murko-integration/images/Murko.drawio.png +0 -0
  5. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/murko-integration/index.rst +1 -0
  6. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/user/hyperion/configuration.rst +29 -0
  7. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/user/hyperion/index.rst +17 -0
  8. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/user/hyperion/pvs.rst +9 -0
  9. mx_bluesky-1.5.6/docs/user/hyperion/troubleshooting.rst +137 -0
  10. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/pyproject.toml +1 -1
  11. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/_version.py +3 -3
  12. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/common_flyscan_xray_centre_plan.py +25 -2
  13. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/parameters/components.py +1 -0
  14. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/__main__.py +16 -3
  15. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/baton_handler.py +39 -9
  16. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +19 -8
  17. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +6 -2
  18. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/parameters/constants.py +1 -0
  19. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/plan_runner.py +2 -4
  20. mx_bluesky-1.5.6/src/mx_bluesky/hyperion/plan_runner_api.py +43 -0
  21. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky.egg-info/PKG-INFO +2 -2
  22. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky.egg-info/SOURCES.txt +6 -3
  23. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky.egg-info/requires.txt +1 -1
  24. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/conftest.py +21 -0
  25. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +4 -4
  26. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/test_baton_handler_soak.py +1 -1
  27. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +2 -0
  28. mx_bluesky-1.5.6/tests/system_tests/hyperion/test_main_udc.py +60 -0
  29. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/test_common_flyscan_xray_centre_plan.py +35 -0
  30. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/conftest.py +5 -1
  31. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/conftest.py +41 -0
  32. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +36 -7
  33. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/test_baton_handler.py +287 -106
  34. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/test_main_system.py +56 -7
  35. mx_bluesky-1.5.6/tests/unit_tests/hyperion/test_plan_runner_api.py +35 -0
  36. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/test_runner.py +12 -6
  37. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/t01.py +12 -0
  38. mx_bluesky-1.5.5/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
  39. mx_bluesky-1.5.5/docs/user/hyperion/logging.rst +0 -41
  40. mx_bluesky-1.5.5/utility_scripts/beam_off_trickery.sh +0 -11
  41. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.copier-answers.yml +0 -0
  42. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.coveragerc +0 -0
  43. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.devcontainer/Dockerfile +0 -0
  44. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.devcontainer/devcontainer.json +0 -0
  45. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.dockerignore +0 -0
  46. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/CODEOWNERS +0 -0
  47. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/CONTRIBUTING.md +0 -0
  48. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  49. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  50. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/actions/install_requirements/action.yml +0 -0
  51. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/actions/verify-nexus/Dockerfile +0 -0
  52. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/actions/verify-nexus/action.yml +0 -0
  53. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/actions/verify-nexus/entrypoint.sh +0 -0
  54. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/dependabot.yml +0 -0
  55. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/pages/index.html +0 -0
  56. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/pages/make_switcher.py +0 -0
  57. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/_check.yml +0 -0
  58. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/_container.yml +0 -0
  59. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/_dist.yml +0 -0
  60. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/_docs.yml +0 -0
  61. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/_helm.yml +0 -0
  62. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/_pypi.yml +0 -0
  63. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/_release.yml +0 -0
  64. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/_test.yml +0 -0
  65. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/_tox.yml +0 -0
  66. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/ci.yml +0 -0
  67. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.github/workflows/periodic.yml +0 -0
  68. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.gitignore +0 -0
  69. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.pre-commit-config.yaml +0 -0
  70. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.vscode/extensions.json +0 -0
  71. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.vscode/launch.json +0 -0
  72. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.vscode/mx-bluesky.code-workspace +0 -0
  73. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
  74. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.vscode/settings.json +0 -0
  75. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/.vscode/tasks.json +0 -0
  76. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/Dockerfile +0 -0
  77. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/Dockerfile.blueapi +0 -0
  78. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/Dockerfile.hyperion +0 -0
  79. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/LICENSE +0 -0
  80. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/README.rst +0 -0
  81. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/catalog-info.yaml +0 -0
  82. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/codecov.yml +0 -0
  83. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/conftest.py +0 -0
  84. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/_api.rst +0 -0
  85. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/_templates/custom-module-template.rst +0 -0
  86. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/conf.py +0 -0
  87. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/code-map/grid_detect_then_xray_centre.drawio.png +0 -0
  88. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/code-map/grid_detect_xrc.rst +0 -0
  89. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/code-map/index.rst +0 -0
  90. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/explanations/callback_and_run_logic.rst +0 -0
  91. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/explanations/containerised_mx_bluesky.rst +0 -0
  92. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  93. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
  94. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
  95. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/explanations/decisions.rst +0 -0
  96. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/how-to/contribute.rst +0 -0
  97. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/how-to/create-a-release.rst +0 -0
  98. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
  99. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
  100. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
  101. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
  102. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
  103. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
  104. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/how-to/get-started.rst +0 -0
  105. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/index.rst +0 -0
  106. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/reference/standards.rst +0 -0
  107. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/general/tutorials/profile-tests.rst +0 -0
  108. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/hyperion/deploying-hyperion.rst +0 -0
  109. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/hyperion/how-to/update-panda-ioc.rst +0 -0
  110. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/hyperion/index.rst +0 -0
  111. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/hyperion/reference/coordinate-systems.puml +0 -0
  112. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/hyperion/reference/coordinate-systems.rst +0 -0
  113. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/hyperion/reference/gridscan.puml +0 -0
  114. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
  115. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/hyperion/reference/readme.md +0 -0
  116. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/hyperion/system-tests.rst +0 -0
  117. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/index.rst +0 -0
  118. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  119. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
  120. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
  121. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/serial-crystallography-on-i24/how-to/pmac-docs.rst +0 -0
  122. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
  123. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/serial-crystallography-on-i24/index.rst +0 -0
  124. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +0 -0
  125. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/images/176701633-b93bba62-b2e7-4740-a863-c6b388beb14f.png +0 -0
  126. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/images/207297611-f67dfc25-a3a5-4ade-a1e7-28b54a136fa6.png +0 -0
  127. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/images/dls-favicon.ico +0 -0
  128. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/images/dls-logo.svg +0 -0
  129. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/images/motor coordinate systems.odg +0 -0
  130. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/images/motor-coords-omega-0.svg +0 -0
  131. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/images/motor-coords-omega-alpha.svg +0 -0
  132. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/index.rst +0 -0
  133. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/user/hyperion/alerts.rst +0 -0
  134. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/docs/user/hyperion/running.rst +0 -0
  135. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/hyperion/Chart.yaml +0 -0
  136. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/hyperion/templates/deployment.yaml +0 -0
  137. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/hyperion/templates/ingress.yaml +0 -0
  138. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/hyperion/templates/service.yaml +0 -0
  139. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/hyperion/templates/zocalo-config.yaml +0 -0
  140. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/hyperion/values.yaml +0 -0
  141. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/mx-bluesky-blueapi/Chart.yaml +0 -0
  142. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/mx-bluesky-blueapi/templates/zocalo-config.yaml +0 -0
  143. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/mx-bluesky-blueapi/values.yaml +0 -0
  144. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/redis-to-murko/Chart.yaml +0 -0
  145. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/redis-to-murko/templates/deployment.yaml +0 -0
  146. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/helm/redis-to-murko/values.yaml +0 -0
  147. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/pull_request_template.md +0 -0
  148. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/run_hyperion.sh +0 -0
  149. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/run_hyperion_in_podman.sh +0 -0
  150. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/setup.cfg +0 -0
  151. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/__init__.py +0 -0
  152. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/__main__.py +0 -0
  153. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/__init__.py +0 -0
  154. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/aithre_lasershaping/__init__.py +0 -0
  155. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/aithre_lasershaping/beamline_safe.py +0 -0
  156. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +0 -0
  157. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +0 -0
  158. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i04/__init__.py +0 -0
  159. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
  160. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i04/experiment_plans/__init__.py +0 -0
  161. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py +0 -0
  162. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +0 -0
  163. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i04/thawing_plan.py +0 -0
  164. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i23/__init__.py +0 -0
  165. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i23/serial.py +0 -0
  166. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/__init__.py +0 -0
  167. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/__init__.py +0 -0
  168. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +0 -0
  169. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/dcid.py +0 -0
  170. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
  171. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +0 -0
  172. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  173. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/extruder/__init__.py +0 -0
  174. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +0 -0
  175. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
  176. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
  177. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
  178. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  179. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
  180. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  181. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  182. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  183. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  184. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +0 -0
  185. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s1l.png +0 -0
  186. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s2l.png +0 -0
  187. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  188. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
  189. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +0 -0
  190. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +0 -0
  191. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
  192. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +0 -0
  193. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/log.py +0 -0
  194. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +0 -0
  195. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
  196. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +0 -0
  197. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  198. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  199. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  200. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  201. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +0 -0
  202. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
  203. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
  204. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
  205. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
  206. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +0 -0
  207. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  208. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
  209. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -0
  210. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +0 -0
  211. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +0 -0
  212. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +0 -0
  213. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +0 -0
  214. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
  215. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py +0 -0
  216. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +0 -0
  217. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +0 -0
  218. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/__init__.py +0 -0
  219. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/device_setup_plans/manipulate_sample.py +0 -0
  220. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/device_setup_plans/position_detector.py +0 -0
  221. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/device_setup_plans/robot_load_unload.py +0 -0
  222. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/device_setup_plans/setup_oav.py +0 -0
  223. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/device_setup_plans/setup_panda.py +0 -0
  224. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/device_setup_plans/utils.py +0 -0
  225. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/device_setup_plans/xbpm_feedback.py +0 -0
  226. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/__init__.py +0 -0
  227. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/change_aperture_then_move_plan.py +0 -0
  228. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/common_grid_detect_then_xray_centre_plan.py +0 -0
  229. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/inner_plans/__init__ .py +0 -0
  230. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/inner_plans/do_fgs.py +0 -0
  231. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py +0 -0
  232. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/inner_plans/udc_default_state.py +0 -0
  233. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/inner_plans/write_sample_status.py +0 -0
  234. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py +0 -0
  235. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/experiment_plans/oav_snapshot_plan.py +0 -0
  236. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/__init__.py +0 -0
  237. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/alerting/__init__.py +0 -0
  238. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/alerting/_service.py +0 -0
  239. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/alerting/log_based_service.py +0 -0
  240. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/common/__init__.py +0 -0
  241. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py +0 -0
  242. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py +0 -0
  243. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +0 -0
  244. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +0 -0
  245. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py +0 -0
  246. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py +0 -0
  247. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +0 -0
  248. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +0 -0
  249. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/__init__.py +0 -0
  250. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py +0 -0
  251. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py +0 -0
  252. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +0 -0
  253. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -0
  254. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +0 -0
  255. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/config_server.py +0 -0
  256. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/ispyb/__init__.py +0 -0
  257. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +0 -0
  258. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +0 -0
  259. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +0 -0
  260. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +0 -0
  261. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/nexus/__init__.py +0 -0
  262. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/nexus/nexus_utils.py +0 -0
  263. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/external_interaction/nexus/write_nexus.py +0 -0
  264. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/parameters/__init__.py +0 -0
  265. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/parameters/constants.py +0 -0
  266. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/parameters/device_composites.py +0 -0
  267. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/parameters/gridscan.py +0 -0
  268. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/preprocessors/__init__.py +0 -0
  269. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/preprocessors/preprocessors.py +0 -0
  270. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/protocols/__init__.py +0 -0
  271. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/protocols/protocols.py +0 -0
  272. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/utils/__init__.py +0 -0
  273. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/utils/context.py +0 -0
  274. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/utils/exceptions.py +0 -0
  275. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/utils/log.py +0 -0
  276. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/utils/tracing.py +0 -0
  277. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/utils/utils.py +0 -0
  278. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/common/xrc_result.py +0 -0
  279. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/definitions.py +0 -0
  280. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/__init__.py +0 -0
  281. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/device_setup_plans/__init__.py +0 -0
  282. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +0 -0
  283. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +0 -0
  284. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -0
  285. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +0 -0
  286. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +0 -0
  287. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -0
  288. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -0
  289. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +0 -0
  290. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/hyperion_grid_detect_then_xray_centre_plan.py +0 -0
  291. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
  292. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +0 -0
  293. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +0 -0
  294. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +0 -0
  295. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +0 -0
  296. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +0 -0
  297. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +0 -0
  298. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
  299. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/alerting/__init__.py +0 -0
  300. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/alerting/constants.py +0 -0
  301. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
  302. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +0 -0
  303. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/callbacks/alert_on_container_change.py +0 -0
  304. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_actions/ispyb_callback.py +0 -0
  305. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
  306. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +0 -0
  307. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +0 -0
  308. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +0 -0
  309. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +0 -0
  310. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/external_interaction/config_server.py +0 -0
  311. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
  312. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/parameters/cli.py +0 -0
  313. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/parameters/components.py +0 -0
  314. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/parameters/device_composites.py +0 -0
  315. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/parameters/gridscan.py +0 -0
  316. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +0 -0
  317. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/parameters/robot_load.py +0 -0
  318. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/parameters/rotation.py +0 -0
  319. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
  320. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/runner.py +0 -0
  321. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/utils/__init__.py +0 -0
  322. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/hyperion/utils/context.py +0 -0
  323. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/jupyter_example.ipynb +0 -0
  324. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/phase1_zebra/__init__.py +0 -0
  325. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/phase1_zebra/device_setup_plans/__init__.py +0 -0
  326. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky/phase1_zebra/device_setup_plans/setup_zebra.py +0 -0
  327. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
  328. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
  329. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/src/mx_bluesky.egg-info/top_level.txt +0 -0
  330. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/start_jupyter.sh +0 -0
  331. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/__init__.py +0 -0
  332. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/__init__.py +0 -0
  333. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/common/device_setup_plans/test_robot_load_unload.py +0 -0
  334. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/conftest.py +0 -0
  335. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/__init__.py +0 -0
  336. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/__init__.py +0 -0
  337. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/alerting/__init__.py +0 -0
  338. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/alerting/test_log_based_alerts.py +0 -0
  339. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
  340. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
  341. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/conftest.py +0 -0
  342. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +0 -0
  343. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +0 -0
  344. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +0 -0
  345. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +0 -0
  346. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/agamemnon/example_collect_multipin.json +0 -0
  347. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/agamemnon/example_native.json +0 -0
  348. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/agamemnon/example_wait.json +0 -0
  349. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/ispyb-test-credentials.cfg +0 -0
  350. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/nexus_files/README.md +0 -0
  351. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/nexus_files/fake_data.h5 +0 -0
  352. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
  353. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
  354. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
  355. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
  356. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
  357. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
  358. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
  359. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
  360. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +0 -0
  361. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +0 -0
  362. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -0
  363. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json +0 -0
  364. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json +0 -0
  365. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
  366. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
  367. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
  368. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
  369. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
  370. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
  371. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
  372. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
  373. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
  374. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/rabbitmq-test-credentials.yml +0 -0
  375. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/scratch/README +0 -0
  376. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_OAVCentring.json +0 -0
  377. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
  378. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  379. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_beamline_parameters.txt +0 -0
  380. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
  381. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_config.cfg +0 -0
  382. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_daq_configuration/OAVCentring_hyperion.json +0 -0
  383. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_daq_configuration/display.configuration +0 -0
  384. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
  385. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  386. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  387. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_daq_configuration/lookup/BeamLine_Undulator_toGap.txt +0 -0
  388. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +0 -0
  389. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_det_dist_converter.txt +0 -0
  390. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_display.configuration +0 -0
  391. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_domain_properties +0 -0
  392. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_domain_properties_with_no_gpu +0 -0
  393. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_domain_properties_with_panda +0 -0
  394. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_images/generate_snapshot_input.png +0 -0
  395. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_images/generate_snapshot_output.png +0 -0
  396. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_images/ins_15_33_0.png +0 -0
  397. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_images/ins_15_33_90.png +0 -0
  398. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_images/ins_15_33_expected_0.png +0 -0
  399. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_images/ins_15_33_expected_270.png +0 -0
  400. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_images/thau_1_91_0.png +0 -0
  401. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_images/thau_1_91_90.png +0 -0
  402. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_images/thau_1_91_expected_0.png +0 -0
  403. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_images/thau_1_91_expected_270.png +0 -0
  404. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
  405. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_lookup_table.txt +0 -0
  406. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/test_mirror_focus.json +0 -0
  407. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/test_data/zocalo-test-configuration.yaml +0 -0
  408. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/__init__.py +0 -0
  409. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/__init__.py +0 -0
  410. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/aithre_lasershaping/test_beamline_safe.py +0 -0
  411. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/aithre_lasershaping/test_check_goniometer_performance.py +0 -0
  412. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/aithre_lasershaping/test_goniometer_controls.py +0 -0
  413. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
  414. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i04/test_i04_grid_detect_then_xray_centre_plan.py +0 -0
  415. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +0 -0
  416. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i04/test_thawing.py +0 -0
  417. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i23/test_serial.py +0 -0
  418. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/__init__.py +0 -0
  419. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/__init__.py +0 -0
  420. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/conftest.py +0 -0
  421. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/extruder/__init__.py +0 -0
  422. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +0 -0
  423. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  424. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +0 -0
  425. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +0 -0
  426. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
  427. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +0 -0
  428. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +0 -0
  429. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +0 -0
  430. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +0 -0
  431. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  432. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
  433. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +0 -0
  434. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +0 -0
  435. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +0 -0
  436. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +0 -0
  437. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
  438. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
  439. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +0 -0
  440. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/web_gui/__init__.py +0 -0
  441. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +0 -0
  442. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/__init__.py +0 -0
  443. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/device_setup_plans/test_robot_load_unload.py +0 -0
  444. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +0 -0
  445. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/device_setup_plans/test_xbpm_feedback.py +0 -0
  446. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/__init__.py +0 -0
  447. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/inner_plans/__init__.py +0 -0
  448. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/inner_plans/test_do_fgs.py +0 -0
  449. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/inner_plans/test_read_hardware.py +0 -0
  450. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/inner_plans/test_udc_default_state.py +0 -0
  451. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/inner_plans/test_write_sample_status.py +0 -0
  452. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/test_change_aperture_then_move_plan.py +0 -0
  453. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/test_common_grid_detect_then_xray_centre_plan.py +0 -0
  454. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/test_grid_detection_plan.py +0 -0
  455. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/experiment_plans/test_oav_snapshot_plan.py +0 -0
  456. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/__init__.py +0 -0
  457. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/alerting/__init__.py +0 -0
  458. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/alerting/alerting/__init__.py +0 -0
  459. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/alerting/alerting/test_alerting.py +0 -0
  460. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/__init__.py +0 -0
  461. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/common/__init__.py +0 -0
  462. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/common/test_abstract_event.py +0 -0
  463. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +0 -0
  464. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/ispyb/__init__.py +0 -0
  465. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/ispyb/conftest.py +0 -0
  466. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_expeye_interaction.py +0 -0
  467. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +0 -0
  468. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +0 -0
  469. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +0 -0
  470. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
  471. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/callbacks/test_zocalo_handler.py +0 -0
  472. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/conftest.py +0 -0
  473. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +0 -0
  474. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/test_config_server.py +0 -0
  475. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/test_ispyb_utils.py +0 -0
  476. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/xray_centre/__init__.py +0 -0
  477. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +0 -0
  478. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_handler.py +0 -0
  479. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_mapping.py +0 -0
  480. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/external_interaction/xray_centre/test_nexus_handler.py +0 -0
  481. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/parameters/__init__.py +0 -0
  482. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/parameters/test_components.py +0 -0
  483. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/parameters/test_constants.py +0 -0
  484. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/preprocessors/__init__.py +0 -0
  485. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/preprocessors/test_preprocessors.py +0 -0
  486. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/utils/__init__.py +0 -0
  487. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/common/utils/test_log.py +0 -0
  488. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/__init__.py +0 -0
  489. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/device_setup_plans/__init__.py +0 -0
  490. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +0 -0
  491. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +0 -0
  492. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +0 -0
  493. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +0 -0
  494. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +0 -0
  495. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +0 -0
  496. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/__init__.py +0 -0
  497. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -0
  498. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/conftest.py +0 -0
  499. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
  500. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_hyperion_flyscan_xray_centre_plan.py +0 -0
  501. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_hyperion_grid_detect_then_xray_centre_plan.py +0 -0
  502. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +0 -0
  503. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +0 -0
  504. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +0 -0
  505. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +0 -0
  506. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +0 -0
  507. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +0 -0
  508. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
  509. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/__init__.py +0 -0
  510. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
  511. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -0
  512. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +0 -0
  513. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
  514. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +0 -0
  515. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/callbacks/test_alert_on_container_change.py +0 -0
  516. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
  517. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +0 -0
  518. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -0
  519. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/nexus/__init__.py +0 -0
  520. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +0 -0
  521. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +0 -0
  522. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +0 -0
  523. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
  524. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
  525. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
  526. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +0 -0
  527. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
  528. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +0 -0
  529. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
  530. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/test_utils.py +0 -0
  531. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/utils/__init__.py +0 -0
  532. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
  533. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
  534. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/tests/unit_tests/test_cli.py +0 -0
  535. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/build_docker_image.sh +0 -0
  536. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/build_imginfo.sh +0 -0
  537. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/deploy/create_venv.py +0 -0
  538. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
  539. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/deploy/deploy_mx_bluesky.py +0 -0
  540. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh +0 -0
  541. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/deploy/test_deploy.py +0 -0
  542. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/dev_jaeger_container.sh +0 -0
  543. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/dls_dev_env.sh +0 -0
  544. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/docker/entrypoint.sh +0 -0
  545. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/docker/healthcheck.sh +0 -0
  546. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/docker/i03-compose.yml +0 -0
  547. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/generate_plantuml.py +0 -0
  548. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/graylog/Dockerfile +0 -0
  549. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/graylog/tcp_input.json +0 -0
  550. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/procserv_ioc_start.sh +0 -0
  551. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/request_baton.sh +0 -0
  552. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/run_imginfo.sh +0 -0
  553. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/setup_graylog.sh +0 -0
  554. {mx_bluesky-1.5.5 → mx_bluesky-1.5.6}/utility_scripts/strip_metafile.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mx-bluesky
3
- Version: 1.5.5
3
+ Version: 1.5.6
4
4
  Summary: Bluesky tools for MX Beamlines at DLS
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -241,7 +241,7 @@ Requires-Dist: blueapi>=0.15.0
241
241
  Requires-Dist: ophyd>=1.10.5
242
242
  Requires-Dist: ophyd-async>=0.10.0a2
243
243
  Requires-Dist: bluesky>=1.13.1
244
- Requires-Dist: dls-dodal==1.57.0
244
+ Requires-Dist: dls-dodal==1.58.0
245
245
  Provides-Extra: dev
246
246
  Requires-Dist: black; extra == "dev"
247
247
  Requires-Dist: build; extra == "dev"
@@ -0,0 +1,13 @@
1
+ Draw.io Images
2
+ --------------
3
+
4
+ When working with diagrams created using Draw.io, it's important to ensure that the images retain their embedded metadata. This metadata allows the diagrams to be re-uploaded to Draw.io later for editing.
5
+
6
+ To preserve this metadata:
7
+
8
+ - When exporting from Draw.io, use the "File > Export As > PNG (with embedded XML)" or SVG (with embedded content) option.
9
+ - Make sure the "Include a copy of my diagram" or similar checkbox is selected during export.
10
+
11
+ This ensures that the image isn't just a flat graphic—it includes the necessary data for Draw.io to reconstruct and edit the diagram later.
12
+
13
+ Tip: There is a chance of losing the metadata though if not handled properly. Sharing the image through Slack for example will delete the metadata associated with the image. Instead, use something like e-mail.
@@ -3,7 +3,7 @@ Murko Architecture
3
3
 
4
4
  The architecture of how Murko is integrated is still in flux but as of 07/08 the following has been tried on the beamline.
5
5
 
6
- .. image:: ../images/murko_setup.drawio.png
6
+ .. image:: ../images/Murko.drawio.png
7
7
 
8
8
  The mx-bluesky code is deployed into the `beamline kubernetes cluster <https://k8s-i04.diamond.ac.uk/>`_ behind a `blueAPI <https://github.com/DiamondLightSource/blueapi>`_ REST interface. Alongside this an instance of murko is also deployed to the k8s cluster.
9
9
 
@@ -16,6 +16,7 @@ Its integration at DLS, using Bluesky, is still a work in progress but this docu
16
16
  :maxdepth: 1
17
17
 
18
18
  explanations/architecture
19
+ explanations/DrawioImages
19
20
 
20
21
  +++
21
22
 
@@ -1,6 +1,9 @@
1
1
  Configuration
2
2
  -------------
3
3
 
4
+ Hyperion main configuration
5
+ ===========================
6
+
4
7
  Configuration of several properties that control Hyperion execution are available. These can be edited in the
5
8
  ``domain.properties`` file typically found in
6
9
 
@@ -8,6 +11,8 @@ Configuration of several properties that control Hyperion execution are availabl
8
11
 
9
12
  /dls_sw/<beamline>/software/daq_configuration/domain.properties
10
13
 
14
+ Note that making a change to these properties generally requires a restart of the GDA server.
15
+
11
16
 
12
17
  .. csv-table:: Configuration properties
13
18
  :widths: auto
@@ -23,3 +28,27 @@ Configuration of several properties that control Hyperion execution are availabl
23
28
  "gda.mx.hyperion.xrc.use_gpu_results", "boolean", "If true, then zocalo gridscan processing uses the GPU results"
24
29
  "gda.mx.hyperion.xrc.use_roi_mode", "boolean", "If true then ROI mode is used."
25
30
  "gda.mx.udc.hyperion.enable", "boolean", "Enables Hyperion UDC mode."
31
+
32
+ Beamline configuration/calibration files
33
+ ========================================
34
+
35
+ Hyperion makes use of other beamline configuration and calibration files which are also currently stored in
36
+
37
+ ::
38
+
39
+ /dls_sw/<beamline>/software/daq_configuration
40
+
41
+ These are currently shared with GDA, so changes to these files will affect both applications.
42
+
43
+ Config Server
44
+ =============
45
+
46
+ If the `Config Server`_ is deployed and running, Hyperion is configured to use it in preference to reading the
47
+ ``domain.properties`` file directly. However in the event of the config server being unavailable Hyperion will fall
48
+ back to reading it from the filesystem.
49
+
50
+ Note that currently the rest of the configuration files are not read from the config server, but the intention is that
51
+ ultimately it will be the source of all configuration and the remainder of the files in ``daq_configuration`` will be
52
+ moved over to it.
53
+
54
+ .. _Config Server: https://github.com/DiamondLightSource/daq-config-server/
@@ -18,6 +18,23 @@ The software supports two modes of operation:
18
18
 
19
19
  The mode of operation is determined by configuration using the ``gda.mx.udc.hyperion.enable`` parameter
20
20
 
21
+ Once Hyperion has received a request, either from GDA or directly from Agamemnon, it will do the following tasks:
22
+
23
+ - Robot Load (if necessary)
24
+ - Pin tip detection using the OAV
25
+ - Xray Centring
26
+ - A number of data collections, depending on the number of centres returned from Zocalo and the applied selection criteria
27
+
28
+ During this it will generate the following outputs:
29
+
30
+ - Snapshots on robot load, XRC and rotations
31
+ - Data collections in ISPyB for the gridscans and rotations as well as entries for robot load/unload
32
+ - Nexus files for each data collection
33
+ - Alert notifications on loading a new container and on beamline error conditions when intervention is required.
34
+
35
+ For a more detailed breakdown of the operation, it may be helpful to browse the `Code Map`_
36
+
37
+ .. _Code Map: ../../developer/code-map
21
38
 
22
39
  .. toctree::
23
40
  :caption: Topics
@@ -10,3 +10,12 @@ CURRENT_USER.
10
10
  Hyperion will only start operating once REQUESTED_USER has been set to Hyperion, at which point it will set
11
11
  CURRENT_USER. To request the baton from Hyperion, set REQUESTED_USER to some other value, when Hyperion completes the
12
12
  current action, it will relinquish CURRENT_USER.
13
+
14
+ Commissioning Mode
15
+ ~~~~~~~~~~~~~~~~~~
16
+
17
+ The baton device also has a COMMISSIONING PV, which when the PV is set to 1, indicates that commissioning mode is
18
+ enabled.
19
+
20
+ Commissioning mode enables testing of Hyperion when there is no beam. Beamline scientists should ensure that the
21
+ COMMISSIONING PV is set to 0 before running Hyperion in production.
@@ -0,0 +1,137 @@
1
+ Troubleshooting
2
+ ===============
3
+
4
+ .. contents::
5
+
6
+ Logging
7
+ -------
8
+
9
+ Hyperion logs to a number of different locations. The sections below describe the locations that are configured via
10
+ environment variables for a standard server install.
11
+
12
+ Graylog
13
+ ~~~~~~~
14
+
15
+ Graylog is the recommended way to view logs. It is used for more centralised logging which is also more easily
16
+ searched and archived. Log messages are sent to the `Hyperion graylog stream <https://graylog.diamond.ac.uk/streams/66264f5519ccca6d1c9e4e03/search>`_.
17
+
18
+
19
+ Startup Log
20
+ ~~~~~~~~~~~
21
+
22
+ When ``hyperion_restart()`` is called by GDA, it will log the initial console output to a log file. This log file
23
+ location is
24
+ controlled by the ``gda.logs.dir`` property and is typically ``/dls_sw/<beamline>/logs/bluesky``.
25
+
26
+ Log files
27
+ ~~~~~~~~~
28
+
29
+ By default, Hyperion logs to the filesystem.
30
+
31
+ The log file location is controlled by the ``LOG_DIR`` environment value. Typically this can be found in
32
+ ``/dls_sw/<beamline>/logs/bluesky``
33
+
34
+ Debug Log
35
+ ~~~~~~~~~
36
+
37
+ The standard logs files do not record all messages, only those at INFO level or higher, in order to keep storage
38
+ requirements to a minimum.
39
+ In the event of an error occurring, then trace-level logging for the most recent events (by default 5000) is flushed
40
+ to a separate set of log files. Due to the size of these files, they are stored separately from the main log files
41
+ . These logs are located in ``/dls/tmp/<beamline>/logs/bluesky`` by default, or
42
+ otherwise as specified by the ``DEBUG_LOG_DIR`` environment variable.
43
+
44
+ Server Install
45
+ --------------
46
+
47
+ Install Location
48
+ ~~~~~~~~~~~~~~~~
49
+
50
+ Hyperion is generally installed in the beamline software directory:
51
+
52
+ ``/dls_sw/<beamline>/software/bluesky``
53
+
54
+ This directory contains versioned installation folders ``mx-bluesky_vx.y.z`` for each installed version. Within the
55
+ directory there is a symlink ``hyperion`` to the currently active version. This is generally a symlink to either
56
+ ``hyperion_stable`` or ``hyperion_latest`` symlinks which then point to the latest stable and development releases
57
+ respectively.
58
+
59
+ Switching Versions
60
+ ~~~~~~~~~~~~~~~~~~
61
+
62
+ For example to switch from the development to the stable release simply:
63
+
64
+ ::
65
+
66
+ rm hyperion
67
+ ln -s hyperion_latest hyperion
68
+
69
+ After this you will need to run ``hyperion_restart()`` in the GDA jython console to restart hyperion
70
+
71
+ Verifying that Hyperion is running
72
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73
+
74
+ To verify that the correct version of Hyperion is running, you should be able to view the process on the control
75
+ server, ssh into the control server, the output of ``ps ax`` should be something like the following, showing which
76
+ deployment is currently running. You should see two processes, the main process and also the external callback process.
77
+
78
+ ::
79
+
80
+ $ ps ax | grep hyperion
81
+ 1181420 ? Sl 2:36 /dls_sw/i03/software/bluesky/mx-bluesky_v1.5.0/mx-bluesky/.venv/bin/python /dls_sw/i03/software/bluesky/mx-bluesky_v1.5.0/mx-bluesky/.venv/bin/hyperion
82
+ 1181422 ? Sl 1:54 /dls_sw/i03/software/bluesky/mx-bluesky_v1.5.0/mx-bluesky/.venv/bin/python /dls_sw/i03/software/bluesky/mx-bluesky_v1.5.0/mx-bluesky/.venv/bin/hyperion-callbacks
83
+
84
+ Kubernetes Install
85
+ ------------------
86
+
87
+ If Hyperion is deployed on Kubernetes (currently experimental) then it can be managed from the beamline kubernetes
88
+ dashboard, e.g.
89
+ https://k8s-i03-dashboard.diamond.ac.uk
90
+
91
+ In the beamline namespace there will be a deployment ``hyperion-deployment``, a ``hyperion-svc`` service and associated
92
+ pods, ingress etc. through which the current state may be observed / managed.
93
+
94
+ Logging
95
+ ~~~~~~~
96
+
97
+ On kubernetes deployments, the initial startup is sent to standard IO and is captured as part of the standard
98
+ kubernetes logging facility.
99
+
100
+ The configured logging locations are defined in the ``values.yaml`` for the specific deployment Helm chart.
101
+
102
+ Known Issues
103
+ ------------
104
+
105
+ Odin Errors when there are filesystem issues
106
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
107
+
108
+ https://github.com/DiamondLightSource/mx-bluesky/issues/1199
109
+
110
+ On occasions where there are issues with the filesystem you may see errors similar to
111
+
112
+ ::
113
+
114
+ ophyd.utils.errors.UnknownStatusFailure: The status (Status(obj=EpicsSignalWithRBV
115
+ (read_pv='BL03I-EA-EIGER-01:OD:Capture_RBV', name='eiger_odin_file_writer_capture', parent='eiger_odin_file_writer',
116
+ value=0, timestamp=1754488753.208739, auto_monitor=False, string=False, write_pv='BL03I-EA-EIGER-01:OD:Capture',
117
+ limits=False, put_complete=False), done=True, success=False) & SubscriptionStatus(device=eiger_odin_meta_ready,
118
+ done=False, success=False)) has failed. To obtain more specific, helpful errors in the future, update the Device
119
+ to use set_exception(...) instead of _finished(success=False).
120
+
121
+ hyperion_restart() sometimes times out
122
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
123
+
124
+ Sometimes hyperion_restart() will time out waiting for Hyperion to start, in the Jython console you may see the
125
+ following
126
+
127
+ ::
128
+
129
+ InteractiveConsole exception: hyperion_utils.exceptions.HyperionFailedException: Hyperion failed to start, see /dls_sw/i03/logs/bluesky/start_log.log for log
130
+ org.python.core.PyException: hyperion_utils.exceptions.HyperionFailedException: Hyperion failed to start, see /dls_sw/i03/logs/bluesky/start_log.log for log
131
+ at org.python.core.PyException.doRaise(PyException.java:239)
132
+ at org.python.core.Py.makeException(Py.java:1654)
133
+ at org.python.core.Py.makeException(Py.java:1658)
134
+ at org.python.core.Py.makeException(Py.java:1662)
135
+
136
+ However on inspection the start log will not show any errors. Hyperion running can be verified as above `Verifying
137
+ that Hyperion is running`_
@@ -48,7 +48,7 @@ dependencies = [
48
48
  "ophyd >= 1.10.5",
49
49
  "ophyd-async >= 0.10.0a2",
50
50
  "bluesky >= 1.13.1",
51
- "dls-dodal == 1.57.0",
51
+ "dls-dodal == 1.58.0",
52
52
  ]
53
53
 
54
54
 
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '1.5.5'
32
- __version_tuple__ = version_tuple = (1, 5, 5)
31
+ __version__ = version = '1.5.6'
32
+ __version_tuple__ = version_tuple = (1, 5, 6)
33
33
 
34
- __commit_id__ = commit_id = 'gb6ac6ef7f'
34
+ __commit_id__ = commit_id = 'g6a9297fcb'
@@ -9,6 +9,7 @@ import bluesky.preprocessors as bpp
9
9
  import numpy as np
10
10
  from bluesky.protocols import Readable
11
11
  from bluesky.utils import MsgGenerator
12
+ from dodal.common.beamlines.commissioning_mode import read_commissioning_mode
12
13
  from dodal.devices.fast_grid_scan import (
13
14
  FastGridScanCommon,
14
15
  )
@@ -226,11 +227,33 @@ def _fetch_xrc_results_from_zocalo(
226
227
  for xr in filtered_results
227
228
  ]
228
229
  else:
229
- LOGGER.warning("No X-ray centre received")
230
- raise CrystalNotFoundException()
230
+ commissioning_mode = yield from read_commissioning_mode()
231
+ if commissioning_mode:
232
+ LOGGER.info("Commissioning mode enabled, returning dummy result")
233
+ flyscan_results = [_generate_dummy_xrc_result(parameters)]
234
+ else:
235
+ LOGGER.warning("No X-ray centre received")
236
+ raise CrystalNotFoundException()
231
237
  yield from _fire_xray_centre_result_event(flyscan_results)
232
238
 
233
239
 
240
+ def _generate_dummy_xrc_result(params: SpecifiedThreeDGridScan) -> XRayCentreResult:
241
+ com = [params.x_steps / 2, params.y_steps / 2, params.z_steps / 2]
242
+ max_voxel = [round(p) for p in com]
243
+ return _xrc_result_in_boxes_to_result_in_mm(
244
+ XrcResult(
245
+ centre_of_mass=com,
246
+ max_voxel=max_voxel,
247
+ bounding_box=[max_voxel, [p + 1 for p in max_voxel]],
248
+ n_voxels=1,
249
+ max_count=10000,
250
+ total_count=100000,
251
+ sample_id=params.sample_id,
252
+ ),
253
+ params,
254
+ )
255
+
256
+
234
257
  @bpp.set_run_key_decorator(PlanNameConstants.GRIDSCAN_MAIN)
235
258
  @bpp.run_decorator(md={"subplan_name": PlanNameConstants.GRIDSCAN_MAIN})
236
259
  def run_gridscan(
@@ -231,6 +231,7 @@ class DiffractionExperimentWithSample(DiffractionExperiment, WithSample): ...
231
231
 
232
232
  class MultiXtalSelection(BaseModel):
233
233
  name: str
234
+ ignore_xtal_not_found: bool = False
234
235
 
235
236
 
236
237
  class TopNByMaxCountSelection(MultiXtalSelection):
@@ -1,4 +1,5 @@
1
1
  import json
2
+ import signal
2
3
  import threading
3
4
  from dataclasses import asdict
4
5
  from sys import argv
@@ -32,9 +33,10 @@ from mx_bluesky.hyperion.parameters.cli import (
32
33
  HyperionMode,
33
34
  parse_cli_args,
34
35
  )
35
- from mx_bluesky.hyperion.parameters.constants import CONST
36
+ from mx_bluesky.hyperion.parameters.constants import CONST, HyperionConstants
36
37
  from mx_bluesky.hyperion.parameters.load_centre_collect import LoadCentreCollect
37
38
  from mx_bluesky.hyperion.plan_runner import PlanRunner
39
+ from mx_bluesky.hyperion.plan_runner_api import create_server_for_udc
38
40
  from mx_bluesky.hyperion.runner import (
39
41
  GDARunner,
40
42
  StatusAndMessage,
@@ -170,7 +172,7 @@ def main():
170
172
  """Main application entry point."""
171
173
  args = parse_cli_args()
172
174
  initialise_globals(args)
173
- hyperion_port = 5005
175
+ hyperion_port = HyperionConstants.HYPERION_PORT
174
176
  context = setup_context(dev_mode=args.dev_mode)
175
177
 
176
178
  if args.mode == HyperionMode.GDA:
@@ -188,7 +190,18 @@ def main():
188
190
  )
189
191
  runner.wait_on_queue()
190
192
  else:
191
- run_forever(PlanRunner(context))
193
+ plan_runner = PlanRunner(context, args.dev_mode)
194
+ create_server_for_udc(plan_runner)
195
+ _register_sigterm_handler(plan_runner)
196
+ run_forever(plan_runner)
197
+
198
+
199
+ def _register_sigterm_handler(runner: PlanRunner):
200
+ def shutdown_on_sigterm(sig_num, frame):
201
+ LOGGER.info("Received SIGTERM, shutting down...")
202
+ runner.shutdown()
203
+
204
+ signal.signal(signal.SIGTERM, shutdown_on_sigterm)
192
205
 
193
206
 
194
207
  if __name__ == "__main__":
@@ -6,8 +6,14 @@ from blueapi.core.context import BlueskyContext
6
6
  from bluesky import plan_stubs as bps
7
7
  from bluesky import preprocessors as bpp
8
8
  from bluesky.utils import MsgGenerator, RunEngineInterrupted
9
+ from dodal.common.beamlines.commissioning_mode import set_commissioning_signal
10
+ from dodal.devices.aperturescatterguard import ApertureScatterguard
9
11
  from dodal.devices.baton import Baton
12
+ from dodal.devices.motors import XYZStage
13
+ from dodal.devices.robot import BartRobot
14
+ from dodal.devices.smargon import Smargon
10
15
 
16
+ from mx_bluesky.common.device_setup_plans.robot_load_unload import robot_unload
11
17
  from mx_bluesky.common.experiment_plans.inner_plans.udc_default_state import (
12
18
  UDCDefaultDevices,
13
19
  move_to_udc_default_state,
@@ -77,6 +83,7 @@ def run_udc_when_requested(context: BlueskyContext, runner: PlanRunner):
77
83
 
78
84
  def acquire_baton() -> MsgGenerator:
79
85
  yield from _wait_for_hyperion_requested(baton)
86
+ LOGGER.debug("Hyperion is now current baton holder.")
80
87
  yield from bps.abs_set(baton.current_user, HYPERION_USER)
81
88
 
82
89
  def collect() -> MsgGenerator:
@@ -96,14 +103,20 @@ def run_udc_when_requested(context: BlueskyContext, runner: PlanRunner):
96
103
 
97
104
  # re-fetch the baton because the device has been reinstantiated
98
105
  baton = _get_baton(context)
106
+ current_visit: str | None = None
99
107
  while (yield from _is_requesting_baton(baton)):
100
- yield from _fetch_and_process_agamemnon_instruction(baton, runner)
108
+ current_visit = yield from _fetch_and_process_agamemnon_instruction(
109
+ baton, runner, current_visit
110
+ )
111
+ if current_visit:
112
+ yield from _perform_robot_unload(runner.context, current_visit)
101
113
 
102
114
  def release_baton() -> MsgGenerator:
103
115
  # If hyperion has given up the baton itself we need to also release requested
104
116
  # user so that hyperion doesn't think we're requested again
105
117
  baton = _get_baton(context)
106
- previous_requested_user = yield from _safely_release_baton(baton)
118
+ previous_requested_user = yield from _unrequest_baton(baton)
119
+ LOGGER.debug("Hyperion no longer current baton holder.")
107
120
  yield from bps.abs_set(baton.current_user, NO_USER, wait=True)
108
121
  _raise_baton_released_alert(get_alerting_service(), previous_requested_user)
109
122
 
@@ -111,11 +124,11 @@ def run_udc_when_requested(context: BlueskyContext, runner: PlanRunner):
111
124
  yield from bpp.contingency_wrapper(collect(), final_plan=release_baton)
112
125
 
113
126
  context.run_engine(acquire_baton())
114
- _initialise_udc(context)
127
+ _initialise_udc(context, runner.is_dev_mode)
115
128
  context.run_engine(collect_then_release())
116
129
 
117
130
 
118
- def _initialise_udc(context: BlueskyContext):
131
+ def _initialise_udc(context: BlueskyContext, dev_mode: bool):
119
132
  """
120
133
  Perform all initialisation that happens at the start of UDC just after the
121
134
  baton is acquired, but before we execute any plans or move hardware.
@@ -125,21 +138,25 @@ def _initialise_udc(context: BlueskyContext):
125
138
  """
126
139
  LOGGER.info("Initialising mx-bluesky for UDC start...")
127
140
  clear_all_device_caches(context)
128
- setup_devices(context, False)
141
+ LOGGER.debug("Reinitialising beamline devices")
142
+ setup_devices(context, dev_mode)
143
+ set_commissioning_signal(_get_baton(context).commissioning)
129
144
 
130
145
 
131
146
  def _wait_for_hyperion_requested(baton: Baton):
147
+ LOGGER.debug("Hyperion waiting for baton...")
132
148
  SLEEP_PER_CHECK = 0.1
133
149
  while True:
134
150
  requested_user = yield from bps.rd(baton.requested_user)
135
151
  if requested_user == HYPERION_USER:
152
+ LOGGER.debug("Baton requested for Hyperion")
136
153
  break
137
154
  yield from bps.sleep(SLEEP_PER_CHECK)
138
155
 
139
156
 
140
157
  def _fetch_and_process_agamemnon_instruction(
141
- baton: Baton, runner: PlanRunner
142
- ) -> MsgGenerator:
158
+ baton: Baton, runner: PlanRunner, current_visit: str | None
159
+ ) -> MsgGenerator[str | None]:
143
160
  parameter_list: Sequence[MxBlueskyParameters] = create_parameters_from_agamemnon()
144
161
  if parameter_list:
145
162
  for parameters in parameter_list:
@@ -148,6 +165,7 @@ def _fetch_and_process_agamemnon_instruction(
148
165
  )
149
166
  match parameters:
150
167
  case LoadCentreCollect():
168
+ current_visit = parameters.visit
151
169
  devices: Any = create_devices(runner.context)
152
170
  yield from runner.execute_plan(
153
171
  partial(load_centre_collect_full, devices, parameters)
@@ -161,7 +179,8 @@ def _fetch_and_process_agamemnon_instruction(
161
179
  else:
162
180
  _raise_udc_completed_alert(get_alerting_service())
163
181
  # Release the baton for orderly exit from the instruction loop
164
- yield from _safely_release_baton(baton)
182
+ yield from _unrequest_baton(baton)
183
+ return current_visit
165
184
 
166
185
 
167
186
  def _raise_udc_start_alert(alert_service: AlertService):
@@ -205,7 +224,7 @@ def _get_baton(context: BlueskyContext) -> Baton:
205
224
  return find_device_in_context(context, "baton", Baton)
206
225
 
207
226
 
208
- def _safely_release_baton(baton: Baton) -> MsgGenerator[str]:
227
+ def _unrequest_baton(baton: Baton) -> MsgGenerator[str]:
209
228
  """Relinquish the requested user of the baton if it is not already requested
210
229
  by another user.
211
230
 
@@ -214,6 +233,17 @@ def _safely_release_baton(baton: Baton) -> MsgGenerator[str]:
214
233
  """
215
234
  requested_user = yield from bps.rd(baton.requested_user)
216
235
  if requested_user == HYPERION_USER:
236
+ LOGGER.debug("Hyperion no longer requesting baton")
217
237
  yield from bps.abs_set(baton.requested_user, NO_USER)
218
238
  return NO_USER
219
239
  return requested_user
240
+
241
+
242
+ def _perform_robot_unload(context: BlueskyContext, visit: str) -> MsgGenerator:
243
+ robot = find_device_in_context(context, "robot", BartRobot)
244
+ smargon = find_device_in_context(context, "smargon", Smargon)
245
+ aperture_scatterguard = find_device_in_context(
246
+ context, "aperture_scatterguard", ApertureScatterguard
247
+ )
248
+ lower_gonio = find_device_in_context(context, "lower_gonio", XYZStage)
249
+ yield from robot_unload(robot, smargon, aperture_scatterguard, lower_gonio, visit)
@@ -8,11 +8,13 @@ import pydantic
8
8
  from blueapi.core import BlueskyContext
9
9
  from bluesky.preprocessors import run_decorator, set_run_key_decorator, subs_wrapper
10
10
  from bluesky.utils import MsgGenerator
11
+ from dodal.devices.baton import Baton
11
12
  from dodal.devices.oav.oav_parameters import OAVParameters
12
13
 
13
14
  import mx_bluesky.common.xrc_result as flyscan_result
14
15
  from mx_bluesky.common.parameters.components import WithSnapshot
15
16
  from mx_bluesky.common.utils.context import device_composite_from_context
17
+ from mx_bluesky.common.utils.exceptions import CrystalNotFoundException
16
18
  from mx_bluesky.common.utils.log import LOGGER
17
19
  from mx_bluesky.common.xrc_result import XRayCentreEventHandler
18
20
  from mx_bluesky.hyperion.experiment_plans.robot_load_then_centre_plan import (
@@ -36,6 +38,8 @@ from mx_bluesky.hyperion.parameters.rotation import RotationScanPerSweep
36
38
  class LoadCentreCollectComposite(RobotLoadThenCentreComposite, RotationScanComposite):
37
39
  """Composite that provides access to the required devices."""
38
40
 
41
+ baton: Baton
42
+
39
43
 
40
44
  def create_devices(context: BlueskyContext) -> LoadCentreCollectComposite:
41
45
  """Create the necessary devices for the plan."""
@@ -51,8 +55,9 @@ def load_centre_collect_full(
51
55
  * Load the sample if necessary
52
56
  * Move to the specified goniometer start angles
53
57
  * Perform optical centring, then X-ray centring
54
- * If X-ray centring finds a diffracting centre then move to that centre and
55
- * do a collection with the specified parameters.
58
+ * If X-ray centring finds one or more diffracting centres then for each centre
59
+ that satisfies the chosen selection function,
60
+ move to that centre and do a collection with the specified parameters.
56
61
  """
57
62
 
58
63
  get_hyperion_config_client().refresh_cache()
@@ -81,12 +86,18 @@ def load_centre_collect_full(
81
86
  )
82
87
  def plan_with_callback_subs():
83
88
  flyscan_event_handler = XRayCentreEventHandler()
84
- yield from subs_wrapper(
85
- robot_load_then_xray_centre(
86
- composite, parameters.robot_load_then_centre, oav_config_file
87
- ),
88
- flyscan_event_handler,
89
- )
89
+ try:
90
+ yield from subs_wrapper(
91
+ robot_load_then_xray_centre(
92
+ composite, parameters.robot_load_then_centre, oav_config_file
93
+ ),
94
+ flyscan_event_handler,
95
+ )
96
+ except CrystalNotFoundException:
97
+ if parameters.select_centres.ignore_xtal_not_found:
98
+ LOGGER.info("Ignoring crystal not found due to parameter settings.")
99
+ else:
100
+ raise
90
101
 
91
102
  locations_to_collect_um: list[np.ndarray]
92
103
  samples_to_collect: list[int]
@@ -1,5 +1,6 @@
1
1
  import dataclasses
2
2
  import json
3
+ import os
3
4
  import re
4
5
  import traceback
5
6
  from collections.abc import Sequence
@@ -27,7 +28,6 @@ from mx_bluesky.hyperion.parameters.components import Wait
27
28
  from mx_bluesky.hyperion.parameters.load_centre_collect import LoadCentreCollect
28
29
 
29
30
  T = TypeVar("T", bound=WithVisit)
30
- AGAMEMNON_URL = "http://agamemnon.diamond.ac.uk/"
31
31
  MULTIPIN_PREFIX = "multipin"
32
32
  MULTIPIN_FORMAT_DESC = "Expected multipin format is multipin_{number_of_wells}x{well_size}+{distance_between_tip_and_first_well}"
33
33
  MULTIPIN_REGEX = rf"^{MULTIPIN_PREFIX}_(\d+)x(\d+(?:\.\d+)?)\+(\d+(?:\.\d+)?)$"
@@ -191,7 +191,11 @@ def _get_pin_type_from_agamemnon_collect_parameters(
191
191
 
192
192
 
193
193
  def _get_next_instruction(beamline: str) -> dict:
194
- return _get_parameters_from_url(AGAMEMNON_URL + f"getnextcollect/{beamline}")
194
+ return _get_parameters_from_url(get_agamemnon_url() + f"getnextcollect/{beamline}")
195
+
196
+
197
+ def get_agamemnon_url() -> str:
198
+ return os.environ.get("AGAMEMNON_URL", "http://agamemnon.diamond.ac.uk/")
195
199
 
196
200
 
197
201
  def _get_withvisit_parameters_from_agamemnon(parameters: dict) -> tuple:
@@ -56,6 +56,7 @@ class HyperionConstants:
56
56
  PARAM = ExperimentParamConstants()
57
57
  PLAN = PlanNameConstants()
58
58
  WAIT = PlanGroupCheckpointConstants()
59
+ HYPERION_PORT = 5005
59
60
  CALLBACK_0MQ_PROXY_PORTS = (5577, 5578)
60
61
  DESCRIPTORS = DocDescriptorNames()
61
62
  CONFIG_SERVER_URL = (
@@ -19,12 +19,10 @@ class PlanException(Exception):
19
19
  class PlanRunner(BaseRunner):
20
20
  """Runner that executes experiments from inside a running Bluesky plan"""
21
21
 
22
- def __init__(
23
- self,
24
- context: BlueskyContext,
25
- ) -> None:
22
+ def __init__(self, context: BlueskyContext, dev_mode: bool) -> None:
26
23
  super().__init__(context)
27
24
  self.current_status: Status = Status.IDLE
25
+ self.is_dev_mode = dev_mode
28
26
 
29
27
  def execute_plan(
30
28
  self,