MCPcopy Create free account
hub / github.com/nodejs/node / visit_FromImport

Method visit_FromImport

deps/v8/third_party/jinja2/compiler.py:1107–1155  ·  view source on GitHub ↗

Visit named imports.

(self, node: nodes.FromImport, frame: Frame)

Source from the content-addressed store, hash-verified

1105 self.writeline(f"context.exported_vars.discard({node.target!r})")
1106
1107 def visit_FromImport(self, node: nodes.FromImport, frame: Frame) -> None:
1108 """Visit named imports."""
1109 self.newline(node)
1110 self.write("included_template = ")
1111 self._import_common(node, frame)
1112 var_names = []
1113 discarded_names = []
1114 for name in node.names:
1115 if isinstance(name, tuple):
1116 name, alias = name
1117 else:
1118 alias = name
1119 self.writeline(
1120 f"{frame.symbols.ref(alias)} ="
1121 f" getattr(included_template, {name!r}, missing)"
1122 )
1123 self.writeline(f"if {frame.symbols.ref(alias)} is missing:")
1124 self.indent()
1125 message = (
1126 "the template {included_template.__name__!r}"
1127 f" (imported on {self.position(node)})"
1128 f" does not export the requested name {name!r}"
1129 )
1130 self.writeline(
1131 f"{frame.symbols.ref(alias)} = undefined(f{message!r}, name={name!r})"
1132 )
1133 self.outdent()
1134 if frame.toplevel:
1135 var_names.append(alias)
1136 if not alias.startswith("_"):
1137 discarded_names.append(alias)
1138
1139 if var_names:
1140 if len(var_names) == 1:
1141 name = var_names[0]
1142 self.writeline(f"context.vars[{name!r}] = {frame.symbols.ref(name)}")
1143 else:
1144 names_kv = ", ".join(
1145 f"{name!r}: {frame.symbols.ref(name)}" for name in var_names
1146 )
1147 self.writeline(f"context.vars.update({{{names_kv}}})")
1148 if discarded_names:
1149 if len(discarded_names) == 1:
1150 self.writeline(f"context.exported_vars.discard({discarded_names[0]!r})")
1151 else:
1152 names_str = ", ".join(map(repr, discarded_names))
1153 self.writeline(
1154 f"context.exported_vars.difference_update(({names_str}))"
1155 )
1156
1157 def visit_For(self, node: nodes.For, frame: Frame) -> None:
1158 loop_frame = frame.inner()

Callers

nothing calls this directly

Calls 11

newlineMethod · 0.95
writeMethod · 0.95
_import_commonMethod · 0.95
writelineMethod · 0.95
indentMethod · 0.95
positionMethod · 0.95
outdentMethod · 0.95
refMethod · 0.65
mapFunction · 0.50
appendMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected