ophyd-async 0.9.0a2__tar.gz → 0.10.0a2__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.9.0a2 → ophyd_async-0.10.0a2}/.devcontainer/devcontainer.json +2 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/CONTRIBUTING.md +1 -1
- ophyd_async-0.10.0a2/.github/codeql/codeql-config.yml +4 -0
- ophyd_async-0.10.0a2/.github/workflows/_codeql.yml +32 -0
- ophyd_async-0.10.0a2/.github/workflows/_import_with_no_extras.yml +26 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/workflows/ci.yml +10 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/workflows/periodic.yml +2 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.pre-commit-config.yaml +1 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/Dockerfile +0 -3
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/PKG-INFO +25 -26
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/README.md +10 -7
- ophyd_async-0.10.0a2/docs/_static/custom.css +5 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/conf.py +123 -78
- ophyd_async-0.10.0a2/docs/explanations/decisions/0010-docstring-format.md +101 -0
- ophyd_async-0.10.0a2/docs/explanations/declarative-vs-procedural.md +36 -0
- ophyd_async-0.10.0a2/docs/explanations/design-goals.md +67 -0
- ophyd_async-0.10.0a2/docs/explanations/device-connection-strategies.md +48 -0
- ophyd_async-0.10.0a2/docs/explanations/devices-signals-backends.md +109 -0
- ophyd_async-0.10.0a2/docs/explanations/flyscanning.md +84 -0
- ophyd_async-0.10.0a2/docs/explanations/where-device-logic.md +33 -0
- ophyd_async-0.10.0a2/docs/how-to/choose-right-baseclass.md +33 -0
- ophyd_async-0.10.0a2/docs/how-to/derive-one-signal-from-others.md +44 -0
- ophyd_async-0.10.0a2/docs/how-to/implement-ad-detector.md +105 -0
- ophyd_async-0.10.0a2/docs/how-to/interact-with-signals.md +111 -0
- ophyd_async-0.10.0a2/docs/how-to/put-device-back.md +42 -0
- ophyd_async-0.10.0a2/docs/how-to/store-and-retrieve.md +45 -0
- ophyd_async-0.10.0a2/docs/images/flyscan_collection_windows_and_frames.svg +2 -0
- ophyd_async-0.10.0a2/docs/images/set_and_wait_for_other_value.excalidraw.svg +21 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/reference.md +1 -1
- ophyd_async-0.10.0a2/docs/tutorials/implementing-detectors.md +211 -0
- ophyd_async-0.10.0a2/docs/tutorials/implementing-devices.md +338 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/tutorials/installation.md +15 -1
- ophyd_async-0.10.0a2/docs/tutorials/using-devices.md +156 -0
- ophyd_async-0.10.0a2/docs/tutorials/writing-tests-for-devices.md +124 -0
- ophyd_async-0.10.0a2/docs/tutorials.md +14 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/pyproject.toml +22 -25
- ophyd_async-0.10.0a2/src/ophyd_async/__init__.py +9 -0
- ophyd_async-0.10.0a2/src/ophyd_async/_docs_parser.py +12 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/_version.py +9 -4
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/__init__.py +97 -62
- ophyd_async-0.10.0a2/src/ophyd_async/core/_derived_signal.py +271 -0
- ophyd_async-0.10.0a2/src/ophyd_async/core/_derived_signal_backend.py +300 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_detector.py +106 -125
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_device.py +69 -63
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_device_filler.py +65 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_flyer.py +14 -5
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_hdf_dataset.py +29 -22
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_log.py +14 -23
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_mock_signal_backend.py +11 -3
- ophyd_async-0.10.0a2/src/ophyd_async/core/_protocol.py +138 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_providers.py +28 -9
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_readable.py +44 -35
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_settings.py +36 -27
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_signal.py +262 -170
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_signal_backend.py +56 -13
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_soft_signal_backend.py +16 -11
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_status.py +72 -24
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_table.py +41 -11
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_utils.py +96 -49
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/core/_yaml_settings.py +2 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/__init__.py +1 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adandor/_andor.py +2 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adandor/_andor_controller.py +4 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adandor/_andor_io.py +2 -4
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adaravis/__init__.py +5 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adaravis/_aravis.py +4 -8
- ophyd_async-0.10.0a2/src/ophyd_async/epics/adaravis/_aravis_controller.py +45 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/adaravis/_aravis_io.py +31 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adcore/__init__.py +23 -8
- ophyd_async-0.10.0a2/src/ophyd_async/epics/adcore/_core_detector.py +81 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/adcore/_core_io.py +188 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/adcore/_core_logic.py +200 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adcore/_core_writer.py +12 -8
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adcore/_hdf_writer.py +21 -38
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adcore/_single_trigger.py +2 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adcore/_utils.py +2 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adkinetix/__init__.py +2 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adkinetix/_kinetix.py +3 -3
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adkinetix/_kinetix_controller.py +4 -2
- ophyd_async-0.10.0a2/src/ophyd_async/epics/adkinetix/_kinetix_io.py +29 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adpilatus/__init__.py +5 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adpilatus/_pilatus.py +1 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adpilatus/_pilatus_controller.py +5 -24
- ophyd_async-0.10.0a2/src/ophyd_async/epics/adpilatus/_pilatus_io.py +24 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/adsimdetector/__init__.py +14 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adsimdetector/_sim.py +4 -14
- ophyd_async-0.10.0a2/src/ophyd_async/epics/adsimdetector/_sim_controller.py +17 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/adsimdetector/_sim_io.py +10 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/advimba/__init__.py +10 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/advimba/_vimba.py +3 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/advimba/_vimba_controller.py +4 -2
- ophyd_async-0.10.0a2/src/ophyd_async/epics/advimba/_vimba_io.py +60 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/core/_aioca.py +35 -16
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/core/_epics_connector.py +4 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/core/_epics_device.py +2 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/core/_p4p.py +10 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/core/_pvi_connector.py +65 -8
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/core/_signal.py +51 -51
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/core/_util.py +4 -4
- ophyd_async-0.10.0a2/src/ophyd_async/epics/demo/__init__.py +16 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/demo/__main__.py +31 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/demo/_ioc.py +32 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/demo/_motor.py +82 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/demo/_point_detector.py +42 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/demo/_point_detector_channel.py +22 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/demo/_stage.py +15 -0
- ophyd_async-0.9.0a2/src/ophyd_async/epics/sim/mover.db → ophyd_async-0.10.0a2/src/ophyd_async/epics/demo/motor.db +2 -1
- ophyd_async-0.10.0a2/src/ophyd_async/epics/demo/point_detector.db +59 -0
- ophyd_async-0.10.0a2/src/ophyd_async/epics/demo/point_detector_channel.db +21 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/eiger/_eiger.py +1 -3
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/eiger/_eiger_controller.py +11 -4
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/eiger/_eiger_io.py +2 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/eiger/_odin_io.py +1 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/motor.py +65 -28
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/signal.py +4 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/testing/_example_ioc.py +21 -9
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/testing/_utils.py +3 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/testing/test_records.db +8 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/testing/test_records_pva.db +17 -16
- ophyd_async-0.10.0a2/src/ophyd_async/fastcs/__init__.py +1 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/fastcs/core.py +6 -0
- ophyd_async-0.10.0a2/src/ophyd_async/fastcs/odin/__init__.py +1 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/fastcs/panda/__init__.py +8 -6
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/fastcs/panda/_block.py +29 -9
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/fastcs/panda/_control.py +5 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/fastcs/panda/_hdf_panda.py +2 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/fastcs/panda/_table.py +9 -6
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/fastcs/panda/_trigger.py +23 -9
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/fastcs/panda/_writer.py +27 -30
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/plan_stubs/__init__.py +2 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/plan_stubs/_ensure_connected.py +1 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/plan_stubs/_fly.py +2 -4
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/plan_stubs/_nd_attributes.py +2 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/plan_stubs/_panda.py +1 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/plan_stubs/_settings.py +43 -16
- ophyd_async-0.10.0a2/src/ophyd_async/plan_stubs/_utils.py +3 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/plan_stubs/_wait_for_awaitable.py +1 -1
- ophyd_async-0.10.0a2/src/ophyd_async/sim/__init__.py +29 -0
- ophyd_async-0.10.0a2/src/ophyd_async/sim/__main__.py +43 -0
- ophyd_async-0.10.0a2/src/ophyd_async/sim/_blob_detector.py +33 -0
- ophyd_async-0.10.0a2/src/ophyd_async/sim/_blob_detector_controller.py +48 -0
- ophyd_async-0.10.0a2/src/ophyd_async/sim/_blob_detector_writer.py +105 -0
- ophyd_async-0.10.0a2/src/ophyd_async/sim/_mirror_horizontal.py +46 -0
- ophyd_async-0.10.0a2/src/ophyd_async/sim/_mirror_vertical.py +74 -0
- ophyd_async-0.10.0a2/src/ophyd_async/sim/_motor.py +233 -0
- ophyd_async-0.10.0a2/src/ophyd_async/sim/_pattern_generator.py +124 -0
- ophyd_async-0.10.0a2/src/ophyd_async/sim/_point_detector.py +86 -0
- ophyd_async-0.10.0a2/src/ophyd_async/sim/_stage.py +19 -0
- ophyd_async-0.10.0a2/src/ophyd_async/tango/__init__.py +1 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/tango/core/__init__.py +6 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/tango/core/_base_device.py +41 -33
- ophyd_async-0.10.0a2/src/ophyd_async/tango/core/_converters.py +81 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/tango/core/_signal.py +18 -32
- ophyd_async-0.10.0a2/src/ophyd_async/tango/core/_tango_readable.py +15 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/tango/core/_tango_transport.py +136 -60
- ophyd_async-0.10.0a2/src/ophyd_async/tango/core/_utils.py +47 -0
- {ophyd_async-0.9.0a2/src/ophyd_async/tango/sim → ophyd_async-0.10.0a2/src/ophyd_async/tango/demo}/_counter.py +2 -0
- {ophyd_async-0.9.0a2/src/ophyd_async/tango/sim → ophyd_async-0.10.0a2/src/ophyd_async/tango/demo}/_detector.py +2 -0
- {ophyd_async-0.9.0a2/src/ophyd_async/tango/sim → ophyd_async-0.10.0a2/src/ophyd_async/tango/demo}/_mover.py +5 -4
- {ophyd_async-0.9.0a2/src/ophyd_async/tango/sim → ophyd_async-0.10.0a2/src/ophyd_async/tango/demo}/_tango/_servers.py +4 -0
- ophyd_async-0.10.0a2/src/ophyd_async/tango/testing/__init__.py +6 -0
- ophyd_async-0.10.0a2/src/ophyd_async/tango/testing/_one_of_everything.py +200 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/testing/__init__.py +29 -7
- ophyd_async-0.10.0a2/src/ophyd_async/testing/_assert.py +238 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/testing/_mock_signal_utils.py +56 -70
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/testing/_one_of_everything.py +41 -21
- ophyd_async-0.10.0a2/src/ophyd_async/testing/_single_derived.py +89 -0
- ophyd_async-0.10.0a2/src/ophyd_async/testing/_utils.py +3 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async.egg-info/PKG-INFO +25 -26
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async.egg-info/SOURCES.txt +71 -40
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async.egg-info/requires.txt +11 -15
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/system_tests/epics/eiger/test_eiger_system.py +2 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/conftest.py +0 -27
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_detector.py +2 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_flyer.py +6 -7
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_mock_signal_backend.py +1 -2
- ophyd_async-0.10.0a2/tests/core/test_multi_derived_signal.py +130 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_signal.py +224 -112
- ophyd_async-0.10.0a2/tests/core/test_single_derived_signal.py +120 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_soft_signal_backend.py +30 -51
- ophyd_async-0.10.0a2/tests/epics/adandor/test_andor.py +46 -0
- ophyd_async-0.10.0a2/tests/epics/adaravis/test_aravis.py +44 -0
- ophyd_async-0.10.0a2/tests/epics/adcore/test_cont_acq_detector.py +83 -0
- ophyd_async-0.10.0a2/tests/epics/adcore/test_detectors.py +151 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/adcore/test_drivers.py +3 -5
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/adcore/test_scans.py +2 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/adcore/test_single_trigger.py +2 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/adcore/test_writers.py +4 -4
- ophyd_async-0.10.0a2/tests/epics/adkinetix/test_kinetix.py +51 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/adpilatus/test_pilatus.py +1 -5
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/adsimdetector/test_sim.py +5 -3
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/advimba/test_vimba.py +0 -76
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/conftest.py +18 -0
- ophyd_async-0.10.0a2/tests/epics/demo/test_epics_demo.py +338 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/eiger/test_eiger_controller.py +2 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/eiger/test_eiger_detector.py +0 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/signal/test_signals.py +94 -50
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/signal/test_yaml_save_ca.yaml +5 -4
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/signal/test_yaml_save_pva.yaml +10 -9
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/test_motor.py +8 -67
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/fastcs/panda/test_hdf_panda.py +0 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/fastcs/panda/test_panda_utils.py +8 -3
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/fastcs/panda/test_trigger.py +2 -2
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/fastcs/panda/test_writer.py +5 -8
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/plan_stubs/test_fly.py +1 -1
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/plan_stubs/test_settings.py +89 -2
- ophyd_async-0.10.0a2/tests/sim/test_sim_blob_detector.py +129 -0
- ophyd_async-0.10.0a2/tests/sim/test_sim_motor.py +105 -0
- ophyd_async-0.10.0a2/tests/tango/conftest.py +187 -0
- ophyd_async-0.10.0a2/tests/tango/context_subprocess.py +28 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/tango/test_base_device.py +70 -65
- ophyd_async-0.10.0a2/tests/tango/test_tango_signals.py +470 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/tango/test_tango_transport.py +70 -65
- ophyd_async-0.10.0a2/tests/test_data/test_yaml_config_save.yaml +58 -0
- ophyd_async-0.10.0a2/tests/test_data/test_yaml_save.yaml +176 -0
- ophyd_async-0.10.0a2/tests/test_tutorials.py +47 -0
- ophyd_async-0.9.0a2/docs/_api.rst +0 -16
- ophyd_async-0.9.0a2/docs/_templates/custom-module-template.rst +0 -42
- ophyd_async-0.9.0a2/docs/examples/epics_demo.py +0 -37
- ophyd_async-0.9.0a2/docs/examples/foo_detector.py +0 -79
- ophyd_async-0.9.0a2/docs/examples/tango_demo.py +0 -54
- ophyd_async-0.9.0a2/docs/explanations/design-goals.rst +0 -57
- ophyd_async-0.9.0a2/docs/explanations/event-loop-choice.rst +0 -50
- ophyd_async-0.9.0a2/docs/explanations/flyscanning.rst +0 -29
- ophyd_async-0.9.0a2/docs/how-to/choose-interfaces-for-devices.md +0 -15
- ophyd_async-0.9.0a2/docs/how-to/compound-devices.rst +0 -44
- ophyd_async-0.9.0a2/docs/how-to/make-a-simple-device.rst +0 -91
- ophyd_async-0.9.0a2/docs/how-to/make-a-standard-detector.rst +0 -64
- ophyd_async-0.9.0a2/docs/how-to/use_set_and_wait_for_other_value.md +0 -45
- ophyd_async-0.9.0a2/docs/how-to/write-tests-for-devices.rst +0 -63
- ophyd_async-0.9.0a2/docs/images/set_and_wait_for_other_value.svg +0 -2
- ophyd_async-0.9.0a2/docs/tutorials/using-existing-devices.rst +0 -184
- ophyd_async-0.9.0a2/docs/tutorials.md +0 -10
- ophyd_async-0.9.0a2/src/ophyd_async/__init__.py +0 -12
- ophyd_async-0.9.0a2/src/ophyd_async/core/_protocol.py +0 -118
- ophyd_async-0.9.0a2/src/ophyd_async/epics/adaravis/_aravis_controller.py +0 -68
- ophyd_async-0.9.0a2/src/ophyd_async/epics/adaravis/_aravis_io.py +0 -46
- ophyd_async-0.9.0a2/src/ophyd_async/epics/adcore/_core_detector.py +0 -41
- ophyd_async-0.9.0a2/src/ophyd_async/epics/adcore/_core_io.py +0 -163
- ophyd_async-0.9.0a2/src/ophyd_async/epics/adcore/_core_logic.py +0 -121
- ophyd_async-0.9.0a2/src/ophyd_async/epics/adkinetix/_kinetix_io.py +0 -30
- ophyd_async-0.9.0a2/src/ophyd_async/epics/adpilatus/_pilatus_io.py +0 -22
- ophyd_async-0.9.0a2/src/ophyd_async/epics/adsimdetector/__init__.py +0 -7
- ophyd_async-0.9.0a2/src/ophyd_async/epics/advimba/_vimba_io.py +0 -65
- ophyd_async-0.9.0a2/src/ophyd_async/epics/sim/__init__.py +0 -54
- ophyd_async-0.9.0a2/src/ophyd_async/epics/sim/_ioc.py +0 -29
- ophyd_async-0.9.0a2/src/ophyd_async/epics/sim/_mover.py +0 -101
- ophyd_async-0.9.0a2/src/ophyd_async/epics/sim/_sensor.py +0 -37
- ophyd_async-0.9.0a2/src/ophyd_async/epics/sim/sensor.db +0 -19
- ophyd_async-0.9.0a2/src/ophyd_async/fastcs/__init__.py +0 -0
- ophyd_async-0.9.0a2/src/ophyd_async/fastcs/odin/__init__.py +0 -0
- ophyd_async-0.9.0a2/src/ophyd_async/sim/__init__.py +0 -19
- ophyd_async-0.9.0a2/src/ophyd_async/sim/_pattern_detector/__init__.py +0 -13
- ophyd_async-0.9.0a2/src/ophyd_async/sim/_pattern_detector/_pattern_detector.py +0 -42
- ophyd_async-0.9.0a2/src/ophyd_async/sim/_pattern_detector/_pattern_detector_controller.py +0 -69
- ophyd_async-0.9.0a2/src/ophyd_async/sim/_pattern_detector/_pattern_detector_writer.py +0 -41
- ophyd_async-0.9.0a2/src/ophyd_async/sim/_pattern_detector/_pattern_generator.py +0 -214
- ophyd_async-0.9.0a2/src/ophyd_async/sim/_sim_motor.py +0 -107
- ophyd_async-0.9.0a2/src/ophyd_async/tango/__init__.py +0 -0
- ophyd_async-0.9.0a2/src/ophyd_async/tango/core/_tango_readable.py +0 -32
- ophyd_async-0.9.0a2/src/ophyd_async/testing/_assert.py +0 -176
- ophyd_async-0.9.0a2/tests/epics/adandor/test_andor.py +0 -123
- ophyd_async-0.9.0a2/tests/epics/adaravis/test_aravis.py +0 -157
- ophyd_async-0.9.0a2/tests/epics/adkinetix/test_kinetix.py +0 -127
- ophyd_async-0.9.0a2/tests/epics/sim/test_epics_sim.py +0 -409
- ophyd_async-0.9.0a2/tests/sim/__init__.py +0 -0
- ophyd_async-0.9.0a2/tests/sim/conftest.py +0 -11
- ophyd_async-0.9.0a2/tests/sim/test_pattern_generator.py +0 -67
- ophyd_async-0.9.0a2/tests/sim/test_sim_detector.py +0 -66
- ophyd_async-0.9.0a2/tests/sim/test_sim_motor.py +0 -93
- ophyd_async-0.9.0a2/tests/sim/test_sim_writer.py +0 -42
- ophyd_async-0.9.0a2/tests/sim/test_streaming_plan.py +0 -56
- ophyd_async-0.9.0a2/tests/tango/test_tango_signals.py +0 -631
- ophyd_async-0.9.0a2/tests/test_data/test_yaml_save.yaml +0 -119
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.codecov.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.copier-answers.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.git-blame-ignore-revs +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/ISSUE_TEMPLATE/issue.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/actions/install_requirements/action.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/dependabot.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/pages/index.html +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/pages/make_switcher.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/workflows/_check.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/workflows/_dist.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/workflows/_docs.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/workflows/_pypi.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/workflows/_release.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/workflows/_test.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.github/workflows/_tox.yml +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/.gitignore +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/LICENSE +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions/0001-record-architecture-decisions.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions/0002-switched-to-python-copier-template.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions/0003-ophyd-async-migration.rst +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions/0004-repository-structure.rst +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions/0005-respect-black-line-length.rst +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions/0006-procedural-device-definitions.rst +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions/0007-subpackage-structure.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions/0008-signal-types.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions/0009-procedural-vs-declarative-devices.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions/COPYME +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations/decisions.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/explanations.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/genindex.rst +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/how-to/contribute.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/how-to.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/images/ophyd-async-logo.svg +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/images/ophyd-favicon.svg +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/docs/index.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/setup.cfg +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/__main__.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adandor/__init__.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adcore/_jpeg_writer.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/adcore/_tiff_writer.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/core/__init__.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/eiger/__init__.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/epics/testing/__init__.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/py.typed +0 -0
- {ophyd_async-0.9.0a2/src/ophyd_async/tango/sim → ophyd_async-0.10.0a2/src/ophyd_async/tango/demo}/__init__.py +0 -0
- {ophyd_async-0.9.0a2/src/ophyd_async/tango/sim → ophyd_async-0.10.0a2/src/ophyd_async/tango/demo}/_tango/__init__.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/testing/__pytest_assert_rewrite.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async/testing/_wait_for_pending.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async.egg-info/dependency_links.txt +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/src/ophyd_async.egg-info/top_level.txt +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/system_tests/epics/eiger/README.md +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/system_tests/epics/eiger/start_iocs_and_run_tests.sh +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_auto_init_devices.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_device.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_log.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_observe.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_protocol.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_providers.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_readable.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_status.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_subset_enum.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_table.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_utils.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/core/test_watchable_async_status.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/eiger/test_odin_io.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/pvi/test_pvi.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/signal/test_common.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/epics/test_areadetector_subclass_naming.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/fastcs/panda/db/panda.db +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/fastcs/panda/test_panda_connect.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/fastcs/panda/test_panda_control.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/fastcs/panda/test_seq_table.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/plan_stubs/test_ensure_connected.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/plan_stubs/test_setup.py +0 -0
- {ophyd_async-0.9.0a2/src/ophyd_async/epics → ophyd_async-0.10.0a2/tests/sim}/__init__.py +0 -0
- {ophyd_async-0.9.0a2 → ophyd_async-0.10.0a2}/tests/test_cli.py +0 -0
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"editor.codeActionsOnSave": {
|
|
21
21
|
"source.organizeImports": "explicit"
|
|
22
22
|
},
|
|
23
|
+
"remote.autoForwardPorts": false,
|
|
23
24
|
"[python]": {
|
|
24
25
|
"editor.defaultFormatter": "charliermarsh.ruff"
|
|
25
26
|
}
|
|
@@ -38,7 +39,7 @@
|
|
|
38
39
|
},
|
|
39
40
|
"features": {
|
|
40
41
|
// add in eternal history and other bash features
|
|
41
|
-
"ghcr.io/diamondlightsource/devcontainer-features/bash-config:1
|
|
42
|
+
"ghcr.io/diamondlightsource/devcontainer-features/bash-config:1": {}
|
|
42
43
|
},
|
|
43
44
|
// Create the config folder for the bash-config feature
|
|
44
45
|
"initializeCommand": "mkdir -p ${localEnv:HOME}/.config/bash-config",
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: "CodeQL"
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_call:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
analyze:
|
|
8
|
+
name: Analyze (python)
|
|
9
|
+
# Runner size impacts CodeQL analysis time. To learn more, please see:
|
|
10
|
+
# - https://gh.io/using-larger-runners (GitHub.com only)
|
|
11
|
+
runs-on: "ubuntu-latest"
|
|
12
|
+
timeout-minutes: 120
|
|
13
|
+
permissions:
|
|
14
|
+
# required for all workflows
|
|
15
|
+
security-events: write
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout repository
|
|
19
|
+
uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Initialize CodeQL
|
|
22
|
+
uses: github/codeql-action/init@v3
|
|
23
|
+
with:
|
|
24
|
+
languages: python
|
|
25
|
+
build-mode: none
|
|
26
|
+
queries: +security-and-quality
|
|
27
|
+
config-file: ./.github/codeql/codeql-config.yml
|
|
28
|
+
|
|
29
|
+
- name: Perform CodeQL Analysis
|
|
30
|
+
uses: github/codeql-action/analyze@v3
|
|
31
|
+
with:
|
|
32
|
+
category: "/language:python"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
on:
|
|
2
|
+
workflow_call:
|
|
3
|
+
|
|
4
|
+
jobs:
|
|
5
|
+
run:
|
|
6
|
+
runs-on: "ubuntu-latest"
|
|
7
|
+
|
|
8
|
+
steps:
|
|
9
|
+
- name: Checkout
|
|
10
|
+
uses: actions/checkout@v4
|
|
11
|
+
with:
|
|
12
|
+
# Need this to get version number from last tag
|
|
13
|
+
fetch-depth: 0
|
|
14
|
+
|
|
15
|
+
- name: Install (with no extras)
|
|
16
|
+
uses: ./.github/actions/install_requirements
|
|
17
|
+
with:
|
|
18
|
+
pip-install: "."
|
|
19
|
+
|
|
20
|
+
- name: Check APIs are importable
|
|
21
|
+
run: |
|
|
22
|
+
python -c "import ophyd_async"
|
|
23
|
+
python -c "import ophyd_async.core"
|
|
24
|
+
python -c "import ophyd_async.epics.core"
|
|
25
|
+
python -c "import ophyd_async.epics.motor"
|
|
26
|
+
python -c "import ophyd_async.plan_stubs"
|
|
@@ -34,6 +34,11 @@ jobs:
|
|
|
34
34
|
secrets:
|
|
35
35
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
36
36
|
|
|
37
|
+
import_with_no_extras:
|
|
38
|
+
needs: check
|
|
39
|
+
if: needs.check.outputs.branch-pr == ''
|
|
40
|
+
uses: ./.github/workflows/_import_with_no_extras.yml
|
|
41
|
+
|
|
37
42
|
docs:
|
|
38
43
|
needs: check
|
|
39
44
|
if: needs.check.outputs.branch-pr == ''
|
|
@@ -51,6 +56,11 @@ jobs:
|
|
|
51
56
|
permissions:
|
|
52
57
|
id-token: write
|
|
53
58
|
|
|
59
|
+
codeql:
|
|
60
|
+
needs: check
|
|
61
|
+
if: needs.check.outputs.branch-pr == ''
|
|
62
|
+
uses: ./.github/workflows/_codeql.yml
|
|
63
|
+
|
|
54
64
|
release:
|
|
55
65
|
if: github.ref_type == 'tag'
|
|
56
66
|
needs: [dist, docs]
|
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
ARG PYTHON_VERSION=3.11
|
|
4
4
|
FROM python:${PYTHON_VERSION} AS developer
|
|
5
5
|
|
|
6
|
-
# Allow Qt 6 (pyside6) UI to work in the container - also see apt-get below
|
|
7
|
-
ENV MPLBACKEND=QtAgg
|
|
8
|
-
|
|
9
6
|
# Add any system dependencies for the developer/build environment here
|
|
10
7
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
11
8
|
graphviz \
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: ophyd-async
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.0a2
|
|
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,35 +41,33 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
41
41
|
Requires-Python: >=3.10
|
|
42
42
|
Description-Content-Type: text/markdown
|
|
43
43
|
License-File: LICENSE
|
|
44
|
-
Requires-Dist: networkx>=2.0
|
|
45
44
|
Requires-Dist: numpy
|
|
46
|
-
Requires-Dist:
|
|
47
|
-
Requires-Dist: pint
|
|
48
|
-
Requires-Dist: bluesky>=1.13
|
|
45
|
+
Requires-Dist: bluesky>=1.13.1rc2
|
|
49
46
|
Requires-Dist: event-model>=1.22.1
|
|
50
|
-
Requires-Dist: p4p>=4.2.0a3
|
|
51
47
|
Requires-Dist: pyyaml
|
|
52
48
|
Requires-Dist: colorlog
|
|
53
49
|
Requires-Dist: pydantic>=2.0
|
|
54
50
|
Requires-Dist: pydantic-numpy
|
|
51
|
+
Provides-Extra: sim
|
|
52
|
+
Requires-Dist: h5py; extra == "sim"
|
|
55
53
|
Provides-Extra: ca
|
|
56
54
|
Requires-Dist: aioca>=1.6; extra == "ca"
|
|
57
55
|
Provides-Extra: pva
|
|
58
|
-
Requires-Dist: p4p; extra == "pva"
|
|
59
|
-
Provides-Extra: sim
|
|
60
|
-
Requires-Dist: h5py; extra == "sim"
|
|
56
|
+
Requires-Dist: p4p>=4.2.0; extra == "pva"
|
|
61
57
|
Provides-Extra: tango
|
|
62
|
-
Requires-Dist: pytango
|
|
58
|
+
Requires-Dist: pytango==10.0.0; extra == "tango"
|
|
59
|
+
Provides-Extra: demo
|
|
60
|
+
Requires-Dist: ipython; extra == "demo"
|
|
61
|
+
Requires-Dist: matplotlib; extra == "demo"
|
|
62
|
+
Requires-Dist: pyqt6; extra == "demo"
|
|
63
63
|
Provides-Extra: dev
|
|
64
|
-
Requires-Dist: ophyd_async[pva]; extra == "dev"
|
|
65
64
|
Requires-Dist: ophyd_async[sim]; extra == "dev"
|
|
66
65
|
Requires-Dist: ophyd_async[ca]; extra == "dev"
|
|
66
|
+
Requires-Dist: ophyd_async[pva]; extra == "dev"
|
|
67
67
|
Requires-Dist: ophyd_async[tango]; extra == "dev"
|
|
68
|
+
Requires-Dist: ophyd_async[demo]; extra == "dev"
|
|
68
69
|
Requires-Dist: inflection; extra == "dev"
|
|
69
|
-
Requires-Dist: ipython; extra == "dev"
|
|
70
|
-
Requires-Dist: ipywidgets; extra == "dev"
|
|
71
70
|
Requires-Dist: import-linter; extra == "dev"
|
|
72
|
-
Requires-Dist: matplotlib; extra == "dev"
|
|
73
71
|
Requires-Dist: myst-parser; extra == "dev"
|
|
74
72
|
Requires-Dist: numpydoc; extra == "dev"
|
|
75
73
|
Requires-Dist: ophyd; extra == "dev"
|
|
@@ -79,7 +77,6 @@ Requires-Dist: pre-commit; extra == "dev"
|
|
|
79
77
|
Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
|
|
80
78
|
Requires-Dist: pyepics>=3.4.2; extra == "dev"
|
|
81
79
|
Requires-Dist: pyright; extra == "dev"
|
|
82
|
-
Requires-Dist: pyside6==6.7.0; extra == "dev"
|
|
83
80
|
Requires-Dist: pytest; extra == "dev"
|
|
84
81
|
Requires-Dist: pytest-asyncio; extra == "dev"
|
|
85
82
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -88,16 +85,15 @@ Requires-Dist: pytest-forked; extra == "dev"
|
|
|
88
85
|
Requires-Dist: pytest-rerunfailures; extra == "dev"
|
|
89
86
|
Requires-Dist: pytest-timeout; extra == "dev"
|
|
90
87
|
Requires-Dist: ruff; extra == "dev"
|
|
91
|
-
Requires-Dist: sphinx<7.4.0; extra == "dev"
|
|
92
88
|
Requires-Dist: sphinx-autobuild; extra == "dev"
|
|
93
|
-
Requires-Dist:
|
|
89
|
+
Requires-Dist: sphinx-autodoc2; extra == "dev"
|
|
94
90
|
Requires-Dist: sphinxcontrib-mermaid; extra == "dev"
|
|
95
91
|
Requires-Dist: sphinx-copybutton; extra == "dev"
|
|
96
92
|
Requires-Dist: sphinx-design; extra == "dev"
|
|
97
|
-
Requires-Dist: super_state_machine; extra == "dev"
|
|
98
93
|
Requires-Dist: tox-direct; extra == "dev"
|
|
99
94
|
Requires-Dist: types-mock; extra == "dev"
|
|
100
95
|
Requires-Dist: types-pyyaml; extra == "dev"
|
|
96
|
+
Dynamic: license-file
|
|
101
97
|
|
|
102
98
|
[](https://github.com/bluesky/ophyd-async/actions/workflows/ci.yml)
|
|
103
99
|
[](https://codecov.io/gh/bluesky/ophyd-async)
|
|
@@ -114,16 +110,19 @@ Asynchronous Bluesky hardware abstraction code, compatible with control systems
|
|
|
114
110
|
| Documentation | <https://bluesky.github.io/ophyd-async> |
|
|
115
111
|
| Releases | <https://github.com/bluesky/ophyd-async/releases> |
|
|
116
112
|
|
|
117
|
-
Ophyd-async is a Python library for asynchronously interfacing with hardware, intended to
|
|
118
|
-
|
|
119
|
-
|
|
113
|
+
Ophyd-async is a Python library for asynchronously interfacing with hardware, intended to be used as an abstraction layer that enables experiment orchestration and data acquisition code to operate above the specifics of particular devices and control systems.
|
|
114
|
+
|
|
115
|
+
Both ophyd sync and ophyd-async are typically used with the [Bluesky Run Engine][] for experiment orchestration and data acquisition.
|
|
116
|
+
|
|
117
|
+
The main differences from ophyd sync are:
|
|
120
118
|
|
|
121
|
-
|
|
119
|
+
- Asynchronous Signal access, simplifying the parallel control of multiple Signals
|
|
120
|
+
- Support for [EPICS][] PVA and [Tango][] as well as the traditional EPICS CA
|
|
121
|
+
- Better library support for splitting the logic from the hardware interface to avoid complex class heirarchies
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
It was written with the aim of implementing flyscanning in a generic and extensible way with highly customizable devices like PandABox and the Delta Tau PMAC products. Using async code makes it possible to do the "put 3 PVs in parallel, then get from another PV" logic that is common in flyscanning without the performance and complexity overhead of multiple threads.
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
* Simpler instantiation of devices (groupings of signals) with less reliance upon complex class hierarchies
|
|
125
|
+
Devices from both ophyd sync and ophyd-async can be used in the same RunEngine and even in the same scan. This allows a per-device migration where devices are reimplemented in ophyd-async one by one.
|
|
127
126
|
|
|
128
127
|
[Bluesky Run Engine]: http://blueskyproject.io/bluesky
|
|
129
128
|
[EPICS]: http://www.aps.anl.gov/epics/
|
|
@@ -13,16 +13,19 @@ Asynchronous Bluesky hardware abstraction code, compatible with control systems
|
|
|
13
13
|
| Documentation | <https://bluesky.github.io/ophyd-async> |
|
|
14
14
|
| Releases | <https://github.com/bluesky/ophyd-async/releases> |
|
|
15
15
|
|
|
16
|
-
Ophyd-async is a Python library for asynchronously interfacing with hardware, intended to
|
|
17
|
-
be used as an abstraction layer that enables experiment orchestration and data acquisition code to operate above the specifics of particular devices and control
|
|
18
|
-
systems.
|
|
16
|
+
Ophyd-async is a Python library for asynchronously interfacing with hardware, intended to be used as an abstraction layer that enables experiment orchestration and data acquisition code to operate above the specifics of particular devices and control systems.
|
|
19
17
|
|
|
20
|
-
Both ophyd and ophyd-async are typically used with the [Bluesky Run Engine][] for experiment orchestration and data acquisition.
|
|
18
|
+
Both ophyd sync and ophyd-async are typically used with the [Bluesky Run Engine][] for experiment orchestration and data acquisition.
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
The main differences from ophyd sync are:
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
- Asynchronous Signal access, simplifying the parallel control of multiple Signals
|
|
23
|
+
- Support for [EPICS][] PVA and [Tango][] as well as the traditional EPICS CA
|
|
24
|
+
- Better library support for splitting the logic from the hardware interface to avoid complex class heirarchies
|
|
25
|
+
|
|
26
|
+
It was written with the aim of implementing flyscanning in a generic and extensible way with highly customizable devices like PandABox and the Delta Tau PMAC products. Using async code makes it possible to do the "put 3 PVs in parallel, then get from another PV" logic that is common in flyscanning without the performance and complexity overhead of multiple threads.
|
|
27
|
+
|
|
28
|
+
Devices from both ophyd sync and ophyd-async can be used in the same RunEngine and even in the same scan. This allows a per-device migration where devices are reimplemented in ophyd-async one by one.
|
|
26
29
|
|
|
27
30
|
[Bluesky Run Engine]: http://blueskyproject.io/bluesky
|
|
28
31
|
[EPICS]: http://www.aps.anl.gov/epics/
|
|
@@ -5,17 +5,45 @@ list see the documentation:
|
|
|
5
5
|
https://www.sphinx-doc.org/en/master/usage/configuration.html
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
import os
|
|
9
8
|
import sys
|
|
10
9
|
from pathlib import Path
|
|
11
10
|
from subprocess import check_output
|
|
12
11
|
|
|
13
12
|
import requests
|
|
13
|
+
from sphinx import addnodes, application, environment
|
|
14
|
+
from sphinx.ext import intersphinx
|
|
14
15
|
|
|
15
16
|
import ophyd_async
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
|
|
19
|
+
def missing_reference_handler(
|
|
20
|
+
app: application.Sphinx,
|
|
21
|
+
env: environment.BuildEnvironment,
|
|
22
|
+
node: addnodes.pending_xref,
|
|
23
|
+
contnode,
|
|
24
|
+
):
|
|
25
|
+
"""Find refs for TypeVars and Unions."""
|
|
26
|
+
target = node["reftarget"]
|
|
27
|
+
if "." in target and node["reftype"] == "class":
|
|
28
|
+
# Try again as `obj` so we pick up Unions, TypeVars and other things
|
|
29
|
+
if target.startswith("ophyd_async"):
|
|
30
|
+
# Pick it up from our domain
|
|
31
|
+
domain = env.domains[node["refdomain"]]
|
|
32
|
+
refdoc = node.get("refdoc")
|
|
33
|
+
return domain.resolve_xref(
|
|
34
|
+
env, refdoc, app.builder, "obj", target, node, contnode
|
|
35
|
+
)
|
|
36
|
+
else:
|
|
37
|
+
# pass it to intersphinx with the right type
|
|
38
|
+
node["reftype"] = "obj"
|
|
39
|
+
return intersphinx.missing_reference(app, env, node, contnode)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def setup(app: application.Sphinx):
|
|
43
|
+
"""Add the custom handler to the Sphinx app."""
|
|
44
|
+
app.connect("missing-reference", missing_reference_handler)
|
|
45
|
+
|
|
46
|
+
|
|
19
47
|
# General information about the project.
|
|
20
48
|
project = "ophyd-async"
|
|
21
49
|
copyright = "2014, Brookhaven National Lab"
|
|
@@ -35,76 +63,119 @@ else:
|
|
|
35
63
|
extensions = [
|
|
36
64
|
# for diagrams
|
|
37
65
|
"sphinxcontrib.mermaid",
|
|
38
|
-
# Used for BaseModel autodoc
|
|
39
|
-
"sphinxcontrib.autodoc_pydantic",
|
|
40
66
|
# Use this for generating API docs
|
|
41
|
-
"
|
|
42
|
-
# Not sure if this is still used?
|
|
43
|
-
"sphinx.ext.doctest",
|
|
44
|
-
# and making summary tables at the top of API docs
|
|
45
|
-
"sphinx.ext.autosummary",
|
|
46
|
-
# This can parse google style docstrings
|
|
47
|
-
"sphinx.ext.napoleon",
|
|
67
|
+
"autodoc2",
|
|
48
68
|
# For linking to external sphinx documentation
|
|
49
69
|
"sphinx.ext.intersphinx",
|
|
50
70
|
# Add links to source code in API docs
|
|
51
71
|
"sphinx.ext.viewcode",
|
|
52
|
-
# Adds the inheritance-diagram generation directive
|
|
53
|
-
"sphinx.ext.inheritance_diagram",
|
|
54
72
|
# Add a copy button to each code block
|
|
55
73
|
"sphinx_copybutton",
|
|
56
74
|
# For the card element
|
|
57
75
|
"sphinx_design",
|
|
58
|
-
|
|
76
|
+
# To make .nojekyll
|
|
59
77
|
"sphinx.ext.githubpages",
|
|
78
|
+
# To make the {ipython} directive
|
|
60
79
|
"IPython.sphinxext.ipython_directive",
|
|
80
|
+
# To syntax highlight "ipython" language code blocks
|
|
61
81
|
"IPython.sphinxext.ipython_console_highlighting",
|
|
82
|
+
# To embed matplotlib plots generated from code
|
|
62
83
|
"matplotlib.sphinxext.plot_directive",
|
|
84
|
+
# To parse markdown
|
|
63
85
|
"myst_parser",
|
|
64
|
-
"numpydoc",
|
|
65
86
|
]
|
|
66
87
|
|
|
67
|
-
#
|
|
68
|
-
|
|
88
|
+
# Which package to load and document
|
|
89
|
+
autodoc2_packages = [{"path": "../src/ophyd_async", "auto_mode": True}]
|
|
90
|
+
|
|
91
|
+
# Put them in docs/_api which is git ignored
|
|
92
|
+
autodoc2_output_dir = "_api"
|
|
93
|
+
|
|
94
|
+
# Modules that should have an all...
|
|
95
|
+
autodoc2_module_all_regexes = [
|
|
96
|
+
r"ophyd_async\.core",
|
|
97
|
+
r"ophyd_async\.sim",
|
|
98
|
+
r"ophyd_async\.epics\.[^\.]*",
|
|
99
|
+
r"ophyd_async\.tango\.[^\.]*",
|
|
100
|
+
r"ophyd_async\.fastcs\.[^\.]*",
|
|
101
|
+
r"ophyd_async\.plan_stubs",
|
|
102
|
+
r"ophyd_async\.testing",
|
|
103
|
+
]
|
|
104
|
+
|
|
105
|
+
# ... so should have their private modules ignored
|
|
106
|
+
autodoc2_skip_module_regexes = [
|
|
107
|
+
x + r"\._.*" for x in autodoc2_module_all_regexes + ["ophyd_async"]
|
|
108
|
+
]
|
|
109
|
+
|
|
110
|
+
# Render with shortened names
|
|
111
|
+
autodoc2_render_plugin = "ophyd_async._docs_parser.ShortenedNamesRenderer"
|
|
69
112
|
|
|
70
|
-
|
|
71
|
-
|
|
113
|
+
# Don't document private things
|
|
114
|
+
autodoc2_hidden_objects = {"private", "dunder", "inherited"}
|
|
115
|
+
|
|
116
|
+
# We don't have any docstring for __init__, so by separating
|
|
117
|
+
# them here we don't get the "Initilize" text that would otherwise be added
|
|
118
|
+
autodoc2_class_docstring = "both"
|
|
119
|
+
|
|
120
|
+
# For some reason annotations are not expanded, this will do here
|
|
121
|
+
autodoc2_replace_annotations = [
|
|
122
|
+
("~PvSuffix.rbv", "ophyd_async.epics.core.PvSuffix.rbv"),
|
|
123
|
+
("typing_extensions.Self", "typing.Self"),
|
|
124
|
+
]
|
|
125
|
+
|
|
126
|
+
# Which objects to include docstrings for. ‘direct’ means only from objects
|
|
127
|
+
# that are not inherited.
|
|
128
|
+
autodoc2_docstrings = "all"
|
|
129
|
+
|
|
130
|
+
# So we can use the ::: syntax and the :param thing: syntax
|
|
131
|
+
myst_enable_extensions = ["colon_fence", "fieldlist"]
|
|
72
132
|
|
|
73
133
|
# If true, Sphinx will warn about all references where the target cannot
|
|
74
134
|
# be found.
|
|
75
|
-
|
|
135
|
+
nitpicky = True
|
|
76
136
|
|
|
77
137
|
# A list of (type, target) tuples (by default empty) that should be ignored when
|
|
78
138
|
# generating warnings in "nitpicky mode". Note that type should include the
|
|
79
139
|
# domain name if present. Example entries would be ('py:func', 'int') or
|
|
80
140
|
# ('envvar', 'LD_LIBRARY_PATH').
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
141
|
+
obj_ignore = [
|
|
142
|
+
"ophyd_async.core._derived_signal_backend.RawT",
|
|
143
|
+
"ophyd_async.core._derived_signal_backend.DerivedT",
|
|
144
|
+
"ophyd_async.core._detector.DetectorControllerT",
|
|
145
|
+
"ophyd_async.core._detector.DetectorWriterT",
|
|
146
|
+
"ophyd_async.core._device.DeviceT",
|
|
147
|
+
"ophyd_async.core._device_filler.SignalBackendT",
|
|
148
|
+
"ophyd_async.core._device_filler.DeviceConnectorT",
|
|
149
|
+
"ophyd_async.core._derived_signal_backend.TransformT",
|
|
150
|
+
"ophyd_async.core._protocol.C",
|
|
151
|
+
"ophyd_async.core._signal_backend.SignalDatatypeV",
|
|
152
|
+
"ophyd_async.core._status.AsyncStatusBase",
|
|
153
|
+
"ophyd_async.core._utils.P",
|
|
154
|
+
"ophyd_async.core._utils.T",
|
|
155
|
+
"ophyd_async.core._utils.V",
|
|
156
|
+
"ophyd_async.epics.adcore._core_logic.ADBaseIOT",
|
|
157
|
+
"ophyd_async.epics.adcore._core_logic.ADBaseControllerT",
|
|
158
|
+
"ophyd_async.epics.adcore._core_writer.NDFileIOT",
|
|
159
|
+
"ophyd_async.epics.adcore._core_writer.ADWriterT",
|
|
160
|
+
"ophyd_async.tango.core._base_device.T",
|
|
161
|
+
"ophyd_async.tango.core._tango_transport.P",
|
|
162
|
+
"ophyd_async.tango.core._tango_transport.R",
|
|
163
|
+
"ophyd_async.tango.core._tango_transport.TangoProxy",
|
|
164
|
+
"ophyd_async.testing._utils.T",
|
|
165
|
+
"ophyd_async.sim._mirror.TwoJackRaw",
|
|
166
|
+
"ophyd_async.sim._mirror.TwoJackDerived",
|
|
167
|
+
"0.1",
|
|
168
|
+
"1.0",
|
|
169
|
+
]
|
|
170
|
+
nitpick_ignore = []
|
|
171
|
+
for var in obj_ignore:
|
|
172
|
+
nitpick_ignore.append(("py:class", var))
|
|
173
|
+
nitpick_ignore.append(("py:obj", var))
|
|
174
|
+
# Ignore classes in modules with no intersphinx
|
|
175
|
+
nitpick_ignore_regex = [
|
|
176
|
+
(r"py:.*", r"pydantic\..*"),
|
|
177
|
+
(r"py:.*", r"tango\..*"),
|
|
92
178
|
]
|
|
93
|
-
|
|
94
|
-
# Order the members by the order they appear in the source code
|
|
95
|
-
autodoc_member_order = "bysource"
|
|
96
|
-
|
|
97
|
-
# Don't inherit docstrings from baseclasses
|
|
98
|
-
autodoc_inherit_docstrings = False
|
|
99
|
-
|
|
100
|
-
# Add some more modules to the top level autosummary
|
|
101
|
-
ophyd_async.__all__ += ["sim", "epics", "tango", "fastcs", "plan_stubs"]
|
|
102
|
-
|
|
103
|
-
# Document only what is in __all__
|
|
104
|
-
autosummary_ignore_module_all = False
|
|
105
|
-
|
|
106
|
-
# Add any paths that contain templates here, relative to this directory.
|
|
107
|
-
templates_path = ["_templates"]
|
|
108
179
|
|
|
109
180
|
# Output graphviz directive produced images in a scalable format
|
|
110
181
|
graphviz_output_format = "svg"
|
|
@@ -127,7 +198,6 @@ exclude_patterns = ["_build"]
|
|
|
127
198
|
# The name of the Pygments (syntax highlighting) style to use.
|
|
128
199
|
pygments_style = "sphinx"
|
|
129
200
|
|
|
130
|
-
|
|
131
201
|
# Example configuration for intersphinx: refer to the Python standard library.
|
|
132
202
|
# This means you can link things like `str` and `asyncio` to the relevant
|
|
133
203
|
# docs in the python documentation.
|
|
@@ -137,20 +207,12 @@ intersphinx_mapping = {
|
|
|
137
207
|
"numpy": ("https://numpy.org/devdocs/", None),
|
|
138
208
|
"databroker": ("https://blueskyproject.io/databroker/", None),
|
|
139
209
|
"event-model": ("https://blueskyproject.io/event-model/main", None),
|
|
210
|
+
"pytest": ("https://docs.pytest.org/en/stable/", None),
|
|
140
211
|
}
|
|
141
212
|
|
|
142
213
|
# A dictionary of graphviz graph attributes for inheritance diagrams.
|
|
143
214
|
inheritance_graph_attrs = {"rankdir": "TB"}
|
|
144
215
|
|
|
145
|
-
# Common links that should be available on every page
|
|
146
|
-
rst_epilog = """
|
|
147
|
-
.. _NSLS: https://www.bnl.gov/nsls2
|
|
148
|
-
.. _black: https://github.com/psf/black
|
|
149
|
-
.. _ruff: https://beta.ruff.rs/docs/
|
|
150
|
-
.. _mypy: http://mypy-lang.org/
|
|
151
|
-
.. _pre-commit: https://pre-commit.com/
|
|
152
|
-
"""
|
|
153
|
-
|
|
154
216
|
# Ignore localhost links for periodic check that links in docs are valid
|
|
155
217
|
linkcheck_ignore = [r"http://localhost:\d+/"]
|
|
156
218
|
|
|
@@ -210,6 +272,7 @@ html_theme_options = {
|
|
|
210
272
|
},
|
|
211
273
|
],
|
|
212
274
|
"navigation_with_keys": False,
|
|
275
|
+
"show_toc_level": 3,
|
|
213
276
|
}
|
|
214
277
|
|
|
215
278
|
# A dictionary of values to pass into the template engine’s context for all pages
|
|
@@ -230,27 +293,9 @@ html_show_copyright = False
|
|
|
230
293
|
html_logo = "images/ophyd-async-logo.svg"
|
|
231
294
|
html_favicon = "images/ophyd-favicon.svg"
|
|
232
295
|
|
|
233
|
-
#
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
# Turn on sphinx.ext.autosummary
|
|
238
|
-
autosummary_generate = True
|
|
239
|
-
|
|
240
|
-
# Add any paths that contain templates here, relative to this directory.
|
|
241
|
-
templates_path = ["_templates"]
|
|
242
|
-
|
|
243
|
-
# Look for signatures in the first line of the docstring (used for C functions)
|
|
244
|
-
autodoc_docstring_signature = True
|
|
245
|
-
|
|
246
|
-
# numpydoc config
|
|
247
|
-
numpydoc_show_class_members = False
|
|
248
|
-
|
|
249
|
-
# Don't show config summary as it's not relevant
|
|
250
|
-
autodoc_pydantic_model_show_config_summary = False
|
|
251
|
-
|
|
252
|
-
# Show the fields in source order
|
|
253
|
-
autodoc_pydantic_model_summary_list_order = "bysource"
|
|
296
|
+
# Custom CSS
|
|
297
|
+
html_static_path = ["_static"]
|
|
298
|
+
html_css_files = ["custom.css"]
|
|
254
299
|
|
|
255
300
|
# Where to put Ipython savefigs
|
|
256
301
|
ipython_savefig_dir = "../build/savefig"
|