# HG changeset patch # User cmlenz # Date 1271887348 0 # Node ID 8ae2c1765068506576148c9fb34d09987c0f173d # Parent 79fc86fac3aab4b4b155ba6c258eac434d60fe0a 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)}))