[Numpy-discussion] bug in dtype.__eq__ method ?
Zbyszek Szmek
zbyszek at in.waw.pl
Wed Aug 25 16:14:27 EDT 2010
On Wed, Aug 25, 2010 at 12:41:37PM -0500, Travis Oliphant wrote:
>
> On Aug 23, 2010, at 11:55 AM, Zbyszek Szmek wrote:
>
> > On Mon, Aug 23, 2010 at 06:50:09PM +0200, Tiziano Zito wrote:
> >> hi all,
> >> we just noticed the following weird thing:
> >>
> >> $ python
> >> Python 2.6.6rc2 (r266rc2:84114, Aug 18 2010, 07:33:44)
> >> [GCC 4.4.5 20100816 (prerelease)] on linux2
> >> Type "help", "copyright", "credits" or "license" for more information.
> >>>>> import numpy
> >>>>> numpy.version.version
> >> '2.0.0.dev8469'
> > Also with numpy.version.version == 1.3.0.
>
> This certainly looks odd. If you can file a bug-report that would be great.
arraydescr_richcompare calls PyArray_DescrConverter, which converts None
to PyArray_DEFAULT...
/*NUMPY_API
* Get typenum from an object -- None goes to PyArray_DEFAULT
* This function takes a Python object representing a type and converts it
* to a the correct PyArray_Descr * structure to describe the type.
*
* Many objects can be used to represent a data-type which in NumPy is
* quite a flexible concept.
*
* This is the central code that converts Python objects to
* Type-descriptor objects that are used throughout numpy.
* new reference in *at
*/
NPY_NO_EXPORT int
PyArray_DescrConverter(PyObject *obj, PyArray_Descr **at)
So:
>>> numpy.dtype('float32') == '<f4'
True
>>> numpy.dtype('float32') == 'float64'
False
>>> numpy.dtype('float32') == 'float32'
True
>>> numpy.dtype('float32') == 'float33'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: data type not understood
I think that this automatic conversion is pretty dangerous, especially in case
of None.
Best,
Zbyszek
More information about the NumPy-Discussion
mailing list