[pypy-commit] pypy object-dtype2: add upstream compatible logic to allow True for 'foo' != np.arange(3)[1] in a shorcut hack
Author: mattip Branch: object-dtype2 Changeset: r76898:cbba3abb9864 Date: 2015-04-23 10:52 +0300 http://bitbucket.org/pypy/pypy/changeset/cbba3abb9864/ Log:add upstream compatible logic to allow True for 'foo' != np.arange(3)[1] in a shorcut hack diff --git a/pypy/module/micronumpy/test/test_object_arrays.py b/pypy/module/micronumpy/test/test_object_arrays.py --- a/pypy/module/micronumpy/test/test_object_arrays.py +++ b/pypy/module/micronumpy/test/test_object_arrays.py @@ -37,6 +37,11 @@ assert (b == a).all() c = np.array([1, 2, 3]) assert (a[0] != c[0]) +assert (c[0] != a[0]) +assert (a[0] > c[0]) +assert (not a[0] < c[0]) +assert (c[0] < a[0]) +assert (not c[0] > a[0]) def test_logical_ufunc(self): import numpy as np 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 @@ -441,8 +441,15 @@ elif w_ldtype.is_str() and w_rdtype.is_str() and \ self.comparison_func: pass -elif (w_ldtype.is_str() or w_rdtype.is_str()) and \ +elif (w_ldtype.is_str()) and \ self.comparison_func and w_out is None: +if self.name in ('equal', 'less_equal', 'less'): + return space.wrap(False) +return space.wrap(True) +elif (w_rdtype.is_str()) and \ +self.comparison_func and w_out is None: +if self.name in ('not_equal','less', 'less_equal'): + return space.wrap(True) return space.wrap(False) elif w_ldtype.is_flexible() or w_rdtype.is_flexible(): if self.comparison_func: ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy default: hack to support pytest 2.7
Author: Ronan Lamy Branch: Changeset: r76899:a24deef350ce Date: 2015-04-23 17:13 +0100 http://bitbucket.org/pypy/pypy/changeset/a24deef350ce/ Log:hack to support pytest 2.7 diff --git a/pypy/tool/pytest/appsupport.py b/pypy/tool/pytest/appsupport.py --- a/pypy/tool/pytest/appsupport.py +++ b/pypy/tool/pytest/appsupport.py @@ -99,6 +99,7 @@ debug_excs = getattr(operr, 'debug_excs', []) if debug_excs: self._excinfo = debug_excs[0] +self.value = self.operr.errorstr(self.space) # XXX def __repr__(self): return "" % self.operr.errorstr(self.space) ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy default: fix/update whatsnew-head with an eye towards PyPy 2.6
Author: mattip Branch: Changeset: r76901:3d4aa967c95c Date: 2015-04-23 19:57 +0300 http://bitbucket.org/pypy/pypy/changeset/3d4aa967c95c/ Log:fix/update whatsnew-head with an eye towards PyPy 2.6 diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst --- a/pypy/doc/whatsnew-head.rst +++ b/pypy/doc/whatsnew-head.rst @@ -5,12 +5,46 @@ .. this is a revision shortly after release-2.5.1 .. startrev: cb01edcb59414d9d93056e54ed060673d24e67c1 -Issue #2017: on non-Linux-x86 platforms, reduced the memory impact of +issue2005: +ignore errors on closing random file handles while importing a module (cpython compatibility) + +issue2013: +added constants to _ssl for TLS 1.1 and 1.2 + +issue2014: +Add PyLong_FromUnicode to cpyext. + +issue2017: +On non-Linux-x86 platforms, reduced the memory impact of creating a lot of greenlets/tasklets. Particularly useful on Win32 and on ARM, where you used to get a MemoryError after only 2500-5000 greenlets (the 32-bit address space is exhausted). +Update gdb_pypy for python3 (gdb comatability) + +Merged rstrategies into rpython which provides a library for Storage Strategies + +Support unicode strings in numpy.dtype creation i.e. np.dtype(u'int64') + +Various rpython cleanups for vmprof support + +issue2019: +Fix isspace as called by rpython unicode.strip() + +issue2023: +In the cpyext 'Concrete Object Layer' API, +don't call methods on the object (which can be overriden), +but directly on the concrete base type. + +issue2029: +Hide the default_factory attribute in a dict + +issue2027: +Better document pyinteractive and add --withmod-time + .. branch: gc-incminimark-pinning-improve + +branch gc-incminimark-pinning-improve: Object Pinning is now used in `bz2` and `rzlib` (therefore also affects Python's `zlib`). In case the data to compress/decompress is inside the nursery (incminimark) it no longer needs to create a non-moving copy of it. This saves @@ -18,8 +52,15 @@ is introduced (`PYPY_GC_MAX_PINNED`) primarily for debugging purposes. .. branch: refactor-pycall + +branch refactor-pycall: Make `*`-unpacking in RPython function calls completely equivalent to passing the tuple's elements as arguments. In other words, `f(*(a, b))` now behaves exactly like `f(a, b)`. .. branch: issue2018 +branch issue2018: +Allow prebuilt rpython dict with function values + +.. branch: vmprof +.. Merged but then backed out, hopefully it will return as vmprof2 ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy object-dtype2: merge default into branch
Author: mattip Branch: object-dtype2 Changeset: r76902:fcc3a72a167e Date: 2015-04-23 19:58 +0300 http://bitbucket.org/pypy/pypy/changeset/fcc3a72a167e/ Log:merge default into branch diff too long, truncating to 2000 out of 2315 lines diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst --- a/pypy/doc/whatsnew-head.rst +++ b/pypy/doc/whatsnew-head.rst @@ -5,12 +5,46 @@ .. this is a revision shortly after release-2.5.1 .. startrev: cb01edcb59414d9d93056e54ed060673d24e67c1 -Issue #2017: on non-Linux-x86 platforms, reduced the memory impact of +issue2005: +ignore errors on closing random file handles while importing a module (cpython compatibility) + +issue2013: +added constants to _ssl for TLS 1.1 and 1.2 + +issue2014: +Add PyLong_FromUnicode to cpyext. + +issue2017: +On non-Linux-x86 platforms, reduced the memory impact of creating a lot of greenlets/tasklets. Particularly useful on Win32 and on ARM, where you used to get a MemoryError after only 2500-5000 greenlets (the 32-bit address space is exhausted). +Update gdb_pypy for python3 (gdb comatability) + +Merged rstrategies into rpython which provides a library for Storage Strategies + +Support unicode strings in numpy.dtype creation i.e. np.dtype(u'int64') + +Various rpython cleanups for vmprof support + +issue2019: +Fix isspace as called by rpython unicode.strip() + +issue2023: +In the cpyext 'Concrete Object Layer' API, +don't call methods on the object (which can be overriden), +but directly on the concrete base type. + +issue2029: +Hide the default_factory attribute in a dict + +issue2027: +Better document pyinteractive and add --withmod-time + .. branch: gc-incminimark-pinning-improve + +branch gc-incminimark-pinning-improve: Object Pinning is now used in `bz2` and `rzlib` (therefore also affects Python's `zlib`). In case the data to compress/decompress is inside the nursery (incminimark) it no longer needs to create a non-moving copy of it. This saves @@ -18,8 +52,15 @@ is introduced (`PYPY_GC_MAX_PINNED`) primarily for debugging purposes. .. branch: refactor-pycall + +branch refactor-pycall: Make `*`-unpacking in RPython function calls completely equivalent to passing the tuple's elements as arguments. In other words, `f(*(a, b))` now behaves exactly like `f(a, b)`. .. branch: issue2018 +branch issue2018: +Allow prebuilt rpython dict with function values + +.. branch: vmprof +.. Merged but then backed out, hopefully it will return as vmprof2 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 @@ -559,9 +559,11 @@ if space.is_none(w_dtype): return cache.w_float64dtype -elif space.isinstance_w(w_dtype, w_subtype): +if space.isinstance_w(w_dtype, w_subtype): return w_dtype -elif space.isinstance_w(w_dtype, space.w_str): +if space.isinstance_w(w_dtype, space.w_unicode): +w_dtype = space.wrap(space.str_w(w_dtype)) # may raise if invalid +if space.isinstance_w(w_dtype, space.w_str): name = space.str_w(w_dtype) if _check_for_commastring(name): return dtype_from_spec(space, w_dtype) diff --git a/pypy/module/micronumpy/test/test_dtypes.py b/pypy/module/micronumpy/test/test_dtypes.py --- a/pypy/module/micronumpy/test/test_dtypes.py +++ b/pypy/module/micronumpy/test/test_dtypes.py @@ -58,6 +58,7 @@ assert exc.value[0] == "there are no fields defined" assert dtype('int8').num == 1 +assert dtype(u'int8').num == 1 assert dtype('int8').name == 'int8' assert dtype('void').name == 'void' assert dtype(int).fields is None diff --git a/pypy/tool/pytest/appsupport.py b/pypy/tool/pytest/appsupport.py --- a/pypy/tool/pytest/appsupport.py +++ b/pypy/tool/pytest/appsupport.py @@ -99,6 +99,7 @@ debug_excs = getattr(operr, 'debug_excs', []) if debug_excs: self._excinfo = debug_excs[0] +self.value = self.operr.errorstr(self.space) # XXX def __repr__(self): return "" % self.operr.errorstr(self.space) diff --git a/rpython/doc/rlib.rst b/rpython/doc/rlib.rst --- a/rpython/doc/rlib.rst +++ b/rpython/doc/rlib.rst @@ -128,6 +128,14 @@ a hierarchy of Address classes, in a typical static-OO-programming style. +rstrategies +--- + +The :source:`rpython/rlib/rstrategies` module contains a library to implement storage strategies in +RPython VMs. The library is language-independent and extensible. +More details and examples can be found in the :doc:`rstrategies documentation `. + + streamio diff --git a/rpython/doc/rstrategies.rst b/rpython/doc/rstrategies.rst new file mode 100644 --- /dev/null +++ b/rpython/doc/rstrategies.rst @@ -0,0 +1,209 @@ +rstrategies +=== + +A library to implement storage strategies in VMs based on the RPython +toolchain. rstrategies can be used in VMs for any lan
[pypy-commit] pypy object-dtype2: document branch to be closed
Author: mattip Branch: object-dtype2 Changeset: r76903:cc8c8b4aba30 Date: 2015-04-23 20:00 +0300 http://bitbucket.org/pypy/pypy/changeset/cc8c8b4aba30/ Log:document branch to be closed diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst --- a/pypy/doc/whatsnew-head.rst +++ b/pypy/doc/whatsnew-head.rst @@ -64,3 +64,6 @@ .. branch: vmprof .. Merged but then backed out, hopefully it will return as vmprof2 + +.. branch: object-dtype2 +Extend numpy dtypes to allow using objects with associated garbage collection hook ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy object-dtype2: close branch to be merged
Author: mattip Branch: object-dtype2 Changeset: r76904:03977f2520fe Date: 2015-04-23 20:00 +0300 http://bitbucket.org/pypy/pypy/changeset/03977f2520fe/ Log:close branch to be merged ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy object-dtype2: adjust tests to pass -A, leave fixing pypy to after branch merge
Author: mattip Branch: object-dtype2 Changeset: r76900:7f4e8ce39e3a Date: 2015-04-23 18:41 +0300 http://bitbucket.org/pypy/pypy/changeset/7f4e8ce39e3a/ Log:adjust tests to pass -A, leave fixing pypy to after branch merge diff --git a/pypy/module/micronumpy/test/test_object_arrays.py b/pypy/module/micronumpy/test/test_object_arrays.py --- a/pypy/module/micronumpy/test/test_object_arrays.py +++ b/pypy/module/micronumpy/test/test_object_arrays.py @@ -45,6 +45,10 @@ def test_logical_ufunc(self): import numpy as np +import sys + +if '__pypy__' in sys.builtin_module_names: +skip('need to refactor use of raw_xxx_op in types to make this work') a = np.array(["foo"], dtype=object) b = np.array([1], dtype=object) d = np.array([complex(1, 10)], dtype=object) @@ -75,12 +79,15 @@ def test_complex_op(self): import numpy as np +import sys a = np.array(['abc', 'def'], dtype=object) b = np.array([1, 2, 3], dtype=object) c = np.array([complex(1, 1), complex(1, -1)], dtype=object) for arg in (a,b,c): assert (arg == np.real(arg)).all() assert (0 == np.imag(arg)).all() +if '__pypy__' in sys.builtin_module_names: +skip('not implemented yet') raises(AttributeError, np.conj, a) res = np.conj(b) assert (res == b).all() @@ -102,6 +109,7 @@ def test_array_interface(self): import numpy as np +import sys class DummyArray(object): def __init__(self, interface, base=None): self.__array_interface__ = interface @@ -111,6 +119,8 @@ interface = dict(a.__array_interface__) interface['shape'] = tuple([3]) interface['strides'] = tuple([0]) +if '__pypy__' in sys.builtin_module_names: +skip('not implemented yet') c = np.array(DummyArray(interface, base=a)) c.dtype = a.dtype #print c @@ -118,6 +128,7 @@ def test_for_object_scalar_creation(self): import numpy as np +import sys a = np.object_() b = np.object_(3) b2 = np.object_(3.0) @@ -129,6 +140,8 @@ assert type(c) is np.ndarray assert c.dtype == object assert type(d) is type(None) +if '__pypy__' in sys.builtin_module_names: +skip('not implemented yet') e = np.object_([None, {}, []]) assert e.dtype == object @@ -137,36 +150,13 @@ # test segfaulted during ObjectType.store due to # missing gc hooks import numpy as np -dt = np.dtype([('x', int), ('y', np.object_)]) +import sys +ytype = np.object_ +if '__pypy__' in sys.builtin_module_names: +ytype = str +dt = np.dtype([('x', int), ('y', ytype)]) # Correct way a = np.array([(1, 'object')], dt) # Wrong way - should complain about writing buffer to object dtype -raises(np.array, [1, 'object'], dt) +raises(ValueError, np.array, [1, 'object'], dt) -def test_zeros(self): -skip('move this to unicode test when we have them') -import numpy as np -def sixu(s): -return unicode(s, 'unicode_escape') - -def buffer_len(arr): -if isinstance(arr, np.ndarray): -return len(arr.data) -return len(buffer(arr)) - -def content_check(ua, ua_scalar, nbtyes): -assert int(ua.dtype.str[2:]) == ulen -assert buffer_len(ua) == 4*ulen -assert ua_scalar -- sixu('') -assert ua_scalar.encode('ascii') == '' -assert buffer_len(ua_scalar) == 0 - -for ulen in [1, 2, 1099]: -ua = np.zeros((), dtype='U%s' % ulen) -content_check(ua, ua[()], 4 * ulen) -ua = zeros((2,), dtype='U%s' % ulen) -content_check(ua, ua[0], 4 * ulen*2) -content_check(ua, ua[1], 4 * ulen*2) -ua = zeros((2, 3, 4), dtype='U%s' % ulen) -content_check(ua, ua[0, 0, 0], 4 * ulen * 2 * 3 * 4) -content_check(ua, ua[-1, -1, -1], 4 * ulen * 2 * 3 * 4) ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy default: merge in object-dtype2, which provides an object dtype for numpy
Author: mattip Branch: Changeset: r76905:bc2c76a447dc Date: 2015-04-23 20:01 +0300 http://bitbucket.org/pypy/pypy/changeset/bc2c76a447dc/ Log:merge in object-dtype2, which provides an object dtype for numpy diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst --- a/pypy/doc/whatsnew-head.rst +++ b/pypy/doc/whatsnew-head.rst @@ -64,3 +64,6 @@ .. branch: vmprof .. Merged but then backed out, hopefully it will return as vmprof2 + +.. branch: object-dtype2 +Extend numpy dtypes to allow using objects with associated garbage collection hook diff --git a/pypy/goal/targetnumpystandalone.py b/pypy/goal/targetnumpystandalone.py deleted file mode 100644 --- a/pypy/goal/targetnumpystandalone.py +++ /dev/null @@ -1,43 +0,0 @@ - -""" Usage: - -./targetnumpystandalone-c array_size - -Will execute a give numpy bytecode. Arrays will be ranges (in float) modulo 10, -constants would be consecutive starting from one. - -Bytecode should contain letters 'a' 'l' and 'f' so far and be correct -""" - -import time -from pypy.module.micronumpy.compile import numpy_compile -from rpython.jit.codewriter.policy import JitPolicy -from rpython.rtyper.annlowlevel import hlstr - -def entry_point(argv): -if len(argv) != 3: -print __doc__ -return 1 -try: -size = int(argv[2]) -except ValueError: -print "INVALID LITERAL FOR INT:", argv[2] -print __doc__ -return 3 -t0 = time.time() -main(argv[0], size) -print "bytecode:", argv[0], "size:", size -print "took:", time.time() - t0 -return 0 - -def main(bc, size): -if not isinstance(bc, str): -bc = hlstr(bc) # for tests -a = numpy_compile(bc, size) -a = a.compute() - -def target(*args): -return entry_point, None - -def jitpolicy(driver): -return JitPolicy() diff --git a/pypy/module/micronumpy/__init__.py b/pypy/module/micronumpy/__init__.py --- a/pypy/module/micronumpy/__init__.py +++ b/pypy/module/micronumpy/__init__.py @@ -30,6 +30,9 @@ for c in ['MAXDIMS', 'CLIP', 'WRAP', 'RAISE']: interpleveldefs[c] = 'space.wrap(constants.%s)' % c +def startup(self, space): +from pypy.module.micronumpy.concrete import _setup +_setup() class UMathModule(MixedModule): appleveldefs = {} 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 @@ -34,11 +34,13 @@ @staticmethod def from_shape(space, shape, dtype, order='C', w_instance=None, zero=True): -from pypy.module.micronumpy import concrete +from pypy.module.micronumpy import concrete, descriptor, boxes from pypy.module.micronumpy.strides import calc_strides strides, backstrides = calc_strides(shape, dtype.base, order) impl = concrete.ConcreteArray(shape, dtype.base, order, strides, backstrides, zero=zero) +if dtype == descriptor.get_dtype_cache(space).w_objectdtype: +impl.fill(space, boxes.W_ObjectBox(space.w_None)) if w_instance: return wrap_impl(space, space.type(w_instance), w_instance, impl) return W_NDimArray(impl) @@ -123,7 +125,7 @@ def get_shape(self): return self.implementation.get_shape() -def get_dtype(self): +def get_dtype(self, space=None): return self.implementation.dtype def get_order(self): 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 @@ -607,6 +607,19 @@ #arr.storage[i] = arg[i] return W_UnicodeBox(arr, 0, arr.dtype) +class W_ObjectBox(W_GenericBox): +descr__new__, _get_dtype, descr_reduce = new_dtype_getter(NPY.OBJECT) + +def __init__(self, w_obj): +self.w_obj = w_obj + +def convert_to(self, space, dtype): +if dtype.is_bool(): +return W_BoolBox(space.bool_w(self.w_obj)) +return self # XXX + +def descr__getattr__(self, space, w_key): +return space.getattr(self.w_obj, w_key) W_GenericBox.typedef = TypeDef("numpy.generic", __new__ = interp2app(W_GenericBox.descr__new__.im_func), @@ -856,3 +869,9 @@ __new__ = interp2app(W_UnicodeBox.descr__new__unicode_box.im_func), __len__ = interp2app(W_UnicodeBox.descr_len), ) + +W_ObjectBox.typedef = TypeDef("numpy.object_", W_ObjectBox.typedef, +__new__ = interp2app(W_ObjectBox.descr__new__.im_func), +__getattr__ = interp2app(W_ObjectBox.descr__getattr__), +) + 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 @@ -3,7 +3,7 @@ """ import re from pypy.interpreter import special -from pypy.interpreter.baseobjspace import InternalSpaceCache, W_Root +from pypy.interpreter.baseobjspace import InternalSpaceCache, W_Root, ObjSpace
[pypy-commit] pypy default: skip one more object non-implemented feature
Author: mattip Branch: Changeset: r76906:86b0eb2de56f Date: 2015-04-23 22:24 +0300 http://bitbucket.org/pypy/pypy/changeset/86b0eb2de56f/ Log:skip one more object non-implemented feature diff --git a/pypy/module/micronumpy/test/test_selection.py b/pypy/module/micronumpy/test/test_selection.py --- a/pypy/module/micronumpy/test/test_selection.py +++ b/pypy/module/micronumpy/test/test_selection.py @@ -218,6 +218,7 @@ def test_sort_objects(self): # test object array sorts. +skip('object type not supported yet') from numpy import empty try: a = empty((101,), dtype=object) ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy default: fix astype creation to match memory layout of source array
Author: mattip Branch: Changeset: r76907:d198d926afb8 Date: 2015-04-23 22:24 +0300 http://bitbucket.org/pypy/pypy/changeset/d198d926afb8/ Log:fix astype creation to match memory layout of source array 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 @@ -328,8 +328,11 @@ return ArrayBuffer(self, readonly) def astype(self, space, dtype): -strides, backstrides = calc_strides(self.get_shape(), dtype, -self.order) +# we want to create a new array, but must respect the strides +# in self. So find a factor of the itemtype.elsize, and use this +factor = float(dtype.elsize) / self.dtype.elsize +strides = [int(factor*s) for s in self.get_strides()] +backstrides = [int(factor*s) for s in self.get_backstrides()] impl = ConcreteArray(self.get_shape(), dtype, self.order, strides, backstrides) loop.setslice(space, impl.get_shape(), impl, self) diff --git a/pypy/module/micronumpy/test/test_ndarray.py b/pypy/module/micronumpy/test/test_ndarray.py --- a/pypy/module/micronumpy/test/test_ndarray.py +++ b/pypy/module/micronumpy/test/test_ndarray.py @@ -2183,7 +2183,8 @@ assert b.dtype == 'bool' a = arange(6, dtype='f4').reshape(2,3) -b = a.astype('i4') +b = a.T.astype('i4') +assert (a.T.strides == b.strides) a = array('x').astype('S3').dtype assert a.itemsize == 3 ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy.org extradoc: update the values
Author: Armin Rigo Branch: extradoc Changeset: r595:fe9e99ca741b Date: 2015-04-23 22:36 +0200 http://bitbucket.org/pypy/pypy.org/changeset/fe9e99ca741b/ Log:update the values diff --git a/don4.html b/don4.html --- a/don4.html +++ b/don4.html @@ -9,7 +9,7 @@ $(function() { $("#progressbar").progressbar({ - value: 28.3 + value: 35.8 }); }); @@ -17,7 +17,7 @@ 2nd call: - $22674 of $8 (28.3%) + $28642 of $8 (35.8%) ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy py3k: Fix the _curses module to work with Python3.
Author: Amaury Forgeot d'Arc Branch: py3k Changeset: r76908:105de1f4b6b3 Date: 2015-04-23 23:24 +0200 http://bitbucket.org/pypy/pypy/changeset/105de1f4b6b3/ Log:Fix the _curses module to work with Python3. Also fix test_curses which is still in CPython3.2... Apply fix from CPython issue20358. diff --git a/lib-python/3/test/test_curses.py b/lib-python/3/test/test_curses.py --- a/lib-python/3/test/test_curses.py +++ b/lib-python/3/test/test_curses.py @@ -115,8 +115,8 @@ stdscr.notimeout(1) win2.overlay(win) win2.overwrite(win) -win2.overlay(win, 1, 2, 3, 3, 2, 1) -win2.overwrite(win, 1, 2, 3, 3, 2, 1) +win2.overlay(win, 1, 2, 2, 1, 3, 3) +win2.overwrite(win, 1, 2, 2, 1, 3, 3) stdscr.redrawln(1,2) stdscr.scrollok(1) diff --git a/lib_pypy/_curses.py b/lib_pypy/_curses.py --- a/lib_pypy/_curses.py +++ b/lib_pypy/_curses.py @@ -484,13 +484,13 @@ def _chtype(ch): return int(ffi.cast("chtype", ch)) -def _texttype(text): -if isinstance(text, str): +def _bytestype(text): +if isinstance(text, bytes): return text -elif isinstance(text, unicode): -return str(text) # default encoding +elif isinstance(text, str): +return text.encode() else: -raise TypeError("str or unicode expected, got a '%s' object" +raise TypeError("bytes or str expected, got a '%s' object" % (type(text).__name__,)) @@ -606,7 +606,7 @@ @_argspec(1, 1, 2) def addstr(self, y, x, text, attr=None): -text = _texttype(text) +text = _bytestype(text) if attr is not None: attr_old = lib.getattrs(self._win) lib.wattrset(self._win, attr) @@ -620,7 +620,7 @@ @_argspec(2, 1, 2) def addnstr(self, y, x, text, n, attr=None): -text = _texttype(text) +text = _bytestype(text) if attr is not None: attr_old = lib.getattrs(self._win) lib.wattrset(self._win, attr) @@ -799,7 +799,7 @@ @_argspec(1, 1, 2) def insstr(self, y, x, text, attr=None): -text = _texttype(text) +text = _bytestype(text) if attr is not None: attr_old = lib.getattrs(self._win) lib.wattrset(self._win, attr) @@ -813,7 +813,7 @@ @_argspec(2, 1, 2) def insnstr(self, y, x, text, n, attr=None): -text = _texttype(text) +text = _bytestype(text) if attr is not None: attr_old = lib.getattrs(self._win) lib.wattrset(self._win, attr) @@ -1221,7 +1221,7 @@ def putp(text): -text = _texttype(text) +text = _bytestype(text) return _check_ERR(lib.putp(text), "putp") @@ -1347,17 +1347,17 @@ def tigetflag(capname): _ensure_initialised_setupterm() -return lib.tigetflag(capname) +return lib.tigetflag(capname.encode()) def tigetnum(capname): _ensure_initialised_setupterm() -return lib.tigetnum(capname) +return lib.tigetnum(capname.encode()) def tigetstr(capname): _ensure_initialised_setupterm() -val = lib.tigetstr(capname) +val = lib.tigetstr(capname.encode()) if int(ffi.cast("intptr_t", val)) in (0, -1): return None return ffi.string(val) ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy can_cast: create W_Dtype.can_cast_to()
Author: Ronan Lamy Branch: can_cast Changeset: r76910:9e8922d9dce5 Date: 2015-04-23 20:32 +0100 http://bitbucket.org/pypy/pypy/changeset/9e8922d9dce5/ Log:create W_Dtype.can_cast_to() 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 @@ -302,7 +302,10 @@ @unwrap_spec(casting=str) def can_cast(space, w_from, w_totype, casting='safe'): -return space.w_True +target = as_dtype(space, w_totype) +origin = as_dtype(space, w_from) # XXX +return space.wrap(origin.can_cast_to(target)) + def as_dtype(space, w_arg): # roughly equivalent to CNumPy's PyArray_DescrConverter2 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 @@ -87,6 +87,9 @@ def box_complex(self, real, imag): return self.itemtype.box_complex(real, imag) +def can_cast_to(self, other): +return True + def coerce(self, space, w_item): return self.itemtype.coerce(space, self, w_item) ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy can_cast: extract as_dtype() from result_type() so it can be used in can_cast() as well
Author: Ronan Lamy Branch: can_cast Changeset: r76909:6048923edd3e Date: 2015-04-23 14:37 +0100 http://bitbucket.org/pypy/pypy/changeset/6048923edd3e/ Log:extract as_dtype() from result_type() so it can be used in can_cast() as well 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 @@ -296,21 +296,25 @@ raise oefmt(space.w_ValueError, "at least one array or dtype is required") result = None for w_arg in args_w: -if isinstance(w_arg, W_NDimArray): -dtype = w_arg.get_dtype() -elif isinstance(w_arg, W_GenericBox) or ( -space.isinstance_w(w_arg, space.w_int) or -space.isinstance_w(w_arg, space.w_float) or -space.isinstance_w(w_arg, space.w_complex) or -space.isinstance_w(w_arg, space.w_long) or -space.isinstance_w(w_arg, space.w_bool)): -dtype = ufuncs.find_dtype_for_scalar(space, w_arg) -else: -dtype = space.interp_w(descriptor.W_Dtype, -space.call_function(space.gettypefor(descriptor.W_Dtype), w_arg)) +dtype = as_dtype(space, w_arg) result = ufuncs.find_binop_result_dtype(space, result, dtype) return result @unwrap_spec(casting=str) def can_cast(space, w_from, w_totype, casting='safe'): return space.w_True + +def as_dtype(space, w_arg): +# roughly equivalent to CNumPy's PyArray_DescrConverter2 +if isinstance(w_arg, W_NDimArray): +return w_arg.get_dtype() +elif isinstance(w_arg, W_GenericBox) or ( +space.isinstance_w(w_arg, space.w_int) or +space.isinstance_w(w_arg, space.w_float) or +space.isinstance_w(w_arg, space.w_complex) or +space.isinstance_w(w_arg, space.w_long) or +space.isinstance_w(w_arg, space.w_bool)): +return ufuncs.find_dtype_for_scalar(space, w_arg) +else: +return space.interp_w(descriptor.W_Dtype, +space.call_function(space.gettypefor(descriptor.W_Dtype), w_arg)) diff --git a/pypy/module/micronumpy/test/test_ndarray.py b/pypy/module/micronumpy/test/test_ndarray.py --- a/pypy/module/micronumpy/test/test_ndarray.py +++ b/pypy/module/micronumpy/test/test_ndarray.py @@ -4049,4 +4049,3 @@ raises(TypeError, np.can_cast, 'i4', None) raises(TypeError, np.can_cast, None, 'i4') - ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy can_cast: hg merge default
Author: Ronan Lamy Branch: can_cast Changeset: r76911:1894fda8b437 Date: 2015-04-23 21:57 +0100 http://bitbucket.org/pypy/pypy/changeset/1894fda8b437/ Log:hg merge default diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst --- a/pypy/doc/whatsnew-head.rst +++ b/pypy/doc/whatsnew-head.rst @@ -5,12 +5,46 @@ .. this is a revision shortly after release-2.5.1 .. startrev: cb01edcb59414d9d93056e54ed060673d24e67c1 -Issue #2017: on non-Linux-x86 platforms, reduced the memory impact of +issue2005: +ignore errors on closing random file handles while importing a module (cpython compatibility) + +issue2013: +added constants to _ssl for TLS 1.1 and 1.2 + +issue2014: +Add PyLong_FromUnicode to cpyext. + +issue2017: +On non-Linux-x86 platforms, reduced the memory impact of creating a lot of greenlets/tasklets. Particularly useful on Win32 and on ARM, where you used to get a MemoryError after only 2500-5000 greenlets (the 32-bit address space is exhausted). +Update gdb_pypy for python3 (gdb comatability) + +Merged rstrategies into rpython which provides a library for Storage Strategies + +Support unicode strings in numpy.dtype creation i.e. np.dtype(u'int64') + +Various rpython cleanups for vmprof support + +issue2019: +Fix isspace as called by rpython unicode.strip() + +issue2023: +In the cpyext 'Concrete Object Layer' API, +don't call methods on the object (which can be overriden), +but directly on the concrete base type. + +issue2029: +Hide the default_factory attribute in a dict + +issue2027: +Better document pyinteractive and add --withmod-time + .. branch: gc-incminimark-pinning-improve + +branch gc-incminimark-pinning-improve: Object Pinning is now used in `bz2` and `rzlib` (therefore also affects Python's `zlib`). In case the data to compress/decompress is inside the nursery (incminimark) it no longer needs to create a non-moving copy of it. This saves @@ -18,8 +52,18 @@ is introduced (`PYPY_GC_MAX_PINNED`) primarily for debugging purposes. .. branch: refactor-pycall + +branch refactor-pycall: Make `*`-unpacking in RPython function calls completely equivalent to passing the tuple's elements as arguments. In other words, `f(*(a, b))` now behaves exactly like `f(a, b)`. .. branch: issue2018 +branch issue2018: +Allow prebuilt rpython dict with function values + +.. branch: vmprof +.. Merged but then backed out, hopefully it will return as vmprof2 + +.. branch: object-dtype2 +Extend numpy dtypes to allow using objects with associated garbage collection hook diff --git a/pypy/goal/targetnumpystandalone.py b/pypy/goal/targetnumpystandalone.py deleted file mode 100644 --- a/pypy/goal/targetnumpystandalone.py +++ /dev/null @@ -1,43 +0,0 @@ - -""" Usage: - -./targetnumpystandalone-c array_size - -Will execute a give numpy bytecode. Arrays will be ranges (in float) modulo 10, -constants would be consecutive starting from one. - -Bytecode should contain letters 'a' 'l' and 'f' so far and be correct -""" - -import time -from pypy.module.micronumpy.compile import numpy_compile -from rpython.jit.codewriter.policy import JitPolicy -from rpython.rtyper.annlowlevel import hlstr - -def entry_point(argv): -if len(argv) != 3: -print __doc__ -return 1 -try: -size = int(argv[2]) -except ValueError: -print "INVALID LITERAL FOR INT:", argv[2] -print __doc__ -return 3 -t0 = time.time() -main(argv[0], size) -print "bytecode:", argv[0], "size:", size -print "took:", time.time() - t0 -return 0 - -def main(bc, size): -if not isinstance(bc, str): -bc = hlstr(bc) # for tests -a = numpy_compile(bc, size) -a = a.compute() - -def target(*args): -return entry_point, None - -def jitpolicy(driver): -return JitPolicy() diff --git a/pypy/module/micronumpy/__init__.py b/pypy/module/micronumpy/__init__.py --- a/pypy/module/micronumpy/__init__.py +++ b/pypy/module/micronumpy/__init__.py @@ -31,6 +31,9 @@ for c in ['MAXDIMS', 'CLIP', 'WRAP', 'RAISE']: interpleveldefs[c] = 'space.wrap(constants.%s)' % c +def startup(self, space): +from pypy.module.micronumpy.concrete import _setup +_setup() class UMathModule(MixedModule): appleveldefs = {} 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 @@ -34,11 +34,13 @@ @staticmethod def from_shape(space, shape, dtype, order='C', w_instance=None, zero=True): -from pypy.module.micronumpy import concrete +from pypy.module.micronumpy import concrete, descriptor, boxes from pypy.module.micronumpy.strides import calc_strides strides, backstrides = calc_strides(shape, dtype.base, order) impl = concrete.ConcreteArray(shape, dtype.base, order, strides, backstrides, zero=zero) +if dtype == descriptor.get_dtype_cache(space).
[pypy-commit] pypy can_cast: remove num, kind, char from W_Dtype
Author: Ronan Lamy Branch: can_cast Changeset: r76914:05d75330bba0 Date: 2015-04-24 06:00 +0100 http://bitbucket.org/pypy/pypy/changeset/05d75330bba0/ Log:remove num, kind, char from W_Dtype 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 @@ -42,18 +42,12 @@ class W_Dtype(W_Root): _immutable_fields_ = [ -"itemtype?", "num", "kind", "char", "w_box_type", -"byteorder?", "names?", "fields?", "elsize?", "alignment?", -"shape?", "subdtype?", "base?", -] +"itemtype?", "w_box_type", "byteorder?", "names?", "fields?", +"elsize?", "alignment?", "shape?", "subdtype?", "base?"] -def __init__(self, itemtype, num, kind, char, w_box_type, - byteorder=None, names=[], fields={}, - elsize=None, shape=[], subdtype=None): +def __init__(self, itemtype, w_box_type, byteorder=None, names=[], + fields={}, elsize=None, shape=[], subdtype=None): self.itemtype = itemtype -self.num = num -self.kind = kind -self.char = char self.w_box_type = w_box_type if byteorder is None: if itemtype.get_element_size() == 1 or isinstance(itemtype, types.ObjectType): @@ -74,6 +68,18 @@ else: self.base = subdtype.base +@property +def num(self): +return self.itemtype.num + +@property +def kind(self): +return self.itemtype.kind + +@property +def char(self): +return self.itemtype.char + def __repr__(self): if self.fields: return '' % self.fields @@ -453,7 +459,7 @@ fields = self.fields if fields is None: fields = {} -return W_Dtype(itemtype, self.num, self.kind, self.char, +return W_Dtype(itemtype, self.w_box_type, byteorder=endian, elsize=self.elsize, names=self.names, fields=fields, shape=self.shape, subdtype=self.subdtype) @@ -488,8 +494,7 @@ fields[fldname] = (offset, subdtype) offset += subdtype.elsize names.append(fldname) -return W_Dtype(types.RecordType(space), NPY.VOID, NPY.VOIDLTR, NPY.VOIDLTR, - space.gettypefor(boxes.W_VoidBox), +return W_Dtype(types.RecordType(space), space.gettypefor(boxes.W_VoidBox), names=names, fields=fields, elsize=offset) @@ -556,7 +561,7 @@ if size == 1: return subdtype size *= subdtype.elsize -return W_Dtype(types.VoidType(space), NPY.VOID, NPY.VOIDLTR, NPY.VOIDLTR, +return W_Dtype(types.VoidType(space), space.gettypefor(boxes.W_VoidBox), shape=shape, subdtype=subdtype, elsize=size) @@ -657,7 +662,10 @@ except ValueError: raise oefmt(space.w_TypeError, "data type not understood") if char == NPY.CHARLTR: -return new_string_dtype(space, 1, NPY.CHARLTR) +return W_Dtype( +types.CharType(space), +elsize=1, +w_box_type=space.gettypefor(boxes.W_StringBox)) elif char == NPY.STRINGLTR or char == NPY.STRINGLTR2: return new_string_dtype(space, size) elif char == NPY.UNICODELTR: @@ -667,13 +675,10 @@ assert False -def new_string_dtype(space, size, char=NPY.STRINGLTR): +def new_string_dtype(space, size): return W_Dtype( types.StringType(space), elsize=size, -num=NPY.STRING, -kind=NPY.STRINGLTR, -char=char, w_box_type=space.gettypefor(boxes.W_StringBox), ) @@ -683,9 +688,6 @@ return W_Dtype( itemtype, elsize=size * itemtype.get_element_size(), -num=NPY.UNICODE, -kind=NPY.UNICODELTR, -char=NPY.UNICODELTR, w_box_type=space.gettypefor(boxes.W_UnicodeBox), ) @@ -694,9 +696,6 @@ return W_Dtype( types.VoidType(space), elsize=size, -num=NPY.VOID, -kind=NPY.VOIDLTR, -char=NPY.VOIDLTR, w_box_type=space.gettypefor(boxes.W_VoidBox), ) @@ -705,159 +704,93 @@ def __init__(self, space): self.w_booldtype = W_Dtype( types.Bool(space), -num=NPY.BOOL, -kind=NPY.GENBOOLLTR, -char=NPY.BOOLLTR, w_box_type=space.gettypefor(boxes.W_BoolBox), ) self.w_int8dtype = W_Dtype( types.Int8(space), -num=NPY.BYTE, -kind=NPY.SIGNEDLTR, -char=NPY.BYTELTR, w_box_type=space.gettypefor(boxes.W_Int8Box), ) self.w_uint8dtype = W_Dtype( types.UInt8(space), -num=NPY.UBYTE, -kind=NPY.UNSIGNEDLTR, -char=NPY.UBYTELTR, w_box_type=space.gettypefor(boxes.W_UInt8Box)
[pypy-commit] pypy can_cast: Add num, kind and char information to the itemtypes
Author: Ronan Lamy Branch: can_cast Changeset: r76913:0efb8027fc48 Date: 2015-04-24 04:18 +0100 http://bitbucket.org/pypy/pypy/changeset/0efb8027fc48/ Log:Add num, kind and char information to the itemtypes 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 @@ -22,6 +22,7 @@ from pypy.module.micronumpy import boxes from pypy.module.micronumpy.concrete import SliceArray, VoidBoxStorage, V_OBJECTSTORE from pypy.module.micronumpy.strides import calc_strides +from . import constants as NPY degToRad = math.pi / 180.0 log2 = math.log(2) @@ -316,6 +317,9 @@ class Bool(BaseType, Primitive): T = lltype.Bool +num = NPY.BOOL +kind = NPY.GENBOOLLTR +char = NPY.BOOLLTR BoxType = boxes.W_BoolBox format_code = "?" @@ -551,31 +555,49 @@ class Int8(BaseType, Integer): T = rffi.SIGNEDCHAR +num = NPY.BYTE +kind = NPY.SIGNEDLTR +char = NPY.BYTELTR BoxType = boxes.W_Int8Box format_code = "b" class UInt8(BaseType, Integer): T = rffi.UCHAR +num = NPY.UBYTE +kind = NPY.UNSIGNEDLTR +char = NPY.UBYTELTR BoxType = boxes.W_UInt8Box format_code = "B" class Int16(BaseType, Integer): T = rffi.SHORT +num = NPY.SHORT +kind = NPY.SIGNEDLTR +char = NPY.SHORTLTR BoxType = boxes.W_Int16Box format_code = "h" class UInt16(BaseType, Integer): T = rffi.USHORT +num = NPY.USHORT +kind = NPY.UNSIGNEDLTR +char = NPY.USHORTLTR BoxType = boxes.W_UInt16Box format_code = "H" class Int32(BaseType, Integer): T = rffi.INT +num = NPY.INT +kind = NPY.SIGNEDLTR +char = NPY.INTLTR BoxType = boxes.W_Int32Box format_code = "i" class UInt32(BaseType, Integer): T = rffi.UINT +num = NPY.UINT +kind = NPY.UNSIGNEDLTR +char = NPY.UINTLTR BoxType = boxes.W_UInt32Box format_code = "I" @@ -594,6 +616,9 @@ class Int64(BaseType, Integer): T = rffi.LONGLONG +num = NPY.LONGLONG +kind = NPY.SIGNEDLTR +char = NPY.LONGLONGLTR BoxType = boxes.W_Int64Box format_code = "q" @@ -615,6 +640,9 @@ class UInt64(BaseType, Integer): T = rffi.ULONGLONG +num = NPY.ULONGLONG +kind = NPY.UNSIGNEDLTR +char = NPY.ULONGLONGLTR BoxType = boxes.W_UInt64Box format_code = "Q" @@ -622,6 +650,9 @@ class Long(BaseType, Integer): T = rffi.LONG +num = NPY.LONG +kind = NPY.SIGNEDLTR +char = NPY.LONGLTR BoxType = boxes.W_LongBox format_code = "l" @@ -640,6 +671,9 @@ class ULong(BaseType, Integer): T = rffi.ULONG +num = NPY.ULONG +kind = NPY.UNSIGNEDLTR +char = NPY.ULONGLTR BoxType = boxes.W_ULongBox format_code = "L" @@ -974,6 +1008,9 @@ class Float16(BaseType, Float): _STORAGE_T = rffi.USHORT T = rffi.SHORT +num = NPY.HALF +kind = NPY.FLOATINGLTR +char = NPY.HALFLTR BoxType = boxes.W_Float16Box @specialize.argtype(1) @@ -1014,11 +1051,17 @@ class Float32(BaseType, Float): T = rffi.FLOAT +num = NPY.FLOAT +kind = NPY.FLOATINGLTR +char = NPY.FLOATLTR BoxType = boxes.W_Float32Box format_code = "f" class Float64(BaseType, Float): T = rffi.DOUBLE +num = NPY.DOUBLE +kind = NPY.FLOATINGLTR +char = NPY.DOUBLELTR BoxType = boxes.W_Float64Box format_code = "d" @@ -1592,28 +1635,43 @@ class Complex64(ComplexFloating, BaseType): T = rffi.FLOAT +num = NPY.CFLOAT +kind = NPY.COMPLEXLTR +char = NPY.CFLOATLTR BoxType = boxes.W_Complex64Box ComponentBoxType = boxes.W_Float32Box class Complex128(ComplexFloating, BaseType): T = rffi.DOUBLE +num = NPY.CDOUBLE +kind = NPY.COMPLEXLTR +char = NPY.CDOUBLELTR BoxType = boxes.W_Complex128Box ComponentBoxType = boxes.W_Float64Box if boxes.long_double_size == 8: class FloatLong(BaseType, Float): T = rffi.DOUBLE +num = NPY.LONGDOUBLE +kind = NPY.FLOATINGLTR +char = NPY.LONGDOUBLELTR BoxType = boxes.W_FloatLongBox format_code = "d" class ComplexLong(ComplexFloating, BaseType): T = rffi.DOUBLE +num = NPY.CLONGDOUBLE +kind = NPY.COMPLEXLTR +char = NPY.CLONGDOUBLELTR BoxType = boxes.W_ComplexLongBox ComponentBoxType = boxes.W_FloatLongBox elif boxes.long_double_size in (12, 16): class FloatLong(BaseType, Float): T = rffi.LONGDOUBLE +num = NPY.LONGDOUBLE +kind = NPY.FLOATINGLTR +char = NPY.LONGDOUBLELTR BoxType = boxes.W_FloatLongBox def runpack_str(self, space, s): @@ -1631,6 +1689,9 @@ class ComplexLong(ComplexFloating, BaseType): T = rffi.LONGDOUBLE +num = NPY.CLONGDOUBLE +kind = NPY.COMPLEXLTR +char = NPY.CLONGDOUBLELTR BoxType = boxes.W_ComplexLongBox
[pypy-commit] pypy can_cast: remove (almost) unused w_intpdtype and w_uintpdtype
Author: Ronan Lamy Branch: can_cast Changeset: r76912:c009ce07c90f Date: 2015-04-24 04:17 +0100 http://bitbucket.org/pypy/pypy/changeset/c009ce07c90f/ Log:remove (almost) unused w_intpdtype and w_uintpdtype 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 @@ -853,20 +853,6 @@ char=NPY.HALFLTR, w_box_type=space.gettypefor(boxes.W_Float16Box), ) -self.w_intpdtype = W_Dtype( -types.Long(space), -num=NPY.LONG, -kind=NPY.SIGNEDLTR, -char=NPY.INTPLTR, -w_box_type=space.gettypefor(boxes.W_LongBox), -) -self.w_uintpdtype = W_Dtype( -types.ULong(space), -num=NPY.ULONG, -kind=NPY.UNSIGNEDLTR, -char=NPY.UINTPLTR, -w_box_type=space.gettypefor(boxes.W_ULongBox), -) self.w_objectdtype = W_Dtype( types.ObjectType(space), num=NPY.OBJECT, @@ -932,7 +918,7 @@ self.w_int64dtype, self.w_uint64dtype, ] + float_dtypes + complex_dtypes + [ self.w_stringdtype, self.w_unicodedtype, self.w_voiddtype, -self.w_intpdtype, self.w_uintpdtype, self.w_objectdtype, +self.w_objectdtype, ] self.float_dtypes_by_num_bytes = sorted( (dtype.elsize, dtype) @@ -973,8 +959,7 @@ 'CLONGDOUBLE': self.w_complexlongdtype, #'DATETIME', 'UINT': self.w_uint32dtype, -'INTP': self.w_intpdtype, -'UINTP': self.w_uintpdtype, +'INTP': self.w_longdtype, 'HALF': self.w_float16dtype, 'BYTE': self.w_int8dtype, #'TIMEDELTA', ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] buildbot default: add anubis64
Author: mattip Branch: Changeset: r949:98c105c0aaef Date: 2015-04-24 08:14 +0300 http://bitbucket.org/pypy/buildbot/changeset/98c105c0aaef/ Log:add anubis64 diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -36,3 +36,4 @@ *-win-x86-64 slave/pypy-buildbot master/pypy-buildbot +*.swp diff --git a/bot2/pypybuildbot/master.py b/bot2/pypybuildbot/master.py --- a/bot2/pypybuildbot/master.py +++ b/bot2/pypybuildbot/master.py @@ -439,7 +439,7 @@ # 'category' : 'mac64', # }, {"name": WIN32, - "slavenames": ["SalsaSalsa", "allegro_win32"], + "slavenames": ["SalsaSalsa", "allegro_win32", "anubis64"], "builddir": WIN32, "factory": pypyOwnTestFactoryWin, "locks": [WinSlaveLock.access('counting')], @@ -453,7 +453,7 @@ "category": "win32", }, {"name" : JITWIN32, - "slavenames": ["SalsaSalsa", "allegro_win32"], + "slavenames": ["SalsaSalsa", "allegro_win32", "anubis64"], 'builddir' : JITWIN32, 'factory' : pypyJITTranslatedTestFactoryWin, "locks": [WinSlaveLock.access('counting')], ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy default: skip if translated, test is useful for development only
Author: mattip Branch: Changeset: r76915:8117b0f94004 Date: 2015-04-24 08:42 +0300 http://bitbucket.org/pypy/pypy/changeset/8117b0f94004/ Log:skip if translated, test is useful for development only diff --git a/pypy/module/micronumpy/test/test_object_arrays.py b/pypy/module/micronumpy/test/test_object_arrays.py --- a/pypy/module/micronumpy/test/test_object_arrays.py +++ b/pypy/module/micronumpy/test/test_object_arrays.py @@ -1,7 +1,12 @@ from pypy.module.micronumpy.test.test_base import BaseNumpyAppTest +from pypy.conftest import option class AppTestObjectDtypes(BaseNumpyAppTest): +def setup_class(cls): +BaseNumpyAppTest.setup_class.im_func(cls) +cls.w_runappdirect = cls.space.wrap(option.runappdirect) + def test_scalar_from_object(self): from numpy import array import sys @@ -109,6 +114,8 @@ def test_array_interface(self): import numpy as np +if self.runappdirect: +skip('requires numpy.core, test with numpy test suite instead') import sys class DummyArray(object): def __init__(self, interface, base=None): ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit