On Tue, Dec 27, 2011 at 01:22, Andreas Kloeckner
<li...@informa.tiker.net> wrote:
> Hi all,
>
> Two questions:
>
> - Are dtypes supposed to be comparable (i.e. implement '==', '!=')?

Yes.

> - Are dtypes supposed to be hashable?

Yes, with caveats. Strictly speaking, we violate the condition that
objects that equal each other should hash equal since we define == to
be rather free. Namely,

  np.dtype(x) == x

for all objects x that can be converted to a dtype.

  np.dtype(float) == np.dtype('float')
  np.dtype(float) == float
  np.dtype(float) == 'float'

Since hash(float) != hash('float') we cannot implement
np.dtype.__hash__() to follow the stricture that objects that compare
equal should hash equal.

However, if you restrict the domain of objects to just dtypes (i.e.
only consider dicts that use only actual dtype objects as keys instead
of arbitrary mixtures of objects), then the stricture is obeyed. This
is a useful domain that is used internally in numpy.

Is this the problem that you found?

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to