Handles includes.
(self, node: nodes.Include, frame: Frame)
| 1040 | self.extends_so_far += 1 |
| 1041 | |
| 1042 | def visit_Include(self, node: nodes.Include, frame: Frame) -> None: |
| 1043 | class="st">""class="st">"Handles includes."class="st">"" |
| 1044 | if node.ignore_missing: |
| 1045 | self.writeline(class="st">"try:") |
| 1046 | self.indent() |
| 1047 | |
| 1048 | func_name = class="st">"get_or_select_template" |
| 1049 | if isinstance(node.template, nodes.Const): |
| 1050 | if isinstance(node.template.value, str): |
| 1051 | func_name = class="st">"get_template" |
| 1052 | elif isinstance(node.template.value, (tuple, list)): |
| 1053 | func_name = class="st">"select_template" |
| 1054 | elif isinstance(node.template, (nodes.Tuple, nodes.List)): |
| 1055 | func_name = class="st">"select_template" |
| 1056 | |
| 1057 | self.writeline(fclass="st">"template = environment.{func_name}(", node) |
| 1058 | self.visit(node.template, frame) |
| 1059 | self.write(fclass="st">", {self.name!r})") |
| 1060 | if node.ignore_missing: |
| 1061 | self.outdent() |
| 1062 | self.writeline(class="st">"except TemplateNotFound:") |
| 1063 | self.indent() |
| 1064 | self.writeline(class="st">"pass") |
| 1065 | self.outdent() |
| 1066 | self.writeline(class="st">"else:") |
| 1067 | self.indent() |
| 1068 | |
| 1069 | def loop_body() -> None: |
| 1070 | self.indent() |
| 1071 | self.simple_write(class="st">"event", frame) |
| 1072 | self.outdent() |
| 1073 | |
| 1074 | if node.with_context: |
| 1075 | self.writeline( |
| 1076 | fclass="st">"gen = template.root_render_func(" |
| 1077 | class="st">"template.new_context(context.get_all(), True," |
| 1078 | fclass="st">" {self.dump_local_context(frame)}))" |
| 1079 | ) |
| 1080 | self.writeline(class="st">"try:") |
| 1081 | self.indent() |
| 1082 | self.writeline(fclass="st">"{self.choose_async()}for event in gen:") |
| 1083 | loop_body() |
| 1084 | self.outdent() |
| 1085 | self.writeline( |
| 1086 | fclass="st">"finally: {self.choose_async(&class="cm">#x27;await gen.aclose()', 'gen.close()')}" |
| 1087 | ) |
| 1088 | elif self.environment.is_async: |
| 1089 | self.writeline( |
| 1090 | class="st">"for event in (await template._get_default_module_async())" |
| 1091 | class="st">"._body_stream:" |
| 1092 | ) |
| 1093 | loop_body() |
| 1094 | else: |
| 1095 | self.writeline(class="st">"yield from template._get_default_module()._body_stream") |
| 1096 | |
| 1097 | if node.ignore_missing: |
| 1098 | self.outdent() |
| 1099 |
nothing calls this directly
no test coverage detected