From Jiwon -- what is not getting to pypy-dev

What he would like as a patch Index: module/__builtin__module.py =================================================================== --- module/__builtin__module.py (revision 4699) +++ module/__builtin__module.py (working copy) @@ -427,7 +427,7 @@ from __interplevel__ import hash, oct, hex, round from __interplevel__ import getattr, setattr, delattr, iter, hash, id from __interplevel__ import issubclass, _pypy_get -from __interplevel__ import compile +from __interplevel__ import compile, eval from __interplevel__ import globals, locals, _caller_globals, _caller_locals from __interplevel__ import file Index: module/__builtin__interp.py =================================================================== --- module/__builtin__interp.py (revision 4699) +++ module/__builtin__interp.py (working copy) @@ -92,7 +92,26 @@ raise OperationError(space.w_TypeError,space.wrap(str(e))) return space.wrap(PyCode()._from_code(c)) +def eval(w_source, w_globals=None, w_locals=None): + w_codeobj = None + w = space.wrap + if space.type(w_source) == space.w_str: + w_codeobj = compile(w_source, w("<string>"), w("eval")) + elif type(space.unwrap(w_source)) == PyCode: + w_codeobj = w_source + else: + raise OperationError(space.w_TypeError, + w('eval() arg 1 must be a string or code object')) + + if w_globals == None: + w_globals = globals() + w_locals = locals() + elif w_locals == None: + w_locals = w_globals + + return space.unwrap(w_codeobj).exec_code(space, w_globals, w_locals) + def abs(w_val): return space.abs(w_val)
participants (1)
-
Laura Creighton