[pypy-svn] r10265 - pypy/dist/pypy/objspace/std

pedronis at codespeak.net pedronis at codespeak.net
Sun Apr 3 04:26:21 CEST 2005


Author: pedronis
Date: Sun Apr  3 04:26:21 2005
New Revision: 10265

Removed:
   pypy/dist/pypy/objspace/std/fake.py
Log:
soon to be reinstanted from the past


Deleted: /pypy/dist/pypy/objspace/std/fake.py
==============================================================================
--- /pypy/dist/pypy/objspace/std/fake.py	Sun Apr  3 04:26:21 2005
+++ (empty file)
@@ -1,179 +0,0 @@
-from pypy.interpreter.error import OperationError, debug_print
-from pypy.interpreter import baseobjspace
-from pypy.interpreter import eval
-from pypy.interpreter.function import Function
-from pypy.objspace.std.stdtypedef import *
-from pypy.objspace.std.objspace import W_Object, StdObjSpace
-from pypy.objspace.std.model import UnwrapError
-from pypy.tool.cache import Cache 
-
-# this file automatically generates non-reimplementations of CPython
-# types that we do not yet implement in the standard object space
-# (files being the biggy)
-
-import sys
-
-_fake_type_cache = Cache()
-
-# real-to-wrapped exceptions
-def wrap_exception(space):
-    exc, value, tb = sys.exc_info()
-    if exc is OperationError:
-        raise exc, value, tb   # just re-raise it
-    name = exc.__name__
-    if hasattr(space, 'w_' + name):
-        w_exc = getattr(space, 'w_' + name)
-        w_value = space.call_function(w_exc,
-            *[space.wrap(a) for a in value.args])
-        for key, value in value.__dict__.items():
-            if not key.startswith('_'):
-                space.setattr(w_value, space.wrap(key), space.wrap(value))
-    else:
-        w_exc = space.wrap(exc)
-        w_value = space.wrap(value)
-    raise OperationError, OperationError(w_exc, w_value), tb
-
-def fake_type(cpy_type):
-    assert type(cpy_type) is type
-    return _fake_type_cache.getorbuild(cpy_type, really_build_fake_type, None)
-
-def really_build_fake_type(cpy_type, ignored):
-    "NOT_RPYTHON (not remotely so!)."
-    debug_print('faking %r'%(cpy_type,))
-    kw = {}
-    
-    for s, v in cpy_type.__dict__.items():
-        if not (cpy_type is unicode and s in ['__add__', '__contains__']):
-            if s != '__getattribute__' or cpy_type is type(sys):
-                kw[s] = v
-
-    kw['__module__'] = cpy_type.__module__
-
-    def fake__new__(space, w_type, args_w):
-        args = [space.unwrap(w_arg) for w_arg in args_w]
-        try:
-            r = cpy_type.__new__(cpy_type, *args)
-        except:
-            wrap_exception(space)
-        w_obj = space.allocate_instance(W_Fake, w_type)
-        w_obj.__init__(space, r)
-        return w_obj
-
-    kw['__new__'] = gateway.interp2app(fake__new__,
-                         unwrap_spec = [baseobjspace.ObjSpace,
-                                        baseobjspace.W_Root,
-                                        'args_w'])
-    if cpy_type.__base__ is not object:
-        assert cpy_type.__base__ is basestring
-        from pypy.objspace.std.basestringtype import basestring_typedef
-        base = basestring_typedef
-    else:
-        base = None
-    class W_Fake(W_Object):
-        typedef = StdTypeDef(
-            cpy_type.__name__, base, **kw)
-        def __init__(w_self, space, val):
-            W_Object.__init__(w_self, space)
-            w_self.val = val
-        def unwrap(w_self):
-            return w_self.val
-                
-    # cannot write to W_Fake.__name__ in Python 2.2!
-    W_Fake = type(W_Object)('W_Fake%s'%(cpy_type.__name__.capitalize()),
-                            (W_Object,),
-                            dict(W_Fake.__dict__.items()))
-    W_Fake.typedef.fakedcpytype = cpy_type
-    return W_Fake
-
-# ____________________________________________________________
-#
-# Special case for built-in functions, methods, and slot wrappers.
-
-class CPythonFakeCode(eval.Code):
-    def __init__(self, cpy_callable):
-        eval.Code.__init__(self, getattr(cpy_callable, '__name__', '?'))
-        self.cpy_callable = cpy_callable
-        assert callable(cpy_callable), cpy_callable
-    def create_frame(self, space, w_globals, closure=None):
-        return CPythonFakeFrame(space, self, w_globals)
-    def signature(self):
-        return [], 'args', 'kwds'
-
-class CPythonFakeFrame(eval.Frame):
-
-    def setfastscope(self, scope_w):
-        w_args, w_kwds = scope_w
-        try:
-            self.unwrappedargs = self.space.unwrap(w_args)
-            self.unwrappedkwds = self.space.unwrap(w_kwds)
-        except UnwrapError, e:
-            raise UnwrapError('calling %s: %s' % (self.code.cpy_callable, e))
-
-    def getfastscope(self):
-        raise OperationError(self.space.w_TypeError,
-          self.space.wrap("cannot get fastscope of a CPythonFakeFrame"))                           
-    def run(self):
-        fn = self.code.cpy_callable
-        try:
-            result = apply(fn, self.unwrappedargs, self.unwrappedkwds)
-        except:
-            wrap_exception(self.space)
-        return self.space.wrap(result)
-
-def fake_builtin_callable(space, val):
-    return Function(space, CPythonFakeCode(val))
-
-_fake_type_cache.content[type(len)] = fake_builtin_callable
-_fake_type_cache.content[type(list.append)] = fake_builtin_callable
-_fake_type_cache.content[type(type(None).__repr__)] = fake_builtin_callable
-
-
-from pypy.interpreter.baseobjspace import Wrappable
-from pypy.interpreter.typedef import TypeDef
-from pypy.interpreter.gateway import interp2app
-
-class W_FakeDescriptor(Wrappable):
-    # Mimics pypy.interpreter.typedef.GetSetProperty.
-
-    def __init__(self, space, d):
-        self.name = d.__name__
-
-    def descr_descriptor_get(space, w_descriptor, w_obj, w_cls=None):
-        # XXX HAAAAAAAAAAAACK (but possibly a good one)
-        if w_obj == space.w_None and not space.is_true(space.is_(w_cls, space.type(space.w_None))):
-            #print w_descriptor, w_obj, w_cls
-            return w_descriptor
-        else:
-            name = space.unwrap(w_descriptor).name
-            obj = space.unwrap(w_obj)
-            try:
-                val = getattr(obj, name)  # this gives a "not RPython" warning
-            except:
-                wrap_exception(space)
-            return space.wrap(val)
-
-    def descr_descriptor_set(space, w_descriptor, w_obj, w_value):
-        name = space.unwrap(w_descriptor).name
-        obj = space.unwrap(w_obj)
-        val = space.unwrap(w_value)
-        try:
-            setattr(obj, name, val)   # this gives a "not RPython" warning
-        except:
-            wrap_exception(space)
-
-    def descr_descriptor_del(space, w_descriptor, w_obj):
-        name = space.unwrap(w_descriptor).name
-        obj = space.unwrap(w_obj)
-        try:
-            delattr(obj, name)
-        except:
-            wrap_exception(space)
-
-    typedef = TypeDef("FakeDescriptor",
-        __get__ = interp2app(descr_descriptor_get),
-        __set__ = interp2app(descr_descriptor_set),
-        __delete__ = interp2app(descr_descriptor_del),
-        )
-
-_fake_type_cache.content[type(file.softspace)] = W_FakeDescriptor
-_fake_type_cache.content[type(type.__dict__['__dict__'])] = W_FakeDescriptor



More information about the pypy-svn mailing list