On Tue, Apr 5, 2011 at 5:07 PM, Christoph Gohlke <cgoh...@uci.edu> wrote:

>
>
> On 4/5/2011 4:05 PM, Mark Wiebe wrote:
> > On Mon, Apr 4, 2011 at 9:10 PM, Christoph Gohlke <cgoh...@uci.edu
> > <mailto:cgoh...@uci.edu>> wrote:
> >
> >
> >     <snip>
> >
> >     A few numpy tests fail on win-amd64:
> >
> >     <snip>
> >
> >
> ======================================================================
> >     FAIL: test_iterator.test_iter_broadcasting_errors
> >
> ----------------------------------------------------------------------
> >     Traceback (most recent call last):
> >        File "X:\Python26-x64\lib\site-packages\nose\case.py", line 187,
> in
> >     runTest
> >          self.test(*self.arg)
> >        File
> >
> "X:\Python26-x64\lib\site-packages\numpy\core\tests\test_iterator.py",
> >     line 639, in test_iter_broadcasting_errors
> >     'Message "%s" doesn\'t contain operand shape (2,3)' % msg)
> >        File "X:\Python26-x64\lib\site-packages\numpy\testing\utils.py",
> line
> >     34, in assert_
> >          raise AssertionError(msg)
> >     AssertionError: Message "non-broadcastable output operand with shape
> >     (%lld,%lld)
> >       doesn't match the broadcast shape (%lld,%lld,%lld)" doesn't contain
> >     operand shape (2,3)
> >
> >
> > I've pushed a fix for this to the 1.6.x branch, can you confirm that it
> > works on win-amd64?
> >
> > Thanks,
> > Mark
> >
> >     <snip>
> >
>
> Sorry, I forgot to mention that this test failed on 64-bit Python 2.6
> only. I now recognize it is due to a known issue with Python's
> PyErr_Format function <http://bugs.python.org/issue7228>. Unfortunately
> the fix will not be backported to Python 2.6. Maybe this test could be
> marked as known failure on win-amd64-py2.6?
>
> Could you please revert your changes or set the format specifier to
> "%lld"? "%I64d" is not supported by PyErr_Format.
>

This means PyString_Format and PyOS_snprintf support different sets of
formatting characters, which begs the question of which set of functions
should the NPY_*_FMT macros be intended for? Currently it looks like just
the NPY_INTP_FMT is used with PyString_Format/PyErr_Format, and the rest are
used with PyOS_snprintf. Also, in other places npy_intp variables are cast
to long and "%ld" is used instead of NPY_INTP_FMT. I suppose I'll just
change NPY_INTP_FMT unconditionally to "%lld" when it's long long, since
that's what the PyString_Format 2.7 documentation says is the correct
portable formatter.

-Mark


>
> Thanks,
>
> Christoph
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to