lookingglass/hyperglass/configuration/validation.py
2021-09-10 23:13:27 -07:00

30 lines
777 B
Python

"""Post-Validation Validation.
Some validations need to occur across multiple config files.
"""
# Standard Library
from typing import Any, Dict, List, Union, TypeVar
# Third Party
from pydantic import ValidationError
# Project
from hyperglass.exceptions.private import ConfigInvalid
Importer = TypeVar("Importer")
def validate_config(
config: Union[Dict[str, Any], List[Any]], importer: Importer
) -> Importer:
"""Validate a config dict against a model."""
validated = None
try:
if isinstance(config, Dict):
validated = importer(**config)
elif isinstance(config, List):
validated = importer(config)
except ValidationError as err:
raise ConfigInvalid(errors=err.errors()) from None
return validated