# HG changeset patch # User cmlenz # Date 1271887348 0 # Node ID 248d6671a7e1985e12c348b3d0e88aaa4cfc7b49 # Parent f30c9fb10272233cd796f70d4bce46f3ff06f84c Fix for infinite recursion when parsing argument names from tuples. Closes #383. diff --git a/genshi/template/eval.py b/genshi/template/eval.py --- a/genshi/template/eval.py +++ b/genshi/template/eval.py @@ -499,7 +499,7 @@ names.add(node.asname or node.name) elif isinstance(node, _ast.Tuple): for elt in node.elts: - _process(node) + _process(elt) if hasattr(node, 'args'): for arg in node.args: _process(arg) 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 @@ -248,6 +248,11 @@ expr = Expression("filter(lambda x: x > 2, items)") self.assertEqual([3, 4], expr.evaluate(data)) + def test_lambda_tuple_arg(self): + data = {'items': [(1, 2), (2, 1)]} + expr = Expression("filter(lambda (x, y): x > y, items)") + self.assertEqual([(2, 1)], expr.evaluate(data)) + def test_list_comprehension(self): expr = Expression("[n for n in numbers if n < 2]") self.assertEqual([0, 1], expr.evaluate({'numbers': range(5)}))