[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