hbertrand's picture
PR: DocumentsManager interface (#57)
71e7dd8 unverified
raw
history blame
682 Bytes
import os
from typing import Type
from buster.documents.base import DocumentsManager
from buster.documents.pickle import DocumentsPickle
from buster.documents.sqlite import DocumentsDB
PICKLE_EXTENSIONS = [".gz", ".bz2", ".zip", ".xz", ".zst", ".tar", ".tar.gz", ".tar.xz", ".tar.bz2"]
def get_file_extension(filepath: str) -> str:
return os.path.splitext(filepath)[1]
def get_documents_manager_from_extension(filepath: str) -> Type[DocumentsManager]:
ext = get_file_extension(filepath)
if ext in PICKLE_EXTENSIONS:
return DocumentsPickle
elif ext == ".db":
return DocumentsDB
else:
raise ValueError(f"Unsupported format: {ext}.")