[pypy-commit] pypy space-newtext: micronumpy

cfbolz pypy.commits at gmail.com
Wed Nov 9 07:37:56 EST 2016


Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: space-newtext
Changeset: r88259:613414c4df6c
Date: 2016-11-08 12:52 +0100
http://bitbucket.org/pypy/pypy/changeset/613414c4df6c/

Log:	micronumpy

diff --git a/pypy/module/micronumpy/arrayops.py b/pypy/module/micronumpy/arrayops.py
--- a/pypy/module/micronumpy/arrayops.py
+++ b/pypy/module/micronumpy/arrayops.py
@@ -105,13 +105,13 @@
         raise oefmt(space.w_ValueError, "need at least one array to concatenate")
     args_w = [convert_to_array(space, w_arg) for w_arg in args_w]
     if w_axis is None:
-        w_axis = space.wrap(0)
+        w_axis = space.newint(0)
     if space.is_none(w_axis):
         args_w = [w_arg.reshape(space,
                                 space.newlist([w_arg.descr_get_size(space)]),
                                 w_arg.get_order())
                   for w_arg in args_w]
-        w_axis = space.wrap(0)
+        w_axis = space.newint(0)
     dtype = args_w[0].get_dtype()
     shape = args_w[0].get_shape()[:]
     ndim = len(shape)
@@ -184,7 +184,7 @@
 
 
 def count_nonzero(space, w_obj):
-    return space.wrap(loop.count_all_true(convert_to_array(space, w_obj)))
+    return space.newint(loop.count_all_true(convert_to_array(space, w_obj)))
 
 
 def choose(space, w_arr, w_choices, w_out, w_mode):
diff --git a/pypy/module/micronumpy/base.py b/pypy/module/micronumpy/base.py
--- a/pypy/module/micronumpy/base.py
+++ b/pypy/module/micronumpy/base.py
@@ -136,7 +136,7 @@
         if w_val is not None:
             w_val = dtype.coerce(space, w_val)
         else:
-            w_val = dtype.coerce(space, space.wrap(0))
+            w_val = dtype.coerce(space, space.newint(0))
         return convert_to_array(space, w_val)
 
     @staticmethod
diff --git a/pypy/module/micronumpy/boxes.py b/pypy/module/micronumpy/boxes.py
--- a/pypy/module/micronumpy/boxes.py
+++ b/pypy/module/micronumpy/boxes.py
@@ -196,11 +196,11 @@
 
     def descr_str(self, space):
         tp = self.get_dtype(space).itemtype
-        return space.wrap(tp.str_format(self, add_quotes=False))
+        return space.newtext(tp.str_format(self, add_quotes=False))
 
     def descr_repr(self, space):
         tp = self.get_dtype(space).itemtype
-        return space.wrap(tp.str_format(self, add_quotes=True))
+        return space.newtext(tp.str_format(self, add_quotes=True))
 
     def descr_format(self, space, w_spec):
         return space.format(self.item(space), w_spec)
@@ -209,7 +209,7 @@
         return space.hash(self.item(space))
 
     def descr___array_priority__(self, space):
-        return space.wrap(0.0)
+        return space.newfloat(0.0)
 
     def descr_index(self, space):
         return space.index(self.item(space))
@@ -242,7 +242,7 @@
         return space.hex(self.descr_int(space))
 
     def descr_nonzero(self, space):
-        return space.wrap(self.get_dtype(space).itemtype.bool(self))
+        return space.newbool(self.get_dtype(space).itemtype.bool(self))
 
     # TODO: support all kwargs in ufuncs like numpy ufunc_object.c
     sig = None
@@ -385,16 +385,16 @@
         return self.get_dtype(space)
 
     def descr_get_size(self, space):
-        return space.wrap(1)
+        return space.newint(1)
 
     def descr_get_itemsize(self, space):
-        return space.wrap(self.get_dtype(space).elsize)
+        return space.newint(self.get_dtype(space).elsize)
 
     def descr_get_shape(self, space):
         return space.newtuple([])
 
     def descr_get_ndim(self, space):
-        return space.wrap(0)
+        return space.newint(0)
 
     def descr_copy(self, space):
         return self.convert_to(space, self.get_dtype(space))
@@ -412,18 +412,18 @@
         return self.get_dtype(space).itemtype.byteswap(self)
 
     def descr_tostring(self, space, __args__):
-        w_meth = space.getattr(self.descr_ravel(space), space.wrap('tostring'))
+        w_meth = space.getattr(self.descr_ravel(space), space.newtext('tostring'))
         return space.call_args(w_meth, __args__)
 
     def descr_reshape(self, space, __args__):
-        w_meth = space.getattr(self.descr_ravel(space), space.wrap('reshape'))
+        w_meth = space.getattr(self.descr_ravel(space), space.newtext('reshape'))
         w_res = space.call_args(w_meth, __args__)
         if isinstance(w_res, W_NDimArray) and len(w_res.get_shape()) == 0:
             return w_res.get_scalar_value()
         return w_res
 
     def descr_nd_nonzero(self, space, __args__):
-        w_meth = space.getattr(self.descr_ravel(space), space.wrap('nonzero'))
+        w_meth = space.getattr(self.descr_ravel(space), space.newtext('nonzero'))
         return space.call_args(w_meth, __args__)
 
     def descr_get_real(self, space):
@@ -579,7 +579,7 @@
             read_val = dtype.read(self.arr, self.ofs, ofs)
         if isinstance (read_val, W_StringBox):
             # StringType returns a str
-            return space.wrap(dtype.itemtype.to_str(read_val))
+            return space.newbytes(dtype.itemtype.to_str(read_val))
         return read_val
 
     def descr_iter(self, space):
@@ -635,7 +635,7 @@
         if dtype.is_unicode():
             return self
         elif dtype.is_object():
-            return W_ObjectBox(space.wrap(self._value))
+            return W_ObjectBox(space.newunicode(self._value))
         else:
             raise oefmt(space.w_NotImplementedError,
                         "Conversion from unicode not implemented yet")
diff --git a/pypy/module/micronumpy/broadcast.py b/pypy/module/micronumpy/broadcast.py
--- a/pypy/module/micronumpy/broadcast.py
+++ b/pypy/module/micronumpy/broadcast.py
@@ -67,19 +67,19 @@
                             self.op_flags[i], self)
 
     def descr_iter(self, space):
-        return space.wrap(self)
+        return self
 
     def descr_get_shape(self, space):
-        return space.newtuple([space.wrap(i) for i in self.shape])
+        return space.newtuple([space.newint(i) for i in self.shape])
 
     def descr_get_size(self, space):
-        return space.wrap(self.size)
+        return space.newint(self.size)
 
     def descr_get_index(self, space):
-        return space.wrap(self.index)
+        return space.newint(self.index)
 
     def descr_get_numiter(self, space):
-        return space.wrap(len(self.iters))
+        return space.newint(len(self.iters))
 
     @jit.unroll_safe
     def descr_next(self, space):
diff --git a/pypy/module/micronumpy/casting.py b/pypy/module/micronumpy/casting.py
--- a/pypy/module/micronumpy/casting.py
+++ b/pypy/module/micronumpy/casting.py
@@ -127,18 +127,18 @@
         raise oefmt(space.w_TypeError,
             "did not understand one of the types; 'None' not accepted")
     if isinstance(w_from, W_NDimArray):
-        return space.wrap(can_cast_array(space, w_from, target, casting))
+        return space.newbool(can_cast_array(space, w_from, target, casting))
     elif is_scalar_w(space, w_from):
         w_scalar = as_scalar(space, w_from)
         w_arr = W_NDimArray.from_scalar(space, w_scalar)
-        return space.wrap(can_cast_array(space, w_arr, target, casting))
+        return space.newbool(can_cast_array(space, w_arr, target, casting))
 
     try:
         origin = as_dtype(space, w_from, allow_None=False)
     except TypeError:
         raise oefmt(space.w_TypeError,
             "did not understand one of the types; 'None' not accepted")
