[Python-Dev] Hashable memoryviews (original) (raw)

Antoine Pitrou solipsis at pitrou.net
Sun Nov 13 13:08:11 CET 2011


On Sun, 13 Nov 2011 13:05:24 +0100 Stefan Krah <stefan at bytereef.org> wrote:

Nick Coghlan <ncoghlan at gmail.com> wrote: > > With slices or the new casts (See: http://bugs.python.org/issue5231, > > implemented in http://hg.python.org/features/pep-3118#memoryview ), > > it is possible to have different hashes for equal objects: > > Note that Antoine isn't suggesting that the underlying hash be used > as the memoryview's hash (that would be calculated according to the > same rules as the equality comparison). Instead, the ability to hash > the underlying object would just gate whether or not you could hash > the memoryview at all.

I think they necessarily have to use the same hash, since: exporter = m1 ==> hash(exporter) = hash(m1) m1 = m2 ==> hash(m1) = hash(m2) Am I missing something?

The hash must simply be calculated using the same algorithm (which can even be shared as a subroutine). It's already the case for more complicated types:

hash(1) == hash(1.0) == hash(Decimal(1)) == hash(Fraction(1)) True

Also, I think it's reasonable to limit hashability to one-dimensional memoryviews.

Regards

Antoine.



More information about the Python-Dev mailing list