mx-bluesky 1.4.6__tar.gz → 1.4.7__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 (493) hide show
  1. mx_bluesky-1.4.7/.github/CODEOWNERS +1 -0
  2. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/CONTRIBUTING.md +17 -0
  3. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.gitignore +1 -0
  4. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/PKG-INFO +7 -7
  5. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/README.rst +1 -1
  6. mx_bluesky-1.4.7/docs/developer/general/explanations/callback_and_run_logic.rst +27 -0
  7. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/how-to/get-started.rst +2 -2
  8. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/index.rst +1 -0
  9. mx_bluesky-1.4.7/docs/developer/hyperion/how-to/update-panda-ioc.rst +44 -0
  10. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/hyperion/index.rst +12 -0
  11. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/pull_request_template.md +1 -1
  12. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/pyproject.toml +23 -15
  13. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/_version.py +2 -2
  14. mx_bluesky-1.4.7/src/mx_bluesky/beamlines/aithre_lasershaping/__init__.py +13 -0
  15. mx_bluesky-1.4.7/src/mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +29 -0
  16. mx_bluesky-1.4.7/src/mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +18 -0
  17. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +31 -25
  18. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i04/thawing_plan.py +10 -1
  19. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +12 -12
  20. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +30 -29
  21. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +10 -11
  22. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +8 -10
  23. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +10 -3
  24. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/log.py +1 -0
  25. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +1 -1
  26. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +16 -16
  27. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +47 -48
  28. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +1 -1
  29. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +9 -7
  30. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +3 -2
  31. mx_bluesky-1.4.7/src/mx_bluesky/common/device_setup_plans/xbpm_feedback.py +45 -0
  32. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +2 -4
  33. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +1 -1
  34. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +18 -15
  35. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion → mx_bluesky-1.4.7/src/mx_bluesky/common}/external_interaction/callbacks/sample_handling/sample_handling_callback.py +16 -4
  36. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +41 -5
  37. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +2 -1
  38. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +1 -0
  39. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +14 -1
  40. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/nexus/nexus_utils.py +1 -1
  41. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/parameters/constants.py +2 -0
  42. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/parameters/gridscan.py +1 -1
  43. mx_bluesky-1.4.7/src/mx_bluesky/common/plans/write_sample_status.py +46 -0
  44. mx_bluesky-1.4.7/src/mx_bluesky/common/preprocessors/preprocessors.py +105 -0
  45. mx_bluesky-1.4.7/src/mx_bluesky/common/protocols/protocols.py +10 -0
  46. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/__main__.py +3 -9
  47. mx_bluesky-1.4.7/src/mx_bluesky/hyperion/baton_handler.py +84 -0
  48. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +5 -1
  49. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -4
  50. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py +10 -25
  51. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -7
  52. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +11 -10
  53. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +5 -1
  54. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +2 -2
  55. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +5 -3
  56. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +0 -26
  57. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +23 -18
  58. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +25 -6
  59. mx_bluesky-1.4.7/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +242 -0
  60. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +12 -6
  61. mx_bluesky-1.4.7/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +107 -0
  62. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/parameters/gridscan.py +2 -2
  63. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/parameters/rotation.py +1 -1
  64. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky.egg-info/PKG-INFO +7 -7
  65. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky.egg-info/SOURCES.txt +29 -7
  66. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky.egg-info/requires.txt +3 -4
  67. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/conftest.py +23 -1
  68. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/conftest.py +19 -3
  69. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/hyperion/experiment_plans/test_fgs_plan.py +7 -6
  70. mx_bluesky-1.4.7/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +59 -0
  71. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +4 -4
  72. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +85 -11
  73. mx_bluesky-1.4.7/tests/test_data/agamemnon/example_collect.json +83 -0
  74. mx_bluesky-1.4.7/tests/test_data/agamemnon/example_collect_multipin.json +83 -0
  75. mx_bluesky-1.4.7/tests/test_data/test_images/generate_snapshot_input.png +0 -0
  76. mx_bluesky-1.4.7/tests/test_data/test_images/generate_snapshot_output.png +0 -0
  77. mx_bluesky-1.4.7/tests/unit_tests/beamlines/aithre_lasershaping/test_check_goniometer_performance.py +31 -0
  78. mx_bluesky-1.4.7/tests/unit_tests/beamlines/aithre_lasershaping/test_goniometer_controls.py +39 -0
  79. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +34 -7
  80. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i04/test_thawing.py +8 -6
  81. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +12 -4
  82. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +3 -1
  83. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +17 -3
  84. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +7 -7
  85. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +21 -19
  86. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +9 -9
  87. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +14 -3
  88. mx_bluesky-1.4.7/tests/unit_tests/common/device_setup_plans/test_xbpm_feedback.py +132 -0
  89. mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +83 -0
  90. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +0 -10
  91. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/callbacks/test_zocalo_handler.py +50 -32
  92. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/conftest.py +12 -0
  93. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +56 -4
  94. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_handler.py +5 -2
  95. mx_bluesky-1.4.7/tests/unit_tests/common/preprocessors/test_preprocessors.py +192 -0
  96. mx_bluesky-1.4.7/tests/unit_tests/common/test_write_sample_status.py +65 -0
  97. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/conftest.py +12 -0
  98. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/conftest.py +30 -12
  99. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_flyscan_xray_centre_plan.py +116 -6
  100. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_grid_detection_plan.py +2 -0
  101. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_multi_rotation_scan_plan.py +233 -5
  102. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_oav_snapshot_plan.py +6 -6
  103. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +58 -1
  104. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +20 -102
  105. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +58 -2
  106. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +13 -8
  107. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +0 -79
  108. mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/nexus/__init__.py +0 -0
  109. mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +374 -0
  110. mx_bluesky-1.4.7/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
  111. mx_bluesky-1.4.7/tests/unit_tests/hyperion/test_baton_handler.py +162 -0
  112. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/test_main_system.py +0 -5
  113. mx_bluesky-1.4.7/tests/unit_tests/hyperion/utils/__init__.py +0 -0
  114. mx_bluesky-1.4.6/src/mx_bluesky/common/external_interaction/callbacks/common/aperture_change_callback.py +0 -22
  115. mx_bluesky-1.4.6/src/mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +0 -103
  116. mx_bluesky-1.4.6/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +0 -104
  117. mx_bluesky-1.4.6/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +0 -12
  118. mx_bluesky-1.4.6/tests/system_tests/hyperion/test_aperturescatterguard_system.py +0 -53
  119. mx_bluesky-1.4.6/tests/unit_tests/hyperion/device_setup_plans/test_xbpm_feedback.py +0 -135
  120. mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +0 -186
  121. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.copier-answers.yml +0 -0
  122. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.coveragerc +0 -0
  123. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.devcontainer/Dockerfile +0 -0
  124. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.devcontainer/devcontainer.json +0 -0
  125. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.dockerignore +0 -0
  126. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  127. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  128. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/actions/install_requirements/action.yml +0 -0
  129. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/actions/verify-nexus/Dockerfile +0 -0
  130. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/actions/verify-nexus/action.yml +0 -0
  131. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/actions/verify-nexus/entrypoint.sh +0 -0
  132. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/dependabot.yml +0 -0
  133. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/pages/index.html +0 -0
  134. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/pages/make_switcher.py +0 -0
  135. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/workflows/_check.yml +0 -0
  136. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/workflows/_container.yml +0 -0
  137. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/workflows/_dist.yml +0 -0
  138. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/workflows/_docs.yml +0 -0
  139. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/workflows/_pypi.yml +0 -0
  140. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/workflows/_release.yml +0 -0
  141. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/workflows/_test.yml +0 -0
  142. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/workflows/_tox.yml +0 -0
  143. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/workflows/ci.yml +0 -0
  144. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.github/workflows/periodic.yml +0 -0
  145. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.pre-commit-config.yaml +0 -0
  146. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.vscode/extensions.json +0 -0
  147. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.vscode/launch.json +0 -0
  148. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.vscode/mx-bluesky.code-workspace +0 -0
  149. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
  150. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.vscode/settings.json +0 -0
  151. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/.vscode/tasks.json +0 -0
  152. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/Dockerfile +0 -0
  153. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/Dockerfile.release +0 -0
  154. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/LICENSE +0 -0
  155. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/catalog-info.yaml +0 -0
  156. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/codecov.yml +0 -0
  157. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/conftest.py +0 -0
  158. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/_api.rst +0 -0
  159. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/_templates/custom-module-template.rst +0 -0
  160. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/conf.py +0 -0
  161. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  162. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
  163. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
  164. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/explanations/decisions.rst +0 -0
  165. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/how-to/contribute.rst +0 -0
  166. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/how-to/create-a-release.rst +0 -0
  167. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
  168. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
  169. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
  170. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
  171. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
  172. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
  173. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/reference/standards.rst +0 -0
  174. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/general/tutorials/profile-tests.rst +0 -0
  175. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/hyperion/deploying-hyperion.rst +0 -0
  176. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/hyperion/reference/gridscan.puml +0 -0
  177. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
  178. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/hyperion/reference/readme.md +0 -0
  179. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/hyperion/system-tests.rst +0 -0
  180. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/index.rst +0 -0
  181. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
  182. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
  183. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/murko-integration/index.rst +0 -0
  184. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  185. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
  186. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
  187. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
  188. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/serial-crystallography-on-i24/how-to/stage-pmac-moves.rst +0 -0
  189. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/serial-crystallography-on-i24/index.rst +0 -0
  190. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +0 -0
  191. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/images/dls-favicon.ico +0 -0
  192. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/images/dls-logo.svg +0 -0
  193. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/docs/index.rst +0 -0
  194. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/helmcharts/hyperion/Chart.yaml +0 -0
  195. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/helmcharts/hyperion/templates/deployment.yaml +0 -0
  196. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/helmcharts/hyperion/templates/ingress.yaml +0 -0
  197. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/helmcharts/hyperion/templates/service.yaml +0 -0
  198. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/helmcharts/hyperion/values.yaml +0 -0
  199. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/helmcharts/redis-to-murko/Chart.yaml +0 -0
  200. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/helmcharts/redis-to-murko/templates/deployment.yaml +0 -0
  201. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/helmcharts/redis-to-murko/values.yaml +0 -0
  202. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/add_assignee_when_pr_opened.yml +0 -0
  203. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/assigned_issues_to_in_progress.yml +0 -0
  204. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/code.yml +0 -0
  205. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/container_tests.sh +0 -0
  206. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/get_issue_from_pr.yml +0 -0
  207. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/get_project_data_and_move_column.yml +0 -0
  208. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/linkcheck.yml +0 -0
  209. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/open_prs_to_review.yml +0 -0
  210. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/opened_issues_to_backlog.yml +0 -0
  211. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/pin_versions.py +0 -0
  212. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/pre_release_workflow.yml +0 -0
  213. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/rework_prs_to_in_progress.yml +0 -0
  214. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/test_data/pip_freeze.txt +0 -0
  215. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/test_data/setup.cfg +0 -0
  216. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/test_data/setup.cfg.pinned +0 -0
  217. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/test_data/setup.cfg.unpinned +0 -0
  218. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/hyperion_other/workflows/test_pin_versions.py +0 -0
  219. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/run_hyperion.sh +0 -0
  220. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/run_hyperion_in_podman.sh +0 -0
  221. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/setup.cfg +0 -0
  222. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/__init__.py +0 -0
  223. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/__main__.py +0 -0
  224. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/__init__.py +0 -0
  225. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i04/__init__.py +0 -0
  226. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
  227. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/__init__.py +0 -0
  228. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/__init__.py +0 -0
  229. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +0 -0
  230. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/dcid.py +0 -0
  231. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
  232. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  233. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/extruder/__init__.py +0 -0
  234. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
  235. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
  236. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
  237. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  238. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
  239. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  240. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  241. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  242. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  243. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +0 -0
  244. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png +0 -0
  245. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png +0 -0
  246. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  247. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
  248. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
  249. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +0 -0
  250. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
  251. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +0 -0
  252. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  253. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  254. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  255. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  256. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +0 -0
  257. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
  258. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
  259. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
  260. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
  261. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  262. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
  263. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +0 -0
  264. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
  265. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py +0 -0
  266. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +0 -0
  267. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/__init__.py +0 -0
  268. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/device_setup_plans/setup_panda.py +0 -0
  269. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/__init__.py +0 -0
  270. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/common/__init__.py +0 -0
  271. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py +0 -0
  272. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py +0 -0
  273. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py +0 -0
  274. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py +0 -0
  275. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +0 -0
  276. {mx_bluesky-1.4.6/src/mx_bluesky/common/external_interaction/callbacks/xray_centre → mx_bluesky-1.4.7/src/mx_bluesky/common/external_interaction/callbacks/sample_handling}/__init__.py +0 -0
  277. {mx_bluesky-1.4.6/src/mx_bluesky/common/external_interaction/ispyb → mx_bluesky-1.4.7/src/mx_bluesky/common/external_interaction/callbacks/xray_centre}/__init__.py +0 -0
  278. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -0
  279. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/config_server.py +0 -0
  280. {mx_bluesky-1.4.6/src/mx_bluesky/common/external_interaction/nexus → mx_bluesky-1.4.7/src/mx_bluesky/common/external_interaction/ispyb}/__init__.py +0 -0
  281. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +0 -0
  282. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +0 -0
  283. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion/device_setup_plans → mx_bluesky-1.4.7/src/mx_bluesky/common/external_interaction/nexus}/__init__.py +0 -0
  284. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/nexus/write_nexus.py +0 -0
  285. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/external_interaction/test_config_server.py +0 -0
  286. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/parameters/components.py +0 -0
  287. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/plans/__init__.py +0 -0
  288. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/plans/do_fgs.py +0 -0
  289. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/plans/read_hardware.py +0 -0
  290. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.4.7/src/mx_bluesky/common/preprocessors}/__init__.py +0 -0
  291. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.4.7/src/mx_bluesky/common/protocols}/__init__.py +0 -0
  292. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/utils/context.py +0 -0
  293. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/utils/exceptions.py +0 -0
  294. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/utils/log.py +0 -0
  295. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/utils/tracing.py +0 -0
  296. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/utils/utils.py +0 -0
  297. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/common/xrc_result.py +0 -0
  298. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/definitions.py +0 -0
  299. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/__init__.py +0 -0
  300. {mx_bluesky-1.4.6/tests → mx_bluesky-1.4.7/src/mx_bluesky/hyperion/device_setup_plans}/__init__.py +0 -0
  301. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/device_setup_plans/check_beamstop.py +0 -0
  302. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +0 -0
  303. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py +0 -0
  304. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/device_setup_plans/position_detector.py +0 -0
  305. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/device_setup_plans/setup_oav.py +0 -0
  306. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -0
  307. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +0 -0
  308. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +0 -0
  309. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +0 -0
  310. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py +0 -0
  311. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
  312. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +0 -0
  313. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +0 -0
  314. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
  315. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
  316. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +0 -0
  317. {mx_bluesky-1.4.6/tests/system_tests → mx_bluesky-1.4.7/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  318. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +0 -0
  319. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +0 -0
  320. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +0 -0
  321. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/external_interaction/config_server.py +0 -0
  322. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
  323. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/parameters/cli.py +0 -0
  324. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/parameters/components.py +0 -0
  325. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/parameters/constants.py +0 -0
  326. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/parameters/device_composites.py +0 -0
  327. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +0 -0
  328. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/parameters/robot_load.py +0 -0
  329. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
  330. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/utils/__init__.py +0 -0
  331. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/utils/context.py +0 -0
  332. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/hyperion/utils/validation.py +0 -0
  333. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky/jupyter_example.ipynb +0 -0
  334. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
  335. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
  336. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/src/mx_bluesky.egg-info/top_level.txt +0 -0
  337. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/start_jupyter.sh +0 -0
  338. {mx_bluesky-1.4.6/tests/system_tests/hyperion → mx_bluesky-1.4.7/tests}/__init__.py +0 -0
  339. {mx_bluesky-1.4.6/tests/system_tests/hyperion/experiment_plans → mx_bluesky-1.4.7/tests/system_tests}/__init__.py +0 -0
  340. {mx_bluesky-1.4.6/tests/system_tests/hyperion/external_interaction → mx_bluesky-1.4.7/tests/system_tests/hyperion}/__init__.py +0 -0
  341. {mx_bluesky-1.4.6/tests/system_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.7/tests/system_tests/hyperion/experiment_plans}/__init__.py +0 -0
  342. {mx_bluesky-1.4.6/tests/unit_tests → mx_bluesky-1.4.7/tests/system_tests/hyperion/external_interaction}/__init__.py +0 -0
  343. {mx_bluesky-1.4.6/tests/unit_tests/beamlines → mx_bluesky-1.4.7/tests/system_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  344. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
  345. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/hyperion/external_interaction/conftest.py +0 -0
  346. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/hyperion/external_interaction/test_config_service.py +0 -0
  347. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +0 -0
  348. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +0 -0
  349. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +0 -0
  350. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/system_tests/hyperion/test_device_setups_and_cleanups.py +0 -0
  351. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/nexus_files/README.md +0 -0
  352. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/nexus_files/fake_data.h5 +0 -0
  353. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
  354. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
  355. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
  356. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
  357. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
  358. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
  359. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
  360. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
  361. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +0 -0
  362. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +0 -0
  363. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -0
  364. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
  365. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
  366. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
  367. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
  368. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
  369. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters_nomove.json +0 -0
  370. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
  371. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
  372. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
  373. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
  374. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/scratch/README +0 -0
  375. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_OAVCentring.json +0 -0
  376. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
  377. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  378. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_beamline_parameters.txt +0 -0
  379. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
  380. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_config.cfg +0 -0
  381. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
  382. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  383. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  384. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_daq_configuration/lookup/BeamLine_Undulator_toGap.txt +0 -0
  385. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +0 -0
  386. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_det_dist_converter.txt +0 -0
  387. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_display.configuration +0 -0
  388. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
  389. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_lookup_table.txt +0 -0
  390. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/test_data/test_mirror_focus.json +0 -0
  391. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24 → mx_bluesky-1.4.7/tests/unit_tests}/__init__.py +0 -0
  392. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial → mx_bluesky-1.4.7/tests/unit_tests/beamlines}/__init__.py +0 -0
  393. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
  394. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial/extruder → mx_bluesky-1.4.7/tests/unit_tests/beamlines/i24}/__init__.py +0 -0
  395. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial/fixed_target → mx_bluesky-1.4.7/tests/unit_tests/beamlines/i24/serial}/__init__.py +0 -0
  396. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/conftest.py +0 -0
  397. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial/setup_beamline → mx_bluesky-1.4.7/tests/unit_tests/beamlines/i24/serial/extruder}/__init__.py +0 -0
  398. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial/web_gui → mx_bluesky-1.4.7/tests/unit_tests/beamlines/i24/serial/fixed_target}/__init__.py +0 -0
  399. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +0 -0
  400. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
  401. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +0 -0
  402. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +0 -0
  403. {mx_bluesky-1.4.6/tests/unit_tests/common → mx_bluesky-1.4.7/tests/unit_tests/beamlines/i24/serial/setup_beamline}/__init__.py +0 -0
  404. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
  405. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +0 -0
  406. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +0 -0
  407. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
  408. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
  409. {mx_bluesky-1.4.6/tests/unit_tests/common/external_interaction → mx_bluesky-1.4.7/tests/unit_tests/beamlines/i24/serial/web_gui}/__init__.py +0 -0
  410. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +0 -0
  411. {mx_bluesky-1.4.6/tests/unit_tests/common/external_interaction/callbacks → mx_bluesky-1.4.7/tests/unit_tests/common}/__init__.py +0 -0
  412. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +0 -0
  413. {mx_bluesky-1.4.6/tests/unit_tests/common/external_interaction/callbacks/common → mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction}/__init__.py +0 -0
  414. {mx_bluesky-1.4.6/tests/unit_tests/common/external_interaction/callbacks/ispyb → mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks}/__init__.py +0 -0
  415. {mx_bluesky-1.4.6/tests/unit_tests/common/plans → mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks/common}/__init__.py +0 -0
  416. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/callbacks/common/test_abstract_event.py +0 -0
  417. {mx_bluesky-1.4.6/tests/unit_tests/common/utils → mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks/ispyb}/__init__.py +0 -0
  418. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/callbacks/ispyb/conftest.py +0 -0
  419. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_expeye_interaction.py +0 -0
  420. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +0 -0
  421. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
  422. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +0 -0
  423. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/test_ispyb_utils.py +0 -0
  424. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/xray_centre/__init__.py +0 -0
  425. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_mapping.py +0 -0
  426. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/external_interaction/xray_centre/test_nexus_handler.py +0 -0
  427. {mx_bluesky-1.4.6/tests/unit_tests/hyperion → mx_bluesky-1.4.7/tests/unit_tests/common/plans}/__init__.py +0 -0
  428. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/plans/test_read_hardware.py +0 -0
  429. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/device_setup_plans → mx_bluesky-1.4.7/tests/unit_tests/common/preprocessors}/__init__.py +0 -0
  430. {mx_bluesky-1.4.6/tests/unit_tests/common/plan_stubs → mx_bluesky-1.4.7/tests/unit_tests/common}/test_do_fgs.py +0 -0
  431. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/experiment_plans → mx_bluesky-1.4.7/tests/unit_tests/common/utils}/__init__.py +0 -0
  432. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/common/utils/test_log.py +0 -0
  433. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/conftest.py +0 -0
  434. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.4.7/tests/unit_tests/hyperion}/__init__.py +0 -0
  435. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.7/tests/unit_tests/hyperion/device_setup_plans}/__init__.py +0 -0
  436. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/device_setup_plans/test_check_beamstop.py +0 -0
  437. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +0 -0
  438. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +0 -0
  439. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +0 -0
  440. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +0 -0
  441. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +0 -0
  442. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +0 -0
  443. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.4.7/tests/unit_tests/hyperion/experiment_plans}/__init__.py +0 -0
  444. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -0
  445. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_change_aperture_then_move_plan.py +0 -0
  446. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
  447. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_grid_detect_then_xray_centre_plan.py +0 -0
  448. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +0 -0
  449. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +0 -0
  450. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +0 -0
  451. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +0 -0
  452. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
  453. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction}/__init__.py +0 -0
  454. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/nexus → mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  455. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -0
  456. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +0 -0
  457. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/parameters → mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  458. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +0 -0
  459. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/utils → mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling}/__init__.py +0 -0
  460. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
  461. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -0
  462. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +0 -0
  463. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +0 -0
  464. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
  465. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
  466. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
  467. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +0 -0
  468. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +0 -0
  469. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
  470. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/test_utils.py +0 -0
  471. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
  472. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
  473. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/tests/unit_tests/test_cli.py +0 -0
  474. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/beam_off_trickery.sh +0 -0
  475. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/build_docker_image.sh +0 -0
  476. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/build_imginfo.sh +0 -0
  477. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/deploy/create_venv.py +0 -0
  478. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
  479. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/deploy/deploy_mx_bluesky.py +0 -0
  480. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh +0 -0
  481. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/deploy/test_deploy.py +0 -0
  482. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/dev_jaeger_container.sh +0 -0
  483. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/dls_dev_env.sh +0 -0
  484. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/docker/entrypoint.sh +0 -0
  485. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/docker/healthcheck.sh +0 -0
  486. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/docker/i03-compose.yml +0 -0
  487. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/generate_plantuml.py +0 -0
  488. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/graylog/Dockerfile +0 -0
  489. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/graylog/tcp_input.json +0 -0
  490. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/procserv_ioc_start.sh +0 -0
  491. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/run_imginfo.sh +0 -0
  492. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/setup_graylog.sh +0 -0
  493. {mx_bluesky-1.4.6 → mx_bluesky-1.4.7}/utility_scripts/strip_metafile.py +0 -0