-    return space.wrap(can_cast_type(space, origin, target, casting))
+    return space.newbool(can_cast_type(space, origin, target, casting))
 
 kind_ordering = {
     Bool.kind: 0, ULong.kind: 1, Long.kind: 2,
@@ -328,7 +328,7 @@
             space.int_w(w_obj)
         except OperationError as e:
             if e.match(space, space.w_OverflowError):
-                if space.is_true(space.le(w_obj, space.wrap(0))):
+                if space.is_true(space.le(w_obj, space.newint(0))):
                     return int64_dtype
                 return uint64_dtype
             raise
diff --git a/pypy/module/micronumpy/compile.py b/pypy/module/micronumpy/compile.py
--- a/pypy/module/micronumpy/compile.py
+++ b/pypy/module/micronumpy/compile.py
@@ -190,6 +190,10 @@
             return StringObject(obj)
         raise NotImplementedError
 
+    def newtext(self, obj):
+        return StringObject(obj)
+    newbytes = newtext
+
     def newlist(self, items):
         return ListObject(items)
 
@@ -197,7 +201,7 @@
         return ComplexObject(r, i)
 
     def newfloat(self, f):
-        return self.float(f)
+        return FloatObject(f)
 
     def newslice(self, start, stop, step):
         return SliceObject(self.int_w(start), self.int_w(stop),
@@ -293,6 +297,7 @@
         if isinstance(w_obj, StringObject):
             return w_obj.v
         raise NotImplementedError
+    text_w = str_w
 
     def unicode_w(self, w_obj):
         # XXX
diff --git a/pypy/module/micronumpy/concrete.py b/pypy/module/micronumpy/concrete.py
--- a/pypy/module/micronumpy/concrete.py
+++ b/pypy/module/micronumpy/concrete.py
@@ -233,7 +233,7 @@
         elif shape_len > 1:
             raise IndexError
         idx = support.index_w(space, w_idx)
-        return self._lookup_by_index(space, [space.wrap(idx)])
+        return self._lookup_by_index(space, [space.newint(idx)])
 
     @jit.unroll_safe
     def _prepare_slice_args(self, space, w_idx):
@@ -366,7 +366,7 @@
         w_res = W_NDimArray.from_shape(space, [s, nd], index_type)
         loop.nonzero(w_res, self, box)
         w_res = w_res.implementation.swapaxes(space, w_res, 0, 1)
-        l_w = [w_res.descr_getitem(space, space.wrap(d)) for d in range(nd)]
+        l_w = [w_res.descr_getitem(space, space.newint(d)) for d in range(nd)]
         return space.newtuple(l_w)
 
     ##def get_storage(self):
diff --git a/pypy/module/micronumpy/ctors.py b/pypy/module/micronumpy/ctors.py
--- a/pypy/module/micronumpy/ctors.py
+++ b/pypy/module/micronumpy/ctors.py
@@ -45,10 +45,10 @@
 
 def try_interface_method(space, w_object, copy):
     try:
-        w_interface = space.getattr(w_object, space.wrap("__array_interface__"))
+        w_interface = space.getattr(w_object, space.newtext("__array_interface__"))
         if w_interface is None:
             return None, False
-        version_w = space.finditem(w_interface, space.wrap("version"))
+        version_w = space.finditem(w_interface, space.newtext("version"))
         if version_w is None:
             raise oefmt(space.w_ValueError, "__array_interface__ found without"
                         " 'version' key")
@@ -60,11 +60,11 @@
             raise oefmt(space.w_ValueError,
                     "__array_interface__ version %d not supported", version)
         # make a view into the data
-        w_shape = space.finditem(w_interface, space.wrap('shape'))
-        w_dtype = space.finditem(w_interface, space.wrap('typestr'))
-        w_descr = space.finditem(w_interface, space.wrap('descr'))
-        w_data = space.finditem(w_interface, space.wrap('data'))
-        w_strides = space.finditem(w_interface, space.wrap('strides'))
+        w_shape = space.finditem(w_interface, space.newtext('shape'))
+        w_dtype = space.finditem(w_interface, space.newtext('typestr'))
+        w_descr = space.finditem(w_interface, space.newtext('descr'))
+        w_data = space.finditem(w_interface, space.newtext('data'))
+        w_strides = space.finditem(w_interface, space.newtext('strides'))
         if w_shape is None or w_dtype is None:
             raise oefmt(space.w_ValueError,
                     "__array_interface__ missing one or more required keys: shape, typestr"
@@ -96,7 +96,7 @@
                                 start=offset), read_only
         if w_data is None:
             w_data = w_object
-        w_offset = space.finditem(w_interface, space.wrap('offset'))
+        w_offset = space.finditem(w_interface, space.newtext('offset'))
         if w_offset is None:
             offset = 0
         else:
@@ -115,11 +115,11 @@
         raise
 
 def _descriptor_from_pep3118_format(space, c_format):
-    descr = descriptor.decode_w_dtype(space, space.wrap(c_format))
+    descr = descriptor.decode_w_dtype(space, space.newtext(c_format))
     if descr:
         return descr
     msg = "invalid PEP 3118 format string: '%s'" % c_format
-    space.warn(space.wrap(msg), space.w_RuntimeWarning)
+    space.warn(space.newtext(msg), space.w_RuntimeWarning)
     return None 
 
 def _array_from_buffer_3118(space, w_object, dtype):
@@ -142,7 +142,7 @@
         if descr.elsize != space.int_w(space.getattr(w_buf, space.newbytes('itemsize'))): 
             msg = ("Item size computed from the PEP 3118 buffer format "
                   "string does not match the actual item size.")
-            space.warn(space.wrap(msg), space.w_RuntimeWarning)
+            space.warn(space.newtext(msg), space.w_RuntimeWarning)
             return w_object
         dtype = descr 
     elif not dtype:
@@ -170,7 +170,7 @@
         elif nd > 1:
             msg = ("ndim computed from the PEP 3118 buffer format "
                    "is greater than 1, but shape is NULL.")
-            space.warn(space.wrap(msg), space.w_RuntimeWarning)
+            space.warn(space.newtext(msg), space.w_RuntimeWarning)
             return w_object
     try:
         w_data = rffi.cast(RAW_STORAGE_PTR, space.int_w(space.call_method(w_buf, '_pypy_raw_address')))
@@ -238,7 +238,7 @@
             must_copy |= (npy_order == NPY.CORDER and not flags & NPY.ARRAY_C_CONTIGUOUS)
             must_copy |= (npy_order == NPY.FORTRANORDER and not flags & NPY.ARRAY_F_CONTIGUOUS)
             if must_copy:
-                return w_object.descr_copy(space, space.wrap(npy_order))
+                return w_object.descr_copy(space, space.newint(npy_order))
             else:
                 return w_object
         if subok and not type(w_object) is W_NDimArray:
@@ -338,9 +338,9 @@
     from pypy.objspace.std.bufferobject import W_Buffer
     shape = [space.len_w(w_iterable)]
     if space.isinstance_w(w_iterable, space.w_buffer):
-        batch = [space.wrap(0)] * shape[0]
+        batch = [space.newint(0)] * shape[0]
         for i in range(shape[0]):
-            batch[i] = space.ord(space.getitem(w_iterable, space.wrap(i)))
+            batch[i] = space.ord(space.getitem(w_iterable, space.newint(i)))
     else:
         batch = space.listview(w_iterable)
     while True:
@@ -498,7 +498,7 @@
         ai.setitem(state, val)
         state = ai.next(state)
 
-    return space.wrap(a)
+    return a
 
 
 def _fromstring_bin(space, s, count, length, dtype):
@@ -516,7 +516,7 @@
 
     a = W_NDimArray.from_shape(space, [count], dtype=dtype)
     loop.fromstring_loop(space, a, dtype, itemsize, s)
-    return space.wrap(a)
+    return a
 
 
 @unwrap_spec(s=str, count=int, sep=str, w_dtype=WrappedDefault(None))
diff --git a/pypy/module/micronumpy/descriptor.py b/pypy/module/micronumpy/descriptor.py
--- a/pypy/module/micronumpy/descriptor.py
+++ b/pypy/module/micronumpy/descriptor.py
@@ -222,8 +222,8 @@
         else:
             name = self.get_name()
         if self.is_flexible() and self.elsize != 0:
-            return space.wrap(name + str(self.elsize * 8))
-        return space.wrap(name)
+            return space.newtext(name + str(self.elsize * 8))
+        return space.newtext(name)
 
     def descr_get_str(self, space, ignore='|', simple=True):
         if not simple and self.fields and len(self.fields) > 0:
@@ -233,10 +233,10 @@
             total += s
         if not simple and total > 0:
             return space.newtuple(
-                [space.wrap(self.subdtype.get_str(ignore='')), 
-                 space.newtuple([space.wrap(s) for s in self.shape]),
+                [space.newtext(self.subdtype.get_str(ignore='')), 
+                 space.newtuple([space.newint(s) for s in self.shape]),
                 ])
-        return space.wrap(self.get_str(ignore=ignore))
+        return space.newtext(self.get_str(ignore=ignore))
 
     def get_str(self, ignore='|'):
         basic = self.kind
@@ -257,7 +257,7 @@
         if style == 'descr':
             simple = True
         if not self.is_record():
-            return space.newlist([space.newtuple([space.wrap(""),
+            return space.newlist([space.newtuple([space.newtext(""),
                                                   self.descr_get_str(space, simple=simple)])])
         elif (self.alignment > 1 and not style.startswith('descr')) or force_dict:
             # we need to force a sorting order for the keys,
@@ -324,7 +324,7 @@
                 s_as_list += titles + [', ']
                     
             s_as_list += ["'itemsize':", str(self.elsize), suffix]
-            return space.wrap(''.join(s_as_list))
+            return space.newtext(''.join(s_as_list))
         else:
             descr = []
             total = 0
@@ -337,10 +337,10 @@
                 total += subdtype.elsize
                 ignore = '|'
                 if title:
-                    subdescr = [space.newtuple([space.wrap(title), space.wrap(name)])]
+                    subdescr = [space.newtuple([space.newtext(title), space.newtext(name)])]
                     ignore = ''
                 else:
-                    subdescr = [space.wrap(name)]
+                    subdescr = [space.newtext(name)]
                 if subdtype.is_record():
                     subdescr.append(subdtype.descr_get_descr(space, style))
                 elif subdtype.subdtype is not None:
@@ -351,19 +351,19 @@
                     subdescr.append(subdtype.descr_get_shape(space))
                 descr.append(space.newtuple(subdescr[:]))
             if self.alignment >= 0 and not style.endswith('subdtype'):
-                return space.wrap(space.str_w(space.repr(space.newlist(descr))) + ', align=True')                 
+                return space.newtext(space.str_w(space.repr(space.newlist(descr))) + ', align=True')                 
             return space.newlist(descr)
 
     def descr_get_hasobject(self, space):
-        return space.wrap(self.is_object())
+        return space.newbool(self.is_object())
 
     def descr_get_isbuiltin(self, space):
         if self.fields is None:
-            return space.wrap(1)
-        return space.wrap(0)
+            return space.newint(1)
+        return space.newint(0)
 
     def descr_get_isnative(self, space):
-        return space.wrap(self.is_native())
+        return space.newbool(self.is_native())
 
     def descr_get_base(self, space):
         return space.wrap(self.base)
@@ -375,10 +375,10 @@
                                self.descr_get_shape(space)])
 
     def descr_get_shape(self, space):
-        return space.newtuple([space.wrap(dim) for dim in self.shape])
+        return space.newtuple([space.newint(dim) for dim in self.shape])
 
     def descr_get_flags(self, space):
-        return space.wrap(self.flags)
+        return space.newint(self.flags)
 
     def descr_get_fields(self, space):
         if not self.fields:
@@ -387,18 +387,18 @@
         for name, title in self.names:
             offset, subdtype = self.fields[name]
             if title is not None:
-                w_nt = space.newtuple([space.wrap(name), space.wrap(title)]) 
+                w_nt = space.newtuple([space.newtext(name), space.newtext(title)]) 
                 space.setitem(w_fields, w_nt,
-                          space.newtuple([subdtype, space.wrap(offset)]))
+                          space.newtuple([subdtype, space.newint(offset)]))
             else:
-                space.setitem(w_fields, space.wrap(name),
-                          space.newtuple([subdtype, space.wrap(offset)]))
+                space.setitem(w_fields, space.newtext(name),
+                          space.newtuple([subdtype, space.newint(offset)]))
         return w_fields
 
     def descr_get_names(self, space):
         if not self.fields:
             return space.w_None
-        return space.newtuple([space.wrap(name[0]) for name in self.names])
+        return space.newtuple([space.newtext(name[0]) for name in self.names])
 
     def descr_set_names(self, space, w_names):
         if not self.fields:
@@ -462,30 +462,30 @@
         return False
 
     def descr_eq(self, space, w_other):
-        return space.wrap(self.eq(space, w_other))
+        return space.newbool(self.eq(space, w_other))
 
     def descr_ne(self, space, w_other):
-        return space.wrap(not self.eq(space, w_other))
+        return space.newbool(not self.eq(space, w_other))
 
     def descr_le(self, space, w_other):
         from .casting import can_cast_to
         w_other = as_dtype(space, w_other)
-        return space.wrap(can_cast_to(self, w_other))
+        return space.newbool(can_cast_to(self, w_other))
 
     def descr_ge(self, space, w_other):
         from .casting import can_cast_to
         w_other = as_dtype(space, w_other)
-        return space.wrap(can_cast_to(w_other, self))
+        return space.newbool(can_cast_to(w_other, self))
 
     def descr_lt(self, space, w_other):
         from .casting import can_cast_to
         w_other = as_dtype(space, w_other)
-        return space.wrap(can_cast_to(self, w_other) and not self.eq(space, w_other))
+        return space.newbool(can_cast_to(self, w_other) and not self.eq(space, w_other))
 
     def descr_gt(self, space, w_other):
         from .casting import can_cast_to
         w_other = as_dtype(space, w_other)
-        return space.wrap(can_cast_to(w_other, self) and not self.eq(space, w_other))
+        return space.newbool(can_cast_to(w_other, self) and not self.eq(space, w_other))
 
     def _compute_hash(self, space, x):
         from rpython.rlib.rarithmetic import intmask
@@ -518,7 +518,7 @@
         return x
 
     def descr_hash(self, space):
-        return space.wrap(self._compute_hash(space, 0x345678))
+        return space.newint(self._compute_hash(space, 0x345678))
 
     def descr_str(self, space):
         if self.fields:
@@ -540,12 +540,12 @@
 
     def descr_repr(self, space):
         if isinstance(self.itemtype, types.CharType):
-            return space.wrap("dtype('S1')")
+            return space.newtext("dtype('S1')")
         if self.fields:
             r = self.descr_get_descr(space, style='repr')
             name = space.str_w(space.str(self.w_box_type))
             if name != "<type 'numpy.void'>":
-                r = space.newtuple([space.wrap(self.w_box_type), r])
+                r = space.newtuple([self.w_box_type, r])
         elif self.subdtype is not None:
             r = space.newtuple([self.subdtype.descr_get_str(space),
                                 self.descr_get_shape(space)])
@@ -558,12 +558,12 @@
                 size = self.elsize
                 if self.num == NPY.UNICODE:
                     size >>= 2
-                r = space.wrap("'" + byteorder + self.char + str(size) + "'")
+                r = space.newtext("'" + byteorder + self.char + str(size) + "'")
             else:
                 r = self.descr_get_name(space, quote=True)
         if space.isinstance_w(r, space.w_str):
-            return space.wrap("dtype(%s)" % space.str_w(r))
-        return space.wrap("dtype(%s)" % space.str_w(space.repr(r)))
+            return space.newtext("dtype(%s)" % space.str_w(r))
+        return space.newtext("dtype(%s)" % space.str_w(space.repr(r)))
 
     def descr_getitem(self, space, w_item):
         if not self.fields:
@@ -589,8 +589,8 @@
 
     def descr_len(self, space):
         if not self.fields:
-            return space.wrap(0)
-        return space.wrap(len(self.fields))
+            return space.newint(0)
+        return space.newint(len(self.fields))
 
     def runpack_str(self, space, s):
         if self.is_str_or_unicode():
@@ -609,10 +609,10 @@
     def descr_reduce(self, space):
         w_class = space.type(self)
         builder_args = space.newtuple([
-            space.wrap("%s%d" % (self.kind, self.elsize)),
-            space.wrap(0), space.wrap(1)])
+            space.newbytes("%s%d" % (self.kind, self.elsize)),
+            space.newint(0), space.newint(1)])
 
-        version = space.wrap(3)
+        version = space.newint(3)
         endian = self.byteorder
         if endian == NPY.NATIVE:
             endian = NPY.NATBYTE
@@ -620,17 +620,17 @@
         names = self.descr_get_names(space)
         values = self.descr_get_fields(space)
         if self.is_flexible():
-            w_size = space.wrap(self.elsize)
+            w_size = space.newint(self.elsize)
             if self.alignment > 2:
-                w_alignment = space.wrap(self.alignment)
+                w_alignment = space.newint(self.alignment)
             else:
-                w_alignment = space.wrap(1)
+                w_alignment = space.newint(1)
         else:
-            w_size = space.wrap(-1)
-            w_alignment = space.wrap(-1)
-        w_flags = space.wrap(self.flags)
+            w_size = space.newint(-1)
+            w_alignment = space.newint(-1)
+        w_flags = space.newint(self.flags)
 
-        data = space.newtuple([version, space.wrap(endian), subdescr,
+        data = space.newtuple([version, space.newbytes(endian), subdescr,
                                names, values, w_size, w_alignment, w_flags])
         return space.newtuple([w_class, builder_args, data])
 
@@ -639,24 +639,24 @@
             # if builtin dtype (but not w_voiddtype)
             return space.w_None
 
-        version = space.int_w(space.getitem(w_data, space.wrap(0)))
+        version = space.int_w(space.getitem(w_data, space.newint(0)))
         if version != 3:
             raise oefmt(space.w_ValueError,
                         "can't handle version %d of numpy.dtype pickle",
                         version)
 
-        endian = byteorder_w(space, space.getitem(w_data, space.wrap(1)))
+        endian = byteorder_w(space, space.getitem(w_data, space.newint(1)))
         if endian == NPY.NATBYTE:
             endian = NPY.NATIVE
 
-        w_subarray = space.getitem(w_data, space.wrap(2))
-        w_names = space.getitem(w_data, space.wrap(3))
-        w_fields = space.getitem(w_data, space.wrap(4))
-        size = space.int_w(space.getitem(w_data, space.wrap(5)))
-        alignment = space.int_w(space.getitem(w_data, space.wrap(6)))
+        w_subarray = space.getitem(w_data, space.newint(2))
+        w_names = space.getitem(w_data, space.newint(3))
+        w_fields = space.getitem(w_data, space.newint(4))
+        size = space.int_w(space.getitem(w_data, space.newint(5)))
+        alignment = space.int_w(space.getitem(w_data, space.newint(6)))
         if alignment < 2:
             alignment = -1
-        flags = space.int_w(space.getitem(w_data, space.wrap(7)))
+        flags = space.int_w(space.getitem(w_data, space.newint(7)))
 
         if (w_names == space.w_None) != (w_fields == space.w_None):
             raise oefmt(space.w_ValueError, "inconsistent fields and names in Numpy dtype unpickling")
@@ -685,11 +685,11 @@
             self.fields = {}
             for w_name in space.fixedview(w_names):
                 # XXX what happens if there is a title in the pickled dtype?
-                name = space.str_w(w_name)
+                name = space.bytes_w(w_name)
                 value = space.getitem(w_fields, w_name)
 
-                dtype = space.getitem(value, space.wrap(0))
-                offset = space.int_w(space.getitem(value, space.wrap(1)))
+                dtype = space.getitem(value, space.newint(0))
+                offset = space.int_w(space.getitem(value, space.newint(1)))
                 self.names.append((name, None))
                 assert isinstance(dtype, W_Dtype)
                 self.fields[name] = offset, dtype
@@ -829,7 +829,7 @@
     return retval
 
 def _get_val_or_none(space, w_dict, key):
-    w_key = space.wrap(key)
+    w_key = space.newtext(key)
     try:
         w_val = space.getitem(w_dict, w_key)
     except OperationError as e:
@@ -890,7 +890,7 @@
         try:
             return get_appbridge_cache(space).call_method(space,
                 'numpy.core._internal', '_usefields', Arguments(space, 
-                                [w_dict, space.wrap(alignment >= 0)]))
+                                [w_dict, space.newbool(alignment >= 0)]))
         except OperationError as e:
             if e.match(space, space.w_ImportError):
                 return _usefields(space, w_dict, alignment >= 0)
@@ -950,7 +950,7 @@
                     "_commastring is not returning a list with len >= 1")
     if space.len_w(w_lst) == 1:
         return descr__new__(space, space.gettypefor(W_Dtype),
-                            space.getitem(w_lst, space.wrap(0)), align=alignment>0)
+                            space.getitem(w_lst, space.newint(0)), align=alignment>0)
     else:
         try:
             return dtype_from_list(space, w_lst, True, alignment)
