ophyd-async 0.13.5__tar.gz → 0.13.6__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.13.5 → ophyd_async-0.13.6}/.copier-answers.yml +1 -1
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.devcontainer/devcontainer.json +15 -16
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/CONTRIBUTING.md +1 -1
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/workflows/_dist.yml +2 -2
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/workflows/_docs.yml +2 -2
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/workflows/_pypi.yml +1 -1
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/workflows/_release.yml +2 -2
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/workflows/_test.yml +2 -2
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/workflows/_tox.yml +2 -2
- {ophyd_async-0.13.5/src/ophyd_async.egg-info → ophyd_async-0.13.6}/PKG-INFO +1 -1
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/_version.py +3 -3
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_mock_signal_backend.py +7 -3
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/pmac/_pmac_trajectory_generation.py +3 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/panda/_block.py +10 -9
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/testing/_mock_signal_utils.py +5 -2
- {ophyd_async-0.13.5 → ophyd_async-0.13.6/src/ophyd_async.egg-info}/PKG-INFO +1 -1
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_mock_signal_backend.py +46 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_signal.py +10 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/pmac/test_pmac_trajectory.py +8 -7
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/pmac/test_pmac_trajectory_generation.py +111 -73
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/panda/db/panda.db +13 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/panda/test_panda_utils.py +2 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/uv.lock +200 -189
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.codecov.yml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.git-blame-ignore-revs +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/ISSUE_TEMPLATE/issue.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/codeql/codeql-config.yml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/pages/index.html +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/pages/make_switcher.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/renovate.json +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/workflows/_codeql.yml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/workflows/ci.yml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.github/workflows/periodic.yml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.gitignore +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.gitleaks.toml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.gitmodules +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.pre-commit-config.yaml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/.python-version +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/Dockerfile +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/LICENSE +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/README.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/_static/custom.css +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/conf.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0003-ophyd-async-migration.rst +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0004-repository-structure.rst +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0005-respect-black-line-length.rst +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0006-procedural-device-definitions.rst +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0007-subpackage-structure.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0008-signal-types.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0009-procedural-vs-declarative-devices.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0010-docstring-format.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/0011-buffer-updates-camonitor.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions/COPYME +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/decisions.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/declarative-vs-procedural.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/design-goals.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/device-connection-strategies.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/devices-signals-backends.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/fly-scanning.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/plan-stubs.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/when-to-extend-movable.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations/where-device-logic.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/explanations.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/genindex.rst +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/how-to/choose-right-baseclass.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/how-to/contribute.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/how-to/derive-one-signal-from-others.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/how-to/implement-ad-detector.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/how-to/interact-with-signals.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/how-to/put-device-back.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/how-to/store-and-retrieve.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/how-to.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/images/fly_scan_collection_windows_and_frames.svg +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/images/ophyd-async-logo.svg +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/images/ophyd-favicon.svg +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/images/set_and_wait_for_other_value.excalidraw.svg +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/index.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/reference.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/tutorials/implementing-detectors.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/tutorials/implementing-devices.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/tutorials/installation.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/tutorials/using-devices.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/tutorials/writing-tests-for-devices.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/docs/tutorials.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/pyproject.toml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/setup.cfg +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/__main__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/_docs_parser.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_derived_signal.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_derived_signal_backend.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_detector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_device.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_device_filler.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_enums.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_flyer.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_hdf_dataset.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_log.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_protocol.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_providers.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_readable.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_settings.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_signal.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_signal_backend.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_soft_signal_backend.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_status.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_table.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/core/_yaml_settings.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adandor/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adandor/_andor.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adandor/_andor_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adandor/_andor_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adaravis/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adaravis/_aravis.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adaravis/_aravis_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adaravis/_aravis_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adcore/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adcore/_core_detector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adcore/_core_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adcore/_core_logic.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adcore/_core_writer.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adcore/_hdf_writer.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adcore/_jpeg_writer.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adcore/_single_trigger.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adcore/_tiff_writer.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adcore/_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adkinetix/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adkinetix/_kinetix.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adkinetix/_kinetix_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adkinetix/_kinetix_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adpilatus/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adpilatus/_pilatus.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adpilatus/_pilatus_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adpilatus/_pilatus_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adsimdetector/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adsimdetector/_sim.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adsimdetector/_sim_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/adsimdetector/_sim_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/advimba/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/advimba/_vimba.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/advimba/_vimba_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/advimba/_vimba_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/core/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/core/_aioca.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/core/_epics_connector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/core/_epics_device.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/core/_p4p.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/core/_pvi_connector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/core/_signal.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/core/_util.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/demo/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/demo/__main__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/demo/_ioc.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/demo/_motor.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/demo/_point_detector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/demo/_point_detector_channel.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/demo/_stage.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/demo/motor.db +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/demo/point_detector.db +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/demo/point_detector_channel.db +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/motor.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/odin/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/odin/_odin_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/pmac/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/pmac/_pmac_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/pmac/_pmac_trajectory.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/pmac/_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/signal.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/testing/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/testing/_example_ioc.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/testing/_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/testing/test_records.db +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/testing/test_records_pva.db +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/core.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/eiger/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/eiger/_eiger.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/eiger/_eiger_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/eiger/_eiger_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/jungfrau/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/jungfrau/_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/jungfrau/_jungfrau.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/jungfrau/_signals.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/jungfrau/_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/odin/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/panda/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/panda/_control.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/panda/_hdf_panda.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/panda/_table.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/panda/_trigger.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/fastcs/panda/_writer.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/plan_stubs/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/plan_stubs/_ensure_connected.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/plan_stubs/_fly.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/plan_stubs/_nd_attributes.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/plan_stubs/_panda.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/plan_stubs/_settings.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/plan_stubs/_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/plan_stubs/_wait_for_awaitable.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/py.typed +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/__main__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/_blob_detector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/_blob_detector_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/_blob_detector_writer.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/_mirror_horizontal.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/_mirror_vertical.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/_motor.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/_pattern_generator.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/_point_detector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/sim/_stage.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/core/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/core/_base_device.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/core/_converters.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/core/_signal.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/core/_tango_readable.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/core/_tango_transport.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/core/_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/demo/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/demo/_counter.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/demo/_detector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/demo/_mover.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/demo/_tango/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/demo/_tango/_servers.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/testing/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/testing/_one_of_everything.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/tango/testing/_test_config.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/testing/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/testing/__pytest_assert_rewrite.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/testing/_assert.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/testing/_one_of_everything.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/testing/_single_derived.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/testing/_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/testing/_wait_for_pending.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async.egg-info/SOURCES.txt +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async.egg-info/dependency_links.txt +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async.egg-info/requires.txt +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async.egg-info/top_level.txt +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/README.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/conftest.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/epics/adsim/baseline.yaml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/epics/adsim/start_iocs.sh +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/epics/adsim/stop_iocs.sh +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/epics/adsim/test_adsim_system.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/epics/eiger/README.md +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/epics/eiger/start_iocs_and_run_tests.sh +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/epics/eiger/test_eiger_system.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/epics/signal/test_signals.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/epics/signal/test_yaml_save_ca.yaml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/epics/signal/test_yaml_save_pva.yaml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/fastcs/panda/test_panda_connect.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/tango/conftest.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/tango/context_subprocess.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/tango/test_base_device.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/tango/test_tango_signals.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/tango/test_tango_transport.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/system_tests/test_tutorials.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_auto_init_devices.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_detector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_device.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_flyer.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_log.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_multi_derived_signal.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_observe.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_protocol.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_providers.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_readable.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_single_derived_signal.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_soft_signal_backend.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_status.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_subset_enum.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_table.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/core/test_watchable_async_status.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adandor/test_andor.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adaravis/test_aravis.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adcore/test_cont_acq_detector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adcore/test_detectors.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adcore/test_drivers.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adcore/test_plugins.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adcore/test_scans.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adcore/test_single_trigger.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adcore/test_writers.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adkinetix/test_kinetix.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adpilatus/test_pilatus.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/adsimdetector/test_sim.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/advimba/test_vimba.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/conftest.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/demo/test_epics_demo.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/eiger/test_odin_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/pmac/conftest.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/pmac/test_pmac_io.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/pmac/test_pmac_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/pvi/test_pvi.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/signal/test_common.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/test_areadetector_subclass_naming.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/test_motor.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/eiger/test_eiger_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/eiger/test_eiger_detector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/jungfrau/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/jungfrau/test_controller.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/jungfrau/test_utils.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/panda/test_hdf_panda.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/panda/test_panda_connect_mock.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/panda/test_panda_control.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/panda/test_seq_table.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/panda/test_trigger.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/fastcs/panda/test_writer.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/plan_stubs/test_ensure_connected.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/plan_stubs/test_fly.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/plan_stubs/test_settings.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/plan_stubs/test_setup.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/sim/__init__.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/sim/test_sim_blob_detector.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/sim/test_sim_motor.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/test_branching.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/test_cli.py +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/test_data/test_yaml_config_save.yaml +0 -0
- {ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/test_data/test_yaml_save.yaml +0 -0
|
@@ -8,16 +8,22 @@
|
|
|
8
8
|
"remoteEnv": {
|
|
9
9
|
// Allow X11 apps to run inside the container
|
|
10
10
|
"DISPLAY": "${localEnv:DISPLAY}",
|
|
11
|
+
// Put things that allow it in the persistent cache
|
|
12
|
+
"PRE_COMMIT_HOME": "/cache/pre-commit",
|
|
13
|
+
"UV_CACHE_DIR": "/cache/uv",
|
|
14
|
+
"UV_PYTHON_CACHE_DIR": "/cache/uv-python",
|
|
15
|
+
// Make a venv that is specific for this workspace path as the cache is shared
|
|
16
|
+
"UV_PROJECT_ENVIRONMENT": "/cache/venv-for${localWorkspaceFolder}",
|
|
11
17
|
// Do the equivalent of "activate" the venv so we don't have to "uv run" everything
|
|
12
|
-
"VIRTUAL_ENV": "/
|
|
13
|
-
"PATH": "/
|
|
18
|
+
"VIRTUAL_ENV": "/cache/venv-for${localWorkspaceFolder}",
|
|
19
|
+
"PATH": "/cache/venv-for${localWorkspaceFolder}/bin:${containerEnv:PATH}"
|
|
14
20
|
},
|
|
15
21
|
"customizations": {
|
|
16
22
|
"vscode": {
|
|
17
23
|
// Set *default* container specific settings.json values on container create.
|
|
18
24
|
"settings": {
|
|
19
25
|
// Use the container's python by default
|
|
20
|
-
"python.defaultInterpreterPath": "/
|
|
26
|
+
"python.defaultInterpreterPath": "/cache/venv-for${localWorkspaceFolder}/bin/python",
|
|
21
27
|
// Don't activate the venv as it is already in the PATH
|
|
22
28
|
"python.terminal.activateEnvInCurrentTerminal": false,
|
|
23
29
|
"python.terminal.activateEnvironment": false,
|
|
@@ -47,9 +53,7 @@
|
|
|
47
53
|
}
|
|
48
54
|
},
|
|
49
55
|
// Create the config folder for the bash-config feature and uv cache
|
|
50
|
-
|
|
51
|
-
// https://dev-guide.diamond.ac.uk/linux-user-environment/how-tos/disk-quota-troubleshooting
|
|
52
|
-
"initializeCommand": "mkdir -p ${localEnv:HOME}/.config/terminal-config ${localEnv:HOME}/.cache/uv",
|
|
56
|
+
"initializeCommand": "mkdir -p ${localEnv:HOME}/.config/terminal-config",
|
|
53
57
|
"runArgs": [
|
|
54
58
|
// Allow the container to access the host X11 display and EPICS CA
|
|
55
59
|
"--net=host",
|
|
@@ -63,20 +67,15 @@
|
|
|
63
67
|
"target": "/user-terminal-config",
|
|
64
68
|
"type": "bind"
|
|
65
69
|
},
|
|
66
|
-
// Keep a persistent cross container cache for uv
|
|
70
|
+
// Keep a persistent cross container cache for uv, pre-commit, and the venvs
|
|
67
71
|
{
|
|
68
|
-
"source": "
|
|
69
|
-
"target": "/
|
|
70
|
-
"type": "bind"
|
|
71
|
-
},
|
|
72
|
-
// Use a volume mount for the uv venv so it is local to the container
|
|
73
|
-
{
|
|
74
|
-
"target": "/workspaces/${localWorkspaceFolderBasename}/.venv",
|
|
72
|
+
"source": "devcontainer-shared-cache",
|
|
73
|
+
"target": "/cache",
|
|
75
74
|
"type": "volume"
|
|
76
75
|
}
|
|
77
76
|
],
|
|
78
77
|
// Mount the parent as /workspaces so we can pip install peers as editable
|
|
79
78
|
"workspaceMount": "source=${localWorkspaceFolder}/..,target=/workspaces,type=bind",
|
|
80
|
-
// After the container is created,
|
|
81
|
-
"postCreateCommand": "uv
|
|
79
|
+
// After the container is created, recreate the venv then make pre-commit first run faster
|
|
80
|
+
"postCreateCommand": "uv venv --clear && uv sync && pre-commit install --install-hooks"
|
|
82
81
|
}
|
|
@@ -24,4 +24,4 @@ It is recommended that developers use a [vscode devcontainer](https://code.visua
|
|
|
24
24
|
|
|
25
25
|
This project was created using the [Diamond Light Source Copier Template](https://github.com/DiamondLightSource/python-copier-template) for Python projects.
|
|
26
26
|
|
|
27
|
-
For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template's [How-to guides](https://diamondlightsource.github.io/python-copier-template/5.0.
|
|
27
|
+
For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template's [How-to guides](https://diamondlightsource.github.io/python-copier-template/5.0.0a4/how-to.html).
|
|
@@ -7,13 +7,13 @@ jobs:
|
|
|
7
7
|
|
|
8
8
|
steps:
|
|
9
9
|
- name: Checkout
|
|
10
|
-
uses: actions/checkout@
|
|
10
|
+
uses: actions/checkout@v5
|
|
11
11
|
with:
|
|
12
12
|
# Need this to get version number from last tag
|
|
13
13
|
fetch-depth: 0
|
|
14
14
|
|
|
15
15
|
- name: Install uv
|
|
16
|
-
uses: astral-sh/setup-uv@
|
|
16
|
+
uses: astral-sh/setup-uv@v7
|
|
17
17
|
|
|
18
18
|
- name: Build sdist and wheel
|
|
19
19
|
run: >
|
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
run: sleep 60
|
|
13
13
|
|
|
14
14
|
- name: Checkout
|
|
15
|
-
uses: actions/checkout@
|
|
15
|
+
uses: actions/checkout@v5
|
|
16
16
|
with:
|
|
17
17
|
# Need this to get version number from last tag
|
|
18
18
|
fetch-depth: 0
|
|
@@ -21,7 +21,7 @@ jobs:
|
|
|
21
21
|
run: sudo apt-get install graphviz
|
|
22
22
|
|
|
23
23
|
- name: Install uv
|
|
24
|
-
uses: astral-sh/setup-uv@
|
|
24
|
+
uses: astral-sh/setup-uv@v7
|
|
25
25
|
|
|
26
26
|
- name: Build docs
|
|
27
27
|
run: uv run --locked tox -e docs
|
|
@@ -7,7 +7,7 @@ jobs:
|
|
|
7
7
|
|
|
8
8
|
steps:
|
|
9
9
|
- name: Download artifacts
|
|
10
|
-
uses: actions/download-artifact@
|
|
10
|
+
uses: actions/download-artifact@v5
|
|
11
11
|
with:
|
|
12
12
|
merge-multiple: true
|
|
13
13
|
|
|
@@ -23,7 +23,7 @@ jobs:
|
|
|
23
23
|
- name: Create GitHub Release
|
|
24
24
|
# We pin to the SHA, not the tag, for security reasons.
|
|
25
25
|
# https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
|
|
26
|
-
uses: softprops/action-gh-release@
|
|
26
|
+
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
|
|
27
27
|
with:
|
|
28
28
|
prerelease: ${{ contains(github.ref_name, 'a') || contains(github.ref_name, 'b') || contains(github.ref_name, 'rc') }}
|
|
29
29
|
files: "*"
|
|
@@ -35,7 +35,7 @@ jobs:
|
|
|
35
35
|
|
|
36
36
|
steps:
|
|
37
37
|
- name: Checkout repository (with submodules)
|
|
38
|
-
uses: actions/checkout@
|
|
38
|
+
uses: actions/checkout@v5
|
|
39
39
|
with:
|
|
40
40
|
submodules: recursive
|
|
41
41
|
fetch-depth: 0
|
|
@@ -47,7 +47,7 @@ jobs:
|
|
|
47
47
|
echo "TEMP=D:\\Temp" >> $env:GITHUB_ENV
|
|
48
48
|
|
|
49
49
|
- name: Install uv
|
|
50
|
-
uses: astral-sh/setup-uv@
|
|
50
|
+
uses: astral-sh/setup-uv@v7
|
|
51
51
|
|
|
52
52
|
- if: inputs.needs-services && inputs.runs-on != 'windows-latest'
|
|
53
53
|
name: Run docker compose
|
|
@@ -13,10 +13,10 @@ jobs:
|
|
|
13
13
|
|
|
14
14
|
steps:
|
|
15
15
|
- name: Checkout
|
|
16
|
-
uses: actions/checkout@
|
|
16
|
+
uses: actions/checkout@v5
|
|
17
17
|
|
|
18
18
|
- name: Install uv
|
|
19
|
-
uses: astral-sh/setup-uv@
|
|
19
|
+
uses: astral-sh/setup-uv@v7
|
|
20
20
|
|
|
21
21
|
- name: Run tox
|
|
22
22
|
run: uv run --locked tox -e ${{ inputs.tox }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ophyd-async
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.6
|
|
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
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.13.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 13,
|
|
31
|
+
__version__ = version = '0.13.6'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 13, 6)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g13f67ee23'
|
|
@@ -41,7 +41,9 @@ class MockSignalBackend(SignalBackend[SignalDatatypeT]):
|
|
|
41
41
|
@cached_property
|
|
42
42
|
def put_mock(self) -> AsyncMock:
|
|
43
43
|
"""Return the mock that will track calls to `put()`."""
|
|
44
|
-
put_mock = AsyncMock(
|
|
44
|
+
put_mock = AsyncMock(
|
|
45
|
+
name="put", spec=Callable, side_effect=lambda *_, **__: None
|
|
46
|
+
)
|
|
45
47
|
self.mock().attach_mock(put_mock, "put")
|
|
46
48
|
return put_mock
|
|
47
49
|
|
|
@@ -66,8 +68,10 @@ class MockSignalBackend(SignalBackend[SignalDatatypeT]):
|
|
|
66
68
|
return put_proceeds
|
|
67
69
|
|
|
68
70
|
async def put(self, value: SignalDatatypeT | None, wait: bool):
|
|
69
|
-
await self.put_mock(value, wait=wait)
|
|
70
|
-
|
|
71
|
+
new_value = await self.put_mock(value, wait=wait)
|
|
72
|
+
if new_value is None:
|
|
73
|
+
new_value = value
|
|
74
|
+
await self.soft_backend.put(new_value, wait=wait)
|
|
71
75
|
if wait:
|
|
72
76
|
await self.put_proceeds.wait()
|
|
73
77
|
|
{ophyd_async-0.13.5 → ophyd_async-0.13.6}/src/ophyd_async/epics/pmac/_pmac_trajectory_generation.py
RENAMED
|
@@ -558,6 +558,9 @@ def _get_velocity_profile(
|
|
|
558
558
|
# Check if all profiles have converged on min_time
|
|
559
559
|
if np.isclose(new_min_time, min_time):
|
|
560
560
|
for motor in motors:
|
|
561
|
+
# MIN_INTERVAL should be less than our convergence tolerance
|
|
562
|
+
# such that motors snap to the same point in the time grid
|
|
563
|
+
profiles[motor].quantize()
|
|
561
564
|
time_arrays[motor], velocity_arrays[motor] = profiles[
|
|
562
565
|
motor
|
|
563
566
|
].make_arrays()
|
|
@@ -34,15 +34,6 @@ class DataBlock(Device):
|
|
|
34
34
|
datasets: SignalR[DatasetTable]
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
class PulseBlock(Device):
|
|
38
|
-
"""Used for configuring pulses in the PandA."""
|
|
39
|
-
|
|
40
|
-
delay: SignalRW[float]
|
|
41
|
-
pulses: SignalRW[int]
|
|
42
|
-
step: SignalRW[float]
|
|
43
|
-
width: SignalRW[float]
|
|
44
|
-
|
|
45
|
-
|
|
46
37
|
class PandaPcompDirection(StrictEnum):
|
|
47
38
|
"""Direction options for position compare in the PandA."""
|
|
48
39
|
|
|
@@ -64,6 +55,16 @@ class PandaPosMux(SubsetEnum):
|
|
|
64
55
|
ZERO = "ZERO"
|
|
65
56
|
|
|
66
57
|
|
|
58
|
+
class PulseBlock(Device):
|
|
59
|
+
"""Used for configuring pulses in the PandA."""
|
|
60
|
+
|
|
61
|
+
enable: SignalRW[PandaBitMux]
|
|
62
|
+
delay: SignalRW[float]
|
|
63
|
+
pulses: SignalRW[int]
|
|
64
|
+
step: SignalRW[float]
|
|
65
|
+
width: SignalRW[float]
|
|
66
|
+
|
|
67
|
+
|
|
67
68
|
class PcompBlock(Device):
|
|
68
69
|
"""Position compare block in the PandA."""
|
|
69
70
|
|
|
@@ -119,14 +119,17 @@ def _unset_side_effect_cm(put_mock: AsyncMock):
|
|
|
119
119
|
|
|
120
120
|
def callback_on_mock_put(
|
|
121
121
|
signal: Signal[SignalDatatypeT],
|
|
122
|
-
callback: Callable[[SignalDatatypeT, bool], None]
|
|
123
|
-
| Callable[[SignalDatatypeT, bool], Awaitable[None]],
|
|
122
|
+
callback: Callable[[SignalDatatypeT, bool], SignalDatatypeT | None]
|
|
123
|
+
| Callable[[SignalDatatypeT, bool], Awaitable[SignalDatatypeT | None]],
|
|
124
124
|
):
|
|
125
125
|
"""For setting a callback when a backend is put to.
|
|
126
126
|
|
|
127
127
|
Can either be used in a context, with the callback being unset on exit, or
|
|
128
128
|
as an ordinary function.
|
|
129
129
|
|
|
130
|
+
The value that the callback returns (if not None) will be set to the signal
|
|
131
|
+
readback. If None is returned then the readback will be set to the setpoint.
|
|
132
|
+
|
|
130
133
|
:param signal: A signal with a `MockSignalBackend` backend.
|
|
131
134
|
:param callback: The callback to call when the backend is put to during the
|
|
132
135
|
context.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ophyd-async
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.6
|
|
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
|
|
@@ -406,3 +406,49 @@ async def test_when_put_mock_called_with_typo_then_fails_but_calling_directly_pa
|
|
|
406
406
|
with pytest.raises(AttributeError):
|
|
407
407
|
mock.asssert_called_once() # Note typo here is deliberate!
|
|
408
408
|
await mock()
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
async def test_when_callback_on_mock_put_returns_a_value_the_readback_is_set():
|
|
412
|
+
mock_signal = SignalRW(SoftSignalBackend(int))
|
|
413
|
+
await mock_signal.connect(mock=True)
|
|
414
|
+
|
|
415
|
+
callback_on_mock_put(mock_signal, lambda *_, **__: 2)
|
|
416
|
+
|
|
417
|
+
await mock_signal.set(5)
|
|
418
|
+
assert (await mock_signal.get_value()) == 2
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
async def test_when_callback_on_mock_put_returns_none_then_readback_is_the_setpoint():
|
|
422
|
+
mock_signal = SignalRW(SoftSignalBackend(int))
|
|
423
|
+
await mock_signal.connect(mock=True)
|
|
424
|
+
|
|
425
|
+
callback_on_mock_put(mock_signal, lambda *_, **__: None)
|
|
426
|
+
|
|
427
|
+
await mock_signal.set(5)
|
|
428
|
+
assert (await mock_signal.get_value()) == 5
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
async def test_when_async_callback_returns_a_value_the_readback_is_set():
|
|
432
|
+
mock_signal = SignalRW(SoftSignalBackend(int))
|
|
433
|
+
await mock_signal.connect(mock=True)
|
|
434
|
+
|
|
435
|
+
async def async_callback(*_, **__):
|
|
436
|
+
return 2
|
|
437
|
+
|
|
438
|
+
callback_on_mock_put(mock_signal, async_callback)
|
|
439
|
+
|
|
440
|
+
await mock_signal.set(5)
|
|
441
|
+
assert (await mock_signal.get_value()) == 2
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
async def test_when_async_callback_returns_none_then_readback_is_the_setpoint():
|
|
445
|
+
mock_signal = SignalRW(SoftSignalBackend(int))
|
|
446
|
+
await mock_signal.connect(mock=True)
|
|
447
|
+
|
|
448
|
+
async def async_callback(*_, **__):
|
|
449
|
+
return None
|
|
450
|
+
|
|
451
|
+
callback_on_mock_put(mock_signal, async_callback)
|
|
452
|
+
|
|
453
|
+
await mock_signal.set(5)
|
|
454
|
+
assert (await mock_signal.get_value()) == 5
|
|
@@ -163,6 +163,16 @@ async def test_set_and_wait_for_value_same_set_as_read():
|
|
|
163
163
|
assert await signal.get_value() == 1
|
|
164
164
|
|
|
165
165
|
|
|
166
|
+
async def test_set_and_wait_for_value_same_set_and_read_times_out():
|
|
167
|
+
signal = epics_signal_rw(int, "pva://pv", name="signal")
|
|
168
|
+
await signal.connect(mock=True)
|
|
169
|
+
assert await signal.get_value() == 0
|
|
170
|
+
callback_on_mock_put(signal, lambda v, _: v + 2)
|
|
171
|
+
|
|
172
|
+
with pytest.raises(asyncio.TimeoutError):
|
|
173
|
+
await set_and_wait_for_value(signal, 1, timeout=0.1)
|
|
174
|
+
|
|
175
|
+
|
|
166
176
|
async def test_set_and_wait_for_value_different_set_and_read():
|
|
167
177
|
set_signal = epics_signal_rw(int, "pva://set", name="set-signal")
|
|
168
178
|
match_signal = epics_signal_r(str, "pva://read", name="match-signal")
|
{ophyd_async-0.13.5 → ophyd_async-0.13.6}/tests/unit_tests/epics/pmac/test_pmac_trajectory.py
RENAMED
|
@@ -126,16 +126,17 @@ async def test_pmac_trajectory_kickoff(
|
|
|
126
126
|
1.0,
|
|
127
127
|
1.0,
|
|
128
128
|
1.0,
|
|
129
|
-
1.
|
|
129
|
+
1.395,
|
|
130
130
|
3.0,
|
|
131
|
-
4.
|
|
131
|
+
4.605,
|
|
132
132
|
5.0,
|
|
133
133
|
5.0,
|
|
134
134
|
5.0,
|
|
135
135
|
5.0,
|
|
136
136
|
5.0,
|
|
137
137
|
5.0,
|
|
138
|
-
]
|
|
138
|
+
],
|
|
139
|
+
1e-3,
|
|
139
140
|
)
|
|
140
141
|
|
|
141
142
|
sim_y_motor_velocity_arrays = [
|
|
@@ -173,9 +174,9 @@ async def test_pmac_trajectory_kickoff(
|
|
|
173
174
|
0.0,
|
|
174
175
|
0.0,
|
|
175
176
|
0.0,
|
|
176
|
-
|
|
177
|
-
8.
|
|
178
|
-
|
|
177
|
+
3.951,
|
|
178
|
+
8.888,
|
|
179
|
+
3.951,
|
|
179
180
|
0.0,
|
|
180
181
|
0.0,
|
|
181
182
|
0.0,
|
|
@@ -183,7 +184,7 @@ async def test_pmac_trajectory_kickoff(
|
|
|
183
184
|
0.0,
|
|
184
185
|
0.0,
|
|
185
186
|
],
|
|
186
|
-
1e-
|
|
187
|
+
1e-3,
|
|
187
188
|
)
|
|
188
189
|
|
|
189
190
|
|