ding.utils.loader.dict¶
ding.utils.loader.dict
¶
DictError
¶
dict_(**kwargs)
¶
Overview
Create a dict loader.
Arguments:
- kwargs (:obj:Mapping[str, ILoaderClass]): The loaders.
Full Source Code
../ding/utils/loader/dict.py
1from typing import Mapping 2 3from .base import Loader, CAPTURE_EXCEPTIONS, ILoaderClass 4from .exception import CompositeStructureError 5 6DICT_ERRORS = Mapping[str, Exception] 7 8 9class DictError(CompositeStructureError): 10 """ 11 Overview: 12 Dict error. 13 Interfaces: 14 ``__init__``, ``errors`` 15 Properties: 16 ``errors`` 17 """ 18 19 def __init__(self, errors: DICT_ERRORS): 20 """ 21 Overview: 22 Initialize the DictError. 23 Arguments: 24 - errors (:obj:`DICT_ERRORS`): The errors. 25 """ 26 27 self.__error = errors 28 29 @property 30 def errors(self) -> DICT_ERRORS: 31 """ 32 Overview: 33 Get the errors. 34 """ 35 36 return self.__error 37 38 39def dict_(**kwargs) -> ILoaderClass: 40 """ 41 Overview: 42 Create a dict loader. 43 Arguments: 44 - kwargs (:obj:`Mapping[str, ILoaderClass]`): The loaders. 45 """ 46 47 kwargs = [(k, Loader(v)) for k, v in kwargs.items()] 48 49 def _load(value): 50 _errors = {} 51 _results = {} 52 53 for k, vl in kwargs: 54 try: 55 v = vl(value) 56 except CAPTURE_EXCEPTIONS as err: 57 _errors[k] = err 58 else: 59 _results[k] = v 60 61 if not _errors: 62 return _results 63 else: 64 raise DictError(_errors) 65 66 return Loader(_load)