Spaces:
Sleeping
Sleeping
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) | |