@@ -1088,15 +1088,15 @@
         return _set_metadata_and_copy( space, w_metadata,
                         dtype_from_list(space, w_dtype, False, alignment), copy)
     elif space.isinstance_w(w_dtype, space.w_tuple):
-        w_dtype0 = space.getitem(w_dtype, space.wrap(0))
-        w_dtype1 = space.getitem(w_dtype, space.wrap(1))
+        w_dtype0 = space.getitem(w_dtype, space.newint(0))
+        w_dtype1 = space.getitem(w_dtype, space.newint(1))
         # create a new dtype object
         l_side = make_new_dtype(space, w_subtype, w_dtype0, alignment, copy)
         assert isinstance(l_side, W_Dtype)
         if l_side.elsize == 0 and space.isinstance_w(w_dtype1, space.w_int):
             #(flexible_dtype, itemsize)
             name = "%s%d" % (l_side.kind, space.int_w(w_dtype1))
-            retval = make_new_dtype(space, w_subtype, space.wrap(name), alignment, copy)
+            retval = make_new_dtype(space, w_subtype, space.newtext(name), alignment, copy)
             return _set_metadata_and_copy(space, w_metadata, retval, copy)
         elif (space.isinstance_w(w_dtype1, space.w_int) or
                 space.isinstance_w(w_dtype1, space.w_tuple) or 
@@ -1467,15 +1467,15 @@
                        space.wrap(dtype.itemtype.get_element_size())]
             if dtype.is_int():
                 if dtype.is_bool():
-                    w_maxobj = space.wrap(1)
-                    w_minobj = space.wrap(0)
+                    w_maxobj = space.newint(1)
+                    w_minobj = space.newint(0)
                 elif dtype.is_signed():
-                    w_maxobj = space.wrap(r_longlong((1 << (itembits - 1))
-                                          - 1))
-                    w_minobj = space.wrap(r_longlong(-1) << (itembits - 1))
+                    w_maxobj = space.newint(r_longlong((1 << (itembits - 1))
+                                            - 1))
+                    w_minobj = space.newint(r_longlong(-1) << (itembits - 1))
                 else:
-                    w_maxobj = space.wrap(r_ulonglong(1 << itembits) - 1)
-                    w_minobj = space.wrap(0)
+                    w_maxobj = space.newint(r_ulonglong(1 << itembits) - 1)
+                    w_minobj = space.newint(0)
                 items_w = items_w + [w_maxobj, w_minobj]
             items_w = items_w + [dtype.w_box_type]
             space.setitem(w_typeinfo, space.wrap(k), space.newtuple(items_w))
diff --git a/pypy/module/micronumpy/flagsobj.py b/pypy/module/micronumpy/flagsobj.py
--- a/pypy/module/micronumpy/flagsobj.py
+++ b/pypy/module/micronumpy/flagsobj.py
@@ -33,32 +33,32 @@
         return self
 
     def descr_c_contiguous(self, space):
-        return space.wrap(bool(self.flags & NPY.ARRAY_C_CONTIGUOUS))
+        return space.newbool(bool(self.flags & NPY.ARRAY_C_CONTIGUOUS))
 
     def descr_f_contiguous(self, space):
-        return space.wrap(bool(self.flags & NPY.ARRAY_F_CONTIGUOUS))
+        return space.newbool(bool(self.flags & NPY.ARRAY_F_CONTIGUOUS))
 
     def descr_get_writeable(self, space):
-        return space.wrap(bool(self.flags & NPY.ARRAY_WRITEABLE))
+        return space.newbool(bool(self.flags & NPY.ARRAY_WRITEABLE))
 
     def descr_get_owndata(self, space):
-        return space.wrap(bool(self.flags & NPY.ARRAY_OWNDATA))
+        return space.newbool(bool(self.flags & NPY.ARRAY_OWNDATA))
 
     def descr_get_aligned(self, space):
-        return space.wrap(bool(self.flags & NPY.ARRAY_ALIGNED))
+        return space.newbool(bool(self.flags & NPY.ARRAY_ALIGNED))
 
     def descr_get_fnc(self, space):
-        return space.wrap(bool(
+        return space.newbool(bool(
             self.flags & NPY.ARRAY_F_CONTIGUOUS and not
             self.flags & NPY.ARRAY_C_CONTIGUOUS ))
 
     def descr_get_forc(self, space):
-        return space.wrap(bool(
+        return space.newbool(bool(
             self.flags & NPY.ARRAY_F_CONTIGUOUS or
             self.flags & NPY.ARRAY_C_CONTIGUOUS ))
 
     def descr_get_num(self, space):
-        return space.wrap(self.flags)
+        return space.newint(self.flags)
 
     def descr_getitem(self, space, w_item):
         key = space.str_w(w_item)
@@ -83,10 +83,10 @@
         return self.flags == w_other.flags
 
     def descr_eq(self, space, w_other):
-        return space.wrap(self.eq(space, w_other))
+        return space.newbool(self.eq(space, w_other))
 
     def descr_ne(self, space, w_other):
-        return space.wrap(not self.eq(space, w_other))
+        return space.newbool(not self.eq(space, w_other))
 
     def descr___str__(self, space):
         s = StringBuilder()
@@ -102,7 +102,7 @@
         s.append(get_tf_str(self.flags, NPY.ARRAY_ALIGNED))
         s.append('\n  UPDATEIFCOPY : ')
         s.append(get_tf_str(self.flags, NPY.ARRAY_UPDATEIFCOPY))
-        return space.wrap(s.build())
+        return space.newtext(s.build())
 
 W_FlagsObject.typedef = TypeDef("numpy.flagsobj",
     __new__ = interp2app(W_FlagsObject.descr__new__.im_func),
diff --git a/pypy/module/micronumpy/flatiter.py b/pypy/module/micronumpy/flatiter.py
--- a/pypy/module/micronumpy/flatiter.py
+++ b/pypy/module/micronumpy/flatiter.py
@@ -53,7 +53,7 @@
         return self
 
     def descr_len(self, space):
-        return space.wrap(self.iter.size)
+        return space.newint(self.iter.size)
 
     def descr_next(self, space):
         if self.iter.done(self.state):
diff --git a/pypy/module/micronumpy/iterators.py b/pypy/module/micronumpy/iterators.py
--- a/pypy/module/micronumpy/iterators.py
+++ b/pypy/module/micronumpy/iterators.py
@@ -71,7 +71,7 @@
 
     @jit.unroll_safe
     def get_index(self, space, shapelen):
-        return [space.wrap(self.indexes[i]) for i in range(shapelen)]
+        return [space.newint(self.indexes[i]) for i in range(shapelen)]
 
 
 class IterState(object):
diff --git a/pypy/module/micronumpy/ndarray.py b/pypy/module/micronumpy/ndarray.py
--- a/pypy/module/micronumpy/ndarray.py
+++ b/pypy/module/micronumpy/ndarray.py
@@ -54,7 +54,7 @@
     @jit.unroll_safe
     def descr_get_shape(self, space):
         shape = self.get_shape()
-        return space.newtuple([space.wrap(i) for i in shape])
+        return space.newtuple([space.newint(i) for i in shape])
 
     def descr_set_shape(self, space, w_new_shape):
         shape = get_shape_from_iterable(space, self.get_size(), w_new_shape)
@@ -67,7 +67,7 @@
 
     def descr_get_strides(self, space):
         strides = self.implementation.get_strides()
-        return space.newtuple([space.wrap(i) for i in strides])
+        return space.newtuple([space.newint(i) for i in strides])
 
     def descr_get_dtype(self, space):
         return self.implementation.dtype
@@ -85,13 +85,13 @@
         raise oefmt(space.w_AttributeError, "Cannot delete array dtype")
 
     def descr_get_ndim(self, space):
-        return space.wrap(self.ndims())
+        return space.newint(self.ndims())
 
     def descr_get_itemsize(self, space):
-        return space.wrap(self.get_dtype().elsize)
+        return space.newint(self.get_dtype().elsize)
 
     def descr_get_nbytes(self, space):
-        return space.wrap(self.get_size() * self.get_dtype().elsize)
+        return space.newint(self.get_size() * self.get_dtype().elsize)
 
     def descr_fill(self, space, w_value):
         self.fill(space, self.get_dtype().coerce(space, w_value))
@@ -105,7 +105,7 @@
         arr = self
         if order != arr.get_order():
             arr = W_NDimArray(self.implementation.transpose(self, None))
-        return space.wrap(loop.tostring(space, arr))
+        return space.newtext(loop.tostring(space, arr))
 
     def getitem_filter(self, space, arr, axis=0):
         shape = self.get_shape()
@@ -122,7 +122,7 @@
                       " boolean dimension is %d" % (axis, shape[axis],
                       arr.get_shape()[0]))
                 #warning = space.gettypefor(support.W_VisibleDeprecationWarning)
-                space.warn(space.wrap(msg), space.w_VisibleDeprecationWarning)
+                space.warn(space.newtext(msg), space.w_VisibleDeprecationWarning)
             res_shape = shape[:axis] + [size] + shape[axis+1:]
         else:
             res_shape = [size]
@@ -207,7 +207,7 @@
                 copy = True
             w_ret = new_view(space, self, chunks)
             if copy:
-                w_ret = w_ret.descr_copy(space, space.wrap(w_ret.get_order()))
+                w_ret = w_ret.descr_copy(space, space.newint(w_ret.get_order()))
             return w_ret
         shape = res_shape + self.get_shape()[len(indexes):]
         w_res = W_NDimArray.from_shape(space, shape, self.get_dtype(),
@@ -231,7 +231,7 @@
                     dim = i
                     idx = c.w_idx
                     chunks.pop(i)
-                    chunks.insert(0, SliceChunk(space.newslice(space.wrap(0),
+                    chunks.insert(0, SliceChunk(space.newslice(space.newint(0),
                                  space.w_None, space.w_None)))
                     break
             if dim > 0:
@@ -268,7 +268,7 @@
             if isinstance(w_idx, boxes.W_IntegerBox):
                 # if w_idx is integer then getitem_array_int must contain a single value and we must return it.
                 # Get 0-th element of the w_ret.
-                w_ret = w_ret.implementation.descr_getitem(space, self, space.wrap(0))
+                w_ret = w_ret.implementation.descr_getitem(space, self, space.newint(0))
         else:
             try:
                 w_ret = self.implementation.descr_getitem(space, self, w_idx)
@@ -350,19 +350,19 @@
     def descr_len(self, space):
         shape = self.get_shape()
         if len(shape):
-            return space.wrap(shape[0])
+            return space.newint(shape[0])
         raise oefmt(space.w_TypeError, "len() of unsized object")
 
     def descr_repr(self, space):
         cache = get_appbridge_cache(space)
         if cache.w_array_repr is None:
-            return space.wrap(self.dump_data())
+            return space.newtext(self.dump_data())
         return space.call_function(cache.w_array_repr, self)
 
     def descr_str(self, space):
         cache = get_appbridge_cache(space)
         if cache.w_array_str is None:
-            return space.wrap(self.dump_data(prefix='', separator='', suffix=''))
+            return space.newtext(self.dump_data(prefix='', separator='', suffix=''))
         return space.call_function(cache.w_array_str, self)
 
     def dump_data(self, prefix='array(', separator=',', suffix=')'):
@@ -404,7 +404,7 @@
         self.implementation.fill(space, box)
 
     def descr_get_size(self, space):
-        return space.wrap(self.get_size())
+        return space.newint(self.get_size())
 
     def get_size(self):
         return self.implementation.get_size()
@@ -449,7 +449,7 @@
         if new_impl is not None:
             return wrap_impl(space, space.type(self), self, new_impl)
         # Create copy with contiguous data
-        arr = self.descr_copy(space, space.wrap(order))
+        arr = self.descr_copy(space, space.newint(order))
         if arr.get_size() > 0:
             new_implementation = arr.implementation.reshape(self, new_shape, order)
             if new_implementation is None:
@@ -562,7 +562,7 @@
             return self.get_scalar_value().item(space)
         l_w = []
         for i in range(self.get_shape()[0]):
-            item_w = self.descr_getitem(space, space.wrap(i))
+            item_w = self.descr_getitem(space, space.newint(i))
             if (isinstance(item_w, W_NDimArray) or
                     isinstance(item_w, boxes.W_GenericBox)):
                 l_w.append(space.call_method(item_w, "tolist"))
@@ -572,7 +572,7 @@
 
     def descr_ravel(self, space, w_order=None):
         order = order_converter(space, w_order, self.get_order())
-        return self.reshape(space, space.wrap(-1), order)
+        return self.reshape(space, space.newint(-1), order)
 
     @unwrap_spec(w_axis=WrappedDefault(None),
                  w_out=WrappedDefault(None),
@@ -586,7 +586,7 @@
                         "axis unsupported for compress")
             arr = self
         else:
-            arr = self.reshape(space, space.wrap(-1), self.get_order())
+            arr = self.reshape(space, space.newint(-1), self.get_order())
         index = convert_to_array(space, w_obj)
         return arr.getitem_filter(space, index)
 
@@ -594,7 +594,7 @@
         order = order_converter(space, w_order, self.get_order())
         if self.is_scalar():
             # scalars have no storage
-            return self.reshape(space, space.wrap(1), order)
+            return self.reshape(space, space.newint(1), order)
         w_res = self.descr_ravel(space, w_order)
         if w_res.implementation.storage == self.implementation.storage:
             return w_res.descr_copy(space)
@@ -614,7 +614,7 @@
 
     def descr_get_flatiter(self, space):
         from .flatiter import W_FlatIterator
-        return space.wrap(W_FlatIterator(self))
+        return W_FlatIterator(self)
 
     def descr_item(self, space, args_w):
         if len(args_w) == 1 and space.isinstance_w(args_w[0], space.w_tuple):
@@ -674,7 +674,7 @@
             # will explode if it can't
             w_d = space.newdict()
             space.setitem_str(w_d, 'data',
-                              space.newtuple([space.wrap(addr), space.w_False]))
+                              space.newtuple([space.newint(addr), space.w_False]))
             space.setitem_str(w_d, 'shape', self.descr_get_shape(space))
             space.setitem_str(w_d, 'typestr', self.get_dtype().descr_get_str(space))
             if self.implementation.order == NPY.CORDER:
@@ -683,7 +683,7 @@
             else:
                 strides = self.descr_get_strides(space)
             space.setitem_str(w_d, 'strides', strides)
-            space.setitem_str(w_d, 'version', space.wrap(3))
+            space.setitem_str(w_d, 'version', space.newint(3))
             return w_d
 
     w_pypy_data = None
@@ -700,7 +700,7 @@
     __array_priority__ = 0.0
 
     def descr___array_priority__(self, space):
-        return space.wrap(self.__array_priority__)
+        return space.newfloat(self.__array_priority__)
 
     def descr_argsort(self, space, w_axis=None, w_kind=None, w_order=None):
         # happily ignore the kind
@@ -709,7 +709,7 @@
         # we would modify the array in-place. Use this to our advantage
         # by converting nonnative byte order.
         if self.is_scalar():
-            return space.wrap(0)
+            return space.newint(0)
         dtype = self.get_dtype().descr_newbyteorder(space, NPY.NATIVE)
         contig = self.implementation.astype(space, dtype, self.get_order())
         return contig.argsort(space, w_axis)
@@ -739,7 +739,7 @@
                         "according to the rule %s",
                         space.str_w(self.get_dtype().descr_repr(space)),
                         space.str_w(new_dtype.descr_repr(space)), casting)
-        order  = order_converter(space, space.wrap(order), self.get_order())
+        order  = order_converter(space, space.newtext(order), self.get_order())
         if (not copy and new_dtype == self.get_dtype()
                 and (order in (NPY.KEEPORDER, NPY.ANYORDER) or order == self.get_order())
                 and (subok or type(self) is W_NDimArray)):
@@ -838,7 +838,7 @@
     def descr_trace(self, space, offset=0, axis1=0, axis2=1,
                     w_dtype=None, w_out=None):
         diag = self.descr_diagonal(space, offset, axis1, axis2)
-        return diag.descr_sum(space, w_axis=space.wrap(-1), w_dtype=w_dtype, w_out=w_out)
+        return diag.descr_sum(space, w_axis=space.newint(-1), w_dtype=w_dtype, w_out=w_out)
 
     def descr_dump(self, space, w_file):
         raise oefmt(space.w_NotImplementedError, "dump not implemented yet")
@@ -1071,7 +1071,7 @@
                         "The truth value of an array with more than one "
                         "element is ambiguous. Use a.any() or a.all()")
         iter, state = self.create_iter()
-        return space.wrap(space.is_true(iter.getitem(state)))
+        return space.newbool(space.is_true(iter.getitem(state)))
 
     def _binop_impl(ufunc_name):
         def impl(self, space, w_other, w_out=None):
@@ -1174,11 +1174,11 @@
         elif self.ndims() < 2 and other.ndims() < 2:
             w_res = self.descr_mul(space, other)
             assert isinstance(w_res, W_NDimArray)
-            return w_res.descr_sum(space, space.wrap(-1), out)
+            return w_res.descr_sum(space, space.newint(-1), out)
         dtype = find_result_type(space, [self, other], [])
         if self.get_size() < 1 and other.get_size() < 1:
             # numpy compatability
-            return W_NDimArray.new_scalar(space, dtype, space.wrap(0))
+            return W_NDimArray.new_scalar(space, dtype, space.newint(0))
         # Do the dims match?
         out_shape, other_critical_dim = _match_dot_shapes(space, self, other)
         if out:
@@ -1243,8 +1243,8 @@
         def method(self, space, w_axis=None, w_dtype=None, w_out=None):
             out = out_converter(space, w_out)
             if space.is_none(w_axis):
-                w_axis = space.wrap(0)
-                arr = self.reshape(space, space.wrap(-1), self.get_order())
+                w_axis = space.newint(0)
+                arr = self.reshape(space, space.newint(-1), self.get_order())
             else:
                 arr = self
             ufunc = getattr(ufuncs.get(space), ufunc_name)
@@ -1359,7 +1359,7 @@
         assert isinstance(multiarray, MixedModule)
         reconstruct = multiarray.get("_reconstruct")
         parameters = space.newtuple([self.getclass(space), space.newtuple(
-            [space.wrap(0)]), space.wrap("b")])
+            [space.newint(0)]), space.wrap("b")])
 
         builder = StringBuilder()
         if self.get_dtype().is_object():
@@ -1377,11 +1377,11 @@
                                      self.implementation.get_storage_size())
 
         state = space.newtuple([
-            space.wrap(1),      # version
+            space.newint(1),      # version
             self.descr_get_shape(space),
             self.get_dtype(),
-            space.wrap(False),  # is_fortran
-            space.wrap(builder.build()),
+            space.newbool(False),  # is_fortran
+            space.newbytes(builder.build()),
         ])
 
         return space.newtuple([reconstruct, parameters, state])
@@ -1397,17 +1397,17 @@
             raise oefmt(space.w_ValueError,
                         "__setstate__ called with len(args[1])==%d, not 5 or 4",
                         lens)
-        shape = space.getitem(w_state, space.wrap(base_index))
-        dtype = space.getitem(w_state, space.wrap(base_index+1))
-        #isfortran = space.getitem(w_state, space.wrap(base_index+2))
-        storage = space.getitem(w_state, space.wrap(base_index+3))
+        shape = space.getitem(w_state, space.newint(base_index))
+        dtype = space.getitem(w_state, space.newint(base_index+1))
+        #isfortran = space.getitem(w_state, space.newint(base_index+2))
+        storage = space.getitem(w_state, space.newint(base_index+3))
         if not isinstance(dtype, descriptor.W_Dtype):
             raise oefmt(space.w_ValueError,
                         "__setstate__(self, (shape, dtype, .. called with "
                         "improper dtype '%R'", dtype)
         self.implementation = W_NDimArray.from_shape_and_storage(
             space, [space.int_w(i) for i in space.listview(shape)],
-            rffi.str2charp(space.str_w(storage), track_allocation=False),
+            rffi.str2charp(space.bytes_w(storage), track_allocation=False),
             dtype, storage_bytes=space.len_w(storage), owning=True).implementation
 
     def descr___array_finalize__(self, space, w_obj):
@@ -1470,7 +1470,7 @@
     w_ret = space.allocate_instance(W_NDimArray, w_subtype)
     W_NDimArray.__init__(w_ret, impl)
     space.call_function(space.getattr(w_ret,
-                        space.wrap('__array_finalize__')), w_subtype)
+                        space.newtext('__array_finalize__')), w_subtype)
     return w_ret
 
 
