A lightweight Python framework for managing and prioritizing plugins that provide various actions. This system allows registering multiple plugins, retrieving them by action, and optionally selecting the best plugin using a prioritization strategy.
- Register plugins dynamically.
- Retrieve plugins by action name.
- Optional plugin prioritization using a dedicated prioritization plugin.
- Verbose mode for logging plugin registrations.
from api import Plugin
from platform_module import Platform # replace with actual module name
platform = Platform(plugins=[plugin1, plugin2], verbose=True)platform.register_plugin(plugin3)try:
plugin = platform.get_plugin("some_action")
result = plugin.handle(action)
except NoAvailablePluginError:
print("No plugin available for this action.")plugin = platform.get_plugin("some_action", priritization=False)The system uses a special action "PluginPrioritization" to select the best plugin among multiple candidates. If no prioritization plugin is registered, the first available plugin is used by default.
Sourcing a graph from a Python module.
Payload of structure: file_location: str
Returns: Graph
NoAvailablePluginError– Raised when no plugin is available for a requested action.