from __future__ import annotations from .base import BaseSnapshotExtractor, ExtractorConfigError from .lba import LBASnapshotExtractor from .public_json import PublicJsonSnapshotExtractor EXTRACTOR_REGISTRY: dict[str, type[BaseSnapshotExtractor]] = { LBASnapshotExtractor.extractor_name: LBASnapshotExtractor, PublicJsonSnapshotExtractor.extractor_name: PublicJsonSnapshotExtractor, } def available_extractors() -> list[str]: return sorted(EXTRACTOR_REGISTRY.keys()) def create_extractor(extractor_name: str) -> BaseSnapshotExtractor: try: extractor_cls = EXTRACTOR_REGISTRY[extractor_name] except KeyError as exc: raise ExtractorConfigError( f"Unknown extractor '{extractor_name}'. Available: {', '.join(available_extractors())}" ) from exc return extractor_cls()