def _load(self, context: ILoadingContext) -> Any: node = context.current_node() if not context.expect_mapping(): return UNDEFINED result = {} for key_node, value_node in node.value: assert isinstance(key_node, ScalarNode) key = key_node.value item = context.load(self._item_field, value_node) if item is UNDEFINED: continue result[key] = item return result
def _load(self, context: ILoadingContext) -> Any: if not context.expect_mapping(): return UNDEFINED config = context.get_config(ObjectField.Config) node = context.current_node() tag = str(node.tag) if tag.startswith("!type"): splitted_tag = tag.split(":") if len(splitted_tag) != 2: context.error(ErrorCode.BAD_TYPE_TAG_FORMAT, _TYPE_FORMAT_MSG, tag) return None type_name = splitted_tag[1] obj = config.create(type_name, context) else: obj = self._object_class() if obj is None: return UNDEFINED return _load(obj, context, config)