Handles includes.
(self, node: nodes.Include, frame: Frame)
| 1028 | self.extends_so_far += 1 |
| 1029 | |
| 1030 | def visit_Include(self, node: nodes.Include, frame: Frame) -> None: |
| 1031 | """Handles includes.""" |
| 1032 | if node.ignore_missing: |
| 1033 | self.writeline("try:") |
| 1034 | self.indent() |
| 1035 | |
| 1036 | func_name = "get_or_select_template" |
| 1037 | if isinstance(node.template, nodes.Const): |
| 1038 | if isinstance(node.template.value, str): |
| 1039 | func_name = "get_template" |
| 1040 | elif isinstance(node.template.value, (tuple, list)): |
| 1041 | func_name = "select_template" |
| 1042 | elif isinstance(node.template, (nodes.Tuple, nodes.List)): |
| 1043 | func_name = "select_template" |
| 1044 | |
| 1045 | self.writeline(f"template = environment.{func_name}(", node) |
| 1046 | self.visit(node.template, frame) |
| 1047 | self.write(f", {self.name!r})") |
| 1048 | if node.ignore_missing: |
| 1049 | self.outdent() |
| 1050 | self.writeline("except TemplateNotFound:") |
| 1051 | self.indent() |
| 1052 | self.writeline("pass") |
| 1053 | self.outdent() |
| 1054 | self.writeline("else:") |
| 1055 | self.indent() |
| 1056 | |
| 1057 | skip_event_yield = False |
| 1058 | if node.with_context: |
| 1059 | self.writeline( |
| 1060 | f"{self.choose_async()}for event in template.root_render_func(" |
| 1061 | "template.new_context(context.get_all(), True," |
| 1062 | f" {self.dump_local_context(frame)})):" |
| 1063 | ) |
| 1064 | elif self.environment.is_async: |
| 1065 | self.writeline( |
| 1066 | "for event in (await template._get_default_module_async())" |
| 1067 | "._body_stream:" |
| 1068 | ) |
| 1069 | else: |
| 1070 | self.writeline("yield from template._get_default_module()._body_stream") |
| 1071 | skip_event_yield = True |
| 1072 | |
| 1073 | if not skip_event_yield: |
| 1074 | self.indent() |
| 1075 | self.simple_write("event", frame) |
| 1076 | self.outdent() |
| 1077 | |
| 1078 | if node.ignore_missing: |
| 1079 | self.outdent() |
| 1080 | |
| 1081 | def _import_common( |
| 1082 | self, node: t.Union[nodes.Import, nodes.FromImport], frame: Frame |
nothing calls this directly
no test coverage detected