# HG changeset patch # User cmlenz # Date 1185985421 0 # Node ID 61e072802b6278412d18082f2b749c43b186e638 # Parent 13244156cf01e28387f1fec103c1d9e87489cc8d Ported [696] to 0.4.x branch. diff --git a/genshi/template/eval.py b/genshi/template/eval.py --- a/genshi/template/eval.py +++ b/genshi/template/eval.py @@ -673,7 +673,7 @@ def visitAugAssign(self, node): if isinstance(node.node, ast.Name) and (not self.locals - or node.node.name not in flatten(self.locals[-1])): + or node.node.name not in flatten(self.locals)): name = node.node.name node.node = ast.Subscript(ast.Name('data'), 'OP_APPLY', [ast.Const(name)]) diff --git a/genshi/template/tests/eval.py b/genshi/template/tests/eval.py --- a/genshi/template/tests/eval.py +++ b/genshi/template/tests/eval.py @@ -549,6 +549,16 @@ x = foo()""").execute(d) self.assertEqual(2, d['x']) + def test_augmented_assign_in_loop_in_def(self): + d = {} + Suite("""def foo(): + i = 0 + for n in range(5): + i += n + return i +x = foo()""").execute(d) + self.assertEqual(10, d['x']) + def test_assign_in_list(self): suite = Suite("[d['k']] = 'foo',; assert d['k'] == 'foo'") d = {"k": "bar"}