@@ -0,0 +1 @@
1
+ * @DiamondLightSource/developers-mx-daq
@@ -17,6 +17,23 @@ Contributions and issues are most welcome! All issues and pull requests are hand
17
17
 
18
18
  **Work should not be done without an associated ticket describing what the work is**
19
19
 
20
+ ## Developing mx-bluesky and dodal
21
+
22
+ Some issues will span the mx-bluesky repo and the dodal repo. When working on both at the same time, follow these instructions:
23
+ 1. An issue is created for the work, inside mx-bluesky. This issue should describe in as much detail as possible the work that needs to be done. Anyone is free to make a ticket and/or comment on one.
24
+ 2. If a developer is going to do the work they assign themselves to the issue.
25
+ 3. The developer makes a new branch in mx-bluesky with the format `issue_short_description` e.g. `122_create_a_contributing_file`. The developer also creates a new branch in dodal, with the format `mx_bluesky_issue_short_description` - the same as the mx-bluesky branch name but with `mx_bluesky_` in front. (External developers are also welcome to make forks)
26
+ 4. The developer does the work on these branches, adding their work in small commits. Commit messages should be informative and prefixed with the issue number e.g. `(#122) Added contributing file`.
27
+ 5. Once the developer has done the final commit in both repos, they find the latest commit SHA in the dodal repo using `git log`. In `mx-bluesky/pyproject.toml`, the developer changes `dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@{dodal_commmit_SHA}` using the SHA they just found.
28
+ 6. The developer commits and pushes this final change on mx-bluesky.
29
+ 7. The developer submits a dodal PR for the work they have done in the dodal repo. The pull request should start with `Fixes #issue_num` e.g. `Fixes #122`, and should link to the issue created in mx-bluesky. The developer should also add some background on how the reviewer might test the change.
30
+ 8. The developer submits a mx-bluesky PR for the work they have done in the mx-bluesky repo. The pull request should start with `Fixes #issue_num` e.g. `Fixes #122`. This PR should link to the dodal PR just created with something like "Also needs #456". Again, the developer should add some background on how the reviewer might test the change.
31
+ 9. If the developer has a particular person in mind to review the work they should assign that person to the PRs as a reviewer.
32
+ 10. The reviewer and developer go back and forth on the code until the reviewer approves it. (See "Reviewing Work" below)
33
+ 11. Once the work is approved on both PRs, the original developer merges them. The PRs should be merged at the same time.
34
+
35
+ **Work should not be done without an associated ticket describing what the work is**
36
+
20
37
  ## Reviewing Work
