Ticket #190: noastplay.diff
| File noastplay.diff, 2.5 kB (added by cmlenz, 7 months ago) |
|---|
-
genshi/template/eval.py
54 54 if `None`, the appropriate transformation is chosen 55 55 depending on the mode 56 56 """ 57 if isinstance(source, basestring): 58 self.source = source 59 node = _parse(source, mode=self.mode) 60 else: 61 assert isinstance(source, ast.Node), \ 62 'Expected string or AST node, but got %r' % source 63 self.source = '?' 64 if self.mode == 'eval': 65 node = ast.Expression(source) 66 else: 67 node = ast.Module(None, source) 68 69 self.ast = node 70 self.code = _compile(node, self.source, mode=self.mode, 71 filename=filename, lineno=lineno, xform=xform) 57 self.code = compile(source, filename or '?', self.mode) 72 58 if lookup is None: 73 59 lookup = LenientLookup 74 60 elif isinstance(lookup, basestring): … … 140 126 """ 141 127 __traceback_hide__ = 'before_and_this' 142 128 _globals = self._globals() 143 _globals['__data__'] = data 144 return eval(self.code, _globals, {'__data__': data}) 129 return eval(self.code, _globals, data) 145 130 146 131 147 132 class Suite(Code): … … 162 147 """ 163 148 __traceback_hide__ = 'before_and_this' 164 149 _globals = self._globals() 165 _globals['__data__'] = data166 150 exec self.code in _globals, data 167 151 168 152 … … 403 387 if len(lines) > 1: 404 388 extract += ' ...' 405 389 name = '<Suite %r>' % (extract) 406 gen.optimized = True407 390 code = gen.getCode() 408 391 409 392 # We'd like to just set co_firstlineno, but it's readonly. So we need to … … 487 470 return self._clone(node, self.visit(node.expr), node.attrname) 488 471 489 472 def visitLambda(self, node): 490 node =self._clone(node, node.argnames,473 return self._clone(node, node.argnames, 491 474 [self.visit(x) for x in node.defaults], node.flags, 492 475 self.visit(node.code) 493 476 ) 494 return node495 477 496 478 def visitSubscript(self, node): 497 479 return self._clone(node, self.visit(node.expr), node.flags, … … 729 711 return ASTTransformer.visitLambda(self, node) 730 712 finally: 731 713 self.locals.pop() 732 714 733 715 def visitListComp(self, node): 734 716 self.locals.append(set()) 735 717 try:
