- Added policies for filter defaults and similar things.
- urlize now sets "rel noopener" by default.
- Support attribute fallback for old-style classes in 2.x.
+- Support toplevel set statements in extend situations.
Version 2.8.2
-------------
def visit_AssignBlock(self, node, frame):
block_frame = frame.inner()
+ # This is a special case. Since a set block always captures we
+ # will disable output checks. This way one can use set blocks
+ # toplevel even in extended templates.
+ block_frame.require_output_check = False
block_frame.inspect(node.body)
aliases = self.push_scope(block_frame)
self.pull_locals(block_frame)
class Foo:
x = 42
assert env.getitem(Foo(), 'x') == 42
+
+ def test_block_set_with_extends(self):
+ env = Environment(loader=DictLoader({
+ 'main': '{% block body %}[{{ x }}]{% endblock %}',
+ }))
+ t = env.from_string('{% extends "main" %}{% set x %}42{% endset %}')
+ assert t.render() == '[42]'