def _accept_mapping(self, anchor, sink_node): start_event = self._event_next() tag = self._resolve_tag(start_event.tag, MappingNode, None, start_event.implicit) start_event.tag = tag yield start_event node = MappingNode(tag, [], start_event.start_mark, None, flow_style=start_event.flow_style) self._set_anchor(anchor, node) while not self._event_peek_isa(MappingEndEvent): sink_key = _Sink() sink_value = _Sink() if self._settings.with_extra_events: mark = self._event_peek().start_mark yield PairStartEvent(mark) yield PairKeyStartEvent(mark) for ee in self._accept_any_value(node, None, sink_key): yield ee if self._settings.with_extra_events: mark = self._event_peek().start_mark yield PairKeyEndEvent(mark) yield PairValueStartEvent(mark) for ee in self._accept_any_value(node, sink_key.value, sink_value): yield ee if self._settings.with_extra_events: mark = self._event_peek().start_mark yield PairValueEndEvent(mark) yield PairEndEvent(mark) if self._settings.composing_fully: node.value.append((sink_key.value, sink_value.value)) end_event = self._event_next() yield end_event node.end_mark = end_event.end_mark _put(sink_node, node)