﻿id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc
327,nested 'for' expression in list comprehensions no longer work,cboos,mgood,"While debugging #T8440, I figured out it was Genshi not interpreting correctly the `<py:for>` expressions used [trac:source:branches/0.11-stable/trac/ticket/templates/report.rss@8451:18-19 there]. Those are rather complex and ugly, but still... this used to work in 0.5.1.

Given the following unit-test:
{{{
#!diff
Index: genshi/template/tests/eval.py
===================================================================
--- genshi/template/tests/eval.py       (revision 1063)
+++ genshi/template/tests/eval.py       (working copy)
@@ -264,6 +264,10 @@
         self.assertEqual([2, 3, 4, 5, 6],
                          expr.evaluate({'numbers': range(5), 'offset': 2}))

+        expr = Expression(""[n for group in groups for n in group]"")
+        self.assertEqual([0, 1, 0, 1, 2],
+                         expr.evaluate({'groups': [range(2), range(3)]}))
+
     def test_list_comprehension_with_getattr(self):
         items = [{'name': 'a', 'value': 1}, {'name': 'b', 'value': 2}]
         expr = Expression(""[i.name for i in items if i.value > 1]"")
}}}
which passes fine in 0.5.1 and 0.5.x of today, I get:
{{{
======================================================================
ERROR: test_list_comprehension (genshi.template.tests.eval.ExpressionTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ""c:\workspace\src\trac\dependencies\genshi\upstream-trunk\genshi\template\tests\eval.py"", line 263, in test_list_comprehension
    expr.evaluate({'groups': [range(2), range(3)]}))
  File ""c:\workspace\src\trac\dependencies\genshi\upstream-trunk\genshi\template\eval.py"", line 178, in evaluate
    return eval(self.code, _globals, {'__data__': data})
  File ""<string>"", line 1, in <Expression '[n for group in groups for n in group]'>
  File ""c:\workspace\src\trac\dependencies\genshi\upstream-trunk\genshi\template\eval.py"", line 305, in lookup_name
    val = cls.undefined(name)
  File ""c:\workspace\src\trac\dependencies\genshi\upstream-trunk\genshi\template\eval.py"", line 406, in undefined
    raise UndefinedError(key, owner=owner)
UndefinedError: ""group"" not defined
}}}
on trunk (r1063).

A quick bisection leads to r988 (what a surprise, the AST merge ;-) ).

",defect,closed,major,0.6,Expression evaluation,devel,fixed,regression for,
