paperap.plugins.manager module


METADATA:

File: manager.py

Project: paperap

Created: 2025-03-04

Version: 0.0.9

Author: Jess Mann Email: jess@jmann.me

Copyright (c) 2025 Jess Mann


LAST MODIFIED:

2025-03-04 By Jess Mann

class paperap.plugins.manager.PluginConfig[source]

Bases: TypedDict

Configuration settings for a plugin.

enabled_plugins: list[str]
settings: dict[str, Any]
class paperap.plugins.manager.PluginManager(**data)[source]

Bases: BaseModel

Manages the discovery, configuration and initialization of plugins.

Parameters:

data (Any)

plugins: dict[str, type[Plugin]]
instances: dict[str, Plugin]
config: PluginConfig
client: PaperlessClient
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_assignment': True, 'validate_default': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

property enabled_plugins: list[str]

Get the list of enabled plugins.

Returns:

List of enabled plugin names

discover_plugins(package_name='paperap.plugins')[source]

Discover available plugins in the specified package.

Parameters:

package_name (str) – Dotted path to the package containing plugins.

Return type:

None

configure(config=None, **kwargs)[source]

Configure the plugin manager with plugin-specific configurations.

Parameters:
  • config (PluginConfig | None) – dictionary mapping plugin names to their configurations.

  • kwargs (Any)

Return type:

None

get_plugin_config(plugin_name)[source]

Get the configuration for a specific plugin.

Parameters:

plugin_name (str)

Return type:

dict[str, Any]

initialize_plugin(plugin_name)[source]

Initialize a specific plugin.

Parameters:

plugin_name (str) – Name of the plugin to initialize.

Return type:

Plugin | None

Returns:

The initialized plugin instance or None if initialization failed.

initialize_all_plugins()[source]

Initialize all discovered plugins.

Return type:

dict[str, Plugin]

Returns:

Dictionary mapping plugin names to their initialized instances.