[pypy-svn] pypy improve-unwrap_spec: _random, _pickle_support

amauryfa commits-noreply at bitbucket.org
Wed Feb 16 19:19:30 CET 2011


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: improve-unwrap_spec
Changeset: r42062:a05535fd772b
Date: 2011-02-16 13:08 +0100
http://bitbucket.org/pypy/pypy/changeset/a05535fd772b/

Log:	_random, _pickle_support

diff --git a/pypy/module/_random/interp_random.py b/pypy/module/_random/interp_random.py
--- a/pypy/module/_random/interp_random.py
+++ b/pypy/module/_random/interp_random.py
@@ -1,15 +1,14 @@
 from pypy.interpreter.error import OperationError
 from pypy.interpreter.typedef import TypeDef
-from pypy.interpreter.gateway import ObjSpace, W_Root, NoneNotWrapped, interp2app
-from pypy.interpreter.gateway import Arguments
+from pypy.interpreter.gateway import NoneNotWrapped, interp2app, unwrap_spec
 from pypy.interpreter.baseobjspace import Wrappable
 from pypy.rlib.rarithmetic import r_uint, intmask
 from pypy.rlib import rrandom
 
 import time
 
-def descr_new__(space, w_subtype, args):
-    w_anything = args.firstarg()
+def descr_new__(space, w_subtype, __args__):
+    w_anything = __args__.firstarg()
     x = space.allocate_instance(W_Random, w_subtype)
     x = space.interp_w(W_Random, x)
     W_Random.__init__(x, space, w_anything)
@@ -19,11 +18,9 @@
     def __init__(self, space, w_anything):
         self._rnd = rrandom.Random()
         self.seed(space, w_anything)
-    __init__.unwrap_spec = ['self', ObjSpace, W_Root]
 
     def random(self, space):
         return space.newfloat(self._rnd.random())
-    random.unwrap_spec = ['self', ObjSpace]
 
     def seed(self, space, w_n=NoneNotWrapped):
         if w_n is None:
@@ -51,7 +48,6 @@
         if not key:
             key = [r_uint(0)]
         self._rnd.init_by_array(key)
-    seed.unwrap_spec = ['self', ObjSpace, W_Root]
 
     def getstate(self, space):
         state = [None] * (rrandom.N + 1)
@@ -59,7 +55,6 @@
             state[i] = space.newint(intmask(self._rnd.state[i]))
         state[rrandom.N] = space.newint(self._rnd.index)
         return space.newtuple(state)
-    getstate.unwrap_spec = ['self', ObjSpace]
 
     def setstate(self, space, w_state):
         if not space.is_true(space.isinstance(w_state, space.w_tuple)):
@@ -79,7 +74,6 @@
             self._rnd.state[i] = space.uint_w(w_item)
         w_item = space.getitem(w_state, space.newint(rrandom.N))
         self._rnd.index = space.int_w(w_item)
-    setstate.unwrap_spec = ['self', ObjSpace, W_Root]
 
     def jumpahead(self, space, w_n):
         if space.is_true(space.isinstance(w_n, space.w_long)):
@@ -88,8 +82,8 @@
         else:
             n = space.int_w(w_n)
         self._rnd.jumpahead(n)
-    jumpahead.unwrap_spec = ['self', ObjSpace, W_Root]
 
+    @unwrap_spec(k=int)
     def getrandbits(self, space, k):
         if k <= 0:
             strerror = space.wrap("number of bits must be greater than zero")
@@ -114,11 +108,10 @@
             w_result = space.or_(space.lshift(w_result, w_eight),
                                  space.newint(intmask(byte)))
         return w_result
