MCPcopy Index your code
hub / github.com/nodejs/node / visit_FromImport

Method visit_FromImport

tools/inspector_protocol/jinja2/compiler.py:965–1022  ·  view source on GitHub ↗

Visit named imports.

(self, node, frame)

Source from the content-addressed store, hash-verified

963 self.writeline('context.exported_vars.discard(%r)' % node.target)
964
965 def visit_FromImport(self, node, frame):
966 """Visit named imports."""
967 self.newline(node)
968 self.write('included_template = %senvironment.get_template('
969 % (self.environment.is_async and 'await ' or ''))
970 self.visit(node.template, frame)
971 self.write(', %r).' % self.name)
972 if node.with_context:
973 self.write('make_module%s(context.get_all(), True, %s)'
974 % (self.environment.is_async and '_async' or '',
975 self.dump_local_context(frame)))
976 elif self.environment.is_async:
977 self.write('_get_default_module_async()')
978 else:
979 self.write('_get_default_module()')
980
981 var_names = []
982 discarded_names = []
983 for name in node.names:
984 if isinstance(name, tuple):
985 name, alias = name
986 else:
987 alias = name
988 self.writeline('%s = getattr(included_template, '
989 '%r, missing)' % (frame.symbols.ref(alias), name))
990 self.writeline('if %s is missing:' % frame.symbols.ref(alias))
991 self.indent()
992 self.writeline('%s = undefined(%r %% '
993 'included_template.__name__, '
994 'name=%r)' %
995 (frame.symbols.ref(alias),
996 'the template %%r (imported on %s) does '
997 'not export the requested name %s' % (
998 self.position(node),
999 repr(name)
1000 ), name))
1001 self.outdent()
1002 if frame.toplevel:
1003 var_names.append(alias)
1004 if not alias.startswith('_'):
1005 discarded_names.append(alias)
1006
1007 if var_names:
1008 if len(var_names) == 1:
1009 name = var_names[0]
1010 self.writeline('context.vars[%r] = %s' %
1011 (name, frame.symbols.ref(name)))
1012 else:
1013 self.writeline('context.vars.update({%s})' % ', '.join(
1014 '%r: %s' % (name, frame.symbols.ref(name)) for name in var_names
1015 ))
1016 if discarded_names:
1017 if len(discarded_names) == 1:
1018 self.writeline('context.exported_vars.discard(%r)' %
1019 discarded_names[0])
1020 else:
1021 self.writeline('context.exported_vars.difference_'
1022 'update((%s))' % ', '.join(imap(repr, discarded_names)))

Callers

nothing calls this directly

Calls 11

newlineMethod · 0.95
writeMethod · 0.95
dump_local_contextMethod · 0.95
writelineMethod · 0.95
indentMethod · 0.95
positionMethod · 0.95
outdentMethod · 0.95
refMethod · 0.65
visitMethod · 0.45
appendMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected