[pypy-svn] pypy improve-unwrap_spec: Simpler unwrap_spec in exception, fcntl

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


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: improve-unwrap_spec
Changeset: r42074:567dbdc42138
Date: 2011-02-16 16:55 +0100
http://bitbucket.org/pypy/pypy/changeset/567dbdc42138/

Log:	Simpler unwrap_spec in exception, fcntl

diff --git a/pypy/module/exceptions/interp_exceptions.py b/pypy/module/exceptions/interp_exceptions.py
--- a/pypy/module/exceptions/interp_exceptions.py
+++ b/pypy/module/exceptions/interp_exceptions.py
@@ -72,11 +72,11 @@
            +-- BytesWarning
 """
 
-from pypy.interpreter.baseobjspace import ObjSpace, Wrappable, W_Root
+from pypy.interpreter.baseobjspace import Wrappable
 from pypy.interpreter.typedef import TypeDef, interp_attrproperty_w,\
      GetSetProperty, interp_attrproperty, descr_get_dict, descr_set_dict,\
      descr_del_dict
-from pypy.interpreter.gateway import interp2app, Arguments
+from pypy.interpreter.gateway import interp2app
 from pypy.interpreter.error import OperationError
 from pypy.rlib import rwin32
 
@@ -106,7 +106,6 @@
             self.w_message = args_w[0]
         else:
             self.w_message = space.wrap("")
-    descr_init.unwrap_spec = ['self', ObjSpace, 'args_w']
 
     def descr_str(self, space):
         lgt = len(self.args_w)
@@ -116,7 +115,6 @@
             return space.str(self.args_w[0])
         else:
             return space.str(space.newtuple(self.args_w))
-    descr_str.unwrap_spec = ['self', ObjSpace]
 
     def descr_unicode(self, space):
         w_str = space.lookup(self, "__str__")
@@ -133,7 +131,6 @@
         else:
             w_tup = space.newtuple(self.args_w)
             return space.call_function(space.w_unicode, w_tup)
-    descr_unicode.unwrap_spec = ['self', ObjSpace]
 
     def descr_repr(self, space):
         if self.args_w:
@@ -142,7 +139,6 @@
             args_repr = "()"
         clsname = self.getclass(space).getname(space, '?')
         return space.wrap(clsname + args_repr)
-    descr_repr.unwrap_spec = ['self', ObjSpace]
 
     def descr_getargs(space, self):
         return space.newtuple(self.args_w)
@@ -152,7 +148,6 @@
 
     def descr_getitem(self, space, w_index):
         return space.getitem(space.newtuple(self.args_w), w_index)
-    descr_getitem.unwrap_spec = ['self', ObjSpace, W_Root]
 
     def getdict(self):
         if self.w_dict is None:
@@ -169,12 +164,10 @@
         if self.w_dict is not None and space.is_true(self.w_dict):
             lst = lst + [self.w_dict]
         return space.newtuple(lst)
-    descr_reduce.unwrap_spec = ['self', ObjSpace]
 
     def descr_setstate(self, space, w_dict):
         w_olddict = self.getdict()
         space.call_method(w_olddict, 'update', w_dict)
-    descr_setstate.unwrap_spec = ['self', ObjSpace, W_Root]
 
     def descr_message_get(space, self):
         w_dict = self.w_dict
@@ -209,7 +202,6 @@
         exc = space.allocate_instance(cls, w_subtype)
         basecls.__init__(exc, space)
         return space.wrap(exc)
-    descr_new_base_exception.unwrap_spec = [ObjSpace, W_Root, Arguments]
     descr_new_base_exception.func_name = 'descr_new_' + cls.__name__
     return interp2app(descr_new_base_exception)
 
@@ -305,8 +297,6 @@
         self.w_reason = w_reason
         W_BaseException.descr_init(self, space, [w_object, w_start,
                                                  w_end, w_reason])
-    descr_init.unwrap_spec = ['self', ObjSpace, W_Root, W_Root, W_Root,
-                              W_Root]
 
     def descr_str(self, space):
         return space.appexec([space.wrap(self)], r"""(self):
