dls-dodal 1.32.0__tar.gz → 1.34.1__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 (369) hide show
  1. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.copier-answers.yml +3 -1
  2. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/CONTRIBUTING.md +1 -1
  3. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/pages/make_switcher.py +8 -6
  4. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/workflows/_pypi.yml +2 -0
  5. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/workflows/_release.yml +1 -1
  6. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/workflows/ci.yml +1 -1
  7. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.gitignore +1 -0
  8. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/Dockerfile +1 -1
  9. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/PKG-INFO +3 -3
  10. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/README.md +1 -1
  11. dls_dodal-1.34.1/docs/_api.rst +16 -0
  12. dls_dodal-1.34.1/docs/_templates/custom-module-template.rst +37 -0
  13. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/conf.py +13 -5
  14. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/create-beamline.rst +1 -1
  15. dls_dodal-1.34.1/docs/how-to/write-tests.md +8 -0
  16. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/reference/device-standards.rst +78 -5
  17. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/reference/standards.rst +1 -1
  18. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/reference.md +1 -1
  19. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/pull_request_template.md +1 -1
  20. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/pyproject.toml +8 -6
  21. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dls_dodal.egg-info/PKG-INFO +3 -3
  22. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dls_dodal.egg-info/SOURCES.txt +42 -19
  23. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dls_dodal.egg-info/requires.txt +1 -1
  24. dls_dodal-1.34.1/src/dodal/__init__.py +11 -0
  25. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/_version.py +2 -2
  26. dls_dodal-1.34.1/src/dodal/beamline_specific_utils/i03.py +17 -0
  27. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/__init__.py +2 -3
  28. dls_dodal-1.34.1/src/dodal/beamlines/b01_1.py +77 -0
  29. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/i03.py +41 -9
  30. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/i04.py +26 -4
  31. dls_dodal-1.34.1/src/dodal/beamlines/i10.py +257 -0
  32. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/i22.py +1 -2
  33. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/i24.py +7 -7
  34. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/p38.py +1 -2
  35. dls_dodal-1.34.1/src/dodal/common/signal_utils.py +53 -0
  36. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/common/types.py +2 -7
  37. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/aperturescatterguard.py +12 -15
  38. dls_dodal-1.34.1/src/dodal/devices/apple2_undulator.py +602 -0
  39. dls_dodal-1.34.1/src/dodal/devices/areadetector/plugins/CAM.py +31 -0
  40. dls_dodal-1.34.1/src/dodal/devices/areadetector/plugins/MJPG.py +83 -0
  41. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/backlight.py +7 -6
  42. dls_dodal-1.34.1/src/dodal/devices/diamond_filter.py +47 -0
  43. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/eiger.py +6 -2
  44. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/eiger_odin.py +48 -39
  45. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/focusing_mirror.py +14 -8
  46. dls_dodal-1.34.1/src/dodal/devices/i10/i10_apple2.py +398 -0
  47. dls_dodal-1.34.1/src/dodal/devices/i10/i10_setting_data.py +7 -0
  48. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i22/dcm.py +7 -8
  49. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i24/dual_backlight.py +5 -5
  50. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/oav/oav_calculations.py +22 -0
  51. dls_dodal-1.34.1/src/dodal/devices/oav/oav_detector.py +127 -0
  52. dls_dodal-1.34.1/src/dodal/devices/oav/oav_parameters.py +160 -0
  53. dls_dodal-1.34.1/src/dodal/devices/oav/oav_to_redis_forwarder.py +170 -0
  54. {dls_dodal-1.32.0/src/dodal/devices/oav → dls_dodal-1.34.1/src/dodal/devices/oav/snapshots}/grid_overlay.py +0 -43
  55. dls_dodal-1.34.1/src/dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +64 -0
  56. dls_dodal-1.34.1/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +57 -0
  57. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/oav/utils.py +26 -25
  58. dls_dodal-1.34.1/src/dodal/devices/pgm.py +41 -0
  59. dls_dodal-1.34.1/src/dodal/devices/qbpm.py +18 -0
  60. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/robot.py +2 -2
  61. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/smargon.py +2 -2
  62. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/tetramm.py +2 -2
  63. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/undulator.py +2 -1
  64. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/util/adjuster_plans.py +1 -1
  65. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/util/lookup_tables.py +4 -5
  66. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/zebra.py +5 -2
  67. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/zocalo/zocalo_results.py +13 -10
  68. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/plans/data_session_metadata.py +2 -2
  69. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/plans/motor_util_plans.py +11 -9
  70. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/utils.py +7 -0
  71. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1}/system_tests/test_aperturescatterguard_system.py +2 -2
  72. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1}/system_tests/test_eiger_system.py +1 -1
  73. dls_dodal-1.34.1/system_tests/test_oav_system.py +55 -0
  74. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1}/system_tests/test_oav_to_redis_system.py +11 -6
  75. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/beamlines/unit_tests/test_i24.py +2 -1
  76. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/beamlines/unit_tests/test_mapping.py +2 -2
  77. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/common/beamlines/test_device_instantiation.py +3 -2
  78. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/common/test_coordination.py +1 -1
  79. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/conftest.py +38 -15
  80. dls_dodal-1.34.1/tests/devices/i10/lookupTables/IDEnergy2GapCalibrations.csv +53 -0
  81. dls_dodal-1.34.1/tests/devices/i10/lookupTables/IDEnergy2PhaseCalibrations.csv +29 -0
  82. dls_dodal-1.34.1/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
  83. dls_dodal-1.34.1/tests/devices/i10/lookupTables/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
  84. dls_dodal-1.34.1/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
  85. dls_dodal-1.34.1/tests/devices/i10/lookupTables/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
  86. dls_dodal-1.34.1/tests/devices/i10/test_i10Apple2.py +485 -0
  87. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/i22/test_dcm.py +2 -2
  88. dls_dodal-1.34.1/tests/devices/test_diamond_filter.py +57 -0
  89. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/i24/test_pmac.py +1 -1
  90. dls_dodal-1.34.1/tests/devices/unit_tests/oav/conftest.py +25 -0
  91. {dls_dodal-1.32.0/tests/devices/unit_tests → dls_dodal-1.34.1/tests/devices/unit_tests/oav}/test_grid_overlay.py +3 -3
  92. dls_dodal-1.34.1/tests/devices/unit_tests/oav/test_oav.py +129 -0
  93. dls_dodal-1.34.1/tests/devices/unit_tests/oav/test_oav_parameters.py +78 -0
  94. dls_dodal-1.34.1/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +202 -0
  95. dls_dodal-1.34.1/tests/devices/unit_tests/oav/test_oav_utils.py +110 -0
  96. dls_dodal-1.34.1/tests/devices/unit_tests/oav/test_snapshots.py +188 -0
  97. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_aperture_scatterguard.py +45 -20
  98. dls_dodal-1.34.1/tests/devices/unit_tests/test_apple2_undulator.py +359 -0
  99. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_backlight.py +4 -4
  100. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_eiger.py +24 -18
  101. dls_dodal-1.34.1/tests/devices/unit_tests/test_focusing_mirror.py +259 -0
  102. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_odin.py +87 -18
  103. dls_dodal-1.34.1/tests/devices/unit_tests/test_qbpm.py +29 -0
  104. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_tetramm.py +26 -14
  105. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_zebra.py +3 -3
  106. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_zocalo_results.py +49 -53
  107. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +3 -2
  108. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/util/test_lookup_tables.py +4 -4
  109. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/util/test_save_panda.py +1 -1
  110. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/preprocessors/test_filesystem_metadata.py +2 -1
  111. dls_dodal-1.32.0/docs/reference/api.md +0 -26
  112. dls_dodal-1.32.0/src/dodal/__init__.py +0 -3
  113. dls_dodal-1.32.0/src/dodal/beamline_specific_utils/i03.py +0 -13
  114. dls_dodal-1.32.0/src/dodal/beamlines/i04_1.py +0 -140
  115. dls_dodal-1.32.0/src/dodal/devices/areadetector/plugins/MJPG.py +0 -138
  116. dls_dodal-1.32.0/src/dodal/devices/oav/oav_detector.py +0 -106
  117. dls_dodal-1.32.0/src/dodal/devices/oav/oav_errors.py +0 -35
  118. dls_dodal-1.32.0/src/dodal/devices/oav/oav_parameters.py +0 -214
  119. dls_dodal-1.32.0/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -129
  120. dls_dodal-1.32.0/tests/devices/system_tests/test_oav_system.py +0 -46
  121. dls_dodal-1.32.0/tests/devices/unit_tests/areadetector/plugins/test_MJPG.py +0 -45
  122. dls_dodal-1.32.0/tests/devices/unit_tests/oav/test_oav.py +0 -162
  123. dls_dodal-1.32.0/tests/devices/unit_tests/oav/test_oav_parameters.py +0 -48
  124. dls_dodal-1.32.0/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +0 -140
  125. dls_dodal-1.32.0/tests/devices/unit_tests/test_focusing_mirror.py +0 -270
  126. dls_dodal-1.32.0/tests/devices/unit_tests/test_oav.py +0 -284
  127. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.devcontainer/devcontainer.json +0 -0
  128. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
  129. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/actions/install_requirements/action.yml +0 -0
  130. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/dependabot.yml +0 -0
  131. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/pages/index.html +0 -0
  132. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/workflows/_check.yml +0 -0
  133. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/workflows/_dist.yml +0 -0
  134. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/workflows/_docs.yml +0 -0
  135. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/workflows/_test.yml +0 -0
  136. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/workflows/_tox.yml +0 -0
  137. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.github/workflows/periodic.yml +0 -0
  138. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.pre-commit-config.yaml +0 -0
  139. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.vscode/extensions.json +0 -0
  140. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.vscode/launch.json +0 -0
  141. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.vscode/settings.json +0 -0
  142. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/.vscode/tasks.json +0 -0
  143. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/LICENSE +0 -0
  144. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/catalog-info.yaml +0 -0
  145. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/_templates/autosummary/class.rst +0 -0
  146. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/_templates/autosummary/module.rst +0 -0
  147. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/assets/zocalo.png +0 -0
  148. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
  149. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
  150. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/explanations/decisions/COPYME +0 -0
  151. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/explanations/decisions.md +0 -0
  152. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/explanations.md +0 -0
  153. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/genindex.md +0 -0
  154. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/build-docs.md +0 -0
  155. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/contribute.md +0 -0
  156. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/coverage.md +0 -0
  157. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/dev-install.md +0 -0
  158. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/excalidraw.md +0 -0
  159. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/lint.md +0 -0
  160. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/lock-requirements.md +0 -0
  161. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/make-new-ophyd-async-device.rst +0 -0
  162. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/make-release.md +0 -0
  163. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/move-code.rst +0 -0
  164. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/pypi.md +0 -0
  165. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/run-tests.md +0 -0
  166. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/static-analysis.md +0 -0
  167. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/update-template.md +0 -0
  168. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to/zocalo.rst +0 -0
  169. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/how-to.md +0 -0
  170. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/images/dls-logo.svg +0 -0
  171. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/images/excalidraw-example.svg +0 -0
  172. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/index.md +0 -0
  173. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/tutorials/get_started.rst +0 -0
  174. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/tutorials/installation.md +0 -0
  175. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/docs/tutorials.md +0 -0
  176. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/setup.cfg +0 -0
  177. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/__init__.py +0 -0
  178. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
  179. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dls_dodal.egg-info/entry_points.txt +0 -0
  180. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dls_dodal.egg-info/top_level.txt +0 -0
  181. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/__main__.py +0 -0
  182. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/adsim.py +0 -0
  183. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamline_specific_utils/__init__.py +0 -0
  184. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/README.md +0 -0
  185. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/i13_1.py +0 -0
  186. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/i20_1.py +0 -0
  187. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/i23.py +0 -0
  188. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/p45.py +0 -0
  189. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/p99.py +0 -0
  190. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/beamlines/training_rig.py +0 -0
  191. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/cli.py +0 -0
  192. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/common/__init__.py +0 -0
  193. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/common/beamlines/__init__.py +0 -0
  194. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/common/beamlines/beamline_parameters.py +0 -0
  195. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/common/beamlines/beamline_utils.py +0 -0
  196. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/common/beamlines/device_helpers.py +0 -0
  197. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/common/coordination.py +0 -0
  198. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/common/maths.py +0 -0
  199. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/common/udc_directory_provider.py +0 -0
  200. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/common/visit.py +0 -0
  201. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/CTAB.py +0 -0
  202. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/__init__.py +0 -0
  203. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/adsim.py +0 -0
  204. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/aperture.py +0 -0
  205. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/areadetector/__init__.py +0 -0
  206. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/areadetector/adaravis.py +0 -0
  207. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/areadetector/adsim.py +0 -0
  208. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/areadetector/adutils.py +0 -0
  209. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/attenuator.py +0 -0
  210. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/cryostream.py +0 -0
  211. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/dcm.py +0 -0
  212. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/detector/__init__.py +0 -0
  213. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/detector/det_dim_constants.py +0 -0
  214. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
  215. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/detector/det_resolution.py +0 -0
  216. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/detector/detector.py +0 -0
  217. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/detector/detector_motion.py +0 -0
  218. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/fast_grid_scan.py +0 -0
  219. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/fluorescence_detector_motion.py +0 -0
  220. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/flux.py +0 -0
  221. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/hutch_shutter.py +0 -0
  222. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i03/__init__.py +0 -0
  223. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i04/transfocator.py +0 -0
  224. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i20_1/__init__.py +0 -0
  225. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i22/fswitch.py +0 -0
  226. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i22/nxsas.py +0 -0
  227. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i24/__init__.py +0 -0
  228. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i24/aperture.py +0 -0
  229. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i24/beamstop.py +0 -0
  230. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i24/dcm.py +0 -0
  231. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i24/i24_detector_motion.py +0 -0
  232. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i24/i24_vgonio.py +0 -0
  233. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/i24/pmac.py +0 -0
  234. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/ipin.py +0 -0
  235. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/linkam3.py +0 -0
  236. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/logging_ophyd_device.py +0 -0
  237. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/motors.py +0 -0
  238. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/oav/__init__.py +0 -0
  239. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/oav/microns_for_zoom_levels.json +0 -0
  240. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -0
  241. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
  242. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
  243. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/p45.py +0 -0
  244. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/p99/__init__.py +0 -0
  245. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/p99/sample_stage.py +0 -0
  246. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/s4_slit_gaps.py +0 -0
  247. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/scatterguard.py +0 -0
  248. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/scintillator.py +0 -0
  249. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/slits.py +0 -0
  250. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/status.py +0 -0
  251. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/synchrotron.py +0 -0
  252. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/thawer.py +0 -0
  253. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/training_rig/__init__.py +0 -0
  254. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/training_rig/sample_stage.py +0 -0
  255. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/turbo_slit.py +0 -0
  256. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/undulator_dcm.py +0 -0
  257. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/util/__init__.py +0 -0
  258. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/util/epics_util.py +0 -0
  259. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/util/motor_utils.py +0 -0
  260. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/util/save_panda.py +0 -0
  261. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/util/test_utils.py +0 -0
  262. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/webcam.py +0 -0
  263. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/xbpm_feedback.py +0 -0
  264. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/xspress3/xspress3.py +0 -0
  265. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
  266. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/zebra_controlled_shutter.py +0 -0
  267. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/zocalo/__init__.py +0 -0
  268. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
  269. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/log.py +0 -0
  270. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/parameters/experiment_parameter_base.py +0 -0
  271. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/src/dodal/plans/check_topup.py +0 -0
  272. {dls_dodal-1.32.0/tests → dls_dodal-1.34.1/system_tests}/__init__.py +0 -0
  273. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1}/system_tests/test_gridscan_system.py +0 -0
  274. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1}/system_tests/test_slit_gaps_system.py +0 -0
  275. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1}/system_tests/test_smargon_system.py +0 -0
  276. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1}/system_tests/test_synchrotron_system.py +0 -0
  277. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1}/system_tests/test_undulator_system.py +0 -0
  278. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1}/system_tests/test_zebra_system.py +0 -0
  279. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1}/system_tests/test_zocalo_results.py +0 -0
  280. {dls_dodal-1.32.0/tests/beamlines → dls_dodal-1.34.1/tests}/__init__.py +0 -0
  281. {dls_dodal-1.32.0/tests/beamlines/unit_tests → dls_dodal-1.34.1/tests/beamlines}/__init__.py +0 -0
  282. {dls_dodal-1.32.0/tests/common → dls_dodal-1.34.1/tests/beamlines/unit_tests}/__init__.py +0 -0
  283. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/beamlines/unit_tests/test_i03.py +0 -0
  284. {dls_dodal-1.32.0/tests/common/beamlines → dls_dodal-1.34.1/tests/common}/__init__.py +0 -0
  285. {dls_dodal-1.32.0/tests/devices → dls_dodal-1.34.1/tests/common/beamlines}/__init__.py +0 -0
  286. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/common/beamlines/test_beamline_parameters.py +0 -0
  287. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/common/beamlines/test_beamline_utils.py +0 -0
  288. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/common/beamlines/test_device_helpers.py +0 -0
  289. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/common/test_maths.py +0 -0
  290. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/common/test_udc_directory_provider.py +0 -0
  291. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/common/test_visit.py +0 -0
  292. {dls_dodal-1.32.0/tests/devices/i04 → dls_dodal-1.34.1/tests/devices}/__init__.py +0 -0
  293. {dls_dodal-1.32.0/tests/devices/system_tests → dls_dodal-1.34.1/tests/devices/i04}/__init__.py +0 -0
  294. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/i04/test_transfocator.py +0 -0
  295. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/i22/test_fswitch.py +0 -0
  296. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/i22/test_metadataholder.py +0 -0
  297. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/training_rig/test_sample_stage.py +0 -0
  298. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/__init__.py +0 -0
  299. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/conftest.py +0 -0
  300. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
  301. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/detector/test_det_resolution.py +0 -0
  302. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/detector/test_detector.py +0 -0
  303. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/i24/__init__.py +0 -0
  304. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/i24/test_dual_backlight.py +0 -0
  305. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/oav/__init__.py +0 -0
  306. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
  307. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
  308. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
  309. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_OAVCentring.json +0 -0
  310. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_aperture.py +0 -0
  311. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_attenuator.py +0 -0
  312. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_bart_robot.py +0 -0
  313. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_beam_converter.py +0 -0
  314. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
  315. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
  316. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  317. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  318. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_dcm.py +0 -0
  319. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_display.configuration +0 -0
  320. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_gridscan.py +0 -0
  321. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_hutch_shutter.py +0 -0
  322. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_jCameraManZoomLevels.xml +0 -0
  323. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_linkam3.py +0 -0
  324. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_lookup_table.txt +0 -0
  325. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_lookup_table_2.txt +0 -0
  326. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_shutter.py +0 -0
  327. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_slits.py +0 -0
  328. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_smargon.py +0 -0
  329. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_status.py +0 -0
  330. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_synchrotron.py +0 -0
  331. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_thawer.py +0 -0
  332. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_undulator.py +0 -0
  333. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_undulator_dcm.py +0 -0
  334. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_utils.py +0 -0
  335. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_webcam.py +0 -0
  336. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_xbpm_feedback.py +0 -0
  337. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_xspress3.py +0 -0
  338. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
  339. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/util/__init__.py +0 -0
  340. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
  341. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_beamline.py +0 -0
  342. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
  343. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_beamline_broken_dependency.py +0 -0
  344. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_beamline_dependencies.py +0 -0
  345. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_beamline_disordered_dependencies.py +0 -0
  346. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_beamline_misbehaving_builtins.py +0 -0
  347. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_beamline_some_devices_working.py +0 -0
  348. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_zocalo/README.rst +0 -0
  349. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_zocalo/__init__.py +0 -0
  350. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_zocalo/__main__.py +0 -0
  351. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
  352. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/plans/test_motor_util_plans.py +0 -0
  353. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/plans/test_topup_plan.py +0 -0
  354. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_cli.py +0 -0
  355. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/bad_beamlineParameters +0 -0
  356. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/i04_beamlineParameters +0 -0
  357. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  358. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
  359. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
  360. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/test_beamline_parameters.txt +0 -0
  361. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/test_det_dist_converter.txt +0 -0
  362. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/test_images/oav_snapshot_expected.png +0 -0
  363. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/test_images/oav_snapshot_test.png +0 -0
  364. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/topup_long_delay.txt +0 -0
  365. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_data/topup_short_params.txt +0 -0
  366. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/test_utils.py +0 -0
  367. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/unit_tests/__init__.py +0 -0
  368. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/unit_tests/test_cli.py +0 -0
  369. {dls_dodal-1.32.0 → dls_dodal-1.34.1}/tests/unit_tests/test_log.py +0 -0
@@ -1,9 +1,11 @@
1
1
  # Changes here will be overwritten by Copier
2
- _commit: 2.2.0
2
+ _commit: 2.5.0
3
3
  _src_path: gh:DiamondLightSource/python-copier-template
4
4
  author_email: dominic.oram@diamond.ac.uk
5
5
  author_name: Dominic Oram
6
+ component_lifecycle: production
6
7
  component_owner: group:data-acquisition
8
+ component_type: library
7
9
  description: Ophyd devices and other utils that could be used across DLS beamlines
8
10
  distribution_name: dls-dodal
9
11
  docker: false
@@ -24,4 +24,4 @@ It is recommended that developers use a [vscode devcontainer](https://code.visua
24
24
 
25
25
  This project was created using the [Diamond Light Source Copier Template](https://github.com/DiamondLightSource/python-copier-template) for Python projects.
26
26
 
27
- 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).
27
+ 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.5.0/how-to.html).
@@ -1,3 +1,5 @@
1
+ """Make switcher.json to allow docs to switch between different versions."""
2
+
1
3
  import json
2
4
  import logging
3
5
  from argparse import ArgumentParser
@@ -6,6 +8,7 @@ from subprocess import CalledProcessError, check_output
6
8
 
7
9
 
8
10
  def report_output(stdout: bytes, label: str) -> list[str]:
