Typhon Plugins



Add a new Signal to the registry

The Signal object is kept within signal_registry for reference by name in the SignalConnection. Signals can be added multiple times and overwritten but a warning will be emitted.

class typhon.plugins.SignalConnection(channel, address, protocol=None, parent=None)[source]

Connection to monitor an Ophyd Signal

This is meant as a generalized connection to any type of Ophyd Signal. It handles reporting updates to listeners as well as pushing new values that users request in the PyDM interface back to the underlying signal

The signal data_type is used to inform PyDM on the Python type that the signal will expect and emit. It is expected that this type is static through the execution of the application


Stored signal object




Add a listener channel to this connection

This attaches values input by the user to the send_new_value function in order to update the Signal object in addition to the default setup performed in PyDMConnection


Cast a value to the correct Python type based on signal_type

If signal_type is not set, the result of ophyd.Signal.describe is used to determine what the correct Python type for value is. We need to be aware of the correct Python type so that we can emit the value through the correct signal and convert values returned by the widget to the correct type before handing them to Ophyd Signal


Unsubscribe from the Ophyd signal


Pass a value from the UI to Signal

We are not guaranteed that this signal is writeable so catch exceptions if they are created. We attempt to cast the received value into the reported type of the signal unless it is of type np.ndarray

remove_listener(channel, destroying=False, **kwargs)[source]

Remove a listener channel from this connection

This removes the send_new_value connections from the channel in addition to the default disconnection performed in PyDMConnection

send_new_value(value=None, **kwargs)[source]

Update the UI with a new value from the Signal

class typhon.plugins.SignalPlugin[source]

Plugin registered with PyDM to handle SignalConnection


These functions will not be imported if happi is not installed in the current Python environment


Register a Happi Client to be used with the DataPlugin

This is not required to be called by the user, if your environment is setup such that happi.Client.from_config will return the desired client

class typhon.plugins.HappiConnection(channel, address, protocol=None, parent=None)[source]

A PyDMConnection to the Happi Database


Add a new channel to the existing connection

remove_listener(channel, destroying=False, **kwargs)[source]

Remove a channel from the database connection

class typhon.plugins.HappiPlugin[source]