dls-dodal 1.55.1__tar.gz → 1.56.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.
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/workflows/ci.yml +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.pre-commit-config.yaml +3 -3
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/PKG-INFO +2 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/conftest.py +16 -7
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/coverage.md +4 -0
- dls_dodal-1.56.0/docs/how-to/create-device.md +66 -0
- dls_dodal-1.56.0/docs/how-to/run-tests.md +61 -0
- dls_dodal-1.56.0/docs/how-to/write-tests.md +119 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/reference/standards.rst +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/pyproject.toml +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dls_dodal.egg-info/PKG-INFO +2 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dls_dodal.egg-info/SOURCES.txt +59 -26
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dls_dodal.egg-info/requires.txt +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/_version.py +16 -3
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/b01_1.py +6 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/b07.py +2 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/b07_1.py +2 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/b21.py +4 -24
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i03.py +53 -53
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i04.py +16 -38
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i09.py +3 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i09_1.py +2 -1
- dls_dodal-1.56.0/src/dodal/beamlines/i11.py +143 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i19_1.py +1 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i19_2.py +7 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i22.py +2 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i23.py +3 -3
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i24.py +6 -14
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/p38.py +1 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/p60.py +3 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/cli.py +11 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/__init__.py +4 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/beamlines/beamline_parameters.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/beamlines/beamline_utils.py +5 -1
- dls_dodal-1.56.0/src/dodal/common/enums.py +19 -0
- dls_dodal-1.56.0/src/dodal/common/watcher_utils.py +83 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/aithre_lasershaping/laser_robot.py +4 -9
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/aperturescatterguard.py +52 -12
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/apple2_undulator.py +0 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/b16/detector.py +1 -10
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/backlight.py +8 -20
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/bimorph_mirror.py +4 -7
- dls_dodal-1.56.0/src/dodal/devices/collimation_table.py +36 -0
- dls_dodal-1.56.0/src/dodal/devices/controllers.py +21 -0
- dls_dodal-1.56.0/src/dodal/devices/cryostream.py +109 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/current_amplifiers/femto.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/detector/detector_motion.py +1 -7
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/eiger.py +22 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/eiger_odin.py +2 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/__init__.py +2 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/abstract/__init__.py +0 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/abstract/base_detector.py +3 -25
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/abstract/base_driver_io.py +18 -9
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/abstract/base_region.py +34 -3
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/detector.py +24 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/enums.py +5 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/specs/detector.py +2 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/specs/driver_io.py +21 -26
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/specs/region.py +1 -1
- dls_dodal-1.56.0/src/dodal/devices/electron_analyser/util.py +33 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/vgscienta/__init__.py +3 -3
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/vgscienta/detector.py +2 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/vgscienta/driver_io.py +24 -32
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/vgscienta/enums.py +0 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/vgscienta/region.py +2 -31
- dls_dodal-1.56.0/src/dodal/devices/eurotherm.py +126 -0
- dls_dodal-1.56.0/src/dodal/devices/fluorescence_detector_motion.py +9 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/focusing_mirror.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i03/undulator_dcm.py +0 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i09/enums.py +8 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i10/diagnostics.py +4 -4
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i10/i10_apple2.py +3 -6
- dls_dodal-1.56.0/src/dodal/devices/i11/cyberstar_blower.py +34 -0
- dls_dodal-1.56.0/src/dodal/devices/i11/diff_stages.py +55 -0
- dls_dodal-1.56.0/src/dodal/devices/i11/mythen.py +165 -0
- dls_dodal-1.56.0/src/dodal/devices/i11/nx100robot.py +153 -0
- dls_dodal-1.56.0/src/dodal/devices/i11/spinner.py +30 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i13_1/merlin_controller.py +4 -4
- dls_dodal-1.56.0/src/dodal/devices/i19/diffractometer.py +34 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i19/shutter.py +11 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i22/dcm.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i22/fswitch.py +3 -12
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i24/aperture.py +3 -3
- dls_dodal-1.56.0/src/dodal/devices/i24/dcm.py +29 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i24/dual_backlight.py +11 -12
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i24/pmac.py +8 -7
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/mx_phase1/beamstop.py +10 -11
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/pin_image_recognition/__init__.py +0 -3
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/p60/enums.py +8 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/p60/lab_xray_source.py +3 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/pressure_jump_cell.py +77 -123
- dls_dodal-1.56.0/src/dodal/devices/scintillator.py +82 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/smargon.py +2 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/synchrotron.py +1 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/thawer.py +6 -11
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/undulator.py +3 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/util/epics_util.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/watsonmarlow323_pump.py +7 -7
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/xbpm_feedback.py +4 -6
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/xspress3/xspress3.py +0 -5
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/zocalo/zocalo_results.py +1 -3
- dls_dodal-1.56.0/src/dodal/testing/electron_analyser/__init__.py +6 -0
- dls_dodal-1.56.0/src/dodal/testing/electron_analyser/device_factory.py +59 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/system_tests/test_oav_system.py +6 -6
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/beamlines/unit_tests/test_b16.py +2 -11
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/beamlines/unit_tests/test_i24.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/common/beamlines/test_beamline_parameters.py +11 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/common/beamlines/test_beamline_utils.py +4 -6
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/common/beamlines/test_device_instantiation.py +2 -2
- dls_dodal-1.56.0/tests/common/test_watcher_utils.py +63 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/conftest.py +4 -4
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/aithre_lasershaping/test_goniometer.py +1 -2
- dls_dodal-1.56.0/tests/devices/i10/test_data/__init__.py +32 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/i10/test_i10Apple2.py +26 -19
- dls_dodal-1.56.0/tests/devices/i11/test_i11devices.py +201 -0
- dls_dodal-1.56.0/tests/devices/i11/test_mythen.py +82 -0
- dls_dodal-1.56.0/tests/devices/i19/test_diffractometer.py +36 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/i19/test_shutter.py +5 -5
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/i22/test_fswitch.py +5 -4
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/i22/test_metadataholder.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/mx_phase1/test_beamstop.py +21 -18
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/b07_1/test_ccmc.py +5 -7
- dls_dodal-1.56.0/tests/devices/unit_tests/detector/test_data/__init__.py +7 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/detector/test_det_resolution.py +4 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/detector/test_detector.py +2 -1
- dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/abstract/test_base_detector.py +93 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/electron_analyser/abstract/test_base_driver_io.py +27 -15
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/electron_analyser/abstract/test_base_region.py +49 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/electron_analyser/conftest.py +8 -6
- dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/helper_util/__init__.py +8 -0
- dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/helper_util/assert_func.py +16 -0
- dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/helper_util/sequence.py +34 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/electron_analyser/specs/test_detector.py +10 -10
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/electron_analyser/specs/test_driver_io.py +23 -36
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/electron_analyser/specs/test_region.py +8 -8
- dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/test_data/__init__.py +8 -0
- dls_dodal-1.55.1/tests/devices/unit_tests/electron_analyser/abstract/test_base_detector.py → dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/test_detector.py +44 -42
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/electron_analyser/vgscienta/test_detector.py +9 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/electron_analyser/vgscienta/test_driver_io.py +24 -49
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/electron_analyser/vgscienta/test_region.py +9 -35
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/i03/test_undulator_dcm.py +17 -10
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/i09/test_dcm.py +1 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/i24/test_dual_backlight.py +18 -12
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/i24/test_focus_mirrors.py +3 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/i24/test_pilatus_metadata.py +3 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/i24/test_pmac.py +23 -13
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/i24/test_vgonio.py +3 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/oav/conftest.py +4 -6
- dls_dodal-1.56.0/tests/devices/unit_tests/oav/test_data/__init__.py +13 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/oav/test_oav.py +5 -5
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/oav/test_oav_parameters.py +8 -7
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/oav/test_oav_to_redis_forwarder.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/oav/test_oav_utils.py +2 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/oav/test_snapshot_image_processing.py +6 -2
- dls_dodal-1.56.0/tests/devices/unit_tests/oav/test_snapshots.py +188 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/p60/test_lab_xray_source.py +2 -6
- dls_dodal-1.56.0/tests/devices/unit_tests/test.png +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_aperture_scatterguard.py +136 -9
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_apple2_undulator.py +4 -4
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_backlight.py +17 -17
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_baton.py +1 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_bimorph_mirror.py +1 -2
- dls_dodal-1.56.0/tests/devices/unit_tests/test_controllers.py +16 -0
- dls_dodal-1.56.0/tests/devices/unit_tests/test_daq_configuration/__init__.py +6 -0
- dls_dodal-1.56.0/tests/devices/unit_tests/test_daq_configuration/domain/__init__.py +10 -0
- dls_dodal-1.56.0/tests/devices/unit_tests/test_daq_configuration/lookup/__init__.py +17 -0
- dls_dodal-1.56.0/tests/devices/unit_tests/test_data/__init__.py +13 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_eiger.py +7 -4
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_focusing_mirror.py +3 -9
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_gridscan.py +2 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_hutch_shutter.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_motors.py +1 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_pressure_jump_cell.py +192 -49
- dls_dodal-1.56.0/tests/devices/unit_tests/test_scintillator.py +97 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_smargon.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_synchrotron.py +8 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_tetramm.py +1 -3
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_thawer.py +8 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_turbo_slit.py +2 -3
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_undulator.py +10 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_utils.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_webcam.py +1 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_xbpm_feedback.py +2 -2
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_zebra.py +2 -3
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_zocalo_results.py +1 -1
- dls_dodal-1.56.0/tests/devices/unit_tests/util/test_data/__init__.py +19 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/util/test_lookup_tables.py +32 -15
- dls_dodal-1.56.0/tests/plan_stubs/__init__.py +0 -0
- dls_dodal-1.56.0/tests/plan_stubs/test_data/__init__.py +11 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plan_stubs/test_data_session.py +8 -1
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plan_stubs/test_motor_util_plans.py +10 -8
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plan_stubs/test_topup_plan.py +24 -19
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plan_stubs/test_wrapped_stubs.py +2 -3
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plans/conftest.py +7 -10
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plans/test_bimorph.py +3 -3
- dls_dodal-1.56.0/tests/test_data/__init__.py +17 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/test_utils.py +5 -12
- dls_dodal-1.56.0/tests/unit_tests/__init__.py +0 -0
- dls_dodal-1.55.1/.talismanrc +0 -10
- dls_dodal-1.55.1/docs/how-to/create-device.md +0 -32
- dls_dodal-1.55.1/docs/how-to/run-tests.md +0 -44
- dls_dodal-1.55.1/docs/how-to/write-tests.md +0 -8
- dls_dodal-1.55.1/src/dodal/devices/CTAB.py +0 -41
- dls_dodal-1.55.1/src/dodal/devices/cryostream.py +0 -19
- dls_dodal-1.55.1/src/dodal/devices/electron_analyser/util.py +0 -13
- dls_dodal-1.55.1/src/dodal/devices/fluorescence_detector_motion.py +0 -16
- dls_dodal-1.55.1/src/dodal/devices/i24/dcm.py +0 -33
- dls_dodal-1.55.1/src/dodal/devices/scintillator.py +0 -10
- dls_dodal-1.55.1/tests/constants.py +0 -3
- dls_dodal-1.55.1/tests/devices/unit_tests/electron_analyser/util.py +0 -86
- dls_dodal-1.55.1/tests/devices/unit_tests/oav/test_snapshots.py +0 -162
- dls_dodal-1.55.1/tests/devices/unit_tests/test_lookup_table_2.txt +0 -5
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.copier-answers.yml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.devcontainer/devcontainer.json +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/CODEOWNERS +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/CONTRIBUTING.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/ISSUE_TEMPLATE/issue_template.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/actions/install_requirements/action.yml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/dependabot.yml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/pages/index.html +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/pages/make_switcher.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/scripts/check_test_durations.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/workflows/_dist.yml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/workflows/_docs.yml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/workflows/_pypi.yml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/workflows/_release.yml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/workflows/_test.yml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/workflows/_tox.yml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.github/workflows/periodic.yml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.gitignore +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.vscode/extensions.json +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.vscode/launch.json +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.vscode/settings.json +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/.vscode/tasks.json +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/Dockerfile +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/LICENSE +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/README.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/catalog-info.yaml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/_templates/autosummary/class.rst +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/_templates/autosummary/module.rst +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/_templates/custom-module-template.rst +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/assets/where-to-put-dodal-logic.png +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/assets/zocalo.png +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/conf.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations/decisions/0003-codeowners.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations/decisions/0004-make-devices-factory.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations/decisions/0005-standardise-devices-at-epics-level.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations/decisions/COPYME +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations/decisions.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations/reviews.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations/umls/apple2_design.png +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations/umls/i10_id_design.png +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/explanations.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/genindex.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/build-docs.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/contribute.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/create-beamline.rst +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/dev-install.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/excalidraw.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/external-io-devices.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/lint.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/lock-requirements.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/make-release.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/move-code.rst +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/pypi.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/static-analysis.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/update-template.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to/zocalo.rst +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/how-to.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/images/dls-logo.svg +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/images/excalidraw-example.svg +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/index.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/reference/api.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/reference/device-standards.rst +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/reference.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/tutorials/get_started.rst +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/tutorials/installation.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/docs/tutorials.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/pull_request_template.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/setup.cfg +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dls_dodal.egg-info/dependency_links.txt +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dls_dodal.egg-info/entry_points.txt +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dls_dodal.egg-info/top_level.txt +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/__main__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamline_specific_utils/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamline_specific_utils/i03.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamline_specific_utils/i05_shared.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/README.md +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/adsim.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/aithre.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/b16.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/b18.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i02_1.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i05.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i05_1.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i09_2.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i10.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i13_1.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i18.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i19_optics.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/i20_1.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/k11.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/p45.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/p99.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/beamlines/training_rig.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/beamlines/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/beamlines/device_helpers.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/coordination.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/crystal_metadata.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/data_util.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/device_utils.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/maths.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/types.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/udc_directory_provider.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/common/visit.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/aithre_lasershaping/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/aithre_lasershaping/goniometer.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/aperture.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/areadetector/plugins/CAM.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/areadetector/plugins/MJPG.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/attenuator/attenuator.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/attenuator/filter.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/attenuator/filter_selections.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/b07/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/b07/enums.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/b07_1/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/b07_1/ccmc.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/b07_1/enums.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/b16/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/baton.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/common_dcm.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/current_amplifiers/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/current_amplifiers/current_amplifier.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/current_amplifiers/current_amplifier_detector.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/current_amplifiers/sr570.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/current_amplifiers/struck_scaler_counter.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/detector/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/detector/det_dim_constants.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/detector/det_dist_to_beam_converter.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/detector/det_resolution.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/detector/detector.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/diamond_filter.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/abstract/types.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/specs/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/specs/enums.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/electron_analyser/types.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/fast_grid_scan.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/flux.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/hutch_shutter.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i03/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i03/dcm.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i04/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i04/constants.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i04/murko_results.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i04/transfocator.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i05/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i05/enums.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i09/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i09/dcm.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i09_1/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i09_1/enums.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i10/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i10/i10_setting_data.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i10/mirrors.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i10/rasor/rasor_current_amp.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i10/rasor/rasor_motors.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i10/rasor/rasor_scaler_cards.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i10/slits.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i13_1/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i13_1/merlin.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i18/KBMirror.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i18/diode.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i19/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i19/beamstop.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i19/blueapi_device.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i19/hutch_access.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i20_1/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i22/nxsas.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i24/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i24/beam_center.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i24/beamstop.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i24/focus_mirrors.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i24/pilatus_metadata.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/i24/vgonio.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/ipin.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/linkam3.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/motors.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/oav_calculations.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/oav_detector.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/oav_parameters.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/oav_to_redis_forwarder.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/pin_image_recognition/manual_test.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/pin_image_recognition/utils.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/snapshots/grid_overlay.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/snapshots/snapshot.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/snapshots/snapshot_image_processing.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/snapshots/snapshot_with_grid.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/oav/utils.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/p45.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/p60/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/p99/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/p99/andor2_point.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/p99/sample_stage.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/pgm.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/positioner.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/qbpm.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/robot.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/s4_slit_gaps.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/slits.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/status.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/tetramm.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/turbo_slit.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/util/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/util/adjuster_plans.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/util/lookup_tables.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/util/test_utils.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/webcam.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/xspress3/xspress3_channel.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/zebra/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/zebra/zebra.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/zebra/zebra_constants_mapping.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/zebra/zebra_controlled_shutter.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/zocalo/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/zocalo/zocalo_constants.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/devices/zocalo/zocalo_interaction.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/log.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/parameters/experiment_parameter_base.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plan_stubs/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plan_stubs/check_topup.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plan_stubs/data_session.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plan_stubs/motor_utils.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plan_stubs/wrapped.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plans/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plans/bimorph.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plans/configure_arm_trigger_and_disarm_detector.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plans/preprocessors/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plans/preprocessors/verify_undulator_gap.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plans/save_panda.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plans/scanspec.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plans/verify_undulator_gap.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/plans/wrapped.py +0 -0
- {dls_dodal-1.55.1/system_tests → dls_dodal-1.56.0/src/dodal/testing}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/src/dodal/utils.py +0 -0
- {dls_dodal-1.55.1/tests → dls_dodal-1.56.0/system_tests}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/system_tests/test_adsim.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/system_tests/test_cli.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/system_tests/test_oav_to_redis_system.py +0 -0
- {dls_dodal-1.55.1/tests/beamlines → dls_dodal-1.56.0/tests}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/beamlines/unit_tests → dls_dodal-1.56.0/tests/beamlines}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/common → dls_dodal-1.56.0/tests/beamlines/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/beamlines/unit_tests/test_i03.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/beamlines/unit_tests/test_mapping.py +0 -0
- {dls_dodal-1.55.1/tests/common/beamlines → dls_dodal-1.56.0/tests/common}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/devices → dls_dodal-1.56.0/tests/common/beamlines}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/common/test_coordination.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/common/test_crystal_metadata.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/common/test_maths.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/common/test_udc_directory_provider.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/common/test_visit.py +0 -0
- {dls_dodal-1.55.1/tests/devices/i03 → dls_dodal-1.56.0/tests/devices}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/devices/i04 → dls_dodal-1.56.0/tests/devices/i03}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/devices/i19 → dls_dodal-1.56.0/tests/devices/i04}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/i04/test_murko_results.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/i04/test_transfocator.py +0 -0
- {dls_dodal-1.55.1/tests/devices/i10/lookupTables → dls_dodal-1.56.0/tests/devices/i10/test_data}/IDEnergy2GapCalibrations.csv +0 -0
- {dls_dodal-1.55.1/tests/devices/i10/lookupTables → dls_dodal-1.56.0/tests/devices/i10/test_data}/IDEnergy2PhaseCalibrations.csv +0 -0
- {dls_dodal-1.55.1/tests/devices/i10/lookupTables → dls_dodal-1.56.0/tests/devices/i10/test_data}/expectedIDEnergy2GapCalibrationsIdd.pkl +0 -0
- {dls_dodal-1.55.1/tests/devices/i10/lookupTables → dls_dodal-1.56.0/tests/devices/i10/test_data}/expectedIDEnergy2GapCalibrationsIdu.pkl +0 -0
- {dls_dodal-1.55.1/tests/devices/i10/lookupTables → dls_dodal-1.56.0/tests/devices/i10/test_data}/expectedIDEnergy2PhaseCalibrationsidd.pkl +0 -0
- {dls_dodal-1.55.1/tests/devices/i10/lookupTables → dls_dodal-1.56.0/tests/devices/i10/test_data}/expectedIDEnergy2PhaseCalibrationsidu.pkl +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/i13_1/test_merlin.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/i18/test_kb_mirror.py +0 -0
- {dls_dodal-1.55.1/tests/devices/mx_phase1 → dls_dodal-1.56.0/tests/devices/i19}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/i19/test_beamstop.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/i22/test_dcm.py +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests → dls_dodal-1.56.0/tests/devices/mx_phase1}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/test_common_dcm.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/test_diamond_filter.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/test_motors.py +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests/electron_analyser → dls_dodal-1.56.0/tests/devices/unit_tests}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/current_amplifier/test_femto.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/current_amplifier/test_sr570.py +0 -0
- {dls_dodal-1.55.1/tests → dls_dodal-1.56.0/tests/devices/unit_tests/detector}/test_data/test_det_dist_converter.txt +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/detector/test_det_dim_constants.py +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests/electron_analyser/abstract → dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests/electron_analyser/specs → dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/abstract}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests/electron_analyser/vgscienta → dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/specs}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/test_data/electron_analyser → dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/test_data}/specs_sequence.seq +0 -0
- {dls_dodal-1.55.1/tests/test_data/electron_analyser → dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/test_data}/vgscienta_sequence.seq +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/electron_analyser/test_util.py +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests/i03 → dls_dodal-1.56.0/tests/devices/unit_tests/electron_analyser/vgscienta}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests/i09 → dls_dodal-1.56.0/tests/devices/unit_tests/i03}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/i03/test_dcm.py +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests/i24 → dls_dodal-1.56.0/tests/devices/unit_tests/i09}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests/oav → dls_dodal-1.56.0/tests/devices/unit_tests/i24}/__init__.py +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests/util → dls_dodal-1.56.0/tests/devices/unit_tests/oav}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py +0 -0
- {dls_dodal-1.55.1/tests/test_data/test_images → dls_dodal-1.56.0/tests/devices/unit_tests/oav/test_data}/oav_snapshot_expected.png +0 -0
- {dls_dodal-1.55.1/tests/test_data/test_images → dls_dodal-1.56.0/tests/devices/unit_tests/oav/test_data}/oav_snapshot_test.png +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests → dls_dodal-1.56.0/tests/devices/unit_tests/oav/test_data}/test_OAVCentring.json +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/oav/test_grid_overlay.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/p99/test_p99_stage.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_aperture.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_attenuator.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_bart_robot.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_beam_converter.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests → dls_dodal-1.56.0/tests/devices/unit_tests/test_data}/test_beamline_undulator_to_gap_lookup_table.txt +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests → dls_dodal-1.56.0/tests/devices/unit_tests/test_data}/test_lookup_table.txt +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_odin.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_positioner.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_qbpm.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_slits.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_status.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_watsonmarlow323_pump.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_xspress3.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_zebra_constants_mapping.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_zebra_shutter.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/test_zocalo_interaction.py +0 -0
- {dls_dodal-1.55.1/tests/fake_zocalo → dls_dodal-1.56.0/tests/devices/unit_tests/util}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/util/test_adjuster_plans.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/util/test_beamline_specific_utils.py +0 -0
- {dls_dodal-1.55.1/tests → dls_dodal-1.56.0/tests/devices/unit_tests/util}/test_data/test_beamline_dcm_roll_converter.txt +0 -0
- {dls_dodal-1.55.1/tests → dls_dodal-1.56.0/tests/devices/unit_tests/util}/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt +0 -0
- {dls_dodal-1.55.1/tests → dls_dodal-1.56.0/tests/devices/unit_tests/util}/test_data/test_beamline_dcm_roll_converter_reversed.txt +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/devices/unit_tests/util/test_save_panda.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_beamline.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_beamline_all_devices_raise_exception.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_beamline_broken_dependency.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_beamline_dependencies.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_beamline_disordered_dependencies.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_beamline_misbehaving_builtins.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_beamline_some_devices_working.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_device_factory_beamline.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_zocalo/README.rst +0 -0
- {dls_dodal-1.55.1/tests/unit_tests → dls_dodal-1.56.0/tests/fake_zocalo}/__init__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_zocalo/__main__.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/fake_zocalo/dls_start_fake_zocalo.sh +0 -0
- {dls_dodal-1.55.1/tests → dls_dodal-1.56.0/tests/plan_stubs}/test_data/topup_long_delay.txt +0 -0
- {dls_dodal-1.55.1/tests → dls_dodal-1.56.0/tests/plan_stubs}/test_data/topup_short_params.txt +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plans/test_compliance.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plans/test_configure_arm_trigger_and_disarm_detector.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plans/test_preprocessors/test_verify_undulator_gap.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plans/test_scanspec.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plans/test_verify_undulator_gap_plan.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/plans/test_wrapped.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/preprocessors/test_filesystem_metadata.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/test_data/bad_beamlineParameters +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/test_data/i04_beamlineParameters +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/test_data/test_beamline_parameters.txt +0 -0
- {dls_dodal-1.55.1/tests/devices/unit_tests → dls_dodal-1.56.0/tests/test_data}/test_display.configuration +0 -0
- /dls_dodal-1.55.1/tests/devices/unit_tests/test_jCameraManZoomLevels.xml → /dls_dodal-1.56.0/tests/test_data/test_oav_zoom_levels.xml +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/unit_tests/test_cli.py +0 -0
- {dls_dodal-1.55.1 → dls_dodal-1.56.0}/tests/unit_tests/test_log.py +0 -0
|
@@ -19,7 +19,7 @@ jobs:
|
|
|
19
19
|
strategy:
|
|
20
20
|
matrix:
|
|
21
21
|
runs-on: ["ubuntu-latest"] # can add windows-latest, macos-latest
|
|
22
|
-
python-version: ["3.11", "3.12"]
|
|
22
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
23
23
|
include:
|
|
24
24
|
# Include one that runs in the dev environment
|
|
25
25
|
- runs-on: "ubuntu-latest"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.56.0
|
|
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>, Joseph Ware <joseph.ware@diamond.ac.uk>, Oliver Silvester <Oliver.Silvester@diamond.ac.uk>, Noemi Frisina <noemi.frisina@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -216,7 +216,7 @@ License-File: LICENSE
|
|
|
216
216
|
Requires-Dist: click
|
|
217
217
|
Requires-Dist: ophyd
|
|
218
218
|
Requires-Dist: ophyd-async[ca,pva]>=0.13.0
|
|
219
|
-
Requires-Dist: bluesky
|
|
219
|
+
Requires-Dist: bluesky==1.14.2
|
|
220
220
|
Requires-Dist: pyepics
|
|
221
221
|
Requires-Dist: dataclasses-json
|
|
222
222
|
Requires-Dist: pillow
|
|
@@ -14,6 +14,12 @@ from ophyd_async.core import (
|
|
|
14
14
|
PathInfo,
|
|
15
15
|
PathProvider,
|
|
16
16
|
)
|
|
17
|
+
from tests.devices.i10.test_data import LOOKUP_TABLE_PATH
|
|
18
|
+
from tests.devices.unit_tests.test_daq_configuration import MOCK_DAQ_CONFIG_PATH
|
|
19
|
+
from tests.test_data import (
|
|
20
|
+
TEST_DISPLAY_CONFIG,
|
|
21
|
+
TEST_OAV_ZOOM_LEVELS_XML,
|
|
22
|
+
)
|
|
17
23
|
|
|
18
24
|
from dodal.common.beamlines import beamline_utils
|
|
19
25
|
from dodal.common.visit import (
|
|
@@ -23,12 +29,11 @@ from dodal.common.visit import (
|
|
|
23
29
|
)
|
|
24
30
|
from dodal.log import LOGGER, GELFTCPHandler, set_up_all_logging_handlers
|
|
25
31
|
|
|
26
|
-
MOCK_DAQ_CONFIG_PATH = "tests/devices/unit_tests/test_daq_configuration"
|
|
27
32
|
mock_paths = [
|
|
28
33
|
("DAQ_CONFIGURATION_PATH", MOCK_DAQ_CONFIG_PATH),
|
|
29
|
-
("ZOOM_PARAMS_FILE",
|
|
30
|
-
("DISPLAY_CONFIG",
|
|
31
|
-
("LOOK_UPTABLE_DIR",
|
|
34
|
+
("ZOOM_PARAMS_FILE", TEST_OAV_ZOOM_LEVELS_XML),
|
|
35
|
+
("DISPLAY_CONFIG", TEST_DISPLAY_CONFIG),
|
|
36
|
+
("LOOK_UPTABLE_DIR", LOOKUP_TABLE_PATH),
|
|
32
37
|
]
|
|
33
38
|
mock_attributes_table = {
|
|
34
39
|
"i03": mock_paths,
|
|
@@ -119,8 +124,8 @@ def failed_status(failure: Exception) -> Status:
|
|
|
119
124
|
return status
|
|
120
125
|
|
|
121
126
|
|
|
122
|
-
@pytest.fixture
|
|
123
|
-
async def
|
|
127
|
+
@pytest.fixture(scope="session", autouse=True)
|
|
128
|
+
async def _ensure_running_bluesky_event_loop():
|
|
124
129
|
RE = RunEngine()
|
|
125
130
|
# make sure the event loop is thoroughly up and running before we try to create
|
|
126
131
|
# any ophyd_async devices which might need it
|
|
@@ -129,4 +134,8 @@ async def RE():
|
|
|
129
134
|
await asyncio.sleep(0)
|
|
130
135
|
if time.monotonic() > timeout:
|
|
131
136
|
raise TimeoutError("This really shouldn't happen but just in case...")
|
|
132
|
-
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
@pytest.fixture()
|
|
140
|
+
async def RE():
|
|
141
|
+
yield RunEngine()
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
Code coverage is reported to the command line and to a `cov.xml` file by the command `tox -e tests`. The file is uploaded to the Codecov service in CI.
|
|
5
5
|
|
|
6
|
+
If you are using VSCode IDE, you can also check code coverage by right-clicking on the test icon and selecting `Run with coverage`. This will re-run the test and highlight line numbers in your file:
|
|
7
|
+
- Green = covered by tests
|
|
8
|
+
- Red = not covered (and ideally should be tested)
|
|
9
|
+
|
|
6
10
|
## Adding a Codecov Token
|
|
7
11
|
|
|
8
12
|
If the repo is not hosted in DiamondLightSource, then you need to visit `https://app.codecov.io/account/gh/<org_name>/org-upload-token` to generate a token for your org, and store it as a secret named `CODECOV_TOKEN` in `https://github.com/organizations/<org_name>/settings/secrets/actions`
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
Creating a new device
|
|
2
|
+
---------------------
|
|
3
|
+
|
|
4
|
+
Devices in dodal use the ophyd-async framework for hardware abstraction at Diamond Light Source. Before starting, [review where your code should live](../reference/device-standards.rst#where_to_put_devices) to avoid duplication and ensure maintainability.
|
|
5
|
+
|
|
6
|
+
Reusing an existing class
|
|
7
|
+
=========================
|
|
8
|
+
|
|
9
|
+
Before creating a new device, always check if a suitable class already exists in dodal or ophyd-async. This helps avoid duplication, ensures maintainability, and leverages tested code.
|
|
10
|
+
|
|
11
|
+
- **Motors:** Use [Motor](https://github.com/bluesky/ophyd-async/blob/main/src/ophyd_async/epics/motor.py) for EPICS motor records.
|
|
12
|
+
- **Storage ring signals:** Use [Synchrotron](https://github.com/DiamondLightSource/dodal/blob/main/src/dodal/devices/synchrotron.py).
|
|
13
|
+
- **AreaDetectors:** Use [StandardDetector](https://github.com/bluesky/ophyd-async/tree/main/src/ophyd_async/epics/adcore) or [adcore](https://github.com/bluesky/ophyd-async/tree/main/src/ophyd_async/epics/adcore).
|
|
14
|
+
|
|
15
|
+
If a compatible device class exists:
|
|
16
|
+
- Use it and add it to the [beamline](./create-beamline.rst) to avoid re-implementation and share improvements.
|
|
17
|
+
- You can use ophyd-async's [DeviceVector](https://blueskyproject.io/ophyd-async/main/explanations/decisions/0006-procedural-device-definitions.html) to handle a collection of identical devices.
|
|
18
|
+
- If a device class only differs by PV address, request an alias in the EPICS IOC support module with the relevant controls support team.
|
|
19
|
+
- If that's not possible (e.g. proprietary support), add configurability to the dodal device class, ensuring defaults match existing patterns and that `dodal connect` still works for current devices.
|
|
20
|
+
- Avoid dynamic attribute assignment (e.g. dicts of motors) as it hinders type checking and plan writing.
|
|
21
|
+
- Use static attributes and type hints for better IDE support and maintainability.
|
|
22
|
+
|
|
23
|
+
Many device classes in `dodal.devices.motors` represent physical relationships between motors, such as `Stage` and `XYStage`.
|
|
24
|
+
|
|
25
|
+
For example, only use `XYStage` for two perpendicular motors (e.g. X and Y axes on a sample table):
|
|
26
|
+
- Do not use `XYStage` for unrelated motors or for motors that move in the same axis (e.g. coarse and fine adjustment).
|
|
27
|
+
- Only a device that represents a group of motors with a physical relationship, should be defined in `motor`.
|
|
28
|
+
- If your class define an `XYStage` but you need extra signals or behaviour, extend the `XYStage` class outside the `motor` module.
|
|
29
|
+
|
|
30
|
+
**Only if no suitable class exists**, create a new device that connects to the required signals. During review, refactor to align with existing devices if needed, using inheritance or composition to deduplicate code.
|
|
31
|
+
|
|
32
|
+
Writing a device class
|
|
33
|
+
======================
|
|
34
|
+
|
|
35
|
+
To develop a new device, get an initial, working version of your code into the main branch as early as possible. Test it at the beamline, then continuously make and merge small changes into main. This approach prevents pull requests from becoming long-standing issues.
|
|
36
|
+
|
|
37
|
+
- **Follow the [ophyd-async device implementation guide](https://blueskyproject.io/ophyd-async/main/tutorials/implementing-devices.html)** to structure your device code.
|
|
38
|
+
- **Choose the right base class** by consulting the [base class guide](https://blueskyproject.io/ophyd-async/main/how-to/choose-right-baseclass.html), If your device needs to move, you'll need to extend the Movable protocol. For detailed guidance on when and how to do this, refer to the [movable device guide](https://blueskyproject.io/ophyd-async/main/explanations/when-to-extend-movable.html).
|
|
39
|
+
- **Write thorough unit tests** for all expected use cases. Reference the [ophyd-async device test guide](https://blueskyproject.io/ophyd-async/main/tutorials/implementing-devices.html) for best practices.
|
|
40
|
+
- **Validate your device on the beamline** and keep notes of any issues for later fixes.
|
|
41
|
+
- **Make use of type annotations** so that pyright will validate that you are passing around values that ophyd-async will accept.
|
|
42
|
+
- Use `dodal connect <beamline>` to check device connectivity and `cainfo <PV address>` to confirm PVs and datatypes. You can check a PV's datatype by using the `cainfo <PV address>` command. If the datatype is an enum, `caget -d 31 <PV address>` will also display the available enums that the PV takes. Common enums are defined in `ophyd-async.core` for devices to use, but you can define custom ones when suitable (inheriting from `ophyd_async.core` `StrictEnum`, `SupersetEnum` or `SubsetEnum`). The values should be capitalised e.g `ON = "On"`. If the PV expects upper case for the enum (e.g `ON = "ON"`), please speak to the relevant controls engineer(s) to get this changed if possible. For more infomation, please visit [here](https://blueskyproject.io/ophyd-async/main/explanations/decisions/0008-signal-types.html).
|
|
43
|
+
|
|
44
|
+
**Device best practices for Bluesky plans:**
|
|
45
|
+
|
|
46
|
+
- Interact with devices in plans only through the Bluesky [messages protocol](https://blueskyproject.io/bluesky/main/msg.html), such as `yield from bps.abs_set(...)` or `yield Msg("set", ...)`.
|
|
47
|
+
- Avoid calling device methods directly inside plans (e.g. `device.do_thing()`), as this breaks the abstraction and can lead to unpredictable behaviour.
|
|
48
|
+
|
|
49
|
+
Example of what **not** to do:
|
|
50
|
+
```python
|
|
51
|
+
class MyDevice(Device):
|
|
52
|
+
def do_thing(...):
|
|
53
|
+
...
|
|
54
|
+
|
|
55
|
+
def my_plan():
|
|
56
|
+
yield from bps.set(...)
|
|
57
|
+
device.do_thing() # This is bad: do not call device methods directly in plans
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Tip:**
|
|
61
|
+
|
|
62
|
+
- If you are unsure how to represent a PV as a Signal, seek feedback early (for example, by opening a draft PR).
|
|
63
|
+
- Whenever possible, merge with existing devices—comprehensive tests help ensure changes do not break current functionality.
|
|
64
|
+
- Document any device-specific quirks or limitations for future maintainers.
|
|
65
|
+
|
|
66
|
+
For further guidance, see the [ophyd-async documentation](https://blueskyproject.io/ophyd-async/main/how-to/choose-interfaces-for-devices.html).
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
(using-pytest)=
|
|
2
|
+
|
|
3
|
+
# Running tests
|
|
4
|
+
|
|
5
|
+
Tests can be ran locally via command line or VSCode IDE.
|
|
6
|
+
|
|
7
|
+
## With VSCode
|
|
8
|
+
|
|
9
|
+
When using the VSCode IDE, it should automatically detect all of your tests and display one of the following icons next to each of them:
|
|
10
|
+
- Grey circle (not run yet)
|
|
11
|
+
- Green circle with a tick (test passed)
|
|
12
|
+
- Red circle with a cross (test failed)
|
|
13
|
+
|
|
14
|
+
You can also check code coverage by right-clicking on the test icon and selecting `Run with coverage`. This will re-run the test and highlight line numbers in your file:
|
|
15
|
+
- Green = covered by tests
|
|
16
|
+
- Red = not covered (and ideally should be tested)
|
|
17
|
+
|
|
18
|
+
To view all tests inside dodal, use the `Test Explorer` panel (flask icon) in VSCode. It displays all of your tests in a hierarchy, which you can run individually or in groups. It also shows the pass/fail icons mentioned above. Clicking on an item will run all tests beneath it in the hierarchy.
|
|
19
|
+
|
|
20
|
+
If you find that your tests are being skipped or not recognised by `pytest`, check for any syntax errors as this will block the tests being found. You can also check to see if there is an error output at the very bottom of the `Test Explorer` panel. This is usually caused by invalid syntax in your test file, or by circular dependencies in the code you are testing.
|
|
21
|
+
|
|
22
|
+
## Command line
|
|
23
|
+
|
|
24
|
+
### Unit tests
|
|
25
|
+
|
|
26
|
+
`pytest` will find functions in the project that [look like tests][look like tests], and run them to check for errors.
|
|
27
|
+
|
|
28
|
+
When you have some fully working tests then you can run it with coverage:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
$ tox -e tests
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
It will also report coverage to the command line and to `cov.xml`.
|
|
35
|
+
|
|
36
|
+
[look like tests]: https://docs.pytest.org/explanation/goodpractices.html#test-discovery
|
|
37
|
+
[pytest]: https://pytest.org/
|
|
38
|
+
|
|
39
|
+
### System tests locally
|
|
40
|
+
|
|
41
|
+
The system tests require the ``example-services`` project:
|
|
42
|
+
|
|
43
|
+
```commandline
|
|
44
|
+
git clone git@github.com:epics-containers/example-services.git
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Then you need to launch some of the example ioc containers. Please note, this requires docker-compose not
|
|
48
|
+
podman-compose:
|
|
49
|
+
|
|
50
|
+
```commandline
|
|
51
|
+
module load docker-compose
|
|
52
|
+
cd example-services
|
|
53
|
+
. ./environment.sh
|
|
54
|
+
podman compose up -d bl01t-di-cam-01 bl01t-mo-sim-01 ca-gateway
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Once this is done, then the system tests can be run:
|
|
58
|
+
|
|
59
|
+
```commandline
|
|
60
|
+
tox -e system-report
|
|
61
|
+
```
|
|
@@ -0,0 +1,119 @@
|
|
|
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.
|
|
9
|
+
|
|
10
|
+
## Writing a test for a device
|
|
11
|
+
We aim for high test coverage in dodal with small, modular test functions. To achieve this, we need to test the relevant methods by writing tests for the class/method we are creating or changing, checking for the expected behaviour. We shouldn't need to write tests for parent classes unless we alter their behaviour.
|
|
12
|
+
|
|
13
|
+
Below, a `StandardReadable` example device is defined which also implements the `Stageable` protocol.
|
|
14
|
+
|
|
15
|
+
```Python
|
|
16
|
+
from bluesky import RunEngine
|
|
17
|
+
from bluesky.protocols import Stageable
|
|
18
|
+
from ophyd_async.core import AsyncStatus, OnOff, StandardReadable
|
|
19
|
+
from ophyd_async.epics.core import epics_signal_rw
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class MyDevice(StandardReadable, Stageable):
|
|
23
|
+
"""
|
|
24
|
+
Example device demostrating how to test stage, unstage and read methods.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(self, prefix: str, name: str = "") -> None:
|
|
28
|
+
"""
|
|
29
|
+
Constructor for setting up instance of device.
|
|
30
|
+
|
|
31
|
+
Parameters:
|
|
32
|
+
prefix: Base PV used for connecting signals.
|
|
33
|
+
name: Name of the device.
|
|
34
|
+
"""
|
|
35
|
+
with self.add_children_as_readables():
|
|
36
|
+
self.signal_a = epics_signal_rw(float, prefix + "A")
|
|
37
|
+
self.signal_b = epics_signal_rw(OnOff, prefix + "B")
|
|
38
|
+
|
|
39
|
+
super().__init__(name)
|
|
40
|
+
|
|
41
|
+
@AsyncStatus.wrap
|
|
42
|
+
async def stage(self):
|
|
43
|
+
"""
|
|
44
|
+
Setup device by moving signal_a to ON.
|
|
45
|
+
"""
|
|
46
|
+
await asyncio.gather(super().stage(), self.signal_b.set(OnOff.ON))
|
|
47
|
+
|
|
48
|
+
@AsyncStatus.wrap
|
|
49
|
+
async def unstage(self):
|
|
50
|
+
"""
|
|
51
|
+
Once device is finished, set signal_b back to OFF.
|
|
52
|
+
"""
|
|
53
|
+
await asyncio.gather(super().stage(), self.signal_b.set(OnOff.OFF))
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
In this example, we need to test the `stage` and `unstage` methods. For more complex devices, it is also a good idea to test the `read` method to confirm that we get the expected read signals back when this method is called.
|
|
57
|
+
|
|
58
|
+
We use [pytest](https://docs.pytest.org/en/stable/contents.html) for writing tests in dodal. A core part of this library is the use of fixtures. A fixture is a function decorated with `@pytest.fixture` that provides setup/teardown or reusable test data for your tests. It is defined once and can be reused across multiple tests. Fixtures are mainly used to define devices and then inject them into each test.
|
|
59
|
+
|
|
60
|
+
To help set up a device, they are created with the `init_devices(mock=True)` function from `ophyd_async.core`, which automatically initialises the device in mock mode. The `RunEngine` fixture is passed when creating a device to ensure there is an event loop available when connecting signals. This fixture is defined in `dodal/tests/conftest.py`, which is a special file recognised by `pytest`. It defines fixtures that are automatically available to any test in the same directory (and its subdirectories) without needing to import them. This is useful for defining common setup code once without duplicating it across test files.
|
|
61
|
+
|
|
62
|
+
In order for `pytest` to detect something as a test, a function should begin with `test_*`. The test function should be self-descriptive about what it is testing, and it is acceptable (even encouraged) to have longer names for test functions for clarity.
|
|
63
|
+
|
|
64
|
+
```Python
|
|
65
|
+
import asyncio
|
|
66
|
+
|
|
67
|
+
import pytest
|
|
68
|
+
from bluesky import RunEngine
|
|
69
|
+
from bluesky import plan_stubs as bps
|
|
70
|
+
from ophyd_async.core import OnOff, init_devices
|
|
71
|
+
from ophyd_async.testing import assert_reading, get_mock_put, partial_reading
|
|
72
|
+
from dodal.device.my_device import MyDevice
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
# RunEngine is needed to make sure there is an event loop when creating device.
|
|
76
|
+
@pytest.fixture
|
|
77
|
+
async def sim_my_device(RE: RunEngine) -> MyDevice:
|
|
78
|
+
async with init_devices(mock=True):
|
|
79
|
+
sim_my_device = MyDevice("TEST:")
|
|
80
|
+
return sim_my_device
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def test_my_device_stage(sim_my_device: MyDevice, RE: RunEngine) -> None:
|
|
84
|
+
RE(bps.stage(sim_my_device, wait=True), wait=True)
|
|
85
|
+
get_mock_put(sim_my_device.signal_b).assert_called_once_with(OnOff.ON, wait=True)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def test_my_device_unstage(sim_my_device: MyDevice, RE: RunEngine) -> None:
|
|
89
|
+
RE(bps.unstage(sim_my_device, wait=True), wait=True)
|
|
90
|
+
get_mock_put(sim_my_device.signal_b).assert_called_once_with(OnOff.OFF, wait=True)
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
You should test the output of a device when the device has many signals read and you want to ensure the correct ones are read at the correct times, or when the `read` method of it or one of its signals (e.g. a DerivedSignal) requires testing. Functions are defined in `ophyd-async` to aid with this. `assert_reading` allows us to compare the readings generated from a `Readable` device to the expected results.
|
|
95
|
+
|
|
96
|
+
```Python
|
|
97
|
+
async def test_my_device_read(sim_my_device: MyDevice, RE: RunEngine) -> None:
|
|
98
|
+
prefix = sim_my_device.name
|
|
99
|
+
await assert_reading(
|
|
100
|
+
sim_my_device,
|
|
101
|
+
{
|
|
102
|
+
f"{prefix}-signal_a": partial_reading(OnOff.ON),
|
|
103
|
+
f"{prefix}-signal_b": partial_reading(0),
|
|
104
|
+
},
|
|
105
|
+
)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
`partial_reading` wraps the value given in a mapping like `{"value": ANY}`, so we are actually checking that the reading matches the expected structure.
|
|
109
|
+
|
|
110
|
+
```Python
|
|
111
|
+
prefix = sim_my_device.name
|
|
112
|
+
await assert_reading(
|
|
113
|
+
sim_my_device,
|
|
114
|
+
{
|
|
115
|
+
f"{prefix}-signal_a" : {"value": OnOff.ON},
|
|
116
|
+
f"{prefix}-signal_b" : {"value": 0},
|
|
117
|
+
}
|
|
118
|
+
)
|
|
119
|
+
```
|
|
@@ -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.11, 3.12. (As of the last edit of this document.)
|
|
32
|
+
Currently supported versions are: 3.11, 3.12, 3.13. (As of the last edit of this document.)
|
|
33
33
|
|
|
34
34
|
.. _documentation_standards:
|
|
35
35
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.56.0
|
|
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>, Joseph Ware <joseph.ware@diamond.ac.uk>, Oliver Silvester <Oliver.Silvester@diamond.ac.uk>, Noemi Frisina <noemi.frisina@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -216,7 +216,7 @@ License-File: LICENSE
|
|
|
216
216
|
Requires-Dist: click
|
|
217
217
|
Requires-Dist: ophyd
|
|
218
218
|
Requires-Dist: ophyd-async[ca,pva]>=0.13.0
|
|
219
|
-
Requires-Dist: bluesky
|
|
219
|
+
Requires-Dist: bluesky==1.14.2
|
|
220
220
|
Requires-Dist: pyepics
|
|
221
221
|
Requires-Dist: dataclasses-json
|
|
222
222
|
Requires-Dist: pillow
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
.copier-answers.yml
|
|
2
2
|
.gitignore
|
|
3
3
|
.pre-commit-config.yaml
|
|
4
|
-
.talismanrc
|
|
5
4
|
Dockerfile
|
|
6
5
|
LICENSE
|
|
7
6
|
README.md
|
|
@@ -112,6 +111,7 @@ src/dodal/beamlines/i09.py
|
|
|
112
111
|
src/dodal/beamlines/i09_1.py
|
|
113
112
|
src/dodal/beamlines/i09_2.py
|
|
114
113
|
src/dodal/beamlines/i10.py
|
|
114
|
+
src/dodal/beamlines/i11.py
|
|
115
115
|
src/dodal/beamlines/i13_1.py
|
|
116
116
|
src/dodal/beamlines/i18.py
|
|
117
117
|
src/dodal/beamlines/i19_1.py
|
|
@@ -132,15 +132,16 @@ src/dodal/common/coordination.py
|
|
|
132
132
|
src/dodal/common/crystal_metadata.py
|
|
133
133
|
src/dodal/common/data_util.py
|
|
134
134
|
src/dodal/common/device_utils.py
|
|
135
|
+
src/dodal/common/enums.py
|
|
135
136
|
src/dodal/common/maths.py
|
|
136
137
|
src/dodal/common/types.py
|
|
137
138
|
src/dodal/common/udc_directory_provider.py
|
|
138
139
|
src/dodal/common/visit.py
|
|
140
|
+
src/dodal/common/watcher_utils.py
|
|
139
141
|
src/dodal/common/beamlines/__init__.py
|
|
140
142
|
src/dodal/common/beamlines/beamline_parameters.py
|
|
141
143
|
src/dodal/common/beamlines/beamline_utils.py
|
|
142
144
|
src/dodal/common/beamlines/device_helpers.py
|
|
143
|
-
src/dodal/devices/CTAB.py
|
|
144
145
|
src/dodal/devices/__init__.py
|
|
145
146
|
src/dodal/devices/aperture.py
|
|
146
147
|
src/dodal/devices/aperturescatterguard.py
|
|
@@ -148,11 +149,14 @@ src/dodal/devices/apple2_undulator.py
|
|
|
148
149
|
src/dodal/devices/backlight.py
|
|
149
150
|
src/dodal/devices/baton.py
|
|
150
151
|
src/dodal/devices/bimorph_mirror.py
|
|
152
|
+
src/dodal/devices/collimation_table.py
|
|
151
153
|
src/dodal/devices/common_dcm.py
|
|
154
|
+
src/dodal/devices/controllers.py
|
|
152
155
|
src/dodal/devices/cryostream.py
|
|
153
156
|
src/dodal/devices/diamond_filter.py
|
|
154
157
|
src/dodal/devices/eiger.py
|
|
155
158
|
src/dodal/devices/eiger_odin.py
|
|
159
|
+
src/dodal/devices/eurotherm.py
|
|
156
160
|
src/dodal/devices/fast_grid_scan.py
|
|
157
161
|
src/dodal/devices/fluorescence_detector_motion.py
|
|
158
162
|
src/dodal/devices/flux.py
|
|
@@ -250,6 +254,11 @@ src/dodal/devices/i10/slits.py
|
|
|
250
254
|
src/dodal/devices/i10/rasor/rasor_current_amp.py
|
|
251
255
|
src/dodal/devices/i10/rasor/rasor_motors.py
|
|
252
256
|
src/dodal/devices/i10/rasor/rasor_scaler_cards.py
|
|
257
|
+
src/dodal/devices/i11/cyberstar_blower.py
|
|
258
|
+
src/dodal/devices/i11/diff_stages.py
|
|
259
|
+
src/dodal/devices/i11/mythen.py
|
|
260
|
+
src/dodal/devices/i11/nx100robot.py
|
|
261
|
+
src/dodal/devices/i11/spinner.py
|
|
253
262
|
src/dodal/devices/i13_1/__init__.py
|
|
254
263
|
src/dodal/devices/i13_1/merlin.py
|
|
255
264
|
src/dodal/devices/i13_1/merlin_controller.py
|
|
@@ -258,6 +267,7 @@ src/dodal/devices/i18/diode.py
|
|
|
258
267
|
src/dodal/devices/i19/__init__.py
|
|
259
268
|
src/dodal/devices/i19/beamstop.py
|
|
260
269
|
src/dodal/devices/i19/blueapi_device.py
|
|
270
|
+
src/dodal/devices/i19/diffractometer.py
|
|
261
271
|
src/dodal/devices/i19/hutch_access.py
|
|
262
272
|
src/dodal/devices/i19/shutter.py
|
|
263
273
|
src/dodal/devices/i20_1/__init__.py
|
|
@@ -324,6 +334,9 @@ src/dodal/plans/verify_undulator_gap.py
|
|
|
324
334
|
src/dodal/plans/wrapped.py
|
|
325
335
|
src/dodal/plans/preprocessors/__init__.py
|
|
326
336
|
src/dodal/plans/preprocessors/verify_undulator_gap.py
|
|
337
|
+
src/dodal/testing/__init__.py
|
|
338
|
+
src/dodal/testing/electron_analyser/__init__.py
|
|
339
|
+
src/dodal/testing/electron_analyser/device_factory.py
|
|
327
340
|
system_tests/__init__.py
|
|
328
341
|
system_tests/test_adsim.py
|
|
329
342
|
system_tests/test_cli.py
|
|
@@ -331,7 +344,6 @@ system_tests/test_oav_system.py
|
|
|
331
344
|
system_tests/test_oav_to_redis_system.py
|
|
332
345
|
tests/__init__.py
|
|
333
346
|
tests/conftest.py
|
|
334
|
-
tests/constants.py
|
|
335
347
|
tests/fake_beamline.py
|
|
336
348
|
tests/fake_beamline_all_devices_raise_exception.py
|
|
337
349
|
tests/fake_beamline_broken_dependency.py
|
|
@@ -353,6 +365,7 @@ tests/common/test_crystal_metadata.py
|
|
|
353
365
|
tests/common/test_maths.py
|
|
354
366
|
tests/common/test_udc_directory_provider.py
|
|
355
367
|
tests/common/test_visit.py
|
|
368
|
+
tests/common/test_watcher_utils.py
|
|
356
369
|
tests/common/beamlines/__init__.py
|
|
357
370
|
tests/common/beamlines/test_beamline_parameters.py
|
|
358
371
|
tests/common/beamlines/test_beamline_utils.py
|
|
@@ -367,16 +380,20 @@ tests/devices/i04/__init__.py
|
|
|
367
380
|
tests/devices/i04/test_murko_results.py
|
|
368
381
|
tests/devices/i04/test_transfocator.py
|
|
369
382
|
tests/devices/i10/test_i10Apple2.py
|
|
370
|
-
tests/devices/i10/
|
|
371
|
-
tests/devices/i10/
|
|
372
|
-
tests/devices/i10/
|
|
373
|
-
tests/devices/i10/
|
|
374
|
-
tests/devices/i10/
|
|
375
|
-
tests/devices/i10/
|
|
383
|
+
tests/devices/i10/test_data/IDEnergy2GapCalibrations.csv
|
|
384
|
+
tests/devices/i10/test_data/IDEnergy2PhaseCalibrations.csv
|
|
385
|
+
tests/devices/i10/test_data/__init__.py
|
|
386
|
+
tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdd.pkl
|
|
387
|
+
tests/devices/i10/test_data/expectedIDEnergy2GapCalibrationsIdu.pkl
|
|
388
|
+
tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidd.pkl
|
|
389
|
+
tests/devices/i10/test_data/expectedIDEnergy2PhaseCalibrationsidu.pkl
|
|
390
|
+
tests/devices/i11/test_i11devices.py
|
|
391
|
+
tests/devices/i11/test_mythen.py
|
|
376
392
|
tests/devices/i13_1/test_merlin.py
|
|
377
393
|
tests/devices/i18/test_kb_mirror.py
|
|
378
394
|
tests/devices/i19/__init__.py
|
|
379
395
|
tests/devices/i19/test_beamstop.py
|
|
396
|
+
tests/devices/i19/test_diffractometer.py
|
|
380
397
|
tests/devices/i19/test_shutter.py
|
|
381
398
|
tests/devices/i22/test_dcm.py
|
|
382
399
|
tests/devices/i22/test_fswitch.py
|
|
@@ -384,7 +401,7 @@ tests/devices/i22/test_metadataholder.py
|
|
|
384
401
|
tests/devices/mx_phase1/__init__.py
|
|
385
402
|
tests/devices/mx_phase1/test_beamstop.py
|
|
386
403
|
tests/devices/unit_tests/__init__.py
|
|
387
|
-
tests/devices/unit_tests/
|
|
404
|
+
tests/devices/unit_tests/test.png
|
|
388
405
|
tests/devices/unit_tests/test_aperture.py
|
|
389
406
|
tests/devices/unit_tests/test_aperture_scatterguard.py
|
|
390
407
|
tests/devices/unit_tests/test_apple2_undulator.py
|
|
@@ -393,21 +410,18 @@ tests/devices/unit_tests/test_backlight.py
|
|
|
393
410
|
tests/devices/unit_tests/test_bart_robot.py
|
|
394
411
|
tests/devices/unit_tests/test_baton.py
|
|
395
412
|
tests/devices/unit_tests/test_beam_converter.py
|
|
396
|
-
tests/devices/unit_tests/test_beamline_undulator_to_gap_lookup_table.txt
|
|
397
413
|
tests/devices/unit_tests/test_bimorph_mirror.py
|
|
398
|
-
tests/devices/unit_tests/
|
|
414
|
+
tests/devices/unit_tests/test_controllers.py
|
|
399
415
|
tests/devices/unit_tests/test_eiger.py
|
|
400
416
|
tests/devices/unit_tests/test_focusing_mirror.py
|
|
401
417
|
tests/devices/unit_tests/test_gridscan.py
|
|
402
418
|
tests/devices/unit_tests/test_hutch_shutter.py
|
|
403
|
-
tests/devices/unit_tests/test_jCameraManZoomLevels.xml
|
|
404
|
-
tests/devices/unit_tests/test_lookup_table.txt
|
|
405
|
-
tests/devices/unit_tests/test_lookup_table_2.txt
|
|
406
419
|
tests/devices/unit_tests/test_motors.py
|
|
407
420
|
tests/devices/unit_tests/test_odin.py
|
|
408
421
|
tests/devices/unit_tests/test_positioner.py
|
|
409
422
|
tests/devices/unit_tests/test_pressure_jump_cell.py
|
|
410
423
|
tests/devices/unit_tests/test_qbpm.py
|
|
424
|
+
tests/devices/unit_tests/test_scintillator.py
|
|
411
425
|
tests/devices/unit_tests/test_slits.py
|
|
412
426
|
tests/devices/unit_tests/test_smargon.py
|
|
413
427
|
tests/devices/unit_tests/test_status.py
|
|
@@ -432,18 +446,26 @@ tests/devices/unit_tests/current_amplifier/test_sr570.py
|
|
|
432
446
|
tests/devices/unit_tests/detector/test_det_dim_constants.py
|
|
433
447
|
tests/devices/unit_tests/detector/test_det_resolution.py
|
|
434
448
|
tests/devices/unit_tests/detector/test_detector.py
|
|
449
|
+
tests/devices/unit_tests/detector/test_data/__init__.py
|
|
450
|
+
tests/devices/unit_tests/detector/test_data/test_det_dist_converter.txt
|
|
435
451
|
tests/devices/unit_tests/electron_analyser/__init__.py
|
|
436
452
|
tests/devices/unit_tests/electron_analyser/conftest.py
|
|
453
|
+
tests/devices/unit_tests/electron_analyser/test_detector.py
|
|
437
454
|
tests/devices/unit_tests/electron_analyser/test_util.py
|
|
438
|
-
tests/devices/unit_tests/electron_analyser/util.py
|
|
439
455
|
tests/devices/unit_tests/electron_analyser/abstract/__init__.py
|
|
440
456
|
tests/devices/unit_tests/electron_analyser/abstract/test_base_detector.py
|
|
441
457
|
tests/devices/unit_tests/electron_analyser/abstract/test_base_driver_io.py
|
|
442
458
|
tests/devices/unit_tests/electron_analyser/abstract/test_base_region.py
|
|
459
|
+
tests/devices/unit_tests/electron_analyser/helper_util/__init__.py
|
|
460
|
+
tests/devices/unit_tests/electron_analyser/helper_util/assert_func.py
|
|
461
|
+
tests/devices/unit_tests/electron_analyser/helper_util/sequence.py
|
|
443
462
|
tests/devices/unit_tests/electron_analyser/specs/__init__.py
|
|
444
463
|
tests/devices/unit_tests/electron_analyser/specs/test_detector.py
|
|
445
464
|
tests/devices/unit_tests/electron_analyser/specs/test_driver_io.py
|
|
446
465
|
tests/devices/unit_tests/electron_analyser/specs/test_region.py
|
|
466
|
+
tests/devices/unit_tests/electron_analyser/test_data/__init__.py
|
|
467
|
+
tests/devices/unit_tests/electron_analyser/test_data/specs_sequence.seq
|
|
468
|
+
tests/devices/unit_tests/electron_analyser/test_data/vgscienta_sequence.seq
|
|
447
469
|
tests/devices/unit_tests/electron_analyser/vgscienta/__init__.py
|
|
448
470
|
tests/devices/unit_tests/electron_analyser/vgscienta/test_detector.py
|
|
449
471
|
tests/devices/unit_tests/electron_analyser/vgscienta/test_driver_io.py
|
|
@@ -470,24 +492,42 @@ tests/devices/unit_tests/oav/test_snapshot_image_processing.py
|
|
|
470
492
|
tests/devices/unit_tests/oav/test_snapshots.py
|
|
471
493
|
tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect.py
|
|
472
494
|
tests/devices/unit_tests/oav/image_recognition/test_pin_tip_detect_utils.py
|
|
495
|
+
tests/devices/unit_tests/oav/test_data/__init__.py
|
|
496
|
+
tests/devices/unit_tests/oav/test_data/oav_snapshot_expected.png
|
|
497
|
+
tests/devices/unit_tests/oav/test_data/oav_snapshot_test.png
|
|
498
|
+
tests/devices/unit_tests/oav/test_data/test_OAVCentring.json
|
|
473
499
|
tests/devices/unit_tests/p60/test_lab_xray_source.py
|
|
474
500
|
tests/devices/unit_tests/p99/test_p99_stage.py
|
|
501
|
+
tests/devices/unit_tests/test_daq_configuration/__init__.py
|
|
502
|
+
tests/devices/unit_tests/test_daq_configuration/domain/__init__.py
|
|
475
503
|
tests/devices/unit_tests/test_daq_configuration/domain/beamlineParameters
|
|
476
504
|
tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt
|
|
477
505
|
tests/devices/unit_tests/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt
|
|
506
|
+
tests/devices/unit_tests/test_daq_configuration/lookup/__init__.py
|
|
507
|
+
tests/devices/unit_tests/test_data/__init__.py
|
|
508
|
+
tests/devices/unit_tests/test_data/test_beamline_undulator_to_gap_lookup_table.txt
|
|
509
|
+
tests/devices/unit_tests/test_data/test_lookup_table.txt
|
|
478
510
|
tests/devices/unit_tests/util/__init__.py
|
|
479
511
|
tests/devices/unit_tests/util/test_adjuster_plans.py
|
|
480
512
|
tests/devices/unit_tests/util/test_beamline_specific_utils.py
|
|
481
513
|
tests/devices/unit_tests/util/test_lookup_tables.py
|
|
482
514
|
tests/devices/unit_tests/util/test_save_panda.py
|
|
515
|
+
tests/devices/unit_tests/util/test_data/__init__.py
|
|
516
|
+
tests/devices/unit_tests/util/test_data/test_beamline_dcm_roll_converter.txt
|
|
517
|
+
tests/devices/unit_tests/util/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt
|
|
518
|
+
tests/devices/unit_tests/util/test_data/test_beamline_dcm_roll_converter_reversed.txt
|
|
483
519
|
tests/fake_zocalo/README.rst
|
|
484
520
|
tests/fake_zocalo/__init__.py
|
|
485
521
|
tests/fake_zocalo/__main__.py
|
|
486
522
|
tests/fake_zocalo/dls_start_fake_zocalo.sh
|
|
523
|
+
tests/plan_stubs/__init__.py
|
|
487
524
|
tests/plan_stubs/test_data_session.py
|
|
488
525
|
tests/plan_stubs/test_motor_util_plans.py
|
|
489
526
|
tests/plan_stubs/test_topup_plan.py
|
|
490
527
|
tests/plan_stubs/test_wrapped_stubs.py
|
|
528
|
+
tests/plan_stubs/test_data/__init__.py
|
|
529
|
+
tests/plan_stubs/test_data/topup_long_delay.txt
|
|
530
|
+
tests/plan_stubs/test_data/topup_short_params.txt
|
|
491
531
|
tests/plans/conftest.py
|
|
492
532
|
tests/plans/test_bimorph.py
|
|
493
533
|
tests/plans/test_compliance.py
|
|
@@ -497,19 +537,12 @@ tests/plans/test_verify_undulator_gap_plan.py
|
|
|
497
537
|
tests/plans/test_wrapped.py
|
|
498
538
|
tests/plans/test_preprocessors/test_verify_undulator_gap.py
|
|
499
539
|
tests/preprocessors/test_filesystem_metadata.py
|
|
540
|
+
tests/test_data/__init__.py
|
|
500
541
|
tests/test_data/bad_beamlineParameters
|
|
501
542
|
tests/test_data/i04_beamlineParameters
|
|
502
|
-
tests/test_data/test_beamline_dcm_roll_converter.txt
|
|
503
|
-
tests/test_data/test_beamline_dcm_roll_converter_non_monotonic.txt
|
|
504
|
-
tests/test_data/test_beamline_dcm_roll_converter_reversed.txt
|
|
505
543
|
tests/test_data/test_beamline_parameters.txt
|
|
506
|
-
tests/test_data/
|
|
507
|
-
tests/test_data/
|
|
508
|
-
tests/test_data/topup_short_params.txt
|
|
509
|
-
tests/test_data/electron_analyser/specs_sequence.seq
|
|
510
|
-
tests/test_data/electron_analyser/vgscienta_sequence.seq
|
|
511
|
-
tests/test_data/test_images/oav_snapshot_expected.png
|
|
512
|
-
tests/test_data/test_images/oav_snapshot_test.png
|
|
544
|
+
tests/test_data/test_display.configuration
|
|
545
|
+
tests/test_data/test_oav_zoom_levels.xml
|
|
513
546
|
tests/unit_tests/__init__.py
|
|
514
547
|
tests/unit_tests/test_cli.py
|
|
515
548
|
tests/unit_tests/test_log.py
|