11
+ """Print and return something received frm stdout."""
9
12
  ret = stdout.decode().strip().split("\n")
10
13
  print(f"{label}: {ret}")
11
14
  return ret
@@ -52,14 +55,12 @@ def get_versions(ref: str, add: str | None) -> list[str]:
52
55
  return versions
53
56
 
54
57
 
55
- def write_json(path: Path, repository: str, versions: str):
58
+ def write_json(path: Path, repository: str, versions: list[str]):
59
+ """Write the JSON switcher to path."""
56
60
  org, repo_name = repository.split("/")
57
- pages_url = f"https://{org}.github.io"
58
- if repo_name != f"{org}.github.io":
59
- # Only add the repo name if it isn't the source for the org pages site
60
- pages_url += f"/{repo_name}"
61
61
  struct = [
62
- {"version": version, "url": f"{pages_url}/{version}/"} for version in versions
62
+ {"version": version, "url": f"https://{org}.github.io/{repo_name}/{version}/"}
63
+ for version in versions
63
64
  ]
64
65
  text = json.dumps(struct, indent=2)
65
66
  print(f"JSON switcher:\n{text}")
@@ -67,6 +68,7 @@ def write_json(path: Path, repository: str, versions: str):
67
68
 
68
69
 
69
70
  def main(args=None):
