Author: mattip <matti.pi...@gmail.com> Branch: numpy-1.10 Changeset: r80687:37a1526c81b5 Date: 2015-11-15 17:16 +0200 http://bitbucket.org/pypy/pypy/changeset/37a1526c81b5/
Log: start to add numpy-specific warnings 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 @@ -34,6 +34,7 @@ 'nditer': 'nditer.W_NDIter', 'set_docstring': 'support.descr_set_docstring', + 'VisibleDeprecationWarning': 'support.W_VisibleDeprecationWarning', } for c in ['MAXDIMS', 'CLIP', 'WRAP', 'RAISE']: interpleveldefs[c] = 'space.wrap(constants.%s)' % c 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 @@ -8,6 +8,17 @@ from pypy.objspace.std.typeobject import W_TypeObject from pypy.objspace.std.objspace import StdObjSpace from pypy.module.micronumpy import constants as NPY +from pypy.module.exceptions.interp_exceptions import _new_exception, W_UserWarning + +W_VisibleDeprecationWarning = _new_exception('VisibleDeprecationWarning', W_UserWarning, + """Visible deprecation warning. + + By default, python will not show deprecation warnings, so this class + can be used when a very visible warning is helpful, for example because + the usage is most likely a user bug. + + """) + def issequence_w(space, w_obj): from pypy.module.micronumpy.base import W_NDimArray diff --git a/pypy/module/micronumpy/test/test_deprecations.py b/pypy/module/micronumpy/test/test_deprecations.py new file mode 100644 --- /dev/null +++ b/pypy/module/micronumpy/test/test_deprecations.py @@ -0,0 +1,31 @@ +import py +import sys + +from pypy.module.micronumpy.test.test_base import BaseNumpyAppTest + + +class AppTestDeprecations(BaseNumpyAppTest): + spaceconfig = dict(usemodules=["micronumpy", "struct", "binascii"]) + + def test_getitem(self): + import numpy as np + import warnings + warnings.simplefilter('error', np.VisibleDeprecationWarning) + try: + arr = np.ones((5, 4, 3)) + index = np.array([True]) + #self.assert_deprecated(arr.__getitem__, args=(index,)) + raises(np.VisibleDeprecationWarning, arr.__getitem__, index) + + index = np.array([False] * 6) + #self.assert_deprecated(arr.__getitem__, args=(index,)) + raises(np.VisibleDeprecationWarning, arr.__getitem__, index) + + index = np.zeros((4, 4), dtype=bool) + #self.assert_deprecated(arr.__getitem__, args=(index,)) + raises(np.VisibleDeprecationWarning, arr.__getitem__, index) + #self.assert_deprecated(arr.__getitem__, args=((slice(None), index),)) + raises(np.VisibleDeprecationWarning, arr.__getitem__, (slice(None), index)) + finally: + warnings.simplefilter('default', np.VisibleDeprecationWarning) + _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit