"""Zugriff auf die neuheiten-Plugin-Module über den vom Plugin-Loader verwendeten Modulnamen (`spiele_redaktion_plugins.neuheiten`). Der Kern teilt sich eine SQLAlchemy-MetaData; deshalb darf es pro Prozess nur eine Modul-Identität geben. Tests importieren das Plugin daher über diesen Helper statt direkt über `plugins.neuheiten`. """ from __future__ import annotations import sys from pathlib import Path from redaktionskern.plugin_loader import discover_plugins _PROJEKT_WURZEL = Path(__file__).resolve().parents[1] if "spiele_redaktion_plugins.neuheiten" not in sys.modules: discover_plugins( _PROJEKT_WURZEL / "plugins", entry_point_group="spiele_redaktion.tests.keine_entry_points", ) _neuheiten = sys.modules["spiele_redaktion_plugins.neuheiten"] bgg = _neuheiten.bgg sync_modul = _neuheiten.sync models = _neuheiten.models BggClient = bgg.BggClient BggFehler = bgg.BggFehler BggAuthFehler = bgg.BggAuthFehler MELDUNG_401 = bgg.MELDUNG_401 SuchTreffer = bgg.SuchTreffer BggSpiel = bgg.BggSpiel parse_suche = bgg.parse_suche parse_things = bgg.parse_things SyncService = sync_modul.SyncService SyncErgebnis = sync_modul.SyncErgebnis ist_moeglicher_prototyp = sync_modul.ist_moeglicher_prototyp speichere_oder_aktualisiere = sync_modul.speichere_oder_aktualisiere Neuheit = models.Neuheit STATUS_NEUHEIT = models.STATUS_NEUHEIT # ---------- Web-Quellen (Adapter + Sync-Orchestrierung) ---------- quellen_basis = _neuheiten.quellen.basis quellen_sync_modul = _neuheiten.quellen_sync models = _neuheiten.models # neu mit QuellenStatus USER_AGENT = quellen_basis.USER_AGENT QuellenAdapter = quellen_basis.QuellenAdapter QuellenFehler = quellen_basis.QuellenFehler QuellenTreffer = quellen_basis.QuellenTreffer SammelErgebnis = quellen_basis.SammelErgebnis WebQuellenClient = quellen_basis.WebQuellenClient jahr_aus_datumsangabe = quellen_basis.jahr_aus_datumsangabe titel_aehnlichkeit = quellen_basis.titel_aehnlichkeit titel_normalisieren = quellen_basis.titel_normalisieren SpielboxQuelle = _neuheiten.quellen.spielbox.SpielboxQuelle BrettspielboxQuelle = _neuheiten.quellen.brettspielbox.BrettspielboxQuelle SpielEssenQuelle = _neuheiten.quellen.spielessen.SpielEssenQuelle CliquenabendQuelle = _neuheiten.quellen.cliquenabend.CliquenabendQuelle ADAPTER_KLASSEN = quellen_sync_modul.ADAPTER_KLASSEN WebQuellenSyncService = quellen_sync_modul.WebQuellenSyncService QuellenLaufZeile = quellen_sync_modul.QuellenLaufZeile quelle_aktiv = quellen_sync_modul.quelle_aktiv TITEL_FUZZY_SCHWELLE = quellen_sync_modul.TITEL_FUZZY_SCHWELLE QuellenStatus = models.QuellenStatus def sys_modules_plugin(): """Die geladene NeuheitenPlugin-Instanz (für Migrationen im Test).""" return sys.modules["spiele_redaktion_plugins.neuheiten"].plugin