@@ -319,7 +309,6 @@
                 return "can't translate character u'\\U%08x' in position %d: %s"%(badchar, self.start, self.reason)
             return "can't translate characters in position %d-%d: %s" % (self.start, self.end - 1, self.reason)
         """)
-    descr_str.unwrap_spec = ['self', ObjSpace]
 
 W_UnicodeTranslateError.typedef = TypeDef(
     'UnicodeTranslateError',
@@ -345,7 +334,6 @@
         return space.repr(self.args_w[0])
     else:
         return space.str(space.newtuple(self.args_w))
-key_error_str.unwrap_spec = ['self', ObjSpace]
 
 W_KeyError = _new_exception('KeyError', W_LookupError,
                             """Mapping key not found.""",
@@ -378,7 +366,6 @@
         if len(args_w) == 3:
             self.w_filename = args_w[2]
             self.args_w = [args_w[0], args_w[1]]
-    descr_init.unwrap_spec = ['self', ObjSpace, 'args_w']
 
     # since we rebind args_w, we need special reduce, grump
     def descr_reduce(self, space):
@@ -390,7 +377,6 @@
         if self.w_dict is not None and space.is_true(self.w_dict):
             lst = lst + [self.w_dict]
         return space.newtuple(lst)
-    descr_reduce.unwrap_spec = ['self', ObjSpace]
 
     def descr_str(self, space):
         if (not space.is_w(self.w_errno, space.w_None) and
@@ -404,7 +390,6 @@
                               (space.str_w(space.str(self.w_errno)),
                                space.str_w(self.w_strerror)))
         return W_BaseException.descr_str(self, space)
-    descr_str.unwrap_spec = ['self', ObjSpace]
 
 W_EnvironmentError.typedef = TypeDef(
     'EnvironmentError',
@@ -442,7 +427,6 @@
             errno = self._winerror_to_errno.get(errno, self._default_errno)
         self.w_winerror = self.w_errno
         self.w_errno = space.wrap(errno)
-    descr_init.unwrap_spec = ['self', ObjSpace, 'args_w']
 
     def descr_str(self, space):
         if (not space.is_w(self.w_winerror, space.w_None) and
@@ -455,7 +439,6 @@
             return space.wrap("[Error %d] %s" % (space.int_w(self.w_winerror),
                                                  space.str_w(self.w_strerror)))
         return W_BaseException.descr_str(self, space)
-    descr_str.unwrap_spec = ['self', ObjSpace]
 
     if hasattr(rwin32, 'build_winerror_to_errno'):
         _winerror_to_errno, _default_errno = rwin32.build_winerror_to_errno()
@@ -524,7 +507,6 @@
                 args_w = args_w[:]
                 args_w[1] = space.newtuple(values_w[:4])
         W_BaseException.descr_init(self, space, args_w)
-    descr_init.unwrap_spec = ['self', ObjSpace, 'args_w']
 
     def descr_str(self, space):
         return space.appexec([self], """(self):
@@ -552,8 +534,6 @@
             return buffer
         """)
 
-    descr_str.unwrap_spec = ['self', ObjSpace]
-
     def descr_repr(self, space):
         if (len(self.args_w) == 2
             and not space.is_w(self.w_lastlineno, space.w_None)
@@ -568,7 +548,6 @@
             return space.wrap(clsname + args_repr)
         else:
             return W_StandardError.descr_repr(self, space)
-    descr_repr.unwrap_spec = ['self', ObjSpace]
 
 W_SyntaxError.typedef = TypeDef(
     'SyntaxError',
@@ -605,7 +584,6 @@
         elif len(args_w) > 1:
             self.w_code = space.newtuple(args_w)
         W_BaseException.descr_init(self, space, args_w)
-    descr_init.unwrap_spec = ['self', ObjSpace, 'args_w']
 
 W_SystemExit.typedef = TypeDef(
     'SystemExit',
@@ -661,8 +639,6 @@
         self.w_reason = w_reason
         W_BaseException.descr_init(self, space, [w_encoding, w_object,
                                                  w_start, w_end, w_reason])
-    descr_init.unwrap_spec = ['self', ObjSpace, W_Root, W_Root, W_Root, W_Root,
-                              W_Root]
 
     def descr_str(self, space):
         return space.appexec([self], """(self):
