Die Feed-Pipeline kann über zusätzliche Provider erweitert werden, ohne den Kerncode anzupassen. Dieses Dokument zeigt, wie ein Plugin erstellt, geladen und getestet wird.
Verwende den neuen Scaffold-Befehl, um ein startfertiges Modul zu erzeugen:
python scripts/scaffold_provider_plugin.py plugins/custom_provider.py
Die Datei enthält eine register_providers-Funktion, die einen Loader
registriert. Der Loader muss eine Liste von Ereignisdictionaries liefern, die
dem Eventschema entsprechen.
Ersetze den Platzhalter durch deine Datenquelle. Beispiel mit einem einfachen Cache-Leser:
from pathlib import Path
import json
def register_providers(register_provider):
def load_custom_events():
cache_path = Path("data/custom/events.json")
if not cache_path.exists():
return []
return json.loads(cache_path.read_text(encoding="utf-8"))
register_provider("CUSTOM_PROVIDER_ENABLE", load_custom_events, cache_key="custom")
Aktiviere das Plugin über die Umgebungsvariable
WIEN_OEPNV_PROVIDER_PLUGINS. Mehrere Module werden kommasepariert angegeben:
export WIEN_OEPNV_PROVIDER_PLUGINS=plugins.custom_provider
export CUSTOM_PROVIDER_ENABLE=1
python -m src.cli feed build
Während des Builds erscheinen der Providerstatus und mögliche Warnungen im
Feed-Health-Report (docs/feed-health.md).
Erstelle eine kleine Testdatei, die den Loader direkt aufruft oder den Feed-Build
mit aktivem Plugin über python -m pytest ausführt. Die neuen End-to-End-Tests
unter tests/test_provider_plugins.py zeigen, wie Plugins isoliert getestet
werden können.