Source code for mljet.cookie.templates.backends.dispatcher
"""Dispatch for default backends."""
from functools import lru_cache
from pathlib import Path
from typing import (
Dict,
Optional,
)
BASES_PATH = Path(__file__).parent
[docs]@lru_cache(None)
def get_all_default_backends() -> Dict[str, Path]:
"""Returns all default backends."""
return {
x.stem.replace("_", ""): x
for x in BASES_PATH.iterdir()
if x.is_dir() and not x.name.startswith("__")
}
SUPPORTED_BACKENDS = get_all_default_backends()
[docs]def dispatch_default_backend(backend_name, strict=False) -> Optional[Path]:
"""Dispatches default backend by name."""
backends = get_all_default_backends()
backend = backends.get(backend_name)
if backend is None and strict:
raise ValueError(f"Backend `{backend_name}` is not found")
return backend