diff --git a/pypy/module/micronumpy/nditer.py b/pypy/module/micronumpy/nditer.py
--- a/pypy/module/micronumpy/nditer.py
+++ b/pypy/module/micronumpy/nditer.py
@@ -17,7 +17,7 @@
 
 def parse_op_arg(space, name, w_op_flags, n, parse_one_arg):
     if space.is_w(w_op_flags, space.w_None):
-        w_op_flags = space.newtuple([space.wrap('readonly')])
+        w_op_flags = space.newtuple([space.newtext('readonly')])
     if not space.isinstance_w(w_op_flags, space.w_tuple) and not \
             space.isinstance_w(w_op_flags, space.w_list):
         raise oefmt(space.w_ValueError,
@@ -510,7 +510,7 @@
             for i in range(len(self.seq)):
                 if i not in outargs:
                     self.seq[i] = self.seq[i].descr_copy(space,
-                                     w_order=space.wrap(self.order))
+                                     w_order=space.newint(self.order))
             self.dtypes = [s.get_dtype() for s in self.seq]
         else:
             #copy them from seq
@@ -592,7 +592,7 @@
         return oa_ndim
 
     def descr_iter(self, space):
-        return space.wrap(self)
+        return self
 
     def getitem(self, it, st):
         w_res = W_NDimArray(it.getoperand(st))
