comparison markup/eval.py @ 132:0288dedce3d2

Name lookup in expressions: try locals first, then the context.
author cmlenz
date Fri, 04 Aug 2006 13:39:11 +0000
parents 203f459e7e26
children b9a0031d4bbb
comparison
equal deleted inserted replaced
131:203f459e7e26 132:0288dedce3d2
102 if isinstance(filename, unicode): 102 if isinstance(filename, unicode):
103 # unicode file names not allowed for code objects 103 # unicode file names not allowed for code objects
104 filename = filename.encode('utf-8', 'replace') 104 filename = filename.encode('utf-8', 'replace')
105 elif not filename: 105 elif not filename:
106 filename = '<string>' 106 filename = '<string>'
107 tree.filename = '<string>' 107 tree.filename = filename
108 if lineno <= 0: 108 if lineno <= 0:
109 lineno = 1 109 lineno = 1
110 110
111 gen = ExpressionCodeGenerator(tree) 111 gen = ExpressionCodeGenerator(tree)
112 gen.optimized = True 112 gen.optimized = True
117 return new.code(0, code.co_nlocals, code.co_stacksize, 117 return new.code(0, code.co_nlocals, code.co_stacksize,
118 code.co_flags | 0x0040, code.co_code, code.co_consts, 118 code.co_flags | 0x0040, code.co_code, code.co_consts,
119 code.co_names, code.co_varnames, filename, code.co_name, 119 code.co_names, code.co_varnames, filename, code.co_name,
120 lineno, code.co_lnotab, (), ()) 120 lineno, code.co_lnotab, (), ())
121 121
122 def _lookup_name(data, name, locals=None): 122 def _lookup_name(data, name, locals_=None):
123 val = data.get(name) 123 val = None
124 if val is None and locals: 124 if locals_:
125 val = locals.get(name) 125 val = locals_.get(name)
126 if val is None:
127 val = data.get(name)
126 if val is None: 128 if val is None:
127 val = getattr(__builtin__, name, None) 129 val = getattr(__builtin__, name, None)
128 return val 130 return val
129 131
130 def _lookup_attr(data, obj, key): 132 def _lookup_attr(data, obj, key):
Copyright (C) 2012-2017 Edgewall Software