MCPcopy
hub / github.com/rocky/python-uncompyle6 / kv_map

Method kv_map

uncompyle6/semantics/pysource.py:668–718  ·  view source on GitHub ↗
(self, kv_node, sep, line_number, indent)

Source from the content-addressed store, hash-verified

666 self.write(")")
667
668 def kv_map(self, kv_node, sep, line_number, indent):
669 first_time = True
670 for kv in kv_node:
671 assert kv in ("kv", "kv2", "kv3")
672
673 # kv ::= DUP_TOP expr ROT_TWO expr STORE_SUBSCR
674 # kv2 ::= DUP_TOP expr expr ROT_THREE STORE_SUBSCR
675 # kv3 ::= expr expr STORE_MAP
676
677 # FIXME: DRY this and the above
678 if kv == "kv":
679 self.write(sep)
680 name = self.traverse(kv[-2], indent="")
681 if first_time:
682 line_number = self.indent_if_source_nl(line_number, indent)
683 first_time = False
684 pass
685 line_number = self.line_number
686 self.write(name, ": ")
687 value = self.traverse(kv[1], indent=self.indent + (len(name) + 2) * " ")
688 elif kv == "kv2":
689 self.write(sep)
690 name = self.traverse(kv[1], indent="")
691 if first_time:
692 line_number = self.indent_if_source_nl(line_number, indent)
693 first_time = False
694 pass
695 line_number = self.line_number
696 self.write(name, ": ")
697 value = self.traverse(
698 kv[-3], indent=self.indent + (len(name) + 2) * " "
699 )
700 elif kv == "kv3":
701 self.write(sep)
702 name = self.traverse(kv[-2], indent="")
703 if first_time:
704 line_number = self.indent_if_source_nl(line_number, indent)
705 first_time = False
706 pass
707 line_number = self.line_number
708 self.write(name, ": ")
709 line_number = self.line_number
710 value = self.traverse(kv[0], indent=self.indent + (len(name) + 2) * " ")
711 pass
712 self.write(value)
713 sep = ", "
714 if line_number != self.line_number:
715 sep += "\n" + self.indent + " "
716 line_number = self.line_number
717 pass
718 pass
719
720 def template_engine(self, entry, startnode):
721 """The format template interpretation engine. See the comment at the

Callers 2

n_dictMethod · 0.80
n_dictMethod · 0.80

Calls 3

writeMethod · 0.95
traverseMethod · 0.95
indent_if_source_nlMethod · 0.95

Tested by

no test coverage detected