[pypy-dev] From Jiwon -- what is not getting to pypy-dev
Laura Creighton
lac at strakt.com
Sat May 29 10:06:06 CEST 2004
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)
More information about the Pypy-dev
mailing list