23 lines
730 B
Python
23 lines
730 B
Python
from __future__ import annotations
|
|
|
|
from .base import BaseSnapshotExtractor, ExtractorConfigError
|
|
from .public_json import PublicJsonSnapshotExtractor
|
|
|
|
EXTRACTOR_REGISTRY: dict[str, type[BaseSnapshotExtractor]] = {
|
|
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()
|