ophyd_async.epics.testing#

Package Contents#

Classes#

EpicsTestCaDevice

Device for use in a channel access test IOC.

EpicsTestEnum

For testing strict enum values in test IOCs.

EpicsTestSubsetEnum

For testing subset enum values in test IOCs.

EpicsTestPvaDevice

Device for use in a pv access test IOC.

EpicsTestTable

An abstraction of a Table where each field is a column.

EpicsTestIocAndDevices

Test IOC with ca and pva devices.

TestingIOC

For initialising an IOC in tests.

Functions#

generate_random_pv_prefix

For generating random PV names in test devices.

Data#

API#

ophyd_async.epics.testing.CA_PVA_RECORDS#

None

ophyd_async.epics.testing.PVA_RECORDS#

None

class ophyd_async.epics.testing.EpicsTestCaDevice(prefix: str, with_pvi: bool = False, name: str = '')[source]#

Bases: ophyd_async.epics.core.EpicsDevice

Device for use in a channel access test IOC.

a_int: Annotated[SignalRW[int], PvSuffix('int')]#

None

A thing

a_float: Annotated[SignalRW[float], PvSuffix('float')]#

None

float_prec_0: Annotated[SignalRW[int], PvSuffix('float_prec_0')]#

None

a_str: Annotated[SignalRW[str], PvSuffix('str')]#

None

longstr: Annotated[SignalRW[str], PvSuffix('longstr')]#

None

longstr2: Annotated[SignalRW[str], PvSuffix('~longstr2.VAL$')]#

None

a_bool: Annotated[SignalRW[bool], PvSuffix('bool')]#

None

enum: Annotated[SignalRW[EpicsTestEnum], PvSuffix('enum')]#

None

enum2: Annotated[SignalRW[EpicsTestEnum], PvSuffix('enum2')]#

None

subset_enum: Annotated[SignalRW[EpicsTestSubsetEnum], PvSuffix('subset_enum')]#

None

enum_str_fallback: Annotated[SignalRW[str], PvSuffix('enum_str_fallback')]#

None

bool_unnamed: Annotated[SignalRW[bool], PvSuffix('bool_unnamed')]#

None

partialint: Annotated[SignalRW[int], PvSuffix('partialint')]#

None

lessint: Annotated[SignalRW[int], PvSuffix('lessint')]#

None

uint8a: Annotated[SignalRW[Array1D[uint8]], PvSuffix('uint8a')]#

None

int16a: Annotated[SignalRW[Array1D[int16]], PvSuffix('int16a')]#

None

int32a: Annotated[SignalRW[Array1D[int32]], PvSuffix('int32a')]#

None

float32a: Annotated[SignalRW[Array1D[float32]], PvSuffix('float32a')]#

None

float64a: Annotated[SignalRW[Array1D[float64]], PvSuffix('float64a')]#

None

stra: Annotated[SignalRW[Sequence[str]], PvSuffix('stra')]#

None

class ophyd_async.epics.testing.EpicsTestEnum[source]#

Bases: ophyd_async.core.StrictEnum

For testing strict enum values in test IOCs.

A#

‘Aaa’

B#

‘Bbb’

C#

‘Ccc’

class ophyd_async.epics.testing.EpicsTestSubsetEnum[source]#

Bases: ophyd_async.core._utils.SubsetEnum

For testing subset enum values in test IOCs.

A#

‘Aaa’

B#

‘Bbb’

class ophyd_async.epics.testing.EpicsTestPvaDevice(prefix: str, with_pvi: bool = False, name: str = '')[source]#

Bases: ophyd_async.epics.testing._example_ioc.EpicsTestCaDevice

Device for use in a pv access test IOC.

int8a: Annotated[SignalRW[Array1D[int8]], PvSuffix('int8a')]#

None

uint16a: Annotated[SignalRW[Array1D[uint16]], PvSuffix('uint16a')]#

None

uint32a: Annotated[SignalRW[Array1D[uint32]], PvSuffix('uint32a')]#

None

int64a: Annotated[SignalRW[Array1D[int64]], PvSuffix('int64a')]#

None

uint64a: Annotated[SignalRW[Array1D[uint64]], PvSuffix('uint64a')]#

None

table: Annotated[SignalRW[EpicsTestTable], PvSuffix('table')]#

None

ntndarray: Annotated[SignalR[ndarray], PvSuffix('ntndarray')]#

None

class ophyd_async.epics.testing.EpicsTestTable(**kwargs)[source]#

Bases: ophyd_async.core.Table

An abstraction of a Table where each field is a column.

For example:

>>> from ophyd_async.core import Table, Array1D
>>> import numpy as np
>>> from collections.abc import Sequence
>>> class MyTable(Table):
...     a: Array1D[np.int8]
...     b: Sequence[str]
...
>>> t = MyTable(a=[1, 2], b=["x", "y"])
>>> len(t)  # the length is the number of rows
2
>>> t2 = t + t  # adding tables together concatenates them
>>> t2.a
array([1, 2, 1, 2], dtype=int8)
>>> t2.b
['x', 'y', 'x', 'y']
>>> t2[1]  # slice a row
array([(2, b'y')], dtype=[('a', 'i1'), ('b', 'S40')])

a_bool: Array1D[bool_]#

None

a_int: Array1D[int32]#

None

a_float: Array1D[float64]#

None

a_str: Sequence[str]#

None

a_enum: Sequence[EpicsTestEnum]#

None

class ophyd_async.epics.testing.EpicsTestIocAndDevices[source]#

Test IOC with ca and pva devices.

get_device(protocol: str) EpicsTestCaDevice | EpicsTestPvaDevice[source]#
get_signal(protocol: str, name: str) SignalRW[source]#
get_pv(protocol: str, name: str) str[source]#
class ophyd_async.epics.testing.TestingIOC[source]#

For initialising an IOC in tests.

add_database(db: Path | str, /, **macros: str)[source]#
start()[source]#
stop()[source]#
ophyd_async.epics.testing.generate_random_pv_prefix() str[source]#

For generating random PV names in test devices.