21
38
 
22
39
  **Work must be reviewed by another developer before it can be merged**. Remember that work is reviewed for a number of reasons:
@@ -12,6 +12,7 @@ env/
12
12
  # Output
13
13
  *.png
14
14
  !docs/*.png
15
+ !tests/test_data/**/*.png
15
16
 
16
17
  # Distribution / packaging
17
18
  .Python
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: mx-bluesky
3
- Version: 1.4.6
3
+ Version: 1.4.7
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
@@ -215,7 +215,6 @@ Description-Content-Type: text/x-rst
215
215
  License-File: LICENSE
216
216
  Requires-Dist: annotated_types
217
217
  Requires-Dist: caproto
218
- Requires-Dist: confluent-kafka==2.8.0
219
218
  Requires-Dist: fastapi[all]
220
219
  Requires-Dist: flask-restful
221
220
  Requires-Dist: ispyb
@@ -239,8 +238,8 @@ Requires-Dist: blueapi>=0.5.0
239
238
  Requires-Dist: daq-config-server>=0.1.1
240
239
  Requires-Dist: ophyd==1.9.0
241
240
  Requires-Dist: ophyd-async>=0.9.0a2
242
- Requires-Dist: bluesky>=1.13
243
- Requires-Dist: dls-dodal==1.41.0
241
+ Requires-Dist: bluesky>=1.13.1
242
+ Requires-Dist: dls-dodal==1.44.0
244
243
  Provides-Extra: dev
