Spaces:
Running
Running
| from typing import Mapping | |
| from .base import Loader, CAPTURE_EXCEPTIONS, ILoaderClass | |
| from .exception import CompositeStructureError | |
| DICT_ERRORS = Mapping[str, Exception] | |
| class DictError(CompositeStructureError): | |
| """ | |
| Overview: | |
| Dict error. | |
| Interfaces: | |
| ``__init__``, ``errors`` | |
| Properties: | |
| ``errors`` | |
| """ | |
| def __init__(self, errors: DICT_ERRORS): | |
| """ | |
| Overview: | |
| Initialize the DictError. | |
| Arguments: | |
| - errors (:obj:`DICT_ERRORS`): The errors. | |
| """ | |
| self.__error = errors | |
| def errors(self) -> DICT_ERRORS: | |
| """ | |
| Overview: | |
| Get the errors. | |
| """ | |
| return self.__error | |
| def dict_(**kwargs) -> ILoaderClass: | |
| """ | |
| Overview: | |
| Create a dict loader. | |
| Arguments: | |
| - kwargs (:obj:`Mapping[str, ILoaderClass]`): The loaders. | |
| """ | |
| kwargs = [(k, Loader(v)) for k, v in kwargs.items()] | |
| def _load(value): | |
| _errors = {} | |
| _results = {} | |
| for k, vl in kwargs: | |
| try: | |
| v = vl(value) | |
| except CAPTURE_EXCEPTIONS as err: | |
| _errors[k] = err | |
| else: | |
| _results[k] = v | |
| if not _errors: | |
| return _results | |
| else: | |
| raise DictError(_errors) | |
| return Loader(_load) | |