mx-bluesky 0.3.1__tar.gz → 1.2.0__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 (431) hide show
  1. mx_bluesky-1.2.0/.coveragerc +18 -0
  2. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.devcontainer/Dockerfile +2 -2
  3. mx_bluesky-1.2.0/.dockerignore +12 -0
  4. mx_bluesky-1.2.0/.github/CONTRIBUTING.md +57 -0
  5. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +5 -0
  6. mx_bluesky-1.2.0/.github/actions/verify-nexus/Dockerfile +3 -0
  7. mx_bluesky-1.2.0/.github/actions/verify-nexus/action.yml +18 -0
  8. mx_bluesky-1.2.0/.github/actions/verify-nexus/entrypoint.sh +25 -0
  9. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/workflows/_test.yml +1 -1
  10. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/workflows/ci.yml +1 -5
  11. mx_bluesky-1.2.0/.github/workflows/publish_docker_image.yml +50 -0
  12. mx_bluesky-1.2.0/.gitignore +173 -0
  13. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.pre-commit-config.yaml +4 -1
  14. mx_bluesky-1.2.0/.vscode/extensions.json +10 -0
  15. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/Dockerfile +3 -3
  16. mx_bluesky-1.2.0/Dockerfile.release +38 -0
  17. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/PKG-INFO +27 -11
  18. mx_bluesky-1.2.0/codecov.yml +34 -0
  19. mx_bluesky-1.2.0/conftest.py +33 -0
  20. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/conf.py +19 -1
  21. mx_bluesky-1.2.0/docs/developer/general/explanations/decisions/0002-repository-structure.rst +46 -0
  22. mx_bluesky-1.2.0/docs/developer/general/explanations/decisions/0003-python-version-support.rst +29 -0
  23. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/how-to/contribute.rst +1 -0
  24. mx_bluesky-1.2.0/docs/developer/general/how-to/deploy-a-release.rst +84 -0
  25. mx_bluesky-1.2.0/docs/developer/hyperion/deploying-hyperion.rst +109 -0
  26. mx_bluesky-1.2.0/docs/developer/hyperion/index.rst +21 -0
  27. mx_bluesky-1.2.0/docs/developer/hyperion/reference/param-hierarchy.rst +4 -0
  28. mx_bluesky-1.2.0/docs/developer/hyperion/reference/param_hierarchy.puml +86 -0
  29. mx_bluesky-1.2.0/docs/developer/hyperion/reference/readme.md +96 -0
  30. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/index.rst +13 -1
  31. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +3 -3
  32. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +13 -13
  33. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/serial-crystallography-on-i24/how-to/stage-pmac-moves.rst +1 -1
  34. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +113 -47
  35. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/user/how-to/run-container.rst +1 -1
  36. mx_bluesky-1.2.0/helmchart/Chart.yaml +6 -0
  37. mx_bluesky-1.2.0/helmchart/templates/deployment.yaml +153 -0
  38. mx_bluesky-1.2.0/helmchart/templates/ingress.yaml +23 -0
  39. mx_bluesky-1.2.0/helmchart/templates/service.yaml +17 -0
  40. mx_bluesky-1.2.0/helmchart/values.yaml +20 -0
  41. mx_bluesky-1.2.0/hyperion_other/workflows/add_assignee_when_pr_opened.yml +26 -0
  42. mx_bluesky-1.2.0/hyperion_other/workflows/assigned_issues_to_in_progress.yml +13 -0
  43. mx_bluesky-1.2.0/hyperion_other/workflows/code.yml +80 -0
  44. mx_bluesky-1.2.0/hyperion_other/workflows/container_tests.sh +1 -0
  45. mx_bluesky-1.2.0/hyperion_other/workflows/get_issue_from_pr.yml +51 -0
  46. mx_bluesky-1.2.0/hyperion_other/workflows/get_project_data_and_move_column.yml +98 -0
  47. mx_bluesky-1.2.0/hyperion_other/workflows/linkcheck.yml +34 -0
  48. mx_bluesky-1.2.0/hyperion_other/workflows/open_prs_to_review.yml +19 -0
  49. mx_bluesky-1.2.0/hyperion_other/workflows/opened_issues_to_backlog.yml +13 -0
  50. mx_bluesky-1.2.0/hyperion_other/workflows/pin_versions.py +136 -0
  51. mx_bluesky-1.2.0/hyperion_other/workflows/pre_release_workflow.yml +48 -0
  52. mx_bluesky-1.2.0/hyperion_other/workflows/rework_prs_to_in_progress.yml +19 -0
  53. mx_bluesky-1.2.0/hyperion_other/workflows/test_data/pip_freeze.txt +248 -0
  54. mx_bluesky-1.2.0/hyperion_other/workflows/test_data/setup.cfg +75 -0
  55. mx_bluesky-1.2.0/hyperion_other/workflows/test_data/setup.cfg.pinned +74 -0
  56. mx_bluesky-1.2.0/hyperion_other/workflows/test_data/setup.cfg.unpinned +74 -0
  57. mx_bluesky-1.2.0/hyperion_other/workflows/test_pin_versions.py +79 -0
  58. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/pyproject.toml +71 -16
  59. mx_bluesky-1.2.0/run_hyperion.sh +174 -0
  60. mx_bluesky-1.2.0/run_hyperion_in_podman.sh +149 -0
  61. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/src/mx_bluesky/_version.py +2 -2
  62. mx_bluesky-1.2.0/src/mx_bluesky/beamlines/i04/__init__.py +3 -0
  63. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i04/thawing_plan.py +5 -4
  64. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/blueapi_config.yaml +1 -1
  65. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/dcid.py +2 -2
  66. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/extruder/EX-gui-edm/DetStage.edl +3 -3
  67. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +7 -7
  68. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +12 -9
  69. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +3 -3
  70. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +3 -3
  71. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +245 -200
  72. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +4 -4
  73. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +8 -8
  74. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +80 -70
  75. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +20 -21
  76. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py +5 -5
  77. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +7 -4
  78. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/i24ssx_moveonclick.py +59 -39
  79. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/log.py +1 -9
  80. mx_bluesky-1.2.0/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +15 -0
  81. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/parameters/constants.py +1 -1
  82. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/parameters/experiment_parameters.py +4 -25
  83. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/parameters/utils.py +5 -3
  84. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/run_serial.py +1 -1
  85. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/setup_beamline/pv_abstract.py +1 -1
  86. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/setup_beamline/setup_beamline.py +2 -2
  87. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/setup_beamline/setup_detector.py +5 -5
  88. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/write_nexus.py +6 -3
  89. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/__init__.py +1 -0
  90. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/__main__.py +374 -0
  91. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +134 -0
  92. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py +110 -0
  93. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans/position_detector.py +16 -0
  94. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py +60 -0
  95. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans/setup_oav.py +87 -0
  96. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +210 -0
  97. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +214 -0
  98. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +25 -0
  99. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans/utils.py +55 -0
  100. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +93 -0
  101. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/exceptions.py +47 -0
  102. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/__init__.py +30 -0
  103. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +93 -0
  104. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +537 -0
  105. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +209 -0
  106. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +46 -0
  107. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py +173 -0
  108. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +81 -0
  109. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +463 -0
  110. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +119 -0
  111. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +164 -0
  112. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +237 -0
  113. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +162 -0
  114. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +436 -0
  115. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +60 -0
  116. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/__init__.py +9 -0
  117. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +10 -0
  118. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +148 -0
  119. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/aperture_change_callback.py +22 -0
  120. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py +64 -0
  121. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/common/ispyb_mapping.py +62 -0
  122. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/grid_detection_callback.py +88 -0
  123. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/ispyb_callback_base.py +203 -0
  124. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/log_uid_tag_callback.py +20 -0
  125. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/logging_callback.py +29 -0
  126. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/plan_reactive_callback.py +101 -0
  127. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +86 -0
  128. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +174 -0
  129. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +17 -0
  130. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +102 -0
  131. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_callback.py +269 -0
  132. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_mapping.py +53 -0
  133. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py +95 -0
  134. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/zocalo_callback.py +92 -0
  135. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/config_server.py +35 -0
  136. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/exceptions.py +13 -0
  137. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/ispyb/__init__.py +0 -0
  138. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/ispyb/data_model.py +95 -0
  139. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/ispyb/exp_eye_store.py +125 -0
  140. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/ispyb/ispyb_store.py +276 -0
  141. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/ispyb/ispyb_utils.py +27 -0
  142. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/nexus/__init__.py +0 -0
  143. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/nexus/nexus_utils.py +148 -0
  144. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/nexus/write_nexus.py +114 -0
  145. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/log.py +99 -0
  146. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/parameters/__init__.py +2 -0
  147. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/parameters/cli.py +68 -0
  148. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/hyperion}/parameters/components.py +80 -26
  149. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/parameters/constants.py +158 -0
  150. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/parameters/gridscan.py +221 -0
  151. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +50 -0
  152. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/parameters/robot_load.py +16 -0
  153. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/parameters/rotation.py +160 -0
  154. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +964 -0
  155. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/tracing.py +28 -0
  156. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/utils/context.py +84 -0
  157. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/utils/utils.py +25 -0
  158. mx_bluesky-1.2.0/src/mx_bluesky/hyperion/utils/validation.py +196 -0
  159. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/src/mx_bluesky/jupyter_example.ipynb +3 -2
  160. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/src/mx_bluesky.egg-info/PKG-INFO +27 -11
  161. mx_bluesky-1.2.0/src/mx_bluesky.egg-info/SOURCES.txt +417 -0
  162. mx_bluesky-1.2.0/src/mx_bluesky.egg-info/entry_points.txt +8 -0
  163. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/src/mx_bluesky.egg-info/requires.txt +25 -8
  164. mx_bluesky-1.2.0/tests/__init__.py +0 -0
  165. mx_bluesky-1.2.0/tests/conftest.py +954 -0
  166. mx_bluesky-1.2.0/tests/system_tests/__init__.py +0 -0
  167. mx_bluesky-1.2.0/tests/system_tests/conftest.py +226 -0
  168. mx_bluesky-1.2.0/tests/system_tests/hyperion/__init__.py +0 -0
  169. mx_bluesky-1.2.0/tests/system_tests/hyperion/experiment_plans/__init__.py +0 -0
  170. mx_bluesky-1.2.0/tests/system_tests/hyperion/experiment_plans/test_fgs_plan.py +351 -0
  171. mx_bluesky-1.2.0/tests/system_tests/hyperion/experiment_plans/test_plan_system.py +72 -0
  172. mx_bluesky-1.2.0/tests/system_tests/hyperion/external_interaction/__init__.py +0 -0
  173. mx_bluesky-1.2.0/tests/system_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
  174. mx_bluesky-1.2.0/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +268 -0
  175. mx_bluesky-1.2.0/tests/system_tests/hyperion/external_interaction/conftest.py +361 -0
  176. mx_bluesky-1.2.0/tests/system_tests/hyperion/external_interaction/test_config_service.py +55 -0
  177. mx_bluesky-1.2.0/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +52 -0
  178. mx_bluesky-1.2.0/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +520 -0
  179. mx_bluesky-1.2.0/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +254 -0
  180. mx_bluesky-1.2.0/tests/system_tests/hyperion/external_interaction/test_nexgen.py +173 -0
  181. mx_bluesky-1.2.0/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +159 -0
  182. mx_bluesky-1.2.0/tests/system_tests/hyperion/test_aperturescatterguard_system.py +42 -0
  183. mx_bluesky-1.2.0/tests/system_tests/hyperion/test_device_setups_and_cleanups.py +47 -0
  184. mx_bluesky-1.2.0/tests/test_data/nexus_files/README.md +12 -0
  185. mx_bluesky-1.2.0/tests/test_data/nexus_files/fake_data.h5 +0 -0
  186. mx_bluesky-1.2.0/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
  187. mx_bluesky-1.2.0/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +68 -0
  188. mx_bluesky-1.2.0/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
  189. mx_bluesky-1.2.0/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
  190. mx_bluesky-1.2.0/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +68 -0
  191. mx_bluesky-1.2.0/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
  192. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +53 -0
  193. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +19 -0
  194. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +45 -0
  195. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +50 -0
  196. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/good_test_parameters.json +29 -0
  197. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +20 -0
  198. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +21 -0
  199. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/good_test_robot_load_params.json +13 -0
  200. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +34 -0
  201. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters_nomove.json +23 -0
  202. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +20 -0
  203. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +30 -0
  204. mx_bluesky-1.2.0/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +5 -0
  205. mx_bluesky-1.2.0/tests/test_data/scratch/README +1 -0
  206. mx_bluesky-1.2.0/tests/test_data/test_OAVCentring.json +69 -0
  207. mx_bluesky-1.2.0/tests/test_data/test_beamline_dcm_pitch_converter.txt +24 -0
  208. mx_bluesky-1.2.0/tests/test_data/test_beamline_dcm_roll_converter.txt +10 -0
  209. mx_bluesky-1.2.0/tests/test_data/test_beamline_parameters.txt +298 -0
  210. mx_bluesky-1.2.0/tests/test_data/test_beamline_vfm_lat_converter.txt +5 -0
  211. mx_bluesky-1.2.0/tests/test_data/test_config.cfg +27 -0
  212. mx_bluesky-1.2.0/tests/test_data/test_daq_configuration/domain/beamlineParameters +139 -0
  213. mx_bluesky-1.2.0/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +25 -0
  214. mx_bluesky-1.2.0/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +6 -0
  215. mx_bluesky-1.2.0/tests/test_data/test_det_dist_converter.txt +7 -0
  216. mx_bluesky-1.2.0/tests/test_data/test_display.configuration +42 -0
  217. mx_bluesky-1.2.0/tests/test_data/test_jCameraManZoomLevels.xml +42 -0
  218. mx_bluesky-1.2.0/tests/test_data/test_lookup_table.txt +5 -0
  219. mx_bluesky-1.2.0/tests/test_data/test_mirror_focus.json +75 -0
  220. mx_bluesky-1.2.0/tests/unit_tests/__init__.py +0 -0
  221. mx_bluesky-1.2.0/tests/unit_tests/beamlines/__init__.py +0 -0
  222. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i04/callbacks/test_murko_callback.py +1 -1
  223. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i04/test_thawing.py +51 -9
  224. mx_bluesky-1.2.0/tests/unit_tests/beamlines/i24/serial/__init__.py +0 -0
  225. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/conftest.py +1 -1
  226. mx_bluesky-1.2.0/tests/unit_tests/beamlines/i24/serial/extruder/__init__.py +0 -0
  227. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/extruder/test_extruder_collect.py +59 -41
  228. mx_bluesky-1.2.0/tests/unit_tests/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  229. mx_bluesky-1.2.0/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +47 -0
  230. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/fixed_target/test_chip_manager.py +71 -41
  231. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/fixed_target/test_chip_startup.py +3 -3
  232. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/fixed_target/test_ft_collect.py +98 -34
  233. mx_bluesky-1.2.0/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +98 -0
  234. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/parameters/test_utils.py +5 -5
  235. mx_bluesky-1.2.0/tests/unit_tests/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  236. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/setup_beamline/test_pv_abstract.py +1 -1
  237. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/setup_beamline/test_setup_beamline.py +15 -12
  238. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/setup_beamline/test_setup_detector.py +7 -7
  239. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/setup_beamline/test_zebra_plans.py +1 -1
  240. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/test_dcid.py +8 -4
  241. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests/beamlines}/i24/serial/test_log.py +10 -10
  242. mx_bluesky-1.2.0/tests/unit_tests/hyperion/__init__.py +0 -0
  243. mx_bluesky-1.2.0/tests/unit_tests/hyperion/conftest.py +80 -0
  244. mx_bluesky-1.2.0/tests/unit_tests/hyperion/device_setup_plans/__init__.py +0 -0
  245. mx_bluesky-1.2.0/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +244 -0
  246. mx_bluesky-1.2.0/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +38 -0
  247. mx_bluesky-1.2.0/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +37 -0
  248. mx_bluesky-1.2.0/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +245 -0
  249. mx_bluesky-1.2.0/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +94 -0
  250. mx_bluesky-1.2.0/tests/unit_tests/hyperion/device_setup_plans/test_xbpm_feedback.py +90 -0
  251. mx_bluesky-1.2.0/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +106 -0
  252. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/__init__.py +0 -0
  253. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/conftest.py +299 -0
  254. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +31 -0
  255. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_flyscan_xray_centre_plan.py +1205 -0
  256. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_grid_detect_then_xray_centre_plan.py +328 -0
  257. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_grid_detection_plan.py +481 -0
  258. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +224 -0
  259. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_multi_rotation_scan_plan.py +473 -0
  260. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_oav_snapshot_plan.py +142 -0
  261. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +385 -0
  262. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +307 -0
  263. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +338 -0
  264. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +384 -0
  265. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +342 -0
  266. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +695 -0
  267. mx_bluesky-1.2.0/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +76 -0
  268. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/__init__.py +0 -0
  269. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
  270. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +263 -0
  271. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +139 -0
  272. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
  273. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +322 -0
  274. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +71 -0
  275. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/test_plan_reactive_callback.py +220 -0
  276. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +420 -0
  277. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/test_zocalo_handler.py +142 -0
  278. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/__init__.py +2 -0
  279. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/conftest.py +60 -0
  280. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/test_ispyb_callback.py +252 -0
  281. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/test_ispyb_handler.py +183 -0
  282. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/test_ispyb_mapping.py +85 -0
  283. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/test_nexus_handler.py +132 -0
  284. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/conftest.py +227 -0
  285. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/ispyb/__init__.py +0 -0
  286. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/ispyb/conftest.py +74 -0
  287. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/ispyb/test_expeye_interaction.py +139 -0
  288. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/ispyb/test_gridscan_ispyb_store_3d.py +766 -0
  289. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/ispyb/test_rotation_ispyb_store.py +507 -0
  290. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/nexus/__init__.py +0 -0
  291. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +271 -0
  292. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/nexus/test_nexus_utils.py +17 -0
  293. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +377 -0
  294. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
  295. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
  296. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
  297. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/test_ispyb_utils.py +50 -0
  298. mx_bluesky-1.2.0/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +484 -0
  299. mx_bluesky-1.2.0/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
  300. mx_bluesky-1.2.0/tests/unit_tests/hyperion/parameters/test_parameter_model.py +122 -0
  301. mx_bluesky-1.2.0/tests/unit_tests/hyperion/test_exceptions.py +23 -0
  302. mx_bluesky-1.2.0/tests/unit_tests/hyperion/test_log/__init__.py +0 -0
  303. mx_bluesky-1.2.0/tests/unit_tests/hyperion/test_log/conftest.py +13 -0
  304. mx_bluesky-1.2.0/tests/unit_tests/hyperion/test_log/test_log.py +197 -0
  305. mx_bluesky-1.2.0/tests/unit_tests/hyperion/test_main_system.py +578 -0
  306. mx_bluesky-1.2.0/tests/unit_tests/hyperion/test_utils.py +25 -0
  307. mx_bluesky-1.2.0/tests/unit_tests/hyperion/utils/__init__.py +0 -0
  308. mx_bluesky-1.2.0/tests/unit_tests/hyperion/utils/test_callback_sim.py +51 -0
  309. mx_bluesky-1.2.0/tests/unit_tests/hyperion/utils/test_context.py +74 -0
  310. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests}/test_cli.py +3 -0
  311. mx_bluesky-1.2.0/utility_scripts/beam_off_trickery.sh +11 -0
  312. mx_bluesky-1.2.0/utility_scripts/build_docker_image.sh +70 -0
  313. mx_bluesky-1.2.0/utility_scripts/build_imginfo.sh +56 -0
  314. mx_bluesky-1.2.0/utility_scripts/deploy/create_venv.py +25 -0
  315. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0/utility_scripts}/deploy/deploy_edm_for_ssx.sh +2 -2
  316. mx_bluesky-1.2.0/utility_scripts/deploy/deploy_hyperion.py +241 -0
  317. mx_bluesky-1.2.0/utility_scripts/deploy/deploy_hyperion_to_k8s.sh +184 -0
  318. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0/utility_scripts}/deploy/deploy_mxbluesky.py +14 -14
  319. mx_bluesky-1.2.0/utility_scripts/deploy/test_deploy.py +11 -0
  320. mx_bluesky-1.2.0/utility_scripts/dev_jaeger_container.sh +14 -0
  321. mx_bluesky-1.2.0/utility_scripts/dls_dev_env.sh +49 -0
  322. mx_bluesky-1.2.0/utility_scripts/docker/entrypoint.sh +81 -0
  323. mx_bluesky-1.2.0/utility_scripts/docker/healthcheck.sh +3 -0
  324. mx_bluesky-1.2.0/utility_scripts/docker/i03-compose.yml +59 -0
  325. mx_bluesky-1.2.0/utility_scripts/graylog/Dockerfile +10 -0
  326. mx_bluesky-1.2.0/utility_scripts/graylog/tcp_input.json +103 -0
  327. mx_bluesky-1.2.0/utility_scripts/run_imginfo.sh +55 -0
  328. mx_bluesky-1.2.0/utility_scripts/setup_graylog.sh +9 -0
  329. mx_bluesky-1.2.0/utility_scripts/strip_metafile.py +68 -0
  330. mx_bluesky-0.3.1/.github/CONTRIBUTING.md +0 -27
  331. mx_bluesky-0.3.1/.gitignore +0 -89
  332. mx_bluesky-0.3.1/.vscode/extensions.json +0 -5
  333. mx_bluesky-0.3.1/dls_dev_setup.sh +0 -32
  334. mx_bluesky-0.3.1/docs/developer/general/how-to/deploy-a-release.rst +0 -25
  335. mx_bluesky-0.3.1/src/mx_bluesky/i04/__init__.py +0 -3
  336. mx_bluesky-0.3.1/src/mx_bluesky/i24/serial/parameters/__init__.py +0 -15
  337. mx_bluesky-0.3.1/src/mx_bluesky/parameters/__init__.py +0 -31
  338. mx_bluesky-0.3.1/src/mx_bluesky.egg-info/SOURCES.txt +0 -163
  339. mx_bluesky-0.3.1/src/mx_bluesky.egg-info/entry_points.txt +0 -4
  340. mx_bluesky-0.3.1/tests/i24/serial/fixed_target/conftest.py +0 -23
  341. mx_bluesky-0.3.1/tests/i24/serial/fixed_target/test_moveonclick.py +0 -67
  342. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.copier-answers.yml +0 -0
  343. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.devcontainer/devcontainer.json +0 -0
  344. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  345. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  346. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/actions/install_requirements/action.yml +0 -0
  347. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/dependabot.yml +0 -0
  348. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/pages/index.html +0 -0
  349. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/pages/make_switcher.py +0 -0
  350. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/workflows/_check.yml +0 -0
  351. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/workflows/_container.yml +0 -0
  352. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/workflows/_dist.yml +0 -0
  353. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/workflows/_docs.yml +0 -0
  354. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/workflows/_pypi.yml +0 -0
  355. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/workflows/_release.yml +0 -0
  356. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/workflows/_tox.yml +0 -0
  357. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.github/workflows/periodic.yml +0 -0
  358. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.vscode/launch.json +0 -0
  359. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.vscode/mx-bluesky.code-workspace +0 -0
  360. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.vscode/settings.json +0 -0
  361. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/.vscode/tasks.json +0 -0
  362. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/LICENSE +0 -0
  363. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/README.rst +0 -0
  364. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/catalog-info.yaml +0 -0
  365. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  366. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/explanations/decisions.rst +0 -0
  367. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/how-to/build-docs.rst +0 -0
  368. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/how-to/create-a-release.rst +0 -0
  369. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/how-to/get-started.rst +0 -0
  370. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/how-to/lint.rst +0 -0
  371. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/how-to/run-tests.rst +0 -0
  372. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/how-to/static-analysis.rst +0 -0
  373. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/how-to/update-tools.rst +0 -0
  374. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/index.rst +0 -0
  375. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/reference/standards.rst +0 -0
  376. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/general/tutorials/dev-install.rst +0 -0
  377. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
  378. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
  379. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/murko-integration/index.rst +0 -0
  380. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  381. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
  382. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/developer/serial-crystallography-on-i24/index.rst +0 -0
  383. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/genindex.rst +0 -0
  384. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/images/dls-favicon.ico +0 -0
  385. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/images/dls-logo.svg +0 -0
  386. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/index.rst +0 -0
  387. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/user/explanations/docs-structure.rst +0 -0
  388. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/user/index.rst +0 -0
  389. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/user/reference/api.rst +0 -0
  390. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/docs/user/tutorials/installation.rst +0 -0
  391. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/setup.cfg +0 -0
  392. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/src/mx_bluesky/__init__.py +0 -0
  393. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/src/mx_bluesky/__main__.py +0 -0
  394. {mx_bluesky-0.3.1/src/mx_bluesky/i24 → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/__init__.py +0 -0
  395. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i04/callbacks/murko_callback.py +0 -0
  396. {mx_bluesky-0.3.1/src/mx_bluesky/i24/serial/extruder → mx_bluesky-1.2.0/src/mx_bluesky/beamlines/i24}/__init__.py +0 -0
  397. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/__init__.py +0 -0
  398. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  399. {mx_bluesky-0.3.1/src/mx_bluesky/i24/serial/fixed_target → mx_bluesky-1.2.0/src/mx_bluesky/beamlines/i24/serial/extruder}/__init__.py +0 -0
  400. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  401. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  402. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  403. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  404. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  405. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/short1-laser.png +0 -0
  406. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/FT-gui-edm/short2-laser.png +0 -0
  407. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/src/mx_bluesky/beamlines/i24/serial/fixed_target}/__init__.py +0 -0
  408. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/fixed_target/ft_utils.py +0 -0
  409. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  410. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  411. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  412. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  413. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/run_extruder.sh +0 -0
  414. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/run_fixed_target.sh +0 -0
  415. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/run_ssx.sh +0 -0
  416. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/set_visit_directory.sh +0 -0
  417. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/setup_beamline/__init__.py +0 -0
  418. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/setup_beamline/ca.py +0 -0
  419. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/setup_beamline/pv.py +0 -0
  420. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/setup_beamline/setup_zebra_plans.py +0 -0
  421. {mx_bluesky-0.3.1/src/mx_bluesky → mx_bluesky-1.2.0/src/mx_bluesky/beamlines}/i24/serial/start_blueapi.sh +0 -0
  422. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/src/mx_bluesky/example.py +0 -0
  423. {mx_bluesky-0.3.1/tests/i24/serial → mx_bluesky-1.2.0/src/mx_bluesky/hyperion/device_setup_plans}/__init__.py +0 -0
  424. {mx_bluesky-0.3.1/tests/i24/serial/extruder → mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/common}/__init__.py +0 -0
  425. {mx_bluesky-0.3.1/tests/i24/serial/fixed_target → mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  426. {mx_bluesky-0.3.1/tests/i24/serial/setup_beamline → mx_bluesky-1.2.0/src/mx_bluesky/hyperion/external_interaction/callbacks/xray_centre}/__init__.py +0 -0
  427. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
  428. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/src/mx_bluesky.egg-info/top_level.txt +0 -0
  429. {mx_bluesky-0.3.1 → mx_bluesky-1.2.0}/start_jupyter.sh +0 -0
  430. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests}/conftest.py +0 -0
  431. {mx_bluesky-0.3.1/tests → mx_bluesky-1.2.0/tests/unit_tests}/test_example.py +0 -0