245
244
  Requires-Dist: black; extra == "dev"
246
245
  Requires-Dist: build; extra == "dev"
@@ -254,7 +253,7 @@ Requires-Dist: pipdeptree; extra == "dev"
254
253
  Requires-Dist: plantweb; extra == "dev"
255
254
  Requires-Dist: pre-commit; extra == "dev"
256
255
  Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
257
- Requires-Dist: pyright==1.1.394; extra == "dev"
256
+ Requires-Dist: pyright; extra == "dev"
258
257
  Requires-Dist: pytest-asyncio; extra == "dev"
259
258
  Requires-Dist: pytest-cov; extra == "dev"
260
259
  Requires-Dist: pytest-random-order; extra == "dev"
@@ -267,6 +266,7 @@ Requires-Dist: tox-direct; extra == "dev"
267
266
  Requires-Dist: tox; extra == "dev"
268
267
  Requires-Dist: types-mock; extra == "dev"
269
268
  Requires-Dist: types-requests; extra == "dev"
269
+ Dynamic: license-file
270
270
 
271
271
  mx-bluesky
272
272
  ===========================
@@ -285,7 +285,7 @@ Releases https://github.com/DiamondLightSource/mx-bluesky/releases
285
285
  Getting Started
286
286
  ===============
287
287
 
