Core modules¶
Plugin manager — discovers and loads plugin classes.
Plugins are discovered via Python package entry-points under the group
stoner_measurement.plugins. Each entry-point value must be a subclass
of BasePlugin.
- class stoner_measurement.core.plugin_manager.PluginManager(*args: Any, **kwargs: Any)[source]¶
Bases:
QObjectDiscovers, loads, and provides access to measurement plugins.
Signals¶
- plugins_changed:
Emitted after the plugin registry is (re-)built.
- plugins_by_type(plugin_type: str) dict[str, BasePlugin][source]¶
Return a filtered mapping of plugins matching plugin_type.
- Args:
- plugin_type (str):
The
plugin_typetag to filter by (e.g."trace","state","monitor","transform").
- Returns:
- (dict[str, BasePlugin]):
Mapping of plugin name → plugin instance for all registered plugins whose
plugin_typeequals plugin_type.
- Examples:
>>> from PyQt6.QtWidgets import QApplication >>> _ = QApplication.instance() or QApplication([]) >>> from stoner_measurement.core.plugin_manager import PluginManager >>> from stoner_measurement.plugins.trace import DummyPlugin >>> pm = PluginManager() >>> pm.register("dummy", DummyPlugin()) >>> pm.plugins_by_type("trace") {'dummy': <...DummyPlugin...>} >>> pm.plugins_by_type("state") {}