pcdsdevices.signal.FakeEpicsSignalEditMD

class pcdsdevices.signal.FakeEpicsSignalEditMD(*args, enum_attrs: list[str | None] | None = None, enum_strs: list[str] | None = None, **kwargs)

API stand-in for EpicsSignalEditMD Add to this if you need it to actually work for your test.

Methods

describe()

Provide schema and meta-data for read()

This keys in the OrderedDict this method returns must match the keys in the OrderedDict return by read().

This provides schema related information, (ex shape, dtype), the source (ex PV name), and if available, units, limits, precision etc.

Returns:

data_keys (OrderedDict) – The keys must be strings and the values must be dict-like with the event_model.event_descriptor.data_key schema.

get(*, as_string=None, connection_timeout=1.0, **kwargs)

Implement getting as enum strings

read()

Put the status of the signal into a simple dictionary format for data acquisition

Returns:

dict

read_configuration()

Dictionary mapping names to value dicts with keys: value, timestamp

set(value, *, timeout=None, settle_time=None, **kwargs)

Set the value of the Signal and return a Status object.

Returns:

st (Status) – This status object will be finished upon return in the case of basic soft Signals

sim_put(*args, **kwargs)

Update the read-only signal’s value.

Implement here instead of FakeEpicsSignalRO so you can call it with every fake signal.

sim_set_enum_strs(enums)

Set the enum_strs for a fake device

Parameters:

enums (list or tuple of str) – The enums will be accessed by array index, e.g. the first item in enums will be 0, the next will be 1, etc.

sim_set_func(func)

Update the SynSignal function to set a new value on trigger.

sim_set_limits(limits)

Set the fake signal’s limits.

sim_set_putter(putter)

Define arbirary behavior on signal put.

This can be used to emulate basic IOC behavior.

trigger()

Call that is used by bluesky prior to read()

Attributes

SUB_META = 'meta'
connected

Is the signal connected to its associated hardware, and ready to use?

enum_attrs
enum_strs
high_limit

The high, inclusive control limit for the Signal

hints

Field hints for plotting

kind
limits

Override limits because EpicsSignalEditMD overrides the limits.

If defined in the test, do it like in the real EpicsSignalEditMD. Otherwise, be permissive to avoid false test failures.

low_limit

The low, inclusive control limit for the Signal

metadata
metadata_keys

Metadata keys that will be passed along on value subscriptions

read_access

Can the signal be read?

subscriptions: ClassVar[FrozenSet[str]] = frozenset({'meta', 'value'})
timestamp

Timestamp of the readback value

tolerance

The absolute tolerance associated with the value.

value

The signal’s value

write_access

Can the signal be written to?