@@ -0,0 +1,18 @@
1
+ [run]
2
+ omit =
3
+ */test_*
4
+ **/conftest.py
5
+ data_file = /tmp/hyperion.coverage
6
+
7
+ [report]
8
+ exclude_also =
9
+ if TYPE_CHECKING:
10
+ def __repr__
11
+ raise NotImplementedError
12
+ @(abc\.)?abstractmethod
13
+
14
+ [paths]
15
+ # Tests are run from installed location, map back to the src directory
16
+ source =
17
+ src
18
+ **/site-packages/
@@ -3,7 +3,7 @@
3
3
  # The devcontainer should use the build target and run as root with podman
4
4
  # or docker with user namespaces.
5
5
  #
6
- FROM python:3.11 as build
6
+ FROM python:3.11 AS build
7
7
 
8
8
  ARG PIP_OPTIONS
9
9
 
@@ -24,7 +24,7 @@ WORKDIR /context
24
24
  # install python package into /venv
25
25
  RUN pip install ${PIP_OPTIONS}
26
26
 
27
- FROM python:3.11-slim as runtime
27
+ FROM python:3.11-slim AS runtime
28
28
 
29
29
  # Add apt-get system dependecies for runtime here if needed
30
30
 
@@ -0,0 +1,12 @@
1
+ # List of folders and files to be excluded from the docker image
2
+ .devcontainer
3
+ .github
4
+ .pytest_cache
5
+ .ruff_cache
6
+ **/__pycache__/
7
+
8
+ # virtualenv stuff - this gets built by the docker script
9
+ .venv
10
+ activate
11
+
12
+ tmp
@@ -0,0 +1,57 @@
1
+ # How to contribute to mx-bluesky
2
+
3
+ We should prioritise working, agile code over strict standards, particularly for contributors that are not full time developers. The standards below are thus guidelines that developers should try to follow as much as possible (apart from when something is specified in bold, which is required).
4
+
5
+ Contributions and issues are most welcome! All issues and pull requests are handled through [GitHub](https://github.com/DiamondLightSource/mx-bluesky/issues). Also, please check for any existing issues before filing a new one. If you have a great idea but it involves big changes, please file a ticket before making a pull request! We want to make sure you don't spend your time coding something that might not fit the scope of the project.
6
+
7
+ ## General Workflow
8
+
9
+ 1. An issue is created for the work. 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.
10
+ 2. If a developer is going to do the work they assign themselves to the issue.
11
+ 3. The developer makes a new branch with the format `issue_short_description` e.g. `122_create_a_contributing_file`. (External developers are also welcome to make forks)
12
+ 4. The developer does the work on this branch, adding their work in small commits. Commit messages should be informative and prefixed with the issue number e.g. `(#122) Added contributing file`.
13
+ 5. The developer submits a PR for the work. In the pull request should start with `Fixes #issue_num` e.g. `Fixes #122`, this will ensure the issue is automatically closed when the PR is merged. The developer should also add some background on how the reviewer might test the change.
14
+ 6. If the developer has a particular person in mind to review the work they should assign that person to the PR as a reviewer.
15
+ 7. The reviewer and developer go back and forth on the code until the reviewer approves it. (See "Reviewing Work" below)
16
+ 8. Once the work is approved the original developer merges it.
17
+
18
+ **Work should not be done without an associated ticket describing what the work is**
19
+
20
+ ## Reviewing Work
21
+
22
+ **Work must be reviewed by another developer before it can be merged**. Remember that work is reviewed for a number of reasons:
23
+
24
+ - In order to maintain quality and avoid errors
25
+ - Help people learn
26
+
27
+ It is not a judgement on someone's technical abilities so be kind.
28
+
29
+ It is suggested that the reviewer prefixes comments with something like the following:
30
+
31
+ - **must**: A change that must be made before merging e.g. it will break something if not made
32
+ - **should/sugg**: A change that should be made e.g. definitely improves code quality but does not neccessarily break anything
33
+ - **nit**: A minor suggestion that the reviewer would like to see but is happy to leave as is e.g. rename a variable to something
34
+
35
+ Developers are welcome to ignore **nit** comments if they wish and can choose not to do **should** comments but the must give a reason as to why they disagree with the change.
36
+
37
+ For minor changes to code reviewers are welcome to make the changes themselves but in this case the original developer should then recheck what the reviewer has done.
38
+
39
+ ## Issue or Discussion?
40
+
41
+ Github also offers [discussions](https://github.com/DiamondLightSource/mx-bluesky/discussions) as a place to ask questions and share ideas. If
42
+ your issue is open ended and it is not obvious when it can be "closed", please
43
+ raise it as a discussion instead.
44
+
45
+ ## Code Coverage
46
+
47
+ While 100% code coverage does not make a library bug-free, it significantly
48
+ reduces the number of easily caught bugs! Please make sure coverage remains the
49
+ same or is improved by a pull request!
50
+
51
+ ## Developer Information
52
+
53
+ It is recommended that developers use a [vscode devcontainer](https://code.visualstudio.com/docs/devcontainers/containers). This repository contains configuration to set up a containerized development environment that suits its own needs.
54
+
55
+ This project was created using the [Diamond Light Source Copier Template](https://github.com/DiamondLightSource/python-copier-template) for Python projects.
56
+
57
+ For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template's [How-to guides](https://diamondlightsource.github.io/python-copier-template/2.2.0/how-to.html).
@@ -1,8 +1,13 @@
1
1
  Fixes #ISSUE
2
2
 
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!)
5
+
3
6
  ### Instructions to reviewer on how to test:
7
+
4
8
  1. Do thing x
5
9
  2. Confirm thing y happens
6
10
 
7
11
  ### Checks for reviewer
12
+
8
13
  - [ ] Would the PR title make sense to a user on a set of release notes
@@ -0,0 +1,3 @@
1
+ FROM ghcr.io/githubgphl/imginfo:main
2
+ COPY entrypoint.sh /entrypoint.sh
3
+ ENTRYPOINT ["/entrypoint.sh"]
@@ -0,0 +1,18 @@
1
+ name: "Verify nexus"
2
+ description: "Verify nexus files against imginfo"
3
+ inputs:
4
+ filename:
5
+ description: "nexus file to verify"
6
+ required: true
7
+ outputs:
8
+ imginfo_stdout:
9
+ description: "imginfo output"
10
+ imginfo_stderr:
11
+ description: "imginfo error output"
12
+ imginfo_exit_code:
13
+ description: "imginfo exit code"
14
+ runs:
15
+ using: "docker"
16
+ image: "Dockerfile"
17
+ args:
18
+ - ${{ inputs.filename }}
@@ -0,0 +1,25 @@
1
+ #!/bin/sh -l
2
+ echo "Contents of /github/workspace:"
3
+ ls /github/workspace
4
+ echo "current dir: $(pwd)"
5
+ echo "Running imginfo on $1"
6
+ /imginfo/imginfo $1 >> imginfo_out_file 2>> imginfo_err_file
7
+ { echo "imginfo_output<<EOF"
8
+ cat imginfo_out_file
9
+ echo EOF
10
+ } >> "$GITHUB_OUTPUT"
11
+ { echo "imginfo_output<<EOF"
12
+ cat imginfo_err_file
13
+ echo EOF
14
+ } >> "$GITHUB_OUTPUT"
15
+ echo "imginfo_exit_code=$?" >> "$GITHUB_OUTPUT"
16
+ echo "------------- IMGINFO STDOUT -------------"
17
+ cat imginfo_out_file
18
+ echo "------------- IMGINFO STDERR -------------"
19
+ cat imginfo_err_file
20
+ echo "------------------------------------------"
21
+ if [ -s imginfo_err_file ]; then
22
+ echo "ERRORS IN IMGINFO PROCESSING!"
23
+ exit 1
24
+ fi
25
+ echo "VALIDATED SUCCESSFULLY!"
@@ -51,7 +51,7 @@ jobs:
51
51
  pip-install: ".[dev]"
52
52
 
53
53
  - name: Run tests
54
- run: tox -e tests
54
+ run: tox -e tests -- -m "not dlstbx"
55
55
 
56
56
  - name: Upload coverage to Codecov
57
57
  uses: codecov/codecov-action@v4
@@ -21,11 +21,7 @@ jobs:
21
21
  strategy:
22
22
  matrix:
23
23
  runs-on: ["ubuntu-latest"] # can add windows-latest, macos-latest
24
- python-version: ["3.10", "3.11"] # , "3.12"] # add 3.12 when p4p #145 is fixed
25
- include:
26
- # Include one that runs in the dev environment
27
- - runs-on: "ubuntu-latest"
28
- python-version: "dev"
24
+ python-version: ["3.11"] # , "3.12"] # add 3.12 when p4p #145 is fixed
29
25
  fail-fast: false
30
26
  uses: ./.github/workflows/_test.yml
31
27
  with:
@@ -0,0 +1,50 @@
1
+ name: Publish Docker Image
2
+ on:
3
+ release:
4
+ types: [published]
5
+ # Allow the workflow to be triggered manually
6
+ workflow_dispatch:
7
+ env:
8
+ REGISTRY: ghcr.io
9
+ IMAGE_NAME: ${{ github.repository }}
10
+ jobs:
11
+ build_and_push_image:
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: read
15
+ packages: write
16
+ steps:
17
+ - name: Checkout
18
+ # v4.1.7
19
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
20
+ - name: Log in to GHCR
21
+ # v3.3.0
22
+ uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
23
+ with:
24
+ registry: ${{ env.REGISTRY }}
25
+ username: ${{ github.actor }}
26
+ password: ${{ secrets.GITHUB_TOKEN }}
27
+ - name: Extract metadata (tags, labels) for Docker
28
+ id: meta
29
+ # v5.5.1
30
+ uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
31
+ with:
32
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
33
+ - name: Build and push Docker image
34
+ # v6.5.0
35
+ uses: docker/build-push-action@5176d81f87c23d6fc96624dfdbcd9f3830bbe445
36
+ with:
37
+ context: .
38
+ push: true
39
+ tags: |
40
+ ${{ steps.meta.outputs.tags }}
41
+ ${{ github.sha }}
42
+ labels: ${{ steps.meta.outputs.labels }}
43
+ file: Dockerfile.release
44
+ - name: Generate artifact attestation
45
+ # v1.4.0
46
+ uses: actions/attest-build-provenance@210c1913531870065f03ce1f9440dd87bc0938cd
47
+ with:
48
+ subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}
49
+ subject-digest: ${{ steps.push.outputs.digest }}
50
+ push-to-registry: true
@@ -0,0 +1,173 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ env/
12
+ # Output
13
+ *.png
14
+ !docs/*.png
15
+
16
+ # Distribution / packaging
17
+ .Python
18
+ build/
19
+ develop-eggs/
20
+ dist/
21
+ downloads/
22
+ eggs/
23
+ .eggs/
24
+ lib/
25
+ lib64/
26
+ parts/
27
+ sdist/
28
+ var/
29
+ **/_version.py
30
+ wheels/
31
+ pip-wheel-metadata/
32
+ share/python-wheels/
33
+ *.egg-info/
34
+ .installed.cfg
35
+ *.egg
36
+ MANIFEST
37
+
38
+ # PyInstaller
39
+ # Usually these files are written by a python script from a template
40
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
41
+ *.manifest
42
+ *.spec
43
+
44
+ # Installer logs
45
+ pip-log.txt
46
+ pip-delete-this-directory.txt
47
+
48
+ # Unit test / coverage reports
49
+ htmlcov/
50
+ .tox/
51
+ .nox/
52
+ .coverage
53
+ .coverage.*
54
+ .cache
55
+ nosetests.xml
56
+ coverage.xml
57
+ cov.xml
58
+ *.cover
59
+ *.py,cover
60
+ .hypothesis/
61
+ .pytest_cache/
62
+ cov.xml
63
+
64
+ # Translations
65
+ *.mo
66
+ *.pot
67
+
68
+ # Django stuff:
69
+ *.log
70
+ local_settings.py
71
+ db.sqlite3
72
+ db.sqlite3-journal
73
+
74
+ # Flask stuff:
75
+ instance/
76
+ .webassets-cache
77
+
78
+ # Scrapy stuff:
79
+ .scrapy
80
+
81
+ # Sphinx documentation
82
+ docs/_build/
83
+
84
+ # PyBuilder
85
+ target/
86
+
87
+ # Jupyter Notebook
88
+ .ipynb_checkpoints
89
+
90
+ # IPython
91
+ profile_default/
92
+ ipython_config.py
93
+
94
+ # pyenv
95
+ .python-version
96
+
97
+ # pipenv
98
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
99
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
100
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
101
+ # install all needed dependencies.
102
+ #Pipfile.lock
103
+
104
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
105
+ __pypackages__/
106
+
107
+ # Celery stuff
108
+ celerybeat-schedule
109
+ celerybeat.pid
110
+
111
+ # SageMath parsed files
112
+ *.sage.py
113
+
114
+ # Environments
115
+ .env
116
+ .venv
117
+ env/
118
+ venv/
119
+ ENV/
120
+ env.bak/
121
+ venv.bak/
122
+ .venv*/
123
+
124
+ # Spyder project settings
125
+ .spyderproject
126
+ .spyproject
127
+
128
+ # Rope project settings
129
+ .ropeproject
130
+
131
+ # mkdocs documentation
132
+ /site
133
+
134
+ # mypy
135
+ .mypy_cache/
136
+ .dmypy.json
137
+ dmypy.json
138
+
139
+ # Pyre type checker
140
+ .pyre/
141
+
142
+ # gedit backup files
143
+ *~
144
+
145
+ # Log files
146
+ **/tmp
147
+
148
+ # further build artifacts
149
+ lockfiles/
150
+
151
+ # ruff cache
152
+ .ruff_cache/
153
+
154
+ # Temporary files
155
+ tmp/
156
+
157
+ # EDM screens
158
+ edm/
159
+ edm_serial/
160
+
161
+ # Edm backup files
162
+ *.edl~
163
+
164
+ # Parameter files that could be modified by hand by scientists
165
+ # or created during collection
166
+ **/parameters/*.json
167
+ **/parameters/*.txt
168
+ **/parameters/fixed_target/*.txt
169
+ **/parameters/fixed_target/cs/fiducial_*.txt
170
+ **/parameters/fixed_target/*.json
171
+ **/parameters/fixed_target/*/*.map
172
+ # idea project files
173
+ .idea/
@@ -3,7 +3,10 @@ repos:
3
3
  rev: v4.5.0
4
4
  hooks:
5
5
  - id: check-added-large-files
6
+ args: ["--maxkb=500"]
6
7
  - id: check-yaml
8
+ args: ["--allow-multiple-documents"]
9
+ exclude: ^helmchart/
7
10
  - id: check-merge-conflict
8
11
  - id: end-of-file-fixer
9
12
 
@@ -29,5 +32,5 @@ repos:
29
32
  hooks:
30
33
  - id: mypy
31
34
  files: 'src/.*\.py$'
32
- additional_dependencies: [types-requests, types-redis]
35
+ additional_dependencies: [types-requests, types-redis, pydantic]
33
36
  args: ["--ignore-missing-imports", "--no-strict-optional"]
@@ -0,0 +1,10 @@
1
+ {
2
+ "recommendations": [
3
+ "ms-vscode-remote.remote-containers",
4
+ "ms-python.python",
5
+ "tamasfe.even-better-toml",
6
+ "redhat.vscode-yaml",
7
+ "ryanluker.vscode-coverage-gutters",
8
+ "charliermarsh.Ruff"
9
+ ]
10
+ }
@@ -1,7 +1,7 @@
1
1
  # The devcontainer should use the developer target and run as root with podman
2
2
  # or docker with user namespaces.
3
3
  ARG PYTHON_VERSION=3.11
4
- FROM python:${PYTHON_VERSION} as developer
4
+ FROM python:${PYTHON_VERSION} AS developer
5
5
 
6
6
  # Add any system dependencies for the developer/build environment here
7
7
  RUN apt-get update && apt-get install -y --no-install-recommends \
@@ -13,13 +13,13 @@ RUN python -m venv /venv
13
13
  ENV PATH=/venv/bin:$PATH
14
14
 
15
15
  # The build stage installs the context into the venv
16
- FROM developer as build
16
+ FROM developer AS build
17
17
  COPY . /context
18
18
  WORKDIR /context
19
19
  RUN touch dev-requirements.txt && pip install -c dev-requirements.txt .
20
20
 
21
21
  # The runtime stage copies the built venv into a slim runtime container
22
- FROM python:${PYTHON_VERSION}-slim as runtime
22
+ FROM python:${PYTHON_VERSION}-slim AS runtime
23
23
  # Add apt-get system dependecies for runtime here if needed
24
24
  COPY --from=build /venv/ /venv/
25
25
  ENV PATH=/venv/bin:$PATH
@@ -0,0 +1,38 @@
1
+ FROM python:3.11 AS build
2
+
3
+ RUN pip install setuptools_scm
4
+
5
+ # Copy the pyproject.toml and install dependencies for better caching when developing
6
+ # & rerunning deployment scripts
7
+ COPY pyproject.toml /app/hyperion/
8
+ WORKDIR "/app/hyperion"
9
+ RUN mkdir -p src/mx_bluesky
10
+
11
+ # This enables us to cache the pip install without needing _version.py
12
+ # see https://setuptools-scm.readthedocs.io/en/latest/usage/
13
+ RUN SETUPTOOLS_SCM_PRETEND_VERSION_FOR_MX_BLUESKY=1.0.0 pip install \
14
+ --no-cache-dir --no-compile -e .
15
+
16
+ # Check out and install dodal locally with no dependencies as this may be a different version to what
17
+ # is referred to in the setup.cfg, but we don't care as it will be overridden by bind mounts in the
18
+ # running container
19
+ RUN mkdir ../dodal && \
20
+ git clone https://github.com/DiamondLightSource/dodal.git ../dodal && \
21
+ pip install --no-cache-dir --no-compile --no-deps -e ../dodal
22
+
23
+ #
24
+ # Everything above this line should be in the image cache unless pyproject.toml changes
25
+ #
26
+ ADD .git /app/hyperion/.git
27
+ # Restore the repository at the current commit instead of copying, to exclude uncommitted changes
28
+ # This is so that if you build a developer image from this dockerfile then _version.py will not
29
+ # append the dirty workdir hash, which causes complications during deployments that mount from a clean folder.
30
+ RUN git restore .
31
+
32
+ # Regenerate _version.py with the correct version - this should run quickly since we already have our dependencies
33
+ RUN rm src/mx_bluesky/_version.py
34
+ RUN pip install --no-cache-dir --no-compile --no-deps -e .
35
+
36
+ ENTRYPOINT /app/hyperion/utility_scripts/docker/entrypoint.sh
37
+
38
+ EXPOSE 5005
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mx-bluesky
3
- Version: 0.3.1
3
+ Version: 1.2.0
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
@@ -208,29 +208,43 @@ License: Apache License
208
208
  Project-URL: GitHub, https://github.com/DiamondLightSource/mx-bluesky
209
209
  Classifier: Development Status :: 3 - Alpha
210
210
  Classifier: License :: OSI Approved :: Apache Software License
211
- Classifier: Programming Language :: Python :: 3.10
212
211
  Classifier: Programming Language :: Python :: 3.11
213
212
  Classifier: Programming Language :: Python :: 3.12
214
- Requires-Python: >=3.10
213
+ Requires-Python: >=3.11
215
214
  Description-Content-Type: text/x-rst
216
215
  License-File: LICENSE
217
- Requires-Dist: bluesky
218
- Requires-Dist: ophyd
219
- Requires-Dist: pyepics
216
+ Requires-Dist: annotated_types
220
217
  Requires-Dist: caproto
218
+ Requires-Dist: fastapi[all]
219
+ Requires-Dist: flask-restful
220
+ Requires-Dist: ispyb
221
221
  Requires-Dist: jupyterlab
222
222
  Requires-Dist: matplotlib
223
- Requires-Dist: requests
223
+ Requires-Dist: nexgen
224
+ Requires-Dist: numpy
224
225
  Requires-Dist: opencv-python
226
+ Requires-Dist: opentelemetry-distro
227
+ Requires-Dist: opentelemetry-exporter-otlp
225
228
  Requires-Dist: pydantic
229
+ Requires-Dist: pyepics
230
+ Requires-Dist: pyzmq
231
+ Requires-Dist: requests
232
+ Requires-Dist: scanspec
233
+ Requires-Dist: scipy
226
234
  Requires-Dist: semver
227
- Requires-Dist: fastapi[all]
228
- Requires-Dist: dls-dodal==1.30.0
229
- Requires-Dist: blueapi==0.4.4
235
+ Requires-Dist: matplotlib
236
+ Requires-Dist: blueapi>=0.5.0
237
+ Requires-Dist: daq-config-server>=0.1.1
238
+ Requires-Dist: ophyd==1.9.0
239
+ Requires-Dist: ophyd-async>=0.3a5
240
+ Requires-Dist: bluesky>=1.13.0a4
241
+ Requires-Dist: dls-dodal==1.33.0
230
242
  Provides-Extra: dev
231
243
  Requires-Dist: black; extra == "dev"
232
- Requires-Dist: copier; extra == "dev"
244
+ Requires-Dist: build; extra == "dev"
245
+ Requires-Dist: diff-cover; extra == "dev"
233
246
  Requires-Dist: GitPython; extra == "dev"
247
+ Requires-Dist: ipython; extra == "dev"
234
248
  Requires-Dist: mypy; extra == "dev"
235
249
  Requires-Dist: myst-parser; extra == "dev"
236
250
  Requires-Dist: pipdeptree; extra == "dev"
@@ -244,8 +258,10 @@ Requires-Dist: pytest; extra == "dev"
244
258
  Requires-Dist: ruff; extra == "dev"
245
259
  Requires-Dist: sphinx-autobuild; extra == "dev"
246
260
  Requires-Dist: sphinx-copybutton; extra == "dev"
261
+ Requires-Dist: sphinxcontrib-plantuml; extra == "dev"
247
262
  Requires-Dist: sphinx-design; extra == "dev"
248
263
  Requires-Dist: tox-direct; extra == "dev"
264
+ Requires-Dist: tox; extra == "dev"
249
265
  Requires-Dist: types-mock; extra == "dev"
250
266
  Requires-Dist: types-requests; extra == "dev"
251
267
 
@@ -0,0 +1,34 @@
1
+ comment:
2
+ layout: "header, diff, flags, components" # show component info in the PR comment
3
+
4
+ component_management:
5
+ default_rules: # default rules that will be inherited by all components
6
+ statuses:
7
+ - type: project
8
+ target: 85%
9
+ threshold: 1%
10
+ individual_components:
11
+ - component_id: module_i24_ssx
12
+ name: i24 SSX
13
+ paths:
14
+ - src/mx_bluesky/beamlines/i24/serial/**
15
+ - tests/unit_tests/beamlines/i24/serial/**
16
+ statuses:
17
+ - type: project
18
+ target: 55%
19
+ threshold: 1%
20
+ - component_id: module_hyperion
21
+ name: hyperion
22
+ paths:
23
+ - src/mx_bluesky/hyperion/**
24
+ - tests/unit_tests//hyperion/**
25
+ - component_id: module_other
26
+ name: other
27
+ paths:
28
+ - "!src/mx_bluesky/hyperion/"
29
+ - "!tests/unit_tests//hyperion/**"
30
+ - "!src/mx_bluesky/beamlines/i24/serial/**"
31
+ - "!tests/unit_tests/beamlines/i24/serial/**"
32
+
33
+ ignore:
34
+ - "**/conftest.py"
@@ -0,0 +1,33 @@
1
+ from collections.abc import Iterator
2
+ from os import environ, getenv
3
+ from unittest.mock import patch
4
+
5
+ import pytest
6
+
7
+ environ["HYPERION_TEST_MODE"] = "true"
8
+
9
+ print("Adjusting S03 EPICS environment ...")
10
+ s03_epics_server_port = getenv("S03_EPICS_CA_SERVER_PORT")
11
+ s03_epics_repeater_port = getenv("S03_EPICS_CA_REPEATER_PORT")
12
+ if s03_epics_server_port:
13
+ environ["EPICS_CA_SERVER_PORT"] = s03_epics_server_port
14
+ print(f"[EPICS_CA_SERVER_PORT] = {s03_epics_server_port}")
15
+ if s03_epics_repeater_port:
16
+ environ["EPICS_CA_REPEATER_PORT"] = s03_epics_repeater_port
17
+ print(f"[EPICS_CA_REPEATER_PORT] = {s03_epics_repeater_port}")
18
+
19
+
20
+ def pytest_addoption(parser):
21
+ parser.addoption(
22
+ "--logging",
23
+ action="store_true",
24
+ default=False,
25
+ help="Log during all tests (not just those that are testing logging logic)",
26
+ )
27
+
28
+
29
+ @pytest.fixture(scope="session", autouse=True)
30
+ def default_session_fixture() -> Iterator[None]:
31
+ print("Patching bluesky 0MQ Publisher in __main__ for the whole session")
32
+ with patch("mx_bluesky.hyperion.__main__.Publisher"):
33
+ yield