Source code for cfdibills.schemas.validators

"""
Validators used to parse CFDIs.
"""

from typing import Union

from pydantic import validator


[docs]def dict2list(original: Union[dict, list]) -> list: assert isinstance(original, (dict, list)), "Unsupported type. Must be 'list' or 'dict'" return [original] if isinstance(original, dict) else original
[docs]def dict2list_flatten(original: Union[dict, list]) -> list: if isinstance(original, dict): result = [] for key, value in original.items(): if isinstance(value, dict): result += [value] elif isinstance(value, list): result += [t for t in value] else: raise ValueError(f"Unsupported type in {key}. Must be 'list' or 'dict'") elif isinstance(original, list): result = original elif original is None: result = [] else: raise ValueError("Unsupported type. Must be 'list' or 'dict'") return result
[docs]def reusable_validator(*args, **kwargs): return validator(*args, **kwargs, allow_reuse=True)