diff genshi/template/eval.py @ 579:2f7f6b70d5b9 trunk

Fix for augmented assignments to local variables. Thanks to Erik Bray for reporting the problem.
author cmlenz
date Tue, 31 Jul 2007 21:40:51 +0000
parents c17342ef9efb
children 0dc024715f93
line wrap: on
line diff
--- a/genshi/template/eval.py
+++ b/genshi/template/eval.py
@@ -249,7 +249,8 @@
         return {
             '_lookup_name': cls.lookup_name,
             '_lookup_attr': cls.lookup_attr,
-            '_lookup_item': cls.lookup_item
+            '_lookup_item': cls.lookup_item,
+            'UndefinedError': UndefinedError
         }
     globals = classmethod(globals)
 
@@ -653,7 +654,8 @@
         return node
 
     def visitAugAssign(self, node):
-        if isinstance(node.node, ast.Name):
+        if isinstance(node.node, ast.Name) \
+                and node.node.name not in flatten(self.locals[-1]):
             name = node.node.name
             node.node = ast.Subscript(ast.Name('data'), 'OP_APPLY',
                                       [ast.Const(name)])
Copyright (C) 2012-2017 Edgewall Software