288
- To get started with developing this repo at DLS run ``dls_dev_setup.sh``.
288
+ To get started with developing this repo at DLS run ``./utility_scripts/dls_dev_env.sh``.
289
289
 
290
290
  If you want to develop interactively at the beamline we recommend using jupyter notebooks. You can get started with this by running::
291
291
 
@@ -15,7 +15,7 @@ Releases https://github.com/DiamondLightSource/mx-bluesky/releases
15
15
  Getting Started
16
16
  ===============
17
17
 
18
- To get started with developing this repo at DLS run ``dls_dev_setup.sh``.
18
+ To get started with developing this repo at DLS run ``./utility_scripts/dls_dev_env.sh``.
19
19
 
20
20
  If you want to develop interactively at the beamline we recommend using jupyter notebooks. You can get started with this by running::
21
21
 
@@ -0,0 +1,27 @@
1
+ Callbacks and Run Logic
2
+ ========================
3
+
4
+ Callbacks are used to trigger external services:
5
+
6
+ - Ispyb deposition
7
+ - Nexus writing
8
+ - Zocalo triggering
9
+
10
+ These are linked in that to trigger zocalo you need to have made an ispyb deposition, written a nexus file and have finished writing raw data to disk. Nexus files and ispyb depositions can be made at anytime, we do not need to have necessarily finished writing raw data.
11
+
12
+ Currently, the requirement of needing to have written to ispyb is explicit as the ispyb callback will emit to the zocalo callback. The nexus file is written when the hardware is read during a collection and so its ordering is implied. When instantiated the zocalo callback is told on which plan to trigger and it is up to the plan developer to make sure this plan finishes after data is written to the detector.
13
+
14
+ In general, the ordering flow of when callbacks are triggered is controlled by emitting documents with the expected plan name and data.
15
+
16
+ Rotation Scans
17
+ ---------------------
18
+
19
+ There are currently two ways of doing rotation scans. A single scan creates one hdf file, one ispyb deposition and then triggers zocalo once. Multi rotation scans create one hdf file for all rotations but then N nexus files, N ispyb depositions and triggers zocalo N times.
20
+
21
+ Single scans will be removed in https://github.com/DiamondLightSource/mx-bluesky/issues/847
22
+
23
+ For multi rotations this is does by starting 1+2*N different runs:
24
+
25
+ 1. ``CONST.PLAN.ROTATION_MULTI``: This is emitted once for the whole multiple rotation. It is used by the nexus callback to get the full number of images and meta_data_run_number so that it knows which hdf file to use. When this is finished zocalo end is triggered.
26
+ 2. ``CONST.PLAN.ROTATION_OUTER``: Emitted N times, inside a ``CONST.PLAN.ROTATION_MULTI`` run. This is used to create the initial ispyb deposition and create the nexus writer (but not actually write the file)
27
+ 3. ``CONST.PLAN.ROTATION_MAIN``: Emitted N times, inside ``CONST.PLAN.ROTATION_OUTER`` run. Used to finish writing to ispyb (i.e. write success/failure) and to send collection information to zocalo.
@@ -4,8 +4,8 @@ Get Started with mx-bluesky
4
4
  Development Environment
5
5
  =======================
6
6
 
7
- - Clone this repo: ``git@github.com:DiamondLightSource/mx-bluesky.git``
8
- - To install a ``dev`` environment run ``./dls_dev_setup.sh``. Note that this will also clone and install a local version of ``dodal``, as the ``mx-bluesky`` package makes use of the devices instantiated there.
7
+ - Clone this repo using SSH: ``git clone git@github.com:DiamondLightSource/mx-bluesky.git``
8
+ - To install a ``dev`` environment, from the top level ``mx-bluesky`` directory, run ``./utility_scripts/dls_dev_env.sh``. Note that this will also clone and install a local version of ``dodal``, as the ``mx-bluesky`` package makes use of the devices instantiated there.
9
9
 
10
10
  The recommended IDE is vscode, and a workspace which includes dodal has been set up in the repo. This can be used on a DLS machine as follows:
11
11
 
@@ -41,6 +41,7 @@ Documentation is split into four categories, and each is also accessible from li
41
41
  :maxdepth: 1
42
42
 
43
43
  explanations/decisions
44
+ explanations/callback_and_run_logic
44
45
 
45
46
  +++
46
47
 
