[pypy-svn] r4838 - in pypy/branch/src-newobjectmodel/pypy/objspace: . descr
hpk at codespeak.net
hpk at codespeak.net
Wed Jun 2 20:14:06 CEST 2004
Author: hpk
Date: Wed Jun 2 20:14:05 2004
New Revision: 4838
Modified:
pypy/branch/src-newobjectmodel/pypy/objspace/descr/objspace.py
pypy/branch/src-newobjectmodel/pypy/objspace/trivial.py
Log:
added call to DescrObjSpace
added lookup to TrivObjSpace
Modified: pypy/branch/src-newobjectmodel/pypy/objspace/descr/objspace.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/objspace/descr/objspace.py (original)
+++ pypy/branch/src-newobjectmodel/pypy/objspace/descr/objspace.py Wed Jun 2 20:14:05 2004
@@ -4,6 +4,13 @@
class DescrObjSpace(ObjSpace):
+ def call(space, w_obj, w_args, w_kwargs):
+ w_descr = space.lookup(w_obj, '__call__')
+ if w_descr is None:
+ raise OperationError(space.w_TypeError,
+ space.wrap('object is not callable'))
+ return space.get_and_call(w_descr, w_obj, w_args, w_kwargs)
+
def getattr(space,w_obj,w_name):
w_descr = space.lookup(w_obj,'__getattribute__')
try:
Modified: pypy/branch/src-newobjectmodel/pypy/objspace/trivial.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/objspace/trivial.py (original)
+++ pypy/branch/src-newobjectmodel/pypy/objspace/trivial.py Wed Jun 2 20:14:05 2004
@@ -384,6 +384,20 @@
def round(self, *args):
return round(*args)
+ def lookup(space, w_obj, name):
+ if isinstance(w_obj, Wrappable):
+ for basedef in w_obj.TypeDef.mro():
+ if name in basedef.rawdict:
+ return space.wrap(basedef.rawdict[name])
+ return None
+ else:
+ for cls in w_obj.__class__.__mro__:
+ if name in cls.__dict__:
+ return cls.__dict__[name]
+ return None
+
+
+
for m in ObjSpace.MethodTable:
if not hasattr(TrivialObjSpace, m[0]):
print m[0] # this should raise something
More information about the Pypy-commit
mailing list