@@ -673,7 +649,6 @@
             return "'%s' codec can't decode bytes in position %d-%d: %s" % (
                 self.encoding, self.start, self.end - 1, self.reason)
         """)
-    descr_str.unwrap_spec = ['self', ObjSpace]
 
 W_UnicodeDecodeError.typedef = TypeDef(
     'UnicodeDecodeError',
@@ -753,8 +728,6 @@
         self.w_reason = w_reason
         W_BaseException.descr_init(self, space, [w_encoding, w_object,
                                                  w_start, w_end, w_reason])
-    descr_init.unwrap_spec = ['self', ObjSpace, W_Root, W_Root, W_Root, W_Root,
-                              W_Root]
 
     def descr_str(self, space):
         return space.appexec([self], r"""(self):
@@ -771,7 +744,6 @@
             return "'%s' codec can't encode characters in position %d-%d: %s" % (
                 self.encoding, self.start, self.end - 1, self.reason)
         """)
-    descr_str.unwrap_spec = ['self', ObjSpace]
 
 W_UnicodeEncodeError.typedef = TypeDef(
     'UnicodeEncodeError',

diff --git a/pypy/module/fcntl/interp_fcntl.py b/pypy/module/fcntl/interp_fcntl.py
--- a/pypy/module/fcntl/interp_fcntl.py
+++ b/pypy/module/fcntl/interp_fcntl.py
@@ -1,7 +1,7 @@
 from pypy.rpython.tool import rffi_platform as platform
 from pypy.rpython.lltypesystem import rffi, lltype
 from pypy.interpreter.error import OperationError, wrap_oserror
-from pypy.interpreter.baseobjspace import W_Root, ObjSpace
+from pypy.interpreter.gateway import unwrap_spec
 from pypy.rlib import rposix
 from pypy.translator.tool.cbuild import ExternalCompilationInfo
 import sys
@@ -100,6 +100,7 @@
     l.c_l_type = rffi.cast(rffi.SHORT, l_type)
     return l
 
+ at unwrap_spec(op=int)
 def fcntl(space, w_fd, op, w_arg=0):
     """fcntl(fd, op, [arg])
 
@@ -144,8 +145,8 @@
 
     raise OperationError(space.w_TypeError,
                          space.wrap("int or string or buffer required"))
-fcntl.unwrap_spec = [ObjSpace, W_Root, int, W_Root]
 
+ at unwrap_spec(op=int)
 def flock(space, w_fd, op):
     """flock(fd, operation)
 
@@ -168,8 +169,8 @@
         op = rffi.cast(rffi.INT, op)        # C long => C int
         fcntl_flock(fd, op, l)
         lltype.free(l, flavor='raw')
-flock.unwrap_spec = [ObjSpace, W_Root, int]
 
+ at unwrap_spec(op=int, length=int, start=int, whence=int)
 def lockf(space, w_fd, op, length=0, start=0, whence=0):
     """lockf (fd, operation, length=0, start=0, whence=0)
 
@@ -215,8 +216,8 @@
         fcntl_flock(fd, op, l)
     finally:
         lltype.free(l, flavor='raw')
-lockf.unwrap_spec = [ObjSpace, W_Root, int, int, int, int]
 
+ at unwrap_spec(op=int, mutate_flag=int)
 def ioctl(space, w_fd, op, w_arg=0, mutate_flag=-1):
     """ioctl(fd, opt[, arg[, mutate_flag]])
 
@@ -277,4 +278,3 @@
 
     raise OperationError(space.w_TypeError,
                          space.wrap("int or string or buffer required"))
-ioctl.unwrap_spec = [ObjSpace, W_Root, int, W_Root, int]


More information about the Pypy-commit mailing list