Plugins

Taurus can be extended by third-party modules in various ways. The TEP13 prescribes some generic rules in order to unify the plugins support by using entry-point APIs.

The following subsections describe each entry-point-based pluggable interface currently supported by Taurus, according to TEP13.

CLI subcommands

  • Description: register subcommands for the taurus CLI command. See taurus.cli

  • Group: taurus.cli.subcommands

  • Expected API: click.Command

  • Entry point name convention: None, the name is ignored. Suggestion: use the subcommand name

  • Loading pattern: extension (loaded when invoking the taurus command)

  • Enabling pattern: installation

  • Examples: taurus self-registers all its subcommands (see setup.py)

Schemes

  • Description: new schemes in taurus.core to support other sources of data.

  • Group: taurus.core.schemes

  • Expected API: python module implementing a Taurus scheme. It should at least provide a taurus.core.taurusfactory.TaurusFactory specialization. See more details in Models and schemes

  • Entry point name convention: the name must match the module name. For example: h5file = h5file

  • Loading pattern: Driver

  • Enabling pattern: installation

  • Examples: taurus_tangoarchiving registers itself as a scheme

Formatters

  • Description: adding formatter objects for taurus widgets, as used by taurus.qt.qtgui.base.TaurusBaseComponent.displayValue()

  • Group: taurus.qt.formatters

  • Expected API: a formatter accepted by taurus.qt.qtgui.TaurusBaseComponent.setFormat()

  • Entry point name convention: A short descriptive string of the formatter. It may be used by the UI when offering the user to select formatters.

  • Loading pattern: installation

  • Enabling pattern: Explicit (e.g. via a selection dialog when calling taurus.qt.qtgui.TaurusBaseWidget.onSetFormatter())

  • Examples: taurus self-registers several formatters (see setup.py)

Model chooser selectors

Plot widget alternatives

  • Description: alternative implementations of TaurusPlot.

  • Group: taurus.plot.alts

  • Expected API: to be formally defined with an Abstract Base Class. For now, informally, the API is defined by what is used in taurus.cli.alt.plot_cmd(): at minimum, a QWidget that has a setModel() that accepts a sequence of attribute names.

  • Entry point name convention: a short descriptive identifier of the implementation (e.g. "tpg", …). The name is used in the UI for user selection of the implementation.

  • Loading pattern: Extension

  • Enabling pattern: explicit

  • Examples: taurus_pyqtgraph registers taurus_pyqtgraph.TaurusPlot as a plot alternative

Trend widget alternatives

  • Description: alternative implementations of TaurusTrend

  • Group: taurus.trend.alts

  • Expected API:to be formally defined with an Abstract Base Class. For now, informally, the API is defined by what is used in taurus.cli.alt.trend_cmd(): at minimum, a QWidget that has a setModel() that accepts a sequence of attribute names.

  • Entry point name convention: a short descriptive identifier of the implementation (e.g. "tpg", …). The name is used in the UI for user selection of the implementation.

  • Loading pattern: Extension

  • Enabling pattern: explicit

  • Examples: taurus_pyqtgraph registers taurus_pyqtgraph.TaurusTrend as a trend alternative

Image widget alternatives

  • Description: alternative implementations of TaurusImage

  • Group: taurus.image.alts

  • Expected API: to be formally defined with an Abstract Base Class. For now, informally, the API is defined by what is used in taurus.cli.alt.image_cmd(): at minimum, a QWidget that has a setModel() that accepts an attribute name. At this moment, the widget creator needs to accept the wintitle keyword argument (it may change when the API is formalized)

  • Entry point name convention: a short descriptive identifier of the implementation (e.g. "plotpy", "tpg", …). The name is used in the UI for user selection of the implementation.

  • Loading pattern: Extension

  • Enabling pattern: explicit

  • Examples: taurus self-registers its taurus.qt.qtgui.extra_plotpy.TaurusImageDialog as an image widget alternative (see setup.py)

Trend2D widget alternatives

  • Description: alternative implementations of TaurusTrend2D

  • Group: taurus.trend2d.alts

  • Expected API: to be formally defined with an Abstract Base Class. For now, informally, the API is defined by what is used in taurus.cli.alt.trend2d_cmd(): at minimum, a QWidget that has a setModel() that accepts an attribute name. At this moment, the widget creator needs to accept the following keyword arguments: stackMode, wintitle, buffersize. (it may change when the API is formalized)

  • Entry point name convention: a short descriptive identifier of the implementation (e.g. "plotpy", "tpg", …). The name is used in the UI for user selection of the implementation.

  • Loading pattern: Extension

  • Enabling pattern: explicit

  • Examples: taurus self-registers its taurus.qt.qtgui.extra_plotpy.TaurusTrend2DDialog as trend2d widget alternative (see setup.py)

Form factories

  • Description: factories for custom “taurus value” widgets to be used in taurus forms. See taurus.qt.qtgui.panel.TaurusForm.setItemFactories()

  • Group: taurus.form.item_factories

  • Expected API: a factory function that accepts a model name as its first argument and which returns either a taurus.qt.qtgui.panel.TaurusValue type object (or None)

  • Entry point name convention:

  • Loading pattern: extension

  • Enabling pattern: installation, but allowing explicit (de)selection based on taurus.core.util.plugin.selectEntryPoints().

  • Examples: sardana registers sardana.taurus.qt.qtgui.extra_pool.formitemfactory.pool_item_factory() to provide custom widgets for sardana elements in taurus forms.

qtgui submodules

Note

This entry point is for internal use only (to be used for backwards compatibility when “outsourcing” submodules).

  • Description: adding submodules to taurus.qt.qtgui.

  • Group: taurus.qt.qtgui

  • Expected API: python module (typically exposing QWidget classes)

  • Entry point name convention: the name must match the module name

  • Loading pattern: Extension (for performance, we use a taurus.core.util.lazymodule.LazyModule to delay the actual import of the module until one of its members is actually used).

  • Enabling pattern: installation

  • Examples: taurus_pyqtgraph registers itself to be exported as taurus.qt.qtgui.tpg