Esempio n. 1
0
 def test_proxy_get(self):
     from __pypy__ import tproxy, get_tproxy_controller
     l = [1,2,3]
     def f(name, *args, **kwargs):
         return getattr(l, name)(*args, **kwargs)
     lst = tproxy(list, f)
     assert get_tproxy_controller(lst) is f
Esempio n. 2
0
 def test_proxy_get(self):
     from __pypy__ import tproxy, get_tproxy_controller
     l = [1,2,3]
     def f(name, *args, **kwargs):
         return getattr(l, name)(*args, **kwargs)
     lst = tproxy(list, f)
     assert get_tproxy_controller(lst) is f
Esempio n. 3
0
    def test_proxy_get(self):
        from __pypy__ import tproxy, get_tproxy_controller

        class A(object):
            pass

        def f(name, *args, **kwargs):
            pass
        lst = tproxy(A, f)
        assert get_tproxy_controller(lst) is f
Esempio n. 4
0
    def test_proxy_get(self):
        from __pypy__ import tproxy, get_tproxy_controller

        class A(object):
            pass

        def f(name, *args, **kwargs):
            pass

        lst = tproxy(A, f)
        assert get_tproxy_controller(lst) is f
Esempio n. 5
0
 def wrap(self, obj):
     """ Wrap an object as sth prepared for sending
     """
     def is_element(x, iterable):
         try:
             return x in iterable
         except (TypeError, ValueError):
             return False
     
     tp = type(obj)
     ctrl = get_tproxy_controller(obj)
     if ctrl:
         return "tp", self.keeper.get_remote_object(ctrl)
     elif obj is None:
         return self.type_letters[tp]
     elif tp in self.immutable_primitives:
         # simple, immutable object, just copy
         return (self.type_letters[tp], obj)
     elif hasattr(obj, '__class__') and obj.__class__ in self.exc_dir:
         return (self.type_letters[Exception], (self.exc_dir[obj.__class__], \
             self.wrap(obj.args)))
     elif is_element(obj, self.exc_dir): # weird hashing problems
         return (self.type_letters[exceptions], self.exc_dir[obj])
     elif tp is tuple:
         # we just pack all of the items
         return ('t', tuple([self.wrap(elem) for elem in obj]))
     elif tp in self.mutable_primitives:
         id = self.keeper.register_object(obj)
         return (self.type_letters[tp], id)
     elif tp is type:
         try:
             return "reg", self.keeper.reverse_remote_types[obj]
         except KeyError:
             pass
         try:
             return self.type_letters[tp], self.type_letters[obj]
         except KeyError:
             id = self.register_type(obj)
             return (self.type_letters[tp], id)
     elif tp is types.MethodType:
         w_class = self.wrap(obj.im_class)
         w_func = self.wrap(obj.im_func)
         w_self = self.wrap(obj.im_self)
         return (self.type_letters[tp], (w_class, \
             self.wrap(obj.im_func.func_name), w_func, w_self))
     else:
         id = self.keeper.register_object(obj)
         w_tp = self.wrap(tp)
         return ("cus", (w_tp, id))
Esempio n. 6
0
 def wrap(self, obj):
     """ Wrap an object as sth prepared for sending
     """
     def is_element(x, iterable):
         try:
             return x in iterable
         except (TypeError, ValueError):
             return False
     
     tp = type(obj)
     ctrl = get_tproxy_controller(obj)
     if ctrl:
         return "tp", self.keeper.get_remote_object(ctrl)
     elif obj is None:
         return self.type_letters[tp]
     elif tp in self.immutable_primitives:
         # simple, immutable object, just copy
         return (self.type_letters[tp], obj)
     elif hasattr(obj, '__class__') and obj.__class__ in self.exc_dir:
         return (self.type_letters[Exception], (self.exc_dir[obj.__class__], \
             self.wrap(obj.args)))
     elif is_element(obj, self.exc_dir): # weird hashing problems
         return (self.type_letters[exceptions], self.exc_dir[obj])
     elif tp is tuple:
         # we just pack all of the items
         return ('t', tuple([self.wrap(elem) for elem in obj]))
     elif tp in self.mutable_primitives:
         id = self.keeper.register_object(obj)
         return (self.type_letters[tp], id)
     elif tp is type:
         try:
             return "reg", self.keeper.reverse_remote_types[obj]
         except KeyError:
             pass
         try:
             return self.type_letters[tp], self.type_letters[obj]
         except KeyError:
             id = self.register_type(obj)
             return (self.type_letters[tp], id)
     elif tp is types.MethodType:
         w_class = self.wrap(obj.im_class)
         w_func = self.wrap(obj.im_func)
         w_self = self.wrap(obj.im_self)
         return (self.type_letters[tp], (w_class, \
             self.wrap(obj.im_func.func_name), w_func, w_self))
     else:
         id = self.keeper.register_object(obj)
         w_tp = self.wrap(tp)
         return ("cus", (w_tp, id))