71
+ """Parse args and write switcher."""
70
72
  parser = ArgumentParser(
71
73
  description="Make a versions.json file from gh-pages directories"
72
74
  )
@@ -15,3 +15,5 @@ jobs:
15
15
 
16
16
  - name: Publish to PyPI using trusted publishing
17
17
  uses: pypa/gh-action-pypi-publish@release/v1
18
+ with:
19
+ attestations: false
@@ -23,7 +23,7 @@ jobs:
23
23
  - name: Create GitHub Release
24
24
  # We pin to the SHA, not the tag, for security reasons.
25
25
  # https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
26
- uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8
26
+ uses: softprops/action-gh-release@e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8 # v2.0.9
27
27
  with:
28
28
  prerelease: ${{ contains(github.ref_name, 'a') || contains(github.ref_name, 'b') || contains(github.ref_name, 'rc') }}
29
29
  files: "*"
@@ -21,7 +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"] # add 3.12 when p4p #145 is fixed
24
+ python-version: ["3.10", "3.11", "3.12"]
25
25
  include:
26
26
  # Include one that runs in the dev environment
27
27
  - runs-on: "ubuntu-latest"
@@ -57,6 +57,7 @@ tmp/
57
57
  # Sphinx documentation
58
58
  docs/_build/
59
59
  docs/reference/generated/
