changeset 896:248d6671a7e1

Fix for infinite recursion when parsing argument names from tuples. Closes #383.
author cmlenz
date Wed, 21 Apr 2010 22:02:28 +0000
parents f30c9fb10272
children 85e4678337cf
files genshi/template/eval.py genshi/template/tests/eval.py
diffstat 2 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- 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)}))
Copyright (C) 2012-2017 Edgewall Software