Skip to content

Glossary

Terms as redsun uses them, including ones that look like ordinary English.

Acronyms and rarer terms also appear as tooltips across the site: hover a dotted-underlined word to read its definition.

Application container

The object a session is. It declares the components, builds them in order, registers their providers, wires them together and injects their dependencies. AppContainer is the base; QtAppContainer is the Qt one.

ADR

Architecture Decision Record. A numbered document under docs/explanation/decisions recording one decision and its reasons. An accepted ADR is never edited; a later one supersedes it.

Build step

One stage of AppContainer.build, announced by name as it starts. AppContainer.BUILD_STEPS lists them in order, so a progress display can size itself from it.

Component

A device, presenter or view: the three kinds of object a container declares, builds and owns.

DVP

Device-View-Presenter, the architecture of a redsun session. Model-View-Presenter with a Device layer in place of the Model, and with presenters and views talking through the virtual container instead of holding references to each other.

Device

Hardware, or a stand-in for it, as an ophyd-async device. Hardware access is asynchronous. A device that fails to build is logged and skipped like any component, so a missing instrument does not abort the session.

Frontend

The toolkit a session's views use, named in the configuration as pyqt or pyside. It picks the container class AppContainer.from_config builds on.

Hook

An object a session installs on its container to act at one point of the build. A hook never changes what the container builds or in which order.

Hook point

A named moment of the build at which a hook is called, named after the method it calls: create_application, configure_application, during_build, configure_main_view. Each point belongs to a toolkit, whose container declares it.

Plan

A bluesky generator describing an acquisition, run by the RunEngine. A presenter launches it; the engine runs it and emits its documents.

Port

One end of a connection: a signal on the sending side, a slot on the receiving side. A configuration file addresses a port as component.port.

Presenter

The component holding a session's behaviour. It owns devices, exposes signals and slots, and never touches a widget. Its constructor starts with (name, devices).

Provider key

A typed key under which a component puts a value in the virtual container, so another component can resolve it without knowing who produced it.

Session

One running application: its configuration, components and the connections between them.

Signal

A psygnal signal a component emits. Every public signal attribute is a port, named sig_snake_case.

Slot

A method marked with slot, which makes it connectable. Its name and signature become public API, since other components connect to them.

Path provider

The object giving a session's files their directory and name, SessionPathProvider. One per session, built by the container and passed to every device taking a path_provider keyword.

Structural subtyping

A class conforms by the members it has, not by what it inherits. Presenters and views are checked against @runtime_checkable protocols on the built instance, so a component never inherits from redsun to satisfy one.

View

The component holding a session's widgets. It declares signals and slots and no behaviour of its own. Its constructor takes (name) alone.

Virtual container

The session-wide signal bus, provider registry and document-callback registry in one object. Components reach each other through it instead of holding references.

Wiring

Which signal reaches which slot. The application declares it, not the components: a component declares its ports and the session connects them.