# {py:mod}`ophyd_async.epics.testing` ```{py:module} ophyd_async.epics.testing ``` ```{autodoc2-docstring} ophyd_async.epics.testing :allowtitles: ``` ## Package Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`EpicsTestCaDevice ` - ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice :summary: ``` * - {py:obj}`EpicsTestEnum ` - ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestEnum :summary: ``` * - {py:obj}`EpicsTestSubsetEnum ` - ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestSubsetEnum :summary: ``` * - {py:obj}`EpicsTestPvaDevice ` - ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice :summary: ``` * - {py:obj}`EpicsTestTable ` - ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestTable :summary: ``` * - {py:obj}`EpicsTestIocAndDevices ` - ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestIocAndDevices :summary: ``` * - {py:obj}`TestingIOC ` - ```{autodoc2-docstring} ophyd_async.epics.testing._utils.TestingIOC :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`generate_random_pv_prefix ` - ```{autodoc2-docstring} ophyd_async.epics.testing._utils.generate_random_pv_prefix :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`CA_PVA_RECORDS ` - ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.CA_PVA_RECORDS :summary: ``` * - {py:obj}`PVA_RECORDS ` - ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.PVA_RECORDS :summary: ``` ```` ### API ````{py:data} CA_PVA_RECORDS :canonical: ophyd_async.epics.testing._example_ioc.CA_PVA_RECORDS :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.CA_PVA_RECORDS ``` ```` ````{py:data} PVA_RECORDS :canonical: ophyd_async.epics.testing._example_ioc.PVA_RECORDS :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.PVA_RECORDS ``` ```` `````{py:class} EpicsTestCaDevice(prefix: str, with_pvi: bool = False, name: str = '') :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice Bases: {py:obj}`ophyd_async.epics.core.EpicsDevice` ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice ``` ````{py:attribute} a_int :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.a_int :type: ~typing.Annotated[~ophyd_async.core.SignalRW[int], PvSuffix('int')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.a_int ``` ```` ````{py:attribute} a_float :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.a_float :type: ~typing.Annotated[~ophyd_async.core.SignalRW[float], PvSuffix('float')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.a_float ``` ```` ````{py:attribute} float_prec_0 :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.float_prec_0 :type: ~typing.Annotated[~ophyd_async.core.SignalRW[int], PvSuffix('float_prec_0')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.float_prec_0 ``` ```` ````{py:attribute} a_str :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.a_str :type: ~typing.Annotated[~ophyd_async.core.SignalRW[str], PvSuffix('str')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.a_str ``` ```` ````{py:attribute} longstr :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.longstr :type: ~typing.Annotated[~ophyd_async.core.SignalRW[str], PvSuffix('longstr')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.longstr ``` ```` ````{py:attribute} longstr2 :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.longstr2 :type: ~typing.Annotated[~ophyd_async.core.SignalRW[str], PvSuffix('~longstr2.VAL$')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.longstr2 ``` ```` ````{py:attribute} a_bool :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.a_bool :type: ~typing.Annotated[~ophyd_async.core.SignalRW[bool], PvSuffix('bool')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.a_bool ``` ```` ````{py:attribute} slowseq :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.slowseq :type: ~typing.Annotated[~ophyd_async.core.SignalRW[int], PvSuffix('slowseq')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.slowseq ``` ```` ````{py:attribute} enum :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.enum :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.epics.testing._example_ioc.EpicsTestEnum], PvSuffix('enum')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.enum ``` ```` ````{py:attribute} enum2 :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.enum2 :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.epics.testing._example_ioc.EpicsTestEnum], PvSuffix('enum2')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.enum2 ``` ```` ````{py:attribute} subset_enum :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.subset_enum :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.epics.testing._example_ioc.EpicsTestSubsetEnum], PvSuffix('subset_enum')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.subset_enum ``` ```` ````{py:attribute} enum_str_fallback :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.enum_str_fallback :type: ~typing.Annotated[~ophyd_async.core.SignalRW[str], PvSuffix('enum_str_fallback')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.enum_str_fallback ``` ```` ````{py:attribute} bool_unnamed :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.bool_unnamed :type: ~typing.Annotated[~ophyd_async.core.SignalRW[bool], PvSuffix('bool_unnamed')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.bool_unnamed ``` ```` ````{py:attribute} partialint :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.partialint :type: ~typing.Annotated[~ophyd_async.core.SignalRW[int], PvSuffix('partialint')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.partialint ``` ```` ````{py:attribute} lessint :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.lessint :type: ~typing.Annotated[~ophyd_async.core.SignalRW[int], PvSuffix('lessint')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.lessint ``` ```` ````{py:attribute} uint8a :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.uint8a :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.core.Array1D[~numpy.uint8]], PvSuffix('uint8a')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.uint8a ``` ```` ````{py:attribute} int16a :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.int16a :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.core.Array1D[~numpy.int16]], PvSuffix('int16a')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.int16a ``` ```` ````{py:attribute} int32a :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.int32a :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.core.Array1D[~numpy.int32]], PvSuffix('int32a')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.int32a ``` ```` ````{py:attribute} float32a :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.float32a :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.core.Array1D[~numpy.float32]], PvSuffix('float32a')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.float32a ``` ```` ````{py:attribute} float64a :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.float64a :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.core.Array1D[~numpy.float64]], PvSuffix('float64a')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.float64a ``` ```` ````{py:attribute} stra :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.stra :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~collections.abc.Sequence[str]], PvSuffix('stra')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice.stra ``` ```` ````` `````{py:class} EpicsTestEnum() :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestEnum Bases: {py:obj}`ophyd_async.core.StrictEnum` ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestEnum ``` ````{py:attribute} A :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestEnum.A :value: > 'Aaa' ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestEnum.A ``` ```` ````{py:attribute} B :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestEnum.B :value: > 'Bbb' ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestEnum.B ``` ```` ````{py:attribute} C :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestEnum.C :value: > 'Ccc' ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestEnum.C ``` ```` ````` `````{py:class} EpicsTestSubsetEnum() :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestSubsetEnum Bases: {py:obj}`ophyd_async.core._utils.SubsetEnum` ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestSubsetEnum ``` ````{py:attribute} A :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestSubsetEnum.A :value: > 'Aaa' ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestSubsetEnum.A ``` ```` ````{py:attribute} B :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestSubsetEnum.B :value: > 'Bbb' ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestSubsetEnum.B ``` ```` ````` `````{py:class} EpicsTestPvaDevice(prefix: str, with_pvi: bool = False, name: str = '') :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice Bases: {py:obj}`ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice` ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice ``` ````{py:attribute} int8a :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.int8a :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.core.Array1D[~numpy.int8]], PvSuffix('int8a')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.int8a ``` ```` ````{py:attribute} uint16a :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.uint16a :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.core.Array1D[~numpy.uint16]], PvSuffix('uint16a')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.uint16a ``` ```` ````{py:attribute} uint32a :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.uint32a :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.core.Array1D[~numpy.uint32]], PvSuffix('uint32a')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.uint32a ``` ```` ````{py:attribute} int64a :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.int64a :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.core.Array1D[~numpy.int64]], PvSuffix('int64a')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.int64a ``` ```` ````{py:attribute} uint64a :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.uint64a :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.core.Array1D[~numpy.uint64]], PvSuffix('uint64a')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.uint64a ``` ```` ````{py:attribute} table :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.table :type: ~typing.Annotated[~ophyd_async.core.SignalRW[~ophyd_async.epics.testing._example_ioc.EpicsTestTable], PvSuffix('table')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.table ``` ```` ````{py:attribute} ntndarray :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.ntndarray :type: ~typing.Annotated[~ophyd_async.core.SignalR[~numpy.ndarray], PvSuffix('ntndarray')] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice.ntndarray ``` ```` ````` `````{py:class} EpicsTestTable(**kwargs) :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestTable Bases: {py:obj}`ophyd_async.core.Table` ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestTable ``` ````{py:attribute} a_bool :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestTable.a_bool :type: ~ophyd_async.core.Array1D[~numpy.bool_] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestTable.a_bool ``` ```` ````{py:attribute} a_int :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestTable.a_int :type: ~ophyd_async.core.Array1D[~numpy.int32] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestTable.a_int ``` ```` ````{py:attribute} a_float :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestTable.a_float :type: ~ophyd_async.core.Array1D[~numpy.float64] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestTable.a_float ``` ```` ````{py:attribute} a_str :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestTable.a_str :type: ~collections.abc.Sequence[str] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestTable.a_str ``` ```` ````{py:attribute} a_enum :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestTable.a_enum :type: ~collections.abc.Sequence[~ophyd_async.epics.testing._example_ioc.EpicsTestEnum] :value: > None ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestTable.a_enum ``` ```` ````` `````{py:class} EpicsTestIocAndDevices() :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestIocAndDevices ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestIocAndDevices ``` ````{py:method} get_device(protocol: str) -> ~ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice | ~ophyd_async.epics.testing._example_ioc.EpicsTestPvaDevice :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestIocAndDevices.get_device ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestIocAndDevices.get_device ``` ```` ````{py:method} get_signal(protocol: str, name: str) -> ~ophyd_async.core.SignalRW :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestIocAndDevices.get_signal ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestIocAndDevices.get_signal ``` ```` ````{py:method} get_pv(protocol: str, name: str) -> str :canonical: ophyd_async.epics.testing._example_ioc.EpicsTestIocAndDevices.get_pv ```{autodoc2-docstring} ophyd_async.epics.testing._example_ioc.EpicsTestIocAndDevices.get_pv ``` ```` ````` `````{py:class} TestingIOC() :canonical: ophyd_async.epics.testing._utils.TestingIOC ```{autodoc2-docstring} ophyd_async.epics.testing._utils.TestingIOC ``` ````{py:method} add_database(db: ~pathlib.Path | str, /, **macros: str) :canonical: ophyd_async.epics.testing._utils.TestingIOC.add_database ```{autodoc2-docstring} ophyd_async.epics.testing._utils.TestingIOC.add_database ``` ```` ````{py:method} start() :canonical: ophyd_async.epics.testing._utils.TestingIOC.start ```{autodoc2-docstring} ophyd_async.epics.testing._utils.TestingIOC.start ``` ```` ````{py:method} stop() :canonical: ophyd_async.epics.testing._utils.TestingIOC.stop ```{autodoc2-docstring} ophyd_async.epics.testing._utils.TestingIOC.stop ``` ```` ````` ````{py:function} generate_random_pv_prefix() -> str :canonical: ophyd_async.epics.testing._utils.generate_random_pv_prefix ```{autodoc2-docstring} ophyd_async.epics.testing._utils.generate_random_pv_prefix ``` ````