@@ -611,7 +611,7 @@
         raise oefmt(space.w_NotImplementedError, "not implemented yet")
 
     def descr_len(self, space):
-        space.wrap(len(self.iters))
+        space.newint(len(self.iters))
 
     @jit.unroll_safe
     def descr_next(self, space):
@@ -648,7 +648,7 @@
         return self.done
 
     def descr_iternext(self, space):
-        return space.wrap(self.iternext())
+        return space.newbool(self.iternext())
 
     def descr_copy(self, space):
         raise oefmt(space.w_NotImplementedError, "not implemented yet")
@@ -682,30 +682,30 @@
         return space.newtuple(res)
 
     def descr_get_finished(self, space):
-        return space.wrap(self.done)
+        return space.newbool(self.done)
 
     def descr_get_has_delayed_bufalloc(self, space):
         raise oefmt(space.w_NotImplementedError, "not implemented yet")
 
     def descr_get_has_index(self, space):
-        return space.wrap(self.tracked_index in ["C", "F"])
+        return space.newbool(self.tracked_index in ["C", "F"])
 
     def descr_get_index(self, space):
         if not self.tracked_index in ["C", "F"]:
             raise oefmt(space.w_ValueError, "Iterator does not have an index")
         if self.done:
             raise oefmt(space.w_ValueError, "Iterator is past the end")
-        return space.wrap(self.index_iter.getvalue())
+        return space.newint(self.index_iter.getvalue())
 
     def descr_get_has_multi_index(self, space):
-        return space.wrap(self.tracked_index == "multi")
+        return space.newbool(self.tracked_index == "multi")
 
     def descr_get_multi_index(self, space):
         if not self.tracked_index == "multi":
             raise oefmt(space.w_ValueError, "Iterator is not tracking a multi-index")
         if self.done:
             raise oefmt(space.w_ValueError, "Iterator is past the end")
-        return space.newtuple([space.wrap(x) for x in self.index_iter.index])
+        return space.newtuple([space.newint(x) for x in self.index_iter.index])
 
     def descr_get_iterationneedsapi(self, space):
         raise oefmt(space.w_NotImplementedError, "not implemented yet")
@@ -714,13 +714,13 @@
         raise oefmt(space.w_NotImplementedError, "not implemented yet")
 
     def descr_get_itersize(self, space):
-        return space.wrap(support.product(self.shape))
+        return space.newint(support.product(self.shape))
 
     def descr_get_itviews(self, space):
         raise oefmt(space.w_NotImplementedError, "not implemented yet")
 
     def descr_get_ndim(self, space):
-        return space.wrap(self.ndim)
+        return space.newint(self.ndim)
 
     def descr_get_nop(self, space):
         raise oefmt(space.w_NotImplementedError, "not implemented yet")
diff --git a/pypy/module/micronumpy/strides.py b/pypy/module/micronumpy/strides.py
--- a/pypy/module/micronumpy/strides.py
+++ b/pypy/module/micronumpy/strides.py
@@ -98,11 +98,11 @@
     if dim >= 0:
         # filter by axis dim
         filtr = chunks[dim]
-        assert isinstance(filtr, BooleanChunk) 
+        assert isinstance(filtr, BooleanChunk)
         # XXX this creates a new array, and fails in setitem
         w_arr = w_arr.getitem_filter(space, filtr.w_idx, axis=dim)
         arr = w_arr.implementation
