[Cython] "relaxed_strides" test broken with NumPy 1.8

Nathaniel Smith njs at pobox.com
Sat Jan 4 18:36:14 CET 2014


On 4 Jan 2014 17:07, "Robert Bradshaw" <robertwb at gmail.com> wrote:
>
> Yes, that'd be good. Do you know how? I won't have time to look at this
'till next week.

Something like

if not np.ones((10, 1), order="C").flags.f_contiguous:
  # numpy without relaxed stride support
  raise SkipTest

> On Jan 4, 2014 9:54 AM, "Nathaniel Smith" <njs at pobox.com> wrote:
>>
>> On 4 Jan 2014 11:53, "Stefan Behnel" <stefan_ml at behnel.de> wrote:
>> >
>> > mark florisson, 03.01.2014 23:28:
>> > > On 3 January 2014 18:22, Stefan Behnel wrote:
>> > >> I enabled the NumPy build for our Py3.3 test runs and while I was
at it, I
>> > >> got it to use the latest NumPy release 1.8. This made one of the
tests fail:
>> > >>
>> > >> """
>> > >>     Traceback (most recent call last):
>> > >>       File ".../doctest.py", line 1313, in __run
>> > >>         compileflags, 1), test.globs)
>> > >>       File "<doctest relaxed_strides.__test__.test_one_sized (line
>> > >> 29)[3]>", line 1, in <module>
>> > >>         test_one_sized(a)[0]
>> > >>       File "relaxed_strides.pyx", line 38, in
>> > >> relaxed_strides.test_one_sized (relaxed_strides.cpp:1414)
>> > >>       File "stringsource", line 622, in
View.MemoryView.memoryview_cwrapper
>> > >> (relaxed_strides.cpp:7568)
>> > >>       File "stringsource", line 327, in
>> > >> View.MemoryView.memoryview.__cinit__ (relaxed_strides.cpp:3717)
>> > >>
>> > >>     ValueError: ndarray is not C-contiguous
>> > >> """
>> > >>
>> > >>
https://sage.math.washington.edu:8091/hudson/job/cython-devel-tests/1787/ARCH=m64,BACKEND=cpp,PYVERSION=py33m/console
>> > >>
>> > >> According to the comments in the test file and the corresponding
NumPy pull
>> > >> request, this seems to be somewhat expected.
>> > >>
>> > >>
https://github.com/cython/cython/blob/master/tests/memoryview/relaxed_strides.pyx
>> > >>
>> > >> https://github.com/numpy/numpy/pull/3162
>> > >>
>> > >> Does someone know enough about this to figure out what to do?
>> > >
>> > > It seems to come from the call to __Pyx_GetBuffer, which is
>> > > PyObject_GetBuffer in python 3. Maybe this is Python 3 not checking
>> > > for an extent of 1, but instead only checking the stride (which is a
>> > > multiple of the itemsize)?
>> >
>> > No, Py3 doesn't do any validation here, it does a straight call into
the
>> > object's slot function, i.e. into the NumPy array itself.
>> >
>> > So, the question is: who's wrong here? The test or NumPy?
>> >
>> > Hmm, or maybe just me. I didn't define the NPY_RELAXED_STRIDES_CHECKING
>> > environment variable for the NumPy build. Let's try that first.
>> >
>> >
http://docs.scipy.org/doc/numpy/release.html#npy-relaxed-strides-checking
>>
>> It's probably nicer though to write the Cython tests in such a way that
they can pass against a default numpy installation? To avoid user confusion
and all that.
>>
>> If those tests depend on numpy having relaxed strides enabled, then I'd
suggest checking for this a test time and skipping the tests if not found.
The relaxed strides docs give a recipe for determining how numpy was built.
>>
>> -n
>>
>>
>> _______________________________________________
>> cython-devel mailing list
>> cython-devel at python.org
>> https://mail.python.org/mailman/listinfo/cython-devel
>>
>
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> https://mail.python.org/mailman/listinfo/cython-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cython-devel/attachments/20140104/0a3709bc/attachment.html>


More information about the cython-devel mailing list