ij.plugins.plugin_manager
Plugin manager for extensible functionality.
- class ij.plugins.plugin_manager.PluginManager[source]
Manage and execute plugins.
- apply_transform(transform_name: str, diagram: DiagramIR, **kwargs) DiagramIR[source]
Apply a registered transform.
- Parameters:
transform_name – Name of transform
diagram – DiagramIR to transform
**kwargs – Transform arguments
- Returns:
Transformed DiagramIR
- execute_plugin(plugin_name: str, diagram: DiagramIR, **kwargs) DiagramIR[source]
Execute a plugin on a diagram.
- Parameters:
plugin_name – Name of plugin to execute
diagram – DiagramIR to process
**kwargs – Plugin-specific arguments
- Returns:
Transformed DiagramIR
- list_plugins() List[Dict[str, str]][source]
List all registered plugins.
- Returns:
List of plugin information dictionaries
- load_plugin_file(file_path: str)[source]
Load plugin from a Python file.
- Parameters:
file_path – Path to plugin file
Example
>>> manager.load_plugin_file('plugins/my_plugin.py')
- load_plugins_directory(directory: str)[source]
Load all plugins from a directory.
- Parameters:
directory – Directory containing plugin files
Example
>>> manager.load_plugins_directory('~/.ij/plugins')
- register_hook(event: str, func: Callable)[source]
Register a hook for an event.
- Parameters:
event – Event name (‘pre_render’, ‘post_parse’, etc.)
func – Hook function
Example
>>> def on_render(diagram): ... print(f"Rendering {len(diagram.nodes)} nodes") >>> manager.register_hook('pre_render', on_render)
- register_plugin(plugin: Plugin)[source]
Register a plugin.
- Parameters:
plugin – Plugin instance to register
Example
>>> class MyPlugin(Plugin): ... name = "my_plugin" ... def process(self, diagram, **kwargs): ... # Transform diagram ... return diagram >>> manager = PluginManager() >>> manager.register_plugin(MyPlugin())
- register_transform(name: str, func: Callable)[source]
Register a transform function.
- Parameters:
name – Transform name
func – Transform function (diagram, **kwargs) -> diagram
Example
>>> def highlight_critical(diagram, start, end): ... # Highlight path from start to end ... return diagram >>> manager.register_transform('highlight-critical', highlight_critical)
- ij.plugins.plugin_manager.get_global_manager() PluginManager[source]
Get the global plugin manager.