-        chunks[dim] = SliceChunk(space.newslice(space.wrap(0), 
+        chunks[dim] = SliceChunk(space.newslice(space.newint(0),
                                  space.w_None, space.w_None))
         r = calculate_slice_strides(space, arr.shape, arr.start,
                  arr.get_strides(), arr.get_backstrides(), chunks)
diff --git a/pypy/module/micronumpy/support.py b/pypy/module/micronumpy/support.py
--- a/pypy/module/micronumpy/support.py
+++ b/pypy/module/micronumpy/support.py
@@ -181,9 +181,9 @@
         return rffi.cast(lltype.Signed, storage) + start
 
 def is_rhs_priority_higher(space, w_lhs, w_rhs):
-    w_zero = space.wrap(0.0)
-    w_priority_l = space.findattr(w_lhs, space.wrap('__array_priority__')) or w_zero
-    w_priority_r = space.findattr(w_rhs, space.wrap('__array_priority__')) or w_zero
+    w_zero = space.newfloat(0.0)
+    w_priority_l = space.findattr(w_lhs, space.newtext('__array_priority__')) or w_zero
+    w_priority_r = space.findattr(w_rhs, space.newtext('__array_priority__')) or w_zero
     # XXX what is better, unwrapping values or space.gt?
     return space.is_true(space.gt(w_priority_r, w_priority_l))
 
diff --git a/pypy/module/micronumpy/types.py b/pypy/module/micronumpy/types.py
--- a/pypy/module/micronumpy/types.py
+++ b/pypy/module/micronumpy/types.py
@@ -196,7 +196,7 @@
         return w_obj
 
     def to_builtin_type(self, space, box):
-        return space.wrap(self.for_computation(self.unbox(box)))
+        raise NotImplementedError("has to be provided by subclass")
 
     def _coerce(self, space, w_item):
         raise NotImplementedError
@@ -398,7 +398,7 @@
         return self.box(space.is_true(w_item))
 
     def to_builtin_type(self, space, w_item):
-        return space.wrap(self.unbox(w_item))
+        return space.newbool(self.unbox(w_item))
 
     def str_format(self, box, add_quotes=True):
         return "True" if self.unbox(box) else "False"
@@ -461,6 +461,9 @@
     _mixin_ = True
     signed = True
 
+    def to_builtin_type(self, space, box):
+        return space.newint(self.for_computation(self.unbox(box)))
+
     def _base_coerce(self, space, w_item):
         if w_item is None:
             return self.box(0)
@@ -736,6 +739,9 @@
     _mixin_ = True
     strlen = 32
 
+    def to_builtin_type(self, space, box):
+        return space.wrap(self.for_computation(self.unbox(box)))
+
     def _coerce(self, space, w_item):
         if w_item is None:
             return self.box(0.0)
@@ -2015,17 +2021,17 @@
 
     @simple_binary_op
     def pow(self, v1, v2):
-        return self.space.pow(v1, v2, self.space.wrap(1))
+        return self.space.pow(v1, v2, self.space.newint(1))
 
     @simple_unary_op
     def reciprocal(self, v1):
-        return self.space.div(self.space.wrap(1.0), v1)
+        return self.space.div(self.space.newfloat(1.0), v1)
 
     @simple_unary_op
     def sign(self, v):
-        zero = self.space.wrap(0)
-        one = self.space.wrap(1)
-        m_one = self.space.wrap(-1)
+        zero = self.space.newint(0)
+        one = self.space.newint(1)
+        m_one = self.space.newint(-1)
         if self.space.is_true(self.space.gt(v, zero)):
             return one
         elif self.space.is_true(self.space.lt(v, zero)):
@@ -2158,7 +2164,7 @@
         if isinstance(w_item, boxes.W_StringBox):
             return w_item
         if w_item is None:
-            w_item = space.wrap('')
+            w_item = space.newbytes('')
         arg = space.str_w(space.str(w_item))
         arr = VoidBoxStorage(dtype.elsize, dtype)
         with arr as storage:
@@ -2196,7 +2202,7 @@
 
     # XXX move the rest of this to base class when UnicodeType is supported
     def to_builtin_type(self, space, box):
-        return space.wrap(self.to_str(box))
+        return space.newbytes(self.to_str(box))
 
     @str_binary_op
     def eq(self, v1, v2):
@@ -2317,7 +2323,7 @@
 
     def to_builtin_type(self, space, box):
         assert isinstance(box, boxes.W_UnicodeBox)
-        return space.wrap(box._value)
+        return space.newunicode(box._value)
 
     def eq(self, v1, v2):
         assert isinstance(v1, boxes.W_UnicodeBox)
@@ -2469,7 +2475,7 @@
                 read_val = dtype.read(item.arr, ofs, 0)
             if isinstance (read_val, boxes.W_StringBox):
                 # StringType returns a str
-                read_val = space.wrap(dtype.itemtype.to_str(read_val))
+                read_val = space.newbytes(dtype.itemtype.to_str(read_val))
             ret_unwrapped = ret_unwrapped + [read_val,]
         if len(ret_unwrapped) == 0:
             raise oefmt(space.w_NotImplementedError,
@@ -2490,7 +2496,7 @@
                 for i in range(len(dtype.names)):
                     name = dtype.names[i]
                     if name in w_item.dtype.names:
-                        items_w[i] = w_item.descr_getitem(space, space.wrap(name[0]))
+                        items_w[i] = w_item.descr_getitem(space, space.newtext(name[0]))
         elif w_item is not None:
             if space.isinstance_w(w_item, space.w_tuple):
                 if len(dtype.names) != space.len_w(w_item):
diff --git a/pypy/module/micronumpy/ufuncs.py b/pypy/module/micronumpy/ufuncs.py
--- a/pypy/module/micronumpy/ufuncs.py
+++ b/pypy/module/micronumpy/ufuncs.py
@@ -105,10 +105,10 @@
         self.complex_to_float = complex_to_float
 
     def descr_get_name(self, space):
-        return space.wrap(self.name)
+        return space.newtext(self.name)
 
     def descr_repr(self, space):
-        return space.wrap("<ufunc '%s'>" % self.name)
+        return space.newtext("<ufunc '%s'>" % self.name)
 
     def get_doc(self, space):
         # Note: allows any object to be set as docstring, because why not?
@@ -160,7 +160,7 @@
 
     def descr_accumulate(self, space, w_obj, w_axis=None, w_dtype=None, w_out=None):
         if w_axis is None:
-            w_axis = space.wrap(0)
+            w_axis = space.newint(0)
         out = out_converter(space, w_out)
         return self.reduce(space, w_obj, w_axis, True, #keepdims must be true
                            out, w_dtype, variant=ACCUMULATE)
@@ -170,7 +170,7 @@
                      w_out=None, keepdims=False):
         from pypy.module.micronumpy.ndarray import W_NDimArray
         if w_axis is None:
-            w_axis = space.wrap(0)
+            w_axis = space.newint(0)
         out = out_converter(space, w_out)
         return self.reduce(space, w_obj, w_axis, keepdims, out, w_dtype)
 
@@ -207,7 +207,7 @@
                 axes[i] = x
         else:
             if space.isinstance_w(w_axis, space.w_tuple) and space.len_w(w_axis) == 1:
-                w_axis = space.getitem(w_axis, space.wrap(0))
+                w_axis = space.getitem(w_axis, space.newint(0))
             axis = space.int_w(w_axis)
             if axis < -shapelen or axis >= shapelen:
                 raise oefmt(space.w_ValueError, "'axis' entry is out of bounds")
@@ -373,7 +373,7 @@
             raise oefmt(space.w_ValueError,
                     "exactly two arguments expected")
         args = [convert_to_array(space, w_obj) for w_obj in args_w]
-        w_outshape = [space.wrap(i) for i in args[0].get_shape() + [1]*args[1].ndims()]
+        w_outshape = [space.newint(i) for i in args[0].get_shape() + [1]*args[1].ndims()]
         args0 = args[0].reshape(space, space.newtuple(w_outshape))
         return self.descr_call(space, Arguments.frompacked(space, 
                                                         space.newlist([args0, args[1]])))
@@ -391,7 +391,7 @@
         return w_subok, w_out, sig, w_casting, extobj_w
 
 def get_extobj(space):
-        extobj_w = space.newlist([space.wrap(8192), space.wrap(0), space.w_None])
+        extobj_w = space.newlist([space.newint(8192), space.newint(0), space.w_None])
         return extobj_w
 
 
@@ -426,7 +426,7 @@
 def _has_reflected_op(space, w_obj, op):
     if op not in _reflected_ops:
         return False
-    return space.getattr(w_obj, space.wrap(_reflected_ops[op])) is not None
+    return space.getattr(w_obj, space.newtext(_reflected_ops[op])) is not None
 
 def safe_casting_mode(casting):
     assert casting is not None
@@ -475,7 +475,7 @@
         if out is None:
             if w_res.is_scalar():
                 return w_res.get_scalar_value()
-            ctxt = space.newtuple([self, space.newtuple([w_obj]), space.wrap(0)])
+            ctxt = space.newtuple([self, space.newtuple([w_obj]), space.newint(0)])
             w_res = space.call_method(w_obj, '__array_wrap__', w_res, ctxt)
         return w_res
 
@@ -578,9 +578,9 @@
             elif ((w_ldtype.is_object() and w_ldtype.is_record()) or
                 (w_rdtype.is_object() and w_rdtype.is_record())):
                 if self.name == 'not_equal':
-                    return space.wrap(True)
+                    return space.w_True
                 elif self.name == 'equal':
-                    return space.wrap(False)
+                    return space.w_False
                 else:
                     msg = ("ufunc '%s' not supported for the input types, "
                            "and the inputs could not be safely coerced to "
@@ -595,19 +595,19 @@
         elif (w_ldtype.is_str()) and \
                 self.bool_result and out is None:
             if self.name in ('equal', 'less_equal', 'less'):
-               return space.wrap(False)
-            return space.wrap(True)
+               return space.w_False
+            return space.w_True
         elif (w_rdtype.is_str()) and \
                 self.bool_result and out is None:
             if self.name in ('not_equal','less', 'less_equal'):
-               return space.wrap(True)
-            return space.wrap(False)
+               return space.w_True
+            return space.w_False
         elif w_ldtype.is_flexible() or w_rdtype.is_flexible():
             if self.bool_result:
                 if self.name == 'equal' or self.name == 'not_equal':
                     res = w_ldtype.eq(space, w_rdtype)
                     if not res:
-                        return space.wrap(self.name == 'not_equal')
+                        return space.newbool(self.name == 'not_equal')
                 else:
                     return space.w_NotImplemented
             else:
@@ -641,7 +641,7 @@
         if out is None:
             if w_res.is_scalar():
                 return w_res.get_scalar_value()
-            ctxt = space.newtuple([self, space.newtuple([w_lhs, w_rhs]), space.wrap(0)])
+            ctxt = space.newtuple([self, space.newtuple([w_lhs, w_rhs]), space.newint(0)])
             w_res = space.call_method(w_highpriority, '__array_wrap__', w_res, ctxt)
         return w_res
 
@@ -907,7 +907,7 @@
             # from frompyfunc
             pass
         # mimic NpyIter_AdvancedNew with a nditer
-        w_itershape = space.newlist([space.wrap(i) for i in iter_shape])
+        w_itershape = space.newlist([space.newint(i) for i in iter_shape])
         nd_it = W_NDIter(space, space.newlist(inargs + outargs), w_flags,
                       w_op_flags, w_op_dtypes, w_casting, w_op_axes,
                       w_itershape, allow_backward=False)
@@ -956,7 +956,7 @@
                     outiters[0].descr_setitem(space, space.w_Ellipsis, outs)
                 else:
                     for i in range(self.nout):
-                        w_val = space.getitem(outs, space.wrap(i))
+                        w_val = space.getitem(outs, space.newint(i))
                         outiters[i].descr_setitem(space, space.w_Ellipsis, w_val)
         # XXX use _find_array_wrap and wrap outargs using __array_wrap__
         if len(outargs) > 1:
@@ -1531,7 +1531,7 @@
     if w_ret.external_loop:
         _parse_signature(space, w_ret, w_ret.signature)
     if doc:
-        w_ret.set_doc(space, space.wrap(doc))
+        w_ret.set_doc(space, space.newtext(doc))
     return w_ret
 
 # Instantiated in cpyext/ndarrayobject. It is here since ufunc calls
@@ -1572,8 +1572,8 @@
                 arg_i = args_w[i]
                 if not isinstance(arg_i, W_NDimArray):
                     raise OperationError(space.w_NotImplementedError,
-                         space.wrap("cannot mix ndarray and %r (arg %d) in call to ufunc" % (
-                                    arg_i, i)))
+                         space.newtext("cannot mix ndarray and %r (arg %d) in call to ufunc" % (
+                                       arg_i, i)))
                 with arg_i.implementation as storage:
                     addr = get_storage_as_int(storage, arg_i.get_start())
                     raw_storage_setitem(dataps, CCHARP_SIZE * i, rffi.cast(rffi.CCHARP, addr))


More information about the pypy-commit mailing list