ophyd-async 0.3a6__tar.gz → 0.3rc2__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.
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/PKG-INFO +1 -1
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/how-to/write-tests-for-devices.rst +5 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/_version.py +1 -1
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/__init__.py +3 -5
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/mock_signal_backend.py +5 -8
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/mock_signal_utils.py +10 -10
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/signal_backend.py +1 -1
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async.egg-info/PKG-INFO +1 -1
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_mock_signal_backend.py +32 -27
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/demo/test_demo.py +24 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.codecov.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.copier-answers.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.devcontainer/devcontainer.json +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.git-blame-ignore-revs +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/CONTRIBUTING.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/actions/install_requirements/action.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/dependabot.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/pages/index.html +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/pages/make_switcher.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/workflows/_check.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/workflows/_dist.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/workflows/_docs.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/workflows/_pypi.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/workflows/_release.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/workflows/_test.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/workflows/_tox.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/workflows/ci.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.github/workflows/periodic.yml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.gitignore +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.mailmap +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/.pre-commit-config.yaml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/Dockerfile +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/LICENSE +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/README.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/_templates/README +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/_templates/custom-class-template.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/_templates/custom-module-template.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/conf.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/examples/epics_demo.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/examples/foo_detector.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/decisions/0003-ophyd-async-migration.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/decisions/0004-repository-structure.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/decisions/0005-respect-black-line-length.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/decisions/0006-procedural-device-definitions.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/decisions/COPYME +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/decisions.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/design-goals.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/event-loop-choice.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/flyscanning.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/genindex.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/how-to/choose-interfaces-for-devices.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/how-to/compound-devices.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/how-to/contribute.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/how-to/make-a-simple-device.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/how-to/make-a-standard-detector.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/how-to.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/images/bluesky_ophyd_epics_devices_logo.svg +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/images/bluesky_ophyd_logo.svg +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/images/ophyd_favicon.svg +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/index.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/reference/api.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/reference.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/tutorials/installation.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/tutorials/using-existing-devices.rst +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/tutorials.md +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/pyproject.toml +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/setup.cfg +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/__main__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/_providers.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/async_status.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/detector.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/device.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/device_save_loader.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/flyer.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/signal.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/soft_signal_backend.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/standard_readable.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/core/utils.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/_backend/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/_backend/_aioca.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/_backend/_p4p.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/_backend/common.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/aravis.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/controllers/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/controllers/ad_sim_controller.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/controllers/aravis_controller.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/controllers/kinetix_controller.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/controllers/pilatus_controller.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/controllers/vimba_controller.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/drivers/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/drivers/ad_base.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/drivers/aravis_driver.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/drivers/kinetix_driver.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/drivers/pilatus_driver.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/drivers/vimba_driver.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/kinetix.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/pilatus.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/single_trigger_det.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/utils.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/vimba.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/_hdfdataset.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/_hdffile.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/hdf_writer.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/nd_file_hdf.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/nd_plugin.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/demo/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/demo/demo_ad_sim_detector.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/demo/mover.db +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/demo/sensor.db +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/motion/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/motion/motor.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/pvi/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/pvi/pvi.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/signal/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/signal/_epics_transport.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/signal/signal.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/log.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/panda/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/panda/_common_blocks.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/panda/_hdf_panda.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/panda/_panda_controller.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/panda/_table.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/panda/_trigger.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/panda/_utils.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/panda/writers/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/panda/writers/_hdf_writer.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/panda/writers/_panda_hdf_file.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/plan_stubs/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/plan_stubs/ensure_connected.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/plan_stubs/fly.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/protocols.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/sim/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/sim/demo/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/sim/demo/sim_motor.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/sim/pattern_generator.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/sim/sim_pattern_detector_control.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/sim/sim_pattern_detector_writer.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/sim/sim_pattern_generator.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async.egg-info/SOURCES.txt +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async.egg-info/dependency_links.txt +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async.egg-info/entry_points.txt +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async.egg-info/requires.txt +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async.egg-info/top_level.txt +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/conftest.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_async_status.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_device.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_device_collector.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_device_save_loader.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_flyer.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_signal.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_soft_signal_backend.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_standard_readable.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_utils.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/core/test_watchable_async_status.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/_backend/test_common.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_aravis.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_controllers.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_drivers.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_kinetix.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_pilatus.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_scans.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_single_trigger_det.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_utils.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_vimba.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_writers.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/demo/test_demo_ad_sim_detector.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/motion/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/motion/test_motor.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/test_pvi.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/test_records.db +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/test_signals.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/panda/db/panda.db +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/panda/test_hdf_panda.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/panda/test_panda_connect.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/panda/test_panda_controller.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/panda/test_panda_utils.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/panda/test_table.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/panda/test_trigger.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/panda/test_writer.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/plan_stubs/test_fly.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/protocols/test_protocols.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/sim/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/sim/conftest.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/sim/demo/__init__.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/sim/demo/test_sim_motor.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/sim/test_pattern_generator.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/sim/test_sim_detector.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/sim/test_sim_writer.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/sim/test_streaming_plan.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/test_cli.py +0 -0
- {ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/test_log.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ophyd-async
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3rc2
|
|
4
4
|
Summary: Asynchronous Bluesky hardware abstraction code, compatible with control systems like EPICS and Tango
|
|
5
5
|
Author-email: Tom Cobb <tom.cobb@diamond.ac.uk>
|
|
6
6
|
License: BSD 3-Clause License
|
|
@@ -41,6 +41,11 @@ In addition this example also utilizes helper functions like ``assert_reading``
|
|
|
41
41
|
:pyobject: test_sensor_reading_shows_value
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
Given that the mock signal holds a ``unittest.mock.Mock`` object you can retrieve this object and assert that the device has been set correctly using ``get_mock_put``. You are also free to use any other behaviour that ``unittest.mock.Mock`` provides, such as in this example which sets the parent of the mock to allow ordering across signals to be asserted:
|
|
45
|
+
|
|
46
|
+
.. literalinclude:: ../../tests/epics/demo/test_demo.py
|
|
47
|
+
:pyobject: test_retrieve_mock_and_assert
|
|
48
|
+
|
|
44
49
|
There are several other test utility functions:
|
|
45
50
|
|
|
46
51
|
Use ``callback_on_mock_put``, for hooking in logic when a mock value changes (e.g. because someone puts to it). This can be called directly, or used as a context, with the callbacks ending after exit.
|
|
@@ -24,12 +24,10 @@ from .device_save_loader import (
|
|
|
24
24
|
walk_rw_signals,
|
|
25
25
|
)
|
|
26
26
|
from .flyer import HardwareTriggeredFlyable, TriggerLogic
|
|
27
|
-
from .mock_signal_backend import
|
|
28
|
-
MockSignalBackend,
|
|
29
|
-
)
|
|
27
|
+
from .mock_signal_backend import MockSignalBackend
|
|
30
28
|
from .mock_signal_utils import (
|
|
31
|
-
assert_mock_put_called_with,
|
|
32
29
|
callback_on_mock_put,
|
|
30
|
+
get_mock_put,
|
|
33
31
|
mock_puts_blocked,
|
|
34
32
|
reset_mock_put_calls,
|
|
35
33
|
set_mock_put_proceeds,
|
|
@@ -70,7 +68,7 @@ from .utils import (
|
|
|
70
68
|
)
|
|
71
69
|
|
|
72
70
|
__all__ = [
|
|
73
|
-
"
|
|
71
|
+
"get_mock_put",
|
|
74
72
|
"callback_on_mock_put",
|
|
75
73
|
"mock_puts_blocked",
|
|
76
74
|
"set_mock_values",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
from functools import cached_property
|
|
3
|
-
from typing import Optional, Type
|
|
3
|
+
from typing import Callable, Optional, Type
|
|
4
4
|
from unittest.mock import Mock
|
|
5
5
|
|
|
6
6
|
from bluesky.protocols import Descriptor, Reading
|
|
@@ -10,7 +10,7 @@ from ophyd_async.core.soft_signal_backend import SoftSignalBackend
|
|
|
10
10
|
from ophyd_async.core.utils import DEFAULT_TIMEOUT, ReadingValueCallback, T
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class MockSignalBackend(SignalBackend):
|
|
13
|
+
class MockSignalBackend(SignalBackend[T]):
|
|
14
14
|
def __init__(
|
|
15
15
|
self,
|
|
16
16
|
datatype: Optional[Type[T]] = None,
|
|
@@ -31,11 +31,11 @@ class MockSignalBackend(SignalBackend):
|
|
|
31
31
|
|
|
32
32
|
if not isinstance(self.initial_backend, SoftSignalBackend):
|
|
33
33
|
# If the backend is a hard signal backend, or not provided,
|
|
34
|
-
# then we create a soft signal to
|
|
34
|
+
# then we create a soft signal to mimic it
|
|
35
35
|
|
|
36
36
|
self.soft_backend = SoftSignalBackend(datatype=datatype)
|
|
37
37
|
else:
|
|
38
|
-
self.soft_backend = initial_backend
|
|
38
|
+
self.soft_backend = self.initial_backend
|
|
39
39
|
|
|
40
40
|
def source(self, name: str) -> str:
|
|
41
41
|
if self.initial_backend:
|
|
@@ -47,7 +47,7 @@ class MockSignalBackend(SignalBackend):
|
|
|
47
47
|
|
|
48
48
|
@cached_property
|
|
49
49
|
def put_mock(self) -> Mock:
|
|
50
|
-
return Mock(name="put")
|
|
50
|
+
return Mock(name="put", spec=Callable)
|
|
51
51
|
|
|
52
52
|
@cached_property
|
|
53
53
|
def put_proceeds(self) -> asyncio.Event:
|
|
@@ -65,9 +65,6 @@ class MockSignalBackend(SignalBackend):
|
|
|
65
65
|
def set_value(self, value: T):
|
|
66
66
|
self.soft_backend.set_value(value)
|
|
67
67
|
|
|
68
|
-
async def get_descriptor(self, source: str) -> Descriptor:
|
|
69
|
-
return await self.soft_backend.get_descriptor(source)
|
|
70
|
-
|
|
71
68
|
async def get_reading(self) -> Reading:
|
|
72
69
|
return await self.soft_backend.get_reading()
|
|
73
70
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from contextlib import asynccontextmanager, contextmanager
|
|
2
|
-
from typing import Any, Callable, Iterable
|
|
3
|
-
from unittest.mock import
|
|
2
|
+
from typing import Any, Callable, Iterable
|
|
3
|
+
from unittest.mock import Mock
|
|
4
4
|
|
|
5
5
|
from ophyd_async.core.signal import Signal
|
|
6
6
|
from ophyd_async.core.utils import T
|
|
@@ -22,7 +22,7 @@ def set_mock_value(signal: Signal[T], value: T):
|
|
|
22
22
|
backend.set_value(value)
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
def set_mock_put_proceeds(signal: Signal
|
|
25
|
+
def set_mock_put_proceeds(signal: Signal, proceeds: bool):
|
|
26
26
|
"""Allow or block a put with wait=True from proceeding"""
|
|
27
27
|
backend = _get_mock_signal_backend(signal)
|
|
28
28
|
|
|
@@ -33,7 +33,7 @@ def set_mock_put_proceeds(signal: Signal[T], proceeds: bool):
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
@asynccontextmanager
|
|
36
|
-
async def mock_puts_blocked(*signals:
|
|
36
|
+
async def mock_puts_blocked(*signals: Signal):
|
|
37
37
|
for signal in signals:
|
|
38
38
|
set_mock_put_proceeds(signal, False)
|
|
39
39
|
yield
|
|
@@ -41,9 +41,9 @@ async def mock_puts_blocked(*signals: List[Signal]):
|
|
|
41
41
|
set_mock_put_proceeds(signal, True)
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
def
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
def get_mock_put(signal: Signal) -> Mock:
|
|
45
|
+
"""Get the mock associated with the put call on the signal."""
|
|
46
|
+
return _get_mock_signal_backend(signal).put_mock
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
def reset_mock_put_calls(signal: Signal):
|
|
@@ -79,7 +79,7 @@ class _SetValuesIterator:
|
|
|
79
79
|
return next_value
|
|
80
80
|
|
|
81
81
|
def __del__(self):
|
|
82
|
-
if self.require_all_consumed and self.index != len(self.values):
|
|
82
|
+
if self.require_all_consumed and self.index != len(list(self.values)):
|
|
83
83
|
raise AssertionError("Not all values have been consumed.")
|
|
84
84
|
|
|
85
85
|
|
|
@@ -87,7 +87,7 @@ def set_mock_values(
|
|
|
87
87
|
signal: Signal,
|
|
88
88
|
values: Iterable[Any],
|
|
89
89
|
require_all_consumed: bool = False,
|
|
90
|
-
) ->
|
|
90
|
+
) -> _SetValuesIterator:
|
|
91
91
|
"""Iterator to set a signal to a sequence of values, optionally repeating the
|
|
92
92
|
sequence.
|
|
93
93
|
|
|
@@ -127,7 +127,7 @@ def _unset_side_effect_cm(put_mock: Mock):
|
|
|
127
127
|
put_mock.side_effect = None
|
|
128
128
|
|
|
129
129
|
|
|
130
|
-
def callback_on_mock_put(signal: Signal, callback: Callable[[T], None]):
|
|
130
|
+
def callback_on_mock_put(signal: Signal[T], callback: Callable[[T], None]):
|
|
131
131
|
"""For setting a callback when a backend is put to.
|
|
132
132
|
|
|
133
133
|
Can either be used in a context, with the callback being
|
|
@@ -14,7 +14,7 @@ class SignalBackend(Generic[T]):
|
|
|
14
14
|
|
|
15
15
|
#: Like ca://PV_PREFIX:SIGNAL
|
|
16
16
|
@abstractmethod
|
|
17
|
-
def source(name: str) -> str:
|
|
17
|
+
def source(self, name: str) -> str:
|
|
18
18
|
"""Return source of signal. Signals may pass a name to the backend, which can be
|
|
19
19
|
used or discarded."""
|
|
20
20
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ophyd-async
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3rc2
|
|
4
4
|
Summary: Asynchronous Bluesky hardware abstraction code, compatible with control systems like EPICS and Tango
|
|
5
5
|
Author-email: Tom Cobb <tom.cobb@diamond.ac.uk>
|
|
6
6
|
License: BSD 3-Clause License
|
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import re
|
|
3
3
|
from itertools import repeat
|
|
4
|
-
from unittest.mock import MagicMock, call
|
|
4
|
+
from unittest.mock import ANY, MagicMock, call
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
7
7
|
|
|
8
8
|
from ophyd_async.core import MockSignalBackend, SignalRW
|
|
9
9
|
from ophyd_async.core.device import Device, DeviceCollector
|
|
10
10
|
from ophyd_async.core.mock_signal_utils import (
|
|
11
|
-
assert_mock_put_called_with,
|
|
12
11
|
callback_on_mock_put,
|
|
12
|
+
get_mock_put,
|
|
13
13
|
mock_puts_blocked,
|
|
14
14
|
reset_mock_put_calls,
|
|
15
15
|
set_mock_put_proceeds,
|
|
16
16
|
set_mock_value,
|
|
17
17
|
set_mock_values,
|
|
18
18
|
)
|
|
19
|
-
from ophyd_async.core.signal import
|
|
20
|
-
SignalW,
|
|
21
|
-
soft_signal_r_and_setter,
|
|
22
|
-
soft_signal_rw,
|
|
23
|
-
)
|
|
19
|
+
from ophyd_async.core.signal import SignalW, soft_signal_r_and_setter, soft_signal_rw
|
|
24
20
|
from ophyd_async.core.soft_signal_backend import SoftSignalBackend
|
|
25
21
|
from ophyd_async.epics.signal.signal import epics_signal_r, epics_signal_rw
|
|
26
22
|
|
|
@@ -31,6 +27,7 @@ async def test_mock_signal_backend(connect_mock_mode):
|
|
|
31
27
|
# If mock is false it will be handled like a normal signal, otherwise it will
|
|
32
28
|
# initalize a new backend from the one in the line above
|
|
33
29
|
await mock_signal.connect(mock=connect_mock_mode)
|
|
30
|
+
assert isinstance(mock_signal._backend, MockSignalBackend)
|
|
34
31
|
|
|
35
32
|
assert await mock_signal._backend.get_value() == ""
|
|
36
33
|
await mock_signal._backend.put("test")
|
|
@@ -74,6 +71,8 @@ async def test_set_mock_put_proceeds():
|
|
|
74
71
|
mock_signal = SignalW(SoftSignalBackend(str))
|
|
75
72
|
await mock_signal.connect(mock=True)
|
|
76
73
|
|
|
74
|
+
assert isinstance(mock_signal._backend, MockSignalBackend)
|
|
75
|
+
|
|
77
76
|
assert mock_signal._backend.put_proceeds.is_set() is True
|
|
78
77
|
|
|
79
78
|
set_mock_put_proceeds(mock_signal, False)
|
|
@@ -95,6 +94,7 @@ async def test_set_mock_put_proceeds_timeout():
|
|
|
95
94
|
async def test_put_proceeds_timeout():
|
|
96
95
|
mock_signal = SignalW(SoftSignalBackend(str))
|
|
97
96
|
await mock_signal.connect(mock=True)
|
|
97
|
+
assert isinstance(mock_signal._backend, MockSignalBackend)
|
|
98
98
|
|
|
99
99
|
assert mock_signal._backend.put_proceeds.is_set() is True
|
|
100
100
|
|
|
@@ -112,14 +112,14 @@ async def test_mock_utils_throw_error_if_backend_isnt_mock_signal_backend():
|
|
|
112
112
|
set_mock_value(signal, 10)
|
|
113
113
|
exc_msgs.append(str(exc.value))
|
|
114
114
|
with pytest.raises(AssertionError) as exc:
|
|
115
|
-
|
|
115
|
+
get_mock_put(signal).assert_called_once_with(10)
|
|
116
116
|
exc_msgs.append(str(exc.value))
|
|
117
117
|
with pytest.raises(AssertionError) as exc:
|
|
118
|
-
async with mock_puts_blocked(signal
|
|
118
|
+
async with mock_puts_blocked(signal):
|
|
119
119
|
...
|
|
120
120
|
exc_msgs.append(str(exc.value))
|
|
121
121
|
with pytest.raises(AssertionError) as exc:
|
|
122
|
-
with callback_on_mock_put(signal,
|
|
122
|
+
with callback_on_mock_put(signal, lambda x: _):
|
|
123
123
|
...
|
|
124
124
|
exc_msgs.append(str(exc.value))
|
|
125
125
|
with pytest.raises(AssertionError) as exc:
|
|
@@ -137,16 +137,13 @@ async def test_mock_utils_throw_error_if_backend_isnt_mock_signal_backend():
|
|
|
137
137
|
)
|
|
138
138
|
|
|
139
139
|
|
|
140
|
-
async def
|
|
140
|
+
async def test_get_mock_put():
|
|
141
141
|
mock_signal = epics_signal_rw(str, "READ_PV", "WRITE_PV", name="mock_name")
|
|
142
142
|
await mock_signal.connect(mock=True)
|
|
143
143
|
await mock_signal.set("test_value", wait=True, timeout=100)
|
|
144
144
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
assert_mock_put_called_with(mock_signal, "test_value", wait=True)
|
|
148
|
-
assert_mock_put_called_with(mock_signal, "test_value", timeout=100)
|
|
149
|
-
assert_mock_put_called_with(mock_signal, "test_value", wait=True, timeout=100)
|
|
145
|
+
mock = get_mock_put(mock_signal)
|
|
146
|
+
mock.assert_called_once_with("test_value", wait=True, timeout=100)
|
|
150
147
|
|
|
151
148
|
def err_text(text, wait, timeout):
|
|
152
149
|
return (
|
|
@@ -162,7 +159,7 @@ async def test_assert_mock_put_called_with():
|
|
|
162
159
|
("test_value", False, 0), # wait and timeout wrong
|
|
163
160
|
]:
|
|
164
161
|
with pytest.raises(AssertionError) as exc:
|
|
165
|
-
|
|
162
|
+
mock.assert_called_once_with(text, wait=wait, timeout=timeout)
|
|
166
163
|
for err_substr in err_text(text, wait, timeout):
|
|
167
164
|
assert err_substr in str(exc.value)
|
|
168
165
|
|
|
@@ -216,10 +213,8 @@ async def test_callback_on_mock_put_no_ctx():
|
|
|
216
213
|
mock_signal = SignalRW(SoftSignalBackend(float))
|
|
217
214
|
await mock_signal.connect(mock=True)
|
|
218
215
|
calls = []
|
|
219
|
-
(
|
|
220
|
-
|
|
221
|
-
mock_signal, lambda *args, **kwargs: calls.append({**kwargs, "_args": args})
|
|
222
|
-
),
|
|
216
|
+
callback_on_mock_put(
|
|
217
|
+
mock_signal, lambda *args, **kwargs: calls.append({**kwargs, "_args": args})
|
|
223
218
|
)
|
|
224
219
|
await mock_signal.set(10.0)
|
|
225
220
|
assert calls == [
|
|
@@ -249,16 +244,16 @@ async def test_callback_on_mock_put_fails_if_args_are_not_correct():
|
|
|
249
244
|
async def test_set_mock_values(mock_signals):
|
|
250
245
|
signal1, signal2 = mock_signals
|
|
251
246
|
|
|
252
|
-
await signal2.get_value() == "first_value"
|
|
247
|
+
assert await signal2.get_value() == "first_value"
|
|
253
248
|
for value_set in set_mock_values(signal1, ["second_value", "third_value"]):
|
|
254
249
|
assert await signal1.get_value() == value_set
|
|
255
250
|
|
|
256
251
|
iterator = set_mock_values(signal2, ["second_value", "third_value"])
|
|
257
|
-
await signal2.get_value() == "first_value"
|
|
252
|
+
assert await signal2.get_value() == "first_value"
|
|
258
253
|
next(iterator)
|
|
259
|
-
await signal2.get_value() == "second_value"
|
|
254
|
+
assert await signal2.get_value() == "second_value"
|
|
260
255
|
next(iterator)
|
|
261
|
-
await signal2.get_value() == "third_value"
|
|
256
|
+
assert await signal2.get_value() == "third_value"
|
|
262
257
|
|
|
263
258
|
|
|
264
259
|
async def test_set_mock_values_exhausted_passes(mock_signals):
|
|
@@ -300,10 +295,10 @@ async def test_set_mock_values_exhausted_fails(mock_signals):
|
|
|
300
295
|
async def test_reset_mock_put_calls(mock_signals):
|
|
301
296
|
signal1, signal2 = mock_signals
|
|
302
297
|
await signal1.set("test_value", wait=True, timeout=1)
|
|
303
|
-
|
|
298
|
+
get_mock_put(signal1).assert_called_with("test_value", wait=ANY, timeout=ANY)
|
|
304
299
|
reset_mock_put_calls(signal1)
|
|
305
300
|
with pytest.raises(AssertionError) as exc:
|
|
306
|
-
|
|
301
|
+
get_mock_put(signal1).assert_called_with("test_value", wait=ANY, timeout=ANY)
|
|
307
302
|
# Replacing spaces because they change between runners
|
|
308
303
|
# (e.g the github actions runner has more)
|
|
309
304
|
assert str(exc.value).replace(" ", "").replace("\n", "") == (
|
|
@@ -350,3 +345,13 @@ async def test_writing_to_soft_signals_in_mock():
|
|
|
350
345
|
assert await signal.get_value() == 0
|
|
351
346
|
backend_put(100)
|
|
352
347
|
assert await signal.get_value() == 100
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
async def test_when_put_mock_called_with_typo_then_fails_but_calling_directly_passes():
|
|
351
|
+
mock_signal = SignalRW(SoftSignalBackend(int))
|
|
352
|
+
await mock_signal.connect(mock=True)
|
|
353
|
+
assert isinstance(mock_signal._backend, MockSignalBackend)
|
|
354
|
+
mock = mock_signal._backend.put_mock
|
|
355
|
+
with pytest.raises(AttributeError):
|
|
356
|
+
mock.asssert_called_once() # Note typo here is deliberate!
|
|
357
|
+
mock()
|
|
@@ -16,6 +16,7 @@ from ophyd_async.core import (
|
|
|
16
16
|
assert_reading,
|
|
17
17
|
assert_value,
|
|
18
18
|
callback_on_mock_put,
|
|
19
|
+
get_mock_put,
|
|
19
20
|
set_mock_value,
|
|
20
21
|
)
|
|
21
22
|
from ophyd_async.epics import demo
|
|
@@ -176,6 +177,29 @@ async def test_sensor_reading_shows_value(mock_sensor: demo.Sensor):
|
|
|
176
177
|
)
|
|
177
178
|
|
|
178
179
|
|
|
180
|
+
async def test_retrieve_mock_and_assert(mock_mover: demo.Mover):
|
|
181
|
+
mover_setpoint_mock = get_mock_put(mock_mover.setpoint)
|
|
182
|
+
await mock_mover.setpoint.set(10)
|
|
183
|
+
mover_setpoint_mock.assert_called_once_with(10, wait=ANY, timeout=ANY)
|
|
184
|
+
|
|
185
|
+
# Assert that velocity is set before move
|
|
186
|
+
mover_velocity_mock = get_mock_put(mock_mover.velocity)
|
|
187
|
+
|
|
188
|
+
parent_mock = Mock()
|
|
189
|
+
parent_mock.attach_mock(mover_setpoint_mock, "setpoint")
|
|
190
|
+
parent_mock.attach_mock(mover_velocity_mock, "velocity")
|
|
191
|
+
|
|
192
|
+
await mock_mover.velocity.set(100)
|
|
193
|
+
await mock_mover.setpoint.set(67)
|
|
194
|
+
|
|
195
|
+
parent_mock.assert_has_calls(
|
|
196
|
+
[
|
|
197
|
+
call.velocity(100, wait=True, timeout=ANY),
|
|
198
|
+
call.setpoint(67, wait=True, timeout=ANY),
|
|
199
|
+
]
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
|
|
179
203
|
async def test_read_mover(mock_mover: demo.Mover):
|
|
180
204
|
await mock_mover.stage()
|
|
181
205
|
assert (await mock_mover.read())["mock_mover"]["value"] == 0.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/decisions/0003-ophyd-async-migration.rst
RENAMED
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/docs/explanations/decisions/0004-repository-structure.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/controllers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/drivers/__init__.py
RENAMED
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/drivers/ad_base.py
RENAMED
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/drivers/aravis_driver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/drivers/vimba_driver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/single_trigger_det.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/__init__.py
RENAMED
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/_hdfdataset.py
RENAMED
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/_hdffile.py
RENAMED
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/hdf_writer.py
RENAMED
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/nd_file_hdf.py
RENAMED
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/epics/areadetector/writers/nd_plugin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/src/ophyd_async/sim/sim_pattern_detector_control.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ophyd_async-0.3a6 → ophyd_async-0.3rc2}/tests/epics/areadetector/test_single_trigger_det.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|