# {py:mod}`ophyd_async.epics.core` ```{py:module} ophyd_async.epics.core ``` ```{autodoc2-docstring} ophyd_async.epics.core :allowtitles: ``` ## Package Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`PviDeviceConnector ` - ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviDeviceConnector :summary: ``` * - {py:obj}`PviTree ` - ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviTree :summary: ``` * - {py:obj}`SignalDetails ` - ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.SignalDetails :summary: ``` * - {py:obj}`EpicsDeviceConnector ` - ```{autodoc2-docstring} ophyd_async.epics.core._epics_connector.EpicsDeviceConnector :summary: ``` * - {py:obj}`PvSuffix ` - ```{autodoc2-docstring} ophyd_async.epics.core._epics_connector.PvSuffix :summary: ``` * - {py:obj}`EpicsDevice ` - ```{autodoc2-docstring} ophyd_async.epics.core._epics_device.EpicsDevice :summary: ``` * - {py:obj}`EpicsOptions ` - ```{autodoc2-docstring} ophyd_async.epics.core._util.EpicsOptions :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`epics_signal_r ` - ```{autodoc2-docstring} ophyd_async.epics.core._signal.epics_signal_r :summary: ``` * - {py:obj}`epics_signal_rw ` - ```{autodoc2-docstring} ophyd_async.epics.core._signal.epics_signal_rw :summary: ``` * - {py:obj}`epics_signal_rw_rbv ` - ```{autodoc2-docstring} ophyd_async.epics.core._signal.epics_signal_rw_rbv :summary: ``` * - {py:obj}`epics_signal_w ` - ```{autodoc2-docstring} ophyd_async.epics.core._signal.epics_signal_w :summary: ``` * - {py:obj}`epics_signal_x ` - ```{autodoc2-docstring} ophyd_async.epics.core._signal.epics_signal_x :summary: ``` * - {py:obj}`stop_busy_record ` - ```{autodoc2-docstring} ophyd_async.epics.core._util.stop_busy_record :summary: ``` * - {py:obj}`wait_for_good_state ` - ```{autodoc2-docstring} ophyd_async.epics.core._util.wait_for_good_state :summary: ``` ```` ### API `````{py:class} PviDeviceConnector(prefix: str = '', error_hint: str = '') :canonical: ophyd_async.epics.core._pvi_connector.PviDeviceConnector Bases: {py:obj}`ophyd_async.core.DeviceConnector` ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviDeviceConnector ``` ````{py:attribute} mock_device_vector_len :canonical: ophyd_async.epics.core._pvi_connector.PviDeviceConnector.mock_device_vector_len :type: int :value: > 2 ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviDeviceConnector.mock_device_vector_len ``` ```` ````{py:attribute} pvi_tree :canonical: ophyd_async.epics.core._pvi_connector.PviDeviceConnector.pvi_tree :type: PviTree | None :value: > None ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviDeviceConnector.pvi_tree ``` ```` ````{py:method} create_children_from_annotations(device: ~ophyd_async.core.Device) :canonical: ophyd_async.epics.core._pvi_connector.PviDeviceConnector.create_children_from_annotations ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviDeviceConnector.create_children_from_annotations ``` ```` ````{py:method} connect_mock(device: ~ophyd_async.core.Device, mock: ~ophyd_async.core.LazyMock) :canonical: ophyd_async.epics.core._pvi_connector.PviDeviceConnector.connect_mock :async: ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviDeviceConnector.connect_mock ``` ```` ````{py:method} connect_real(device: ~ophyd_async.core.Device, timeout: float, force_reconnect: bool) -> None :canonical: ophyd_async.epics.core._pvi_connector.PviDeviceConnector.connect_real :async: ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviDeviceConnector.connect_real ``` ```` ````` `````{py:class} PviTree(/, **data: ~typing.Any) :canonical: ophyd_async.epics.core._pvi_connector.PviTree Bases: {py:obj}`ophyd_async.core.ConfinedModel` ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviTree ``` ````{py:attribute} pvi_pv :canonical: ophyd_async.epics.core._pvi_connector.PviTree.pvi_pv :type: str :value: > 'Field(...)' ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviTree.pvi_pv ``` ```` ````{py:attribute} signals :canonical: ophyd_async.epics.core._pvi_connector.PviTree.signals :type: ~collections.abc.Mapping[str, ~ophyd_async.epics.core._pvi_connector.SignalDetails] :value: > 'Field(...)' ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviTree.signals ``` ```` ````{py:attribute} sub_devices :canonical: ophyd_async.epics.core._pvi_connector.PviTree.sub_devices :type: ~collections.abc.Mapping[str, ~ophyd_async.epics.core._pvi_connector.PviTree] :value: > 'Field(...)' ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviTree.sub_devices ``` ```` ````{py:attribute} vector_children :canonical: ophyd_async.epics.core._pvi_connector.PviTree.vector_children :type: ~collections.abc.Mapping[int, ~ophyd_async.epics.core._pvi_connector.PviTree | ~ophyd_async.epics.core._pvi_connector.SignalDetails] :value: > 'Field(...)' ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviTree.vector_children ``` ```` ````{py:method} build_device_tree(pvi_pv: str, timeout: float) -> ~ophyd_async.epics.core._pvi_connector.PviTree :canonical: ophyd_async.epics.core._pvi_connector.PviTree.build_device_tree :async: :classmethod: ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviTree.build_device_tree ``` ```` ````{py:property} is_signal_vector :canonical: ophyd_async.epics.core._pvi_connector.PviTree.is_signal_vector :type: bool ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.PviTree.is_signal_vector ``` ```` ````` `````{py:class} SignalDetails(/, **data: ~typing.Any) :canonical: ophyd_async.epics.core._pvi_connector.SignalDetails Bases: {py:obj}`ophyd_async.core.ConfinedModel` ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.SignalDetails ``` ````{py:attribute} signal_type :canonical: ophyd_async.epics.core._pvi_connector.SignalDetails.signal_type :type: type[~ophyd_async.core.Signal] :value: > None ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.SignalDetails.signal_type ``` ```` ````{py:attribute} read_pv :canonical: ophyd_async.epics.core._pvi_connector.SignalDetails.read_pv :type: str :value: > None ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.SignalDetails.read_pv ``` ```` ````{py:attribute} write_pv :canonical: ophyd_async.epics.core._pvi_connector.SignalDetails.write_pv :type: str :value: > None ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.SignalDetails.write_pv ``` ```` ````{py:method} from_entry(entry: dict[str, str]) -> ~ophyd_async.epics.core._pvi_connector.SignalDetails :canonical: ophyd_async.epics.core._pvi_connector.SignalDetails.from_entry :classmethod: ```{autodoc2-docstring} ophyd_async.epics.core._pvi_connector.SignalDetails.from_entry ``` ```` ````` `````{py:class} EpicsDeviceConnector(prefix: str) :canonical: ophyd_async.epics.core._epics_connector.EpicsDeviceConnector Bases: {py:obj}`ophyd_async.core.DeviceConnector` ```{autodoc2-docstring} ophyd_async.epics.core._epics_connector.EpicsDeviceConnector ``` ````{py:method} create_children_from_annotations(device: ~ophyd_async.core.Device) :canonical: ophyd_async.epics.core._epics_connector.EpicsDeviceConnector.create_children_from_annotations ```{autodoc2-docstring} ophyd_async.epics.core._epics_connector.EpicsDeviceConnector.create_children_from_annotations ``` ```` ````` `````{py:class} PvSuffix :canonical: ophyd_async.epics.core._epics_connector.PvSuffix ```{autodoc2-docstring} ophyd_async.epics.core._epics_connector.PvSuffix ``` ````{py:attribute} read_suffix :canonical: ophyd_async.epics.core._epics_connector.PvSuffix.read_suffix :type: str :value: > None ```{autodoc2-docstring} ophyd_async.epics.core._epics_connector.PvSuffix.read_suffix ``` ```` ````{py:attribute} write_suffix :canonical: ophyd_async.epics.core._epics_connector.PvSuffix.write_suffix :type: str | None :value: > None ```{autodoc2-docstring} ophyd_async.epics.core._epics_connector.PvSuffix.write_suffix ``` ```` ````{py:method} rbv(write_suffix: str, rbv_suffix: str = '_RBV') -> ~ophyd_async.epics.core._epics_connector.PvSuffix :canonical: ophyd_async.epics.core._epics_connector.PvSuffix.rbv :classmethod: ```{autodoc2-docstring} ophyd_async.epics.core._epics_connector.PvSuffix.rbv ``` ```` ````` ````{py:class} EpicsDevice(prefix: str, with_pvi: bool = False, name: str = '') :canonical: ophyd_async.epics.core._epics_device.EpicsDevice Bases: {py:obj}`ophyd_async.core.Device` ```{autodoc2-docstring} ophyd_async.epics.core._epics_device.EpicsDevice ``` ```` ````{py:function} epics_signal_r(datatype: type[~ophyd_async.core.SignalDatatypeT], read_pv: str, name: str = '', timeout: float = DEFAULT_TIMEOUT) -> ~ophyd_async.core.SignalR[~ophyd_async.core.SignalDatatypeT] :canonical: ophyd_async.epics.core._signal.epics_signal_r ```{autodoc2-docstring} ophyd_async.epics.core._signal.epics_signal_r ``` ```` ````{py:function} epics_signal_rw(datatype: type[~ophyd_async.core.SignalDatatypeT], read_pv: str, write_pv: str | None = None, name: str = '', timeout: float = DEFAULT_TIMEOUT, attempts: int = 1, wait: bool | ~collections.abc.Callable[[~ophyd_async.core.SignalDatatypeT], bool] = True) -> ~ophyd_async.core.SignalRW[~ophyd_async.core.SignalDatatypeT] :canonical: ophyd_async.epics.core._signal.epics_signal_rw ```{autodoc2-docstring} ophyd_async.epics.core._signal.epics_signal_rw ``` ```` ````{py:function} epics_signal_rw_rbv(datatype: type[~ophyd_async.core.SignalDatatypeT], write_pv: str, read_suffix: str = '_RBV', name: str = '', timeout: float = DEFAULT_TIMEOUT, attempts: int = 1, wait: bool | ~collections.abc.Callable[[~ophyd_async.core.SignalDatatypeT], bool] = True) -> ~ophyd_async.core.SignalRW[~ophyd_async.core.SignalDatatypeT] :canonical: ophyd_async.epics.core._signal.epics_signal_rw_rbv ```{autodoc2-docstring} ophyd_async.epics.core._signal.epics_signal_rw_rbv ``` ```` ````{py:function} epics_signal_w(datatype: type[~ophyd_async.core.SignalDatatypeT], write_pv: str, name: str = '', timeout: float = DEFAULT_TIMEOUT, attempts: int = 1, wait: bool | ~collections.abc.Callable[[~ophyd_async.core.SignalDatatypeT], bool] = True) -> ~ophyd_async.core.SignalW[~ophyd_async.core.SignalDatatypeT] :canonical: ophyd_async.epics.core._signal.epics_signal_w ```{autodoc2-docstring} ophyd_async.epics.core._signal.epics_signal_w ``` ```` ````{py:function} epics_signal_x(write_pv: str, name: str = '', timeout: float = DEFAULT_TIMEOUT) -> ~ophyd_async.core.SignalX :canonical: ophyd_async.epics.core._signal.epics_signal_x ```{autodoc2-docstring} ophyd_async.epics.core._signal.epics_signal_x ``` ```` ````{py:function} stop_busy_record(signal: ~ophyd_async.core.SignalRW[bool], timeout: float = DEFAULT_TIMEOUT) -> None :canonical: ophyd_async.epics.core._util.stop_busy_record :async: ```{autodoc2-docstring} ophyd_async.epics.core._util.stop_busy_record ``` ```` ````{py:function} wait_for_good_state(state_signal: ~ophyd_async.core.SignalR[~ophyd_async.core.SignalDatatypeT], good_states: set[~ophyd_async.core.SignalDatatypeT], message_signal: ~ophyd_async.core.SignalR[str] | None = None, timeout: float = DEFAULT_TIMEOUT) -> None :canonical: ophyd_async.epics.core._util.wait_for_good_state :async: ```{autodoc2-docstring} ophyd_async.epics.core._util.wait_for_good_state ``` ```` `````{py:class} EpicsOptions :canonical: ophyd_async.epics.core._util.EpicsOptions Bases: {py:obj}`typing.Generic`\[{py:obj}`ophyd_async.core.SignalDatatypeT`\] ```{autodoc2-docstring} ophyd_async.epics.core._util.EpicsOptions ``` ````{py:attribute} wait :canonical: ophyd_async.epics.core._util.EpicsOptions.wait :type: bool | ~collections.abc.Callable[[~ophyd_async.core.SignalDatatypeT], bool] :value: > True ```{autodoc2-docstring} ophyd_async.epics.core._util.EpicsOptions.wait ``` ```` `````