[Numpy-discussion] ANN: Numpy 1.6.0 beta 2
Christoph Gohlke
cgohlke at uci.edu
Wed Apr 6 01:09:25 EDT 2011
On 4/5/2011 7:44 PM, Mark Wiebe wrote:
> On Tue, Apr 5, 2011 at 7:21 PM, Christoph Gohlke <cgohlke at uci.edu
> <mailto:cgohlke at uci.edu>> wrote:
>
>
>
> On 4/5/2011 6:46 PM, Mark Wiebe wrote:
> > On Tue, Apr 5, 2011 at 5:07 PM, Christoph Gohlke <cgohlke at uci.edu
> <mailto:cgohlke at uci.edu>
> > <mailto:cgohlke at uci.edu <mailto:cgohlke at uci.edu>>> wrote:
> >
> >
> >
> > On 4/5/2011 4:05 PM, Mark Wiebe wrote:
> > > On Mon, Apr 4, 2011 at 9:10 PM, Christoph Gohlke
> <cgohlke at uci.edu <mailto:cgohlke at uci.edu>
> > <mailto:cgohlke at uci.edu <mailto:cgohlke at uci.edu>>
> > > <mailto:cgohlke at uci.edu <mailto:cgohlke at uci.edu>
> <mailto:cgohlke at uci.edu <mailto:cgohlke at 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.
> >
> >
> > I've committed an attempted workaround using the %zd formatter,
> can you
> > check whether it works on 64-bit Windows Python 2.6 now?
> >
> > Thanks,
> > Mark
> >
>
> I have not tried but I do not expect it to work. According to
> <http://docs.python.org/c-api/string.html> the "%zd" format is 'exactly
> equivalent to printf("%zd")'. The 'z' prefix character is C99 AFAIK and
> not supported by Visual Studio compilers
> <http://msdn.microsoft.com/en-us/library/xdb9w69d%28v=VS.90%29.aspx>.
>
>
> I think there's a good chance it will work, since the CPython code is
> re-interpreting the format codes itself. In the Python 2.6 code, it
> looks like it will become %Id on Windows, which would be correct.
>
> -Mark
>
Agreed, it'll work if NPY_INTP_FMT is only used with certain Python
functions that use %Id instead of %zd on Windows. Then why not simply
define NPY_INTP_FMT as %zd?
- #if (PY_VERSION_HEX > 0x02060000)
- #define NPY_INTP_FMT "lld"
- #else
#define NPY_INTP_FMT "zd"
- #endif
That should work unless 64 bit numpy is run on a LLP64 platform with
Python < 2.5.
Christoph
More information about the NumPy-Discussion
mailing list