-    getrandbits.unwrap_spec = ['self', ObjSpace, int]
 
 
 W_Random.typedef = TypeDef("Random",
-    __new__ = interp2app(descr_new__, unwrap_spec=[ObjSpace, W_Root, Arguments]),
+    __new__ = interp2app(descr_new__),
     random = interp2app(W_Random.random),
     seed = interp2app(W_Random.seed),
     getstate = interp2app(W_Random.getstate),

diff --git a/pypy/module/_pickle_support/maker.py b/pypy/module/_pickle_support/maker.py
--- a/pypy/module/_pickle_support/maker.py
+++ b/pypy/module/_pickle_support/maker.py
@@ -7,8 +7,7 @@
 from pypy.interpreter.pytraceback import PyTraceback
 from pypy.interpreter.generator import GeneratorIterator
 from pypy.rlib.objectmodel import instantiate
-from pypy.interpreter.argument import Arguments
-from pypy.interpreter.baseobjspace import ObjSpace, W_Root
+from pypy.interpreter.gateway import unwrap_spec
 from pypy.objspace.std.dicttype import dictiter_typedef
 from pypy.objspace.std.iterobject import W_SeqIterObject, W_ReverseSeqIterObject
 
@@ -23,13 +22,11 @@
 def code_new(space, __args__):
     w_type = space.gettypeobject(PyCode.typedef)
     return space.call_args(w_type, __args__)
-code_new.unwrap_spec = [ObjSpace, Arguments]
 
 def func_new(space):
     fu = instantiate(Function)
     fu.w_func_dict = space.newdict()
     return space.wrap(fu)
-func_new.unwrap_spec = [ObjSpace]
 
 def module_new(space, w_name, w_dict):
     new_mod = Module(space, w_name, w_dict, add_package=False)
@@ -38,7 +35,6 @@
 def method_new(space, __args__):
     w_type = space.gettypeobject(Method.typedef)
     return space.call_args(w_type, __args__)
-method_new.unwrap_spec = [ObjSpace, Arguments]
 
 def builtin_method_new(space, w_instance, w_name):
     return space.getattr(w_instance, w_name)
@@ -47,7 +43,6 @@
     # we got a listobject.
     # simply create an iterator and that's it.
     return space.iter(w_lis)
-dictiter_surrogate_new.unwrap_spec = [ObjSpace, W_Root]
 
 def seqiter_new(space, w_seq, w_index):
     return W_SeqIterObject(w_seq, space.int_w(w_index))
@@ -60,26 +55,25 @@
 def frame_new(space):
     new_frame = instantiate(space.FrameClass)   # XXX fish
     return space.wrap(new_frame)
-frame_new.unwrap_spec = [ObjSpace]
 
 def traceback_new(space):
     tb = instantiate(PyTraceback)
     return space.wrap(tb)
-traceback_new.unwrap_spec = [ObjSpace]
 
+ at unwrap_spec(runnint=int)
 def generator_new(space, w_frame, running):
     frame = space.interp_w(PyFrame, w_frame, can_be_None=True)
     new_generator = GeneratorIterator(frame)
     new_generator.running = running
     return space.wrap(new_generator)
-generator_new.unwrap_spec = [ObjSpace, W_Root, int]
 
+ at unwrap_spec(current=int, remaining=int, step=int)
 def xrangeiter_new(space, current, remaining, step):
     from pypy.module.__builtin__.functional import W_XRangeIterator
     new_iter = W_XRangeIterator(space, current, remaining, step)
     return space.wrap(new_iter)
-xrangeiter_new.unwrap_spec = [ObjSpace, int, int, int]
 
+ at unwrap_spec(identifier=str)
 def builtin_code(space, identifier):
     from pypy.interpreter import gateway
     try:
@@ -88,8 +82,8 @@
         raise OperationError(space.w_RuntimeError, 
                              space.wrap("cannot unpickle builtin code: "+
                                         identifier))
-builtin_code.unwrap_spec = [ObjSpace, str]
-        
+
+ at unwrap_spec(identifier=str)
 def builtin_function(space, identifier):
     from pypy.interpreter import function
     try:
@@ -98,18 +92,15 @@
         raise OperationError(space.w_RuntimeError, 
                              space.wrap("cannot unpickle builtin function: "+
                                         identifier))
-builtin_function.unwrap_spec = [ObjSpace, str]
 
 
 def enumerate_new(space, w_iter, w_index):
     from pypy.module.__builtin__.functional import _make_enumerate
     return _make_enumerate(space, w_iter, w_index)
-enumerate_new.unwrap_spec = [ObjSpace, W_Root, W_Root]
 
 def reversed_new(space, w_seq, w_remaining):
     from pypy.module.__builtin__.functional import _make_reversed
     return _make_reversed(space, w_seq, w_remaining)
-reversed_new.unwrap_spec = [ObjSpace, W_Root, W_Root]
 
 
 # ___________________________________________________________________


More information about the Pypy-commit mailing list