60
+ docs/_api
60
61
 
61
62
  # PyBuilder
62
63
  target/
@@ -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 \
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dls-dodal
3
- Version: 1.32.0
3
+ Version: 1.34.1
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
216
216
  License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
- Requires-Dist: ophyd-async<0.7,>=0.6
219
+ Requires-Dist: ophyd-async<0.8,>=0.7.0a1
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -263,7 +263,7 @@ Requires-Dist: types-aiofiles; extra == "dev"
263
263
  [![CI](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml/badge.svg)](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml)
264
264
  [![Coverage](https://codecov.io/gh/DiamondLightSource/dodal/branch/main/graph/badge.svg)](https://codecov.io/gh/DiamondLightSource/dodal)
265
265
  [![PyPI](https://img.shields.io/pypi/v/dls-dodal.svg)](https://pypi.org/project/dls-dodal)
266
- [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
266
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
267
267
 
268
268
  # dodal
269
269
 
@@ -1,7 +1,7 @@
1
1
  [![CI](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml/badge.svg)](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml)
2
2
  [![Coverage](https://codecov.io/gh/DiamondLightSource/dodal/branch/main/graph/badge.svg)](https://codecov.io/gh/DiamondLightSource/dodal)
3
3
  [![PyPI](https://img.shields.io/pypi/v/dls-dodal.svg)](https://pypi.org/project/dls-dodal)
4
- [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
4
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
5
5
 
6
6
  # dodal
7
7
 
@@ -0,0 +1,16 @@
1
+ :orphan:
2
+
3
+ ..
4
+ This page is not included in the TOC tree, but must exist so that the
5
+ autosummary pages are generated for dodal and all its
6
+ subpackages
7
+
8
+ API
9
+ ===
10
+
11
+ .. autosummary::
12
+ :toctree: _api
13
+ :template: custom-module-template.rst
14
+ :recursive:
15
+
16
+ dodal
@@ -0,0 +1,37 @@
1
+ {{ ('``' + fullname + '``') | underline }}
2
+
3
+ {%- set filtered_members = [] %}
4
+ {%- for item in members %}
5
+ {%- if item in functions + classes + exceptions + attributes %}
6
+ {% set _ = filtered_members.append(item) %}
7
+ {%- endif %}
8
+ {%- endfor %}
9
+
10
+ .. automodule:: {{ fullname }}
11
+ :members:
12
+
13
+ {% block modules %}
14
+ {% if modules %}
15
+ .. rubric:: Submodules
16
+
17
+ .. autosummary::
18
+ :toctree:
19
+ :template: custom-module-template.rst
20
+ :recursive:
21
+ {% for item in modules %}
22
+ {{ item }}
23
+ {%- endfor %}
24
+ {% endif %}
25
+ {% endblock %}
26
+
27
+ {% block members %}
28
+ {% if filtered_members %}
29
+ .. rubric:: Members
30
+
31
+ .. autosummary::
32
+ :nosignatures:
33
+ {% for item in filtered_members %}
34
+ {{ item }}
35
+ {%- endfor %}
36
+ {% endif %}
37
+ {% endblock %}
@@ -1,8 +1,9 @@
1
- # Configuration file for the Sphinx documentation builder.
2
- #
3
- # This file only contains a selection of the most common options. For a full
4
- # list see the documentation:
5
- # https://www.sphinx-doc.org/en/master/usage/configuration.html
1
+ """Configuration file for the Sphinx documentation builder.
2
+
3
+ This file only contains a selection of the most common options. For a full
4
+ list see the documentation:
5
+ https://www.sphinx-doc.org/en/master/usage/configuration.html
6
+ """
6
7
 
7
8
  import sys
8
9
  from inspect import isclass
@@ -33,6 +34,7 @@ else:
33
34
  extensions = [
34
35
  # Use this for generating API docs
35
36
  "sphinx.ext.autodoc",
37
+ # and making summary tables at the top of API docs
36
38
  "sphinx.ext.autosummary",
37
39
  # This can parse google style docstrings
38
40
  "sphinx.ext.napoleon",
@@ -91,6 +93,12 @@ autodoc_preserve_defaults = True
91
93
  autosummary_generate = True
92
94
  autosummary_imported_members = False
93
95
 
96
+ # Document only what is in __all__
97
+ autosummary_ignore_module_all = False
98
+
99
+ # Add any paths that contain templates here, relative to this directory.
100
+ templates_path = ["_templates"]
101
+
94
102
  # Output graphviz directive produced images in a scalable format
95
103
  graphviz_output_format = "svg"
96
104
 
@@ -11,7 +11,7 @@ Each beamline should have its own file in the ``doodal.beamlines`` folder, in wh
11
11
  beamline are instantiated. The file should be named after the colloquial name for the beamline. For example:
12
12
 
13
13
  * ``i03.py``
14
- * ``i04_1.py``
14
+ * ``i20_1.py``
15
15
  * ``vmxi.py``
16
16
 
17
17
  Beamline modules (in ``dodal.beamlines``) are code-as-configuration. They define the set of devices and common device
@@ -0,0 +1,8 @@
1
+ # Writing Tests in This Python Project
2
+
3
+ Testing is essential to maintain the integrity and reliability of the codebase. Follow the guidelines below to write tests for this project effectively.
4
+
5
+ ## Test Organization
6
+
7
+ - **Unit Tests**: Place unit tests for individual components in the `tests` directory, but take care to mirror the file structure of the `src` folder with the corresponding code files. Use the `test_*.py` naming convention for test files.
8
+ - **System Tests**: Tests that interact with DLS infrastructure, network, and filesystem should be placed in the top-level `systems_test` folder. This separation ensures that these tests are easily identifiable and can be run independently from unit tests.
@@ -21,6 +21,17 @@ should think about where to place them in the following order:
21
21
 
22
22
  This is in an effort to avoid duplication across facilities/beamlines.
23
23
 
24
+ Device Best Practices
25
+ ----------------------------
26
+
27
+ Ophyd-async directory contains a flowchart_ for a simplified decision tree about what interfaces
28
+ should a given device implement. In addition to this the following guidelines are strongly recommended:
29
+
30
+ #. Devices should contain only the PV suffixes that are generic for any instance of the device. See `PV Suffixes`_
31
+ #. Anything in a device that is expected to be set externally should be a signal. See `Use of signals`_
32
+ #. Devices should not hold state, when they are read they should read the hardware. See `Holding State`_
33
+
34
+
24
35
  PV Suffixes
25
36
  -----------
26
37
 
@@ -86,16 +97,78 @@ Instead you should make a soft signal:
86
97
 
87
98
  class MyDevice(Device):
88
99
  def __init__(self):
89
- self.param = create_soft_signal(str, "", self.name)
100
+ self.param = soft_signal_rw(str)
90
101
 
91
102
  my_device = MyDevice()
92
103
  def my_plan():
93
104
  yield from bps.mv(my_device.param, "new_value")
94
105
 
95
- Ophyd Devices best practices
96
- ----------------------------
97
106
 
98
- Ophyd-async directory contains a flowchart_ for a simplified decision tree about what interfaces
99
- should a given device implement.
107
+ Holding State
108
+ -------------
109
+
110
+ Devices should avoid holding state as much as possible. Ophyd devices are mostly trying to reflect the state of hardware and so when the device is read that hardware should be read.
111
+
112
+ If the device holds the state itself it is likely to not reflect the real hardware if:
113
+ * The device has just been initialised
114
+ * The hardware has changed independently e.g. via EPICS directly
115
+ * The hardware has failed to do what the device expected
116
+
117
+ For example, if I have a device that I would like to treat as moving in/out based on an underlying axis then it would be incorrect to implement it like this:
118
+
119
+ .. code-block:: python
120
+
121
+ class InOut(Enum):
122
+ IN = 0
123
+ OUT = 0
124
+
125
+ class MyDevice(Device):
126
+ def __init__(self):
127
+ self.underlying_motor = Motor("MOTOR")
128
+ with self.add_children_as_readables():
129
+ self.in_out, self._in_out_setter = soft_signal_r_and_setter(InOut)
130
+
131
+
132
+ @AsyncStatus.wrap
133
+ async def set(self, value: InOut):
134
+ if value == InOut.IN:
135
+ await self.underlying_motor.set(100)
136
+ else:
137
+ await self.underlying_motor.set(0)
138
+ self._in_out_setter(value)
139
+
140
+ While this may appear to work fine during normal operation the state of in_out is only ever updated if the ophyd device is set. It is incorrect to assume that underlying_motor only changes
141
+ based on this and so this has the issues listed above. Instead you should make sure to update in_out whenever the device is read e.g.
142
+
143
+ .. code-block:: python
144
+
145
+ class InOut(Enum):
146
+ IN = 0
147
+ OUT = 0
148
+
149
+ class MyDevice(Device):
150
+ def __init__(self):
151
+ self.underlying_motor = Motor("MOTOR")
152
+ with self.add_children_as_readables():
153
+ self.in_out = create_hardware_backed_soft_signal(InOut, self._get_in_out_from_hardware)
154
+
155
+ async def _get_in_out_from_hardware(self):
156
+ current_position = await self.underlying_motor.get_value()
157
+ if isclose(current_position, 0):
158
+ return InOut.IN
159
+ elif isclose(current_position, 100):
160
+ return InOut.OUT
161
+ else:
162
+ raise ValueError()
163
+
164
+
165
+ @AsyncStatus.wrap
166
+ async def set(self, value: InOut):
167
+ if value == InOut.IN:
168
+ await self.underlying_motor.set(100)
169
+ else:
170
+ await self.underlying_motor.set(0)
171
+
172
+ This will be simplified by https://github.com/bluesky/ophyd-async/issues/525
100
173
 
101
174
  .. _flowchart: https://blueskyproject.io/ophyd-async/main/how-to/choose-interfaces-for-devices.html
@@ -29,7 +29,7 @@ Supported Python Versions
29
29
  As a standard for the python versions to support, we should be matching the deprecation policy at
30
30
  https://numpy.org/neps/nep-0029-deprecation_policy.html.
31
31
 
32
- Currently supported versions are: 3.10, 3.11.
32
+ Currently supported versions are: 3.10, 3.11, 3.12. (As of the last edit of this document.)
33
33
 
34
34
  .. _documentation_standards:
35
35
 
@@ -6,7 +6,7 @@ Technical reference material including APIs and release notes.
6
6
  :maxdepth: 1
7
7
  :glob:
8
8
 
9
- reference/*
9
+ API <_api/dodal>
10
10
  genindex
11
11
  Release Notes <https://github.com/DiamondLightSource/dodal/releases>
12
12
  ```
@@ -6,6 +6,6 @@ Fixes #ISSUE
6
6
 
7
7
  ### Checks for reviewer
8
8
  - [ ] Would the PR title make sense to a scientist on a set of release notes
9
- - [ ] If a new device has been added does it follow the [standards](https://github.com/DiamondLightSource/dodal/wiki/Device-Standards)
9
+ - [ ] If a new device has been added does it follow the [standards](https://diamondlightsource.github.io/dodal/main/reference/device-standards.html)
10
10
  - [ ] If changing the API for a pre-existing device, ensure that any beamlines using this device have updated their Bluesky plans accordingly
11
11
  - [ ] Have the connection tests for the relevant beamline(s) been run via `dodal connect ${BEAMLINE}`
@@ -15,7 +15,7 @@ description = "Ophyd devices and other utils that could be used across DLS beaml
15
15
  dependencies = [
16
16
  "click",
17
17
  "ophyd",
18
- "ophyd-async>=0.6,<0.7",
18
+ "ophyd-async>=0.7.0a1,<0.8",
19
19
  "bluesky",
20
20
  "pyepics",
21
21
  "dataclasses-json",
@@ -24,10 +24,10 @@ dependencies = [
24
24
  "requests",
25
25
  "graypy",
26
26
  "pydantic>=2.0",
27
- "opencv-python-headless", # For pin-tip detection.
28
- "aioca", # Required for CA support with ophyd-async.
29
- "p4p", # Required for PVA support with ophyd-async.
30
- "numpy<2.0", # Unpin when https://github.com/bluesky/ophyd-async/issues/387 resolved
27
+ "opencv-python-headless", # For pin-tip detection.
28
+ "aioca", # Required for CA support with ophyd-async.
29
+ "p4p", # Required for PVA support with ophyd-async.
30
+ "numpy<2.0", # Unpin when https://github.com/bluesky/ophyd-async/issues/387 resolved
31
31
  "aiofiles",
32
32
  "aiohttp",
33
33
  "redis",
@@ -91,6 +91,7 @@ dodal = ["*.txt"]
91
91
  version_file = "src/dodal/_version.py"
92
92
 
93
93
  [tool.pyright]
94
+ typeCheckingMode = "standard"
94
95
  reportMissingImports = false # Ignore missing stubs in imported modules
95
96
 
96
97
  [tool.pytest.ini_options]
@@ -115,7 +116,7 @@ filterwarnings = [
115
116
  "ignore::DeprecationWarning:wheel",
116
117
  ]
117
118
  # Doctest python code in docs, python code in src docstrings, test functions in tests
118
- testpaths = "docs src tests"
119
+ testpaths = "docs src tests system_tests"
119
120
 
120
121
  [tool.coverage.report]
121
122
  exclude_also = [
@@ -176,3 +177,4 @@ lint.select = [
176
177
  # See https://github.com/DiamondLightSource/python-copier-template/issues/154
177
178
  # Remove this line to forbid private member access in tests
178
179
  "tests/**/*" = ["SLF001"]
180
+ "system_tests/**/*" = ["SLF001"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dls-dodal
3
- Version: 1.32.0
3
+ Version: 1.34.1
4
4
  Summary: Ophyd devices and other utils that could be used across DLS beamlines
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -216,7 +216,7 @@ Description-Content-Type: text/markdown
216
216
  License-File: LICENSE
217
217
  Requires-Dist: click
218
218
  Requires-Dist: ophyd
219
- Requires-Dist: ophyd-async<0.7,>=0.6
219
+ Requires-Dist: ophyd-async<0.8,>=0.7.0a1
220
220
  Requires-Dist: bluesky
221
221
  Requires-Dist: pyepics
222
222
  Requires-Dist: dataclasses-json
@@ -263,7 +263,7 @@ Requires-Dist: types-aiofiles; extra == "dev"
263
263
  [![CI](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml/badge.svg)](https://github.com/DiamondLightSource/dodal/actions/workflows/ci.yml)
264
264
  [![Coverage](https://codecov.io/gh/DiamondLightSource/dodal/branch/main/graph/badge.svg)](https://codecov.io/gh/DiamondLightSource/dodal)
265
265
  [![PyPI](https://img.shields.io/pypi/v/dls-dodal.svg)](https://pypi.org/project/dls-dodal)
266
- [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
266
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
267
267
 
268
268
  # dodal
269
269