Aller au contenu principal

API Plugins

Système de plugins, registres de providers et discovery.

PluginManager​

class whoosh.plugins.manager.PluginManager

Point d'entrée unique pour gérer tous les plugins.

Méthodes​

MéthodeDescription
PluginManager.load_plugins()Auto-découvre et charge les entry points
PluginManager.register(name, plugin)Enregistre un plugin
PluginManager.enable(name)Active un plugin
PluginManager.disable(name)Désactive un plugin
PluginManager.get(name)Retourne le plugin par nom
PluginManager.list_plugins()Liste des plugins enregistrés

Exemple:

from whoosh.plugins.manager import PluginManager

# Programmatique
PluginManager.register("mon_plugin", MonPlugin())
PluginManager.enable("mon_plugin")

# Entry points (dans pyproject.toml)
# [project.entry-points."whoosh_ng.plugins"]
# mon_plugin = "mon_package.plugin:MonPlugin"
PluginManager.load_plugins()

BasePlugin​

class whoosh.plugins.base.BasePlugin

Classe de base pour tous les plugins.

Méthodes à implémenter​

MéthodeAppelée quand
setup(registry)Plugin activé
teardown(registry)Plugin désactivé
on_startup()Démarrage application
on_shutdown()Arrêt application

Attributs​

AttributDescription
nameNom unique
versionVersion du plugin
dependenciesListe des noms de plugins requis

Registre​

class whoosh.registry.Registry

Registre global pour les providers de tous types.

Méthodes​

MéthodeDescription
registry.register(name, provider, category)Enregistre un provider
registry.get(name, category)Récupère un provider
registry.unregister(name, category)Supprime un provider
registry.list_providers(category)Liste tous les providers d'une catégorie

Catégories courantes:

  • "vector_provider"
  • "autocomplete_provider"
  • "storage_provider"
  • "middleware"

VectorRegistry​

from whoosh.registry import VectorRegistry

VectorRegistry.register("numpy", NumpyProvider(), "mon_app")
provider = VectorRegistry.get("numpy", "mon_app")

Exception​

class PluginNotFoundError(Exception)