feat(v2): add snapshot extractor framework and run command
This commit is contained in:
22
apps/ingestion/extractors/registry.py
Normal file
22
apps/ingestion/extractors/registry.py
Normal file
@ -0,0 +1,22 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user