@@ -0,0 +1,44 @@
1
+ Update the PandA IOC
2
+ =====================
3
+
4
+ The IOC for the PandA can sometimes get out of sync with the production version of Ophyd-Async. Here is how to update it
5
+
6
+ Check if the IOC needs updating
7
+ """"""""""""""""""""""""""""""""
8
+
9
+ - Check the minimum panda IOC version required in the version of ophyd-async used in Hyperion's release version. This can be found in the ``MINIMUM_PANDA_IOC`` constant in `_hdf_panda.py <https://github.com/bluesky/ophyd-async/blob/main/src/ophyd_async/fastcs/panda/_hdf_panda.py>`_
10
+
11
+ - In a terminal:
12
+
13
+ .. code-block:: bash
14
+
15
+ cd /dls_sw/work/R3.14.12.7/ioc/BL03I/BL03I-PY-IOC-02
16
+ source venv/bin/activate
17
+ pip freeze | grep pandablocks-ioc
18
+
19
+ Note that the IOC location will soon be moving to ``prod`` instead of ``work``.
20
+
21
+ - Compare the version from step one
22
+
23
+ Updating the IOC
24
+ """"""""""""""""""""""""""
25
+
26
+ - Update the Python IOC repo in the venv:
27
+
28
+ .. code-block:: bash
29
+
30
+ cd /dls_sw/work/R3.14.12.7/ioc/BL03I/BL03I-PY-IOC-02
31
+ source venv/bin/activate
32
+ pip install --upgrade pandablocks-ioc=={desired version}
33
+
34
+
35
+ - After making sure the beamline isn't in use, restart the IOC:
36
+
37
+ .. code-block:: bash
38
+
39
+ module load controls-tools
40
+
41
+ console BL03I-PY-IOC-02
42
+
43
+ - Press ``ctrl+x``
44
+ - Disconnect by pressing ``ctrl+e``, then press ``c``, then press ``.``
@@ -20,3 +20,15 @@ Documentation specific for the Hyperion module within MX-Bluesky
20
20
  +++
21
21
 
22
22
  Technical reference material on standards in use.
23
+
24
+ .. grid-item-card:: :material-regular:`task;3em`
25
+
26
+ .. toctree::
27
+ :caption: How-to Guides
28
+ :maxdepth: 1
29
+
30
+ how-to/update-panda-ioc
31
+
32
+ +++
33
+
34
+ Practical step-by-step guides for day-to-day dev tasks.
@@ -1,7 +1,7 @@
1
1
  Fixes #ISSUE
2
2
 
3
3
  Link to dodal PR (if required): #XXX
4
- (remember to update `setup.cfg` with the dodal commit tag if you need it for tests to pass!)
4
+ (remember to update `pyproject.toml` with the dodal commit tag if you need it for tests to pass!)
5
5
 
6
6
  ### Instructions to reviewer on how to test:
7
7
 
