""" Auto-register all built-in adapters. Also scans importlib entry_points for third-party adapters. """ import logging logger = logging.getLogger(__name__) def load_builtin_adapters(): """Import built-in adapter packages — they self-register on import.""" from adapters.arma3 import ARMA3_ADAPTER # noqa: F401 def load_third_party_adapters(): """ Scan 'languard.adapters' entry_point group for third-party adapters. Third-party packages add this to their pyproject.toml: [project.entry-points."languard.adapters"] mygame = "mygame_adapter:MYGAME_ADAPTER" """ try: from importlib.metadata import entry_points eps = entry_points(group="languard.adapters") for ep in eps: try: adapter = ep.load() from adapters.registry import GameAdapterRegistry GameAdapterRegistry.register(adapter) logger.info("Loaded third-party adapter via entry_point: %s", ep.name) except Exception as e: logger.error("Failed to load third-party adapter '%s': %s", ep.name, e) except Exception as e: logger.warning("Entry point scanning failed: %s", e) def initialize_adapters(): load_builtin_adapters() load_third_party_adapters()