Plugin Module

Plugin module.

class pepperpy.plugin.Plugin(name, module, metadata=<factory>)[source]

Bases: object

Plugin class.

Parameters:
name: str
module: ModuleType
metadata: Dict[str, Any]
exception pepperpy.plugin.PluginError(message, context=None, cause=None)[source]

Bases: PepperpyError

Plugin error.

Parameters:
Return type:

None

__init__(message, context=None, cause=None)[source]

Initialize plugin error.

Parameters:
Return type:

None

class pepperpy.plugin.PluginManager(config=None)[source]

Bases: BaseModule[PluginManagerConfig]

Plugin manager implementation.

Parameters:

config (PluginManagerConfig | None)

__init__(config=None)[source]

Initialize plugin manager.

Parameters:

config (Optional[PluginManagerConfig]) – Optional plugin manager configuration

Return type:

None

async load(path)[source]

Load plugin.

Parameters:

path (Path) – Plugin path

Raises:

PluginError – If plugin loading fails

Return type:

None

async unload(name)[source]

Unload plugin.

Parameters:

name (str) – Plugin name

Raises:

PluginError – If plugin unloading fails

Return type:

None

list()[source]

List plugins.

Return type:

List[str]

Returns:

List of plugin names

get(name)[source]

Get plugin.

Parameters:

name (str) – Plugin name

Return type:

Plugin

Returns:

Plugin instance

Raises:

PluginError – If plugin not found

class pepperpy.plugin.PluginManagerConfig(name='plugin_manager', metadata=<factory>, plugin_paths=<factory>)[source]

Bases: ModuleConfig

Plugin manager configuration.

Parameters:
name: str = 'plugin_manager'
plugin_paths: List[Path]
metadata: Dict[str, Any]
class pepperpy.plugin.PluginProtocol(*args, **kwargs)[source]

Bases: Protocol

Plugin protocol.

async setup()[source]

Set up plugin.

Return type:

None

async teardown()[source]

Clean up plugin.

Return type:

None

pepperpy.plugin.get_plugin_class(plugin, base_class)[source]

Get plugin class.

Parameters:
Return type:

Type[TypeVar(T, bound= PluginProtocol)]

Returns:

Plugin class

Raises:

PluginError – If plugin class is not found

pepperpy.plugin.load_plugin(path)[source]

Load plugin from path.

Parameters:

path (Path) – Plugin path

Return type:

Plugin

Returns:

Plugin instance

Raises:

PluginError – If plugin loading fails