@@ -18,7 +18,6 @@ dependencies = [
18
18
  #
19
19
  "annotated_types",
20
20
  "caproto",
21
- "confluent-kafka==2.8.0",
22
21
  "fastapi[all]",
23
22
  "flask-restful",
24
23
  "ispyb",
@@ -46,8 +45,8 @@ dependencies = [
46
45
  "daq-config-server >= 0.1.1",
47
46
  "ophyd == 1.9.0",
48
47
  "ophyd-async >= 0.9.0a2",
49
- "bluesky >= 1.13",
50
- "dls-dodal == 1.41.0",
48
+ "bluesky >= 1.13.1",
49
+ "dls-dodal == 1.44.0",
51
50
  ]
52
51
 
53
52
 
@@ -72,7 +71,7 @@ dev = [
72
71
  "plantweb",
73
72
  "pre-commit",
74
73
  "pydata-sphinx-theme>=0.12",
75
- "pyright==1.1.394", # See https://github.com/DiamondLightSource/mx-bluesky/issues/875
74
+ "pyright",
76
75
  "pytest-asyncio",
77
76
  "pytest-cov",
78
77
  "pytest-random-order",
@@ -131,6 +130,8 @@ filterwarnings = [
131
130
  "error",
132
131
  # Ignore deprecation warning from sqlalchemy
133
132
  "ignore::sqlalchemy.exc.MovedIn20Warning",
133
+ # Remove when there's a fix for https://github.com/DiamondLightSource/ispyb-api/issues/233
134
+ "ignore::sqlalchemy.exc.SADeprecationWarning",
134
135
  # Ignore deprecation warning from setuptools_dso (remove when https://github.com/epics-base/setuptools_dso/issues/36 is released)
135
136
  "ignore::DeprecationWarning:wheel",
136
137
  # Ophyd status objects in tests
@@ -153,6 +154,8 @@ filterwarnings = [
153
154
  # Ignore warning about deprecations in python-workflows encountered during system tests
154
155
  # https://github.com/DiamondLightSource/python-workflows/issues/188
155
156
  "ignore:.*`Field` should not be instantiated.*:marshmallow.warnings.ChangedInMarshmallow4Warning",
157
+ # https://github.com/bluesky/ophyd-async/issues/838 and https://github.com/seperman/deepdiff/issues/536
158
+ "ignore:Accessing this attribute on the instance is deprecated",
156
159
  ]
157
160
  # Doctest python code in docs, python code in src docstrings, test functions in tests
158
161
  testpaths = "docs src tests/unit_tests"
@@ -198,15 +201,17 @@ commands_pre =
198
201
  src = ["src", "tests"]
199
202
  line-length = 88
200
203
  lint.select = [
201
- "B", # flake8-bugbear - https://docs.astral.sh/ruff/rules/#flake8-bugbear-b
202
- "C4", # flake8-comprehensions - https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4
203
- "E", # pycodestyle errors - https://docs.astral.sh/ruff/rules/#error-e
204
- "F", # pyflakes rules - https://docs.astral.sh/ruff/rules/#pyflakes-f
205
- "W", # pycodestyle warnings - https://docs.astral.sh/ruff/rules/#warning-w
206
- "I", # isort - https://docs.astral.sh/ruff/rules/#isort-i
207
- "UP", # pyupgrade - https://docs.astral.sh/ruff/rules/#pyupgrade-up
208
- "SLF", # self - https://docs.astral.sh/ruff/settings/#lintflake8-self
209
- "PT012", # flake8-pytest-style rules - https://docs.astral.sh/ruff/rules/pytest-raises-with-multiple-statements/#pytest-raises-with-multiple-statements-pt012
204
+ "B", # flake8-bugbear - https://docs.astral.sh/ruff/rules/#flake8-bugbear-b
205
+ "C4", # flake8-comprehensions - https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4
206
+ "E", # pycodestyle errors - https://docs.astral.sh/ruff/rules/#error-e
207
+ "F", # pyflakes rules - https://docs.astral.sh/ruff/rules/#pyflakes-f
208
+ "W", # pycodestyle warnings - https://docs.astral.sh/ruff/rules/#warning-w
209
+ "I", # isort - https://docs.astral.sh/ruff/rules/#isort-i
210
+ "UP", # pyupgrade - https://docs.astral.sh/ruff/rules/#pyupgrade-up
211
+ "SLF", # self - https://docs.astral.sh/ruff/settings/#lintflake8-self
212
+ "PT012", # flake8-pytest-style rules - https://docs.astral.sh/ruff/rules/pytest-raises-with-multiple-statements/#pytest-raises-with-multiple-statements-pt012
213
+ "RUF018", # walrus operators in asserts - https://docs.astral.sh/ruff/rules/assignment-in-assert/
214
+ "TID251", # banned api - https://docs.astral.sh/ruff/rules/banned-api/
210
215
  ]
211
216
  lint.extend-ignore = [
212
217
  "E501", # Line too long
@@ -215,8 +220,11 @@ lint.extend-ignore = [
215
220
  [tool.ruff.lint.per-file-ignores]
216
221
  # By default, private member access is allowed in tests
217
222
  # See https://github.com/DiamondLightSource/python-copier-template/issues/154
218
- # Remove this line to forbid private member access in tests
219
- "tests/**/*" = ["SLF001", "B023"]
223
+ # Remove this line to forbid private member access, walrys operators in asserts, banned api in tests
224
+ "tests/**/*" = ["SLF001", "B023", "RUF018", "TID251"]
225
+
226
+ [tool.ruff.lint.flake8-tidy-imports.banned-api]
227
+ "time.sleep".msg = "Use bps.sleep instead. # noqa will disable this rule for that line. See https://github.com/DiamondLightSource/mx-bluesky/issues/925"
220
228
 
221
229
  [tool.mypy]
222
230
  plugins = ["pydantic.mypy"]
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.4.6'
21
- __version_tuple__ = version_tuple = (1, 4, 6)
20
+ __version__ = version = '1.4.7'
21
+ __version_tuple__ = version_tuple = (1, 4, 7)
@@ -0,0 +1,13 @@
1
+ from mx_bluesky.beamlines.aithre_lasershaping.check_goniometer_performance import (
2
+ check_omega_performance,
3
+ )
4
+ from mx_bluesky.beamlines.aithre_lasershaping.goniometer_controls import (
5
+ change_goniometer_turn_speed,
6
+ rotate_goniometer_relative,
7
+ )
8
+
9
+ __all__ = [
10
+ "check_omega_performance",
11
+ "change_goniometer_turn_speed",
12
+ "rotate_goniometer_relative",
13
+ ]
@@ -0,0 +1,29 @@
1
+ import bluesky.plan_stubs as bps
2
+ from bluesky.utils import MsgGenerator
3
+ from dodal.devices.aithre_lasershaping.goniometer import Goniometer
4
+
5
+ DEFAULT_VELOCITIES = [5.0, 10.0, 20.0, 40.0, 80.0, 90.0]
6
+ DEFAULT_POSITIONS = [
7
+ 300.0,
8
+ -300.0,
9
+ 600.0,
10
+ -600.0,
11
+ 1200.0,
12
+ -1200.0,
13
+ 2400.0,
14
+ -2400.0,
15
+ 3600.0,
16
+ -3600.0,
17
+ ]
18
+
19
+
20
+ def check_omega_performance(
21
+ goniometer: Goniometer,
22
+ velocities: list[float] = DEFAULT_VELOCITIES,
23
+ values: list[float] = DEFAULT_POSITIONS,
24
+ ) -> MsgGenerator:
25
+ """Move the goniometer from positive to negative to check omega performance"""
26
+ for omega_velocity in velocities:
27
+ yield from bps.abs_set(goniometer.omega.velocity, omega_velocity, wait=True)
28
+ for omega_value in values:
29
+ yield from bps.abs_set(goniometer.omega, omega_value, wait=True)
@@ -0,0 +1,18 @@
1
+ import bluesky.plan_stubs as bps
2
+ from bluesky.utils import MsgGenerator
3
+ from dodal.common import inject
4
+ from dodal.devices.aithre_lasershaping.goniometer import Goniometer
5
+
6
+
7
+ def rotate_goniometer_relative(
8
+ value: float, goniometer: Goniometer = inject("goniometer")
9
+ ) -> MsgGenerator:
10
+ """Adjust the goniometer position incrementally"""
11
+ yield from bps.rel_set(goniometer.omega, value, wait=True)
12
+
13
+
14
+ def change_goniometer_turn_speed(
15
+ velocity: float, goniometer: Goniometer = inject("goniometer")
16
+ ) -> MsgGenerator:
17
+ """Set the velocity of the goniometer"""
18
+ yield from bps.mv(goniometer.omega.velocity, velocity)
@@ -1,6 +1,7 @@
1
1
  import io
2
2
  import json
3
3
  import pickle
4
+ from datetime import timedelta
4
5
  from typing import TypedDict
5
6
 
6
7
  import numpy as np
@@ -14,13 +15,20 @@ from mx_bluesky.common.utils.log import LOGGER
14
15
 
15
16
  MURKO_ADDRESS = "tcp://i04-murko-prod.diamond.ac.uk:8008"
16
17
 
18
+ MurkoResult = dict
19
+ FullMurkoResults = dict[str, list[MurkoResult]]
20
+
17
21
 
18
22
  class MurkoRequest(TypedDict):
23
+ """See https://github.com/MartinSavko/murko#usage for more information."""
24
+
19
25
  to_predict: NDArray
20
26
  model_img_size: tuple[int, int]
21
27
  save: bool
22
28
  min_size: int
23
29
  description: list
30
+
31
+ # The identifier for each image
24
32
  prefix: list[str]
25
33
 
26
34
 
@@ -29,32 +37,26 @@ def get_image_size(image: NDArray) -> tuple[int, int]:
29
37
  return image.shape[1], image.shape[0]
30
38
 
31
39
 
32
- def send_to_murko_and_get_results(request: MurkoRequest) -> dict:
40
+ def send_to_murko_and_get_results(request: MurkoRequest) -> FullMurkoResults:
33
41
  LOGGER.info(f"Sending {request['prefix']} to murko")
34
42
  context = zmq.Context()
35
43
  socket = context.socket(zmq.REQ)
36
44
  socket.connect(MURKO_ADDRESS)
37
45
  socket.send(pickle.dumps(request))
38
46
  raw_results = socket.recv()
47
+ assert isinstance(raw_results, bytes)
39
48
  results = pickle.loads(raw_results)
40
49
  LOGGER.info(f"Got {len(results['descriptions'])} results")
41
50
  return results
42
51
 
43
52
 
44
- def correlate_results_to_uuids(request: MurkoRequest, murko_results: dict) -> list:
45
- results = []
46
- uuids = request["prefix"]
47
-
48
- width, height = get_image_size(request["to_predict"][0])
49
-
50
- for uuid, prediction in zip(uuids, murko_results["descriptions"], strict=False):
51
- coords = prediction["most_likely_click"]
52
- y_coord = coords[0] * height
53
- x_coord = coords[1] * width
54
- results.append(
55
- {"uuid": uuid, "x_pixel_coord": x_coord, "y_pixel_coord": y_coord}
56
- )
57
- return results
53
+ def _correlate_results_to_uuids(
54
+ request: MurkoRequest, murko_results: FullMurkoResults
55
+ ) -> list[tuple[str, MurkoResult]]:
56
+ """We send a batch of images to murko, with each having a 'prefix' of the uuid that
57
+ we're using to keep track of the image. Murko sends back an ordered list of these,
58
+ which we match to the supplied prefix here."""
59
+ return list(zip(request["prefix"], murko_results["descriptions"], strict=False))
58
60
 
59
61
 
60
62
  class BatchMurkoForwarder:
@@ -94,16 +96,20 @@ class BatchMurkoForwarder:
94
96
  ],
95
97
  "prefix": uuids,
96
98
  }
97
- predictions = send_to_murko_and_get_results(request_arguments)
98
- results = correlate_results_to_uuids(request_arguments, predictions)
99
- self._send_murko_results_to_redis(sample_id, results)
100
-
101
- def _send_murko_results_to_redis(self, sample_id: str, results: list):
102
- for result in results:
103
- self.redis_client.hset(
104
- f"murko:{sample_id}:results", result["uuid"], json.dumps(result)
105
- )
106
- self.redis_client.publish("murko-results", json.dumps(results))
99
+ results = send_to_murko_and_get_results(request_arguments)
100
+ results_with_uuids = _correlate_results_to_uuids(request_arguments, results)
101
+ self._send_murko_results_to_redis(sample_id, results_with_uuids)
102
+
103
+ def _send_murko_results_to_redis(
104
+ self, sample_id: str, results: list[tuple[str, MurkoResult]]
105
+ ):
106
+ """Stores the results into a redis hash (for longer term storage) and publishes
107
+ them as well so that downstream clients can get notified."""
108
+ for uuid, result in results:
109
+ redis_key = f"murko:{sample_id}:results"
110
+ self.redis_client.hset(redis_key, uuid, str(pickle.dumps(result)))
111
+ self.redis_client.expire(redis_key, timedelta(days=7))
112
+ self.redis_client.publish("murko-results", pickle.dumps(results))
107
113
 
108
114
  def add(self, sample_id: str, uuid: str, image: NDArray):
109
115
  """Add an image to the batch to send to murko."""
@@ -64,7 +64,7 @@ def thaw_and_stream_to_redis(
64
64
  yield from bps.kickoff(oav_to_redis_forwarder, wait=True)
65
65
  yield from bps.monitor(smargon.omega.user_readback, name="smargon")
66
66
  yield from bps.monitor(oav_to_redis_forwarder.uuid, name="oav")
67
- yield from thaw(
67
+ yield from _thaw(
68
68
  time_to_thaw, rotation, thawer, smargon, switch_forwarder_to_ROI
69
69
  )
70
70
  yield from bps.complete(oav_to_redis_forwarder)
@@ -83,6 +83,15 @@ def thaw(
83
83
  rotation: float = 360,
84
84
  thawer: Thawer = inject("thawer"),
85
85
  smargon: Smargon = inject("smargon"),
86
+ ) -> MsgGenerator:
87
+ yield from _thaw(time_to_thaw, rotation, thawer, smargon)
88
+
89
+
90
+ def _thaw(
91
+ time_to_thaw: float,
92
+ rotation: float = 360,
93
+ thawer: Thawer = inject("thawer"),
94
+ smargon: Smargon = inject("smargon"),
86
95
  plan_between_rotations: Callable[[], MsgGenerator] | None = None,
87
96
  ) -> MsgGenerator:
88
97
  """Rotates the sample and thaws it at the same time.
@@ -34,8 +34,8 @@ h 308
34
34
  lineColor index 26
35
35
  fill
36
36
  fillColor index 25
37
- alarmPv "BL24I-EA-IOC-12:GP6"
38
- visPv "BL24I-EA-IOC-12:GP6"
37
+ alarmPv "BL24I-MO-IOC-13:GP6"
38
+ visPv "BL24I-MO-IOC-13:GP6"
39
39
  visMin "1"
40
40
  visMax "10"
41
41
  endObjectProperties
@@ -65,7 +65,7 @@ x 145
65
65
  y 328
66
66
  w 97
67
67
  h 30
68
- controlPv "BL24I-EA-IOC-12:GP9"
68
+ controlPv "BL24I-MO-IOC-13:GP9"
69
69
  fgColor index 25
70
70
  fgAlarm
71
71
  bgColor index 3
@@ -83,7 +83,7 @@ x 145
83
83
  y 366
84
84
  w 97
85
85
  h 30
86
- controlPv "BL24I-EA-IOC-12:GP10"
86
+ controlPv "BL24I-MO-IOC-13:GP10"
87
87
  fgColor index 25
88
88
  fgAlarm
89
89
  bgColor index 3
@@ -192,7 +192,7 @@ x 394
192
192
  y 124
193
193
  w 273
194
194
  h 30
195
- controlPv "BL24I-EA-IOC-12:GP2"
195
+ controlPv "BL24I-MO-IOC-13:GP2"
196
196
  fgColor index 25
197
197
  fgAlarm
198
198
  bgColor index 3
@@ -210,7 +210,7 @@ x 394
210
210
  y 163
211
211
  w 273
212
212
  h 30
213
- controlPv "BL24I-EA-IOC-12:GP3"
213
+ controlPv "BL24I-MO-IOC-13:GP3"
214
214
  fgColor index 25
215
215
  fgAlarm
216
216
  bgColor index 3
@@ -268,7 +268,7 @@ x 449
268
268
  y 200
269
269
  w 125
270
270
  h 30
271
- controlPv "BL24I-EA-IOC-12:GP4"
271
+ controlPv "BL24I-MO-IOC-13:GP4"
272
272
  fgColor index 25
273
273
  fgAlarm
274
274
  bgColor index 3
@@ -286,7 +286,7 @@ x 448
286
286
  y 237
287
287
  w 125
288
288
  h 30
289
- controlPv "BL24I-EA-IOC-12:GP5"
289
+ controlPv "BL24I-MO-IOC-13:GP5"
290
290
  fgColor index 25
291
291
  fgAlarm
292
292
  bgColor index 3
@@ -636,7 +636,7 @@ x 448
636
636
  y 315
637
637
  w 125
638
638
  h 30
639
- controlPv "BL24I-EA-IOC-12:GP7"
639
+ controlPv "BL24I-MO-IOC-13:GP7"
640
640
  fgColor index 25
641
641
  fgAlarm
642
642
  bgColor index 3
@@ -1374,7 +1374,7 @@ x 393
1374
1374
  y 99
1375
1375
  w 253
1376
1376
  h 18
1377
- controlPv "BL24I-EA-IOC-12:GP1"
1377
+ controlPv "BL24I-MO-IOC-13:GP1"
1378
1378
  format "decimal"
1379
1379
  font "arial-medium-r-16.0"
1380
1380
  fgColor index 25
@@ -1896,7 +1896,7 @@ x 430
1896
1896
  y 662
1897
1897
  w 86
1898
1898
  h 18
1899
- controlPv "BL24I-EA-IOC-12:GP15"
1899
+ controlPv "BL24I-MO-IOC-13:GP15"
1900
1900
  format "decimal"
1901
1901
  font "arial-medium-r-16.0"
1902
1902
  fgColor index 16
@@ -1963,7 +1963,7 @@ fgColor index 14
1963
1963
  bgColor index 3
1964
1964
  topShadowColor index 1
1965
1965
  botShadowColor index 8
1966
- controlPv "BL24I-EA-IOC-12:GP6"
1966
+ controlPv "BL24I-MO-IOC-13:GP6"
1967
1967
  font "arial-medium-r-18.0"
1968
1968
  numItems 2
1969
1969
  symbolTag {