Issue #15814: Document planned restrictions for memoryview hashes in 3.3.1.

This commit is contained in:
Stefan Krah 2012-09-01 14:34:45 +02:00
parent 49dc1d4013
commit dbf56c2ef3
1 changed files with 7 additions and 15 deletions

View File

@ -2376,8 +2376,8 @@ copying.
>>> data
bytearray(b'z1spam')
Memoryviews of hashable (read-only) types are also hashable. The hash
is defined as ``hash(m) == hash(m.tobytes())``::
Memoryviews of hashable (read-only) types with formats 'B', 'b' or 'c'
are also hashable. The hash is defined as ``hash(m) == hash(m.tobytes())``::
>>> v = memoryview(b'abcefg')
>>> hash(v) == hash(b'abcefg')
@ -2387,21 +2387,13 @@ copying.
>>> hash(v[::-2]) == hash(b'abcefg'[::-2])
True
Hashing of multi-dimensional objects is supported::
>>> buf = bytes(list(range(12)))
>>> x = memoryview(buf)
>>> y = x.cast('B', shape=[2,2,3])
>>> x.tolist()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>> y.tolist()
[[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]]
>>> hash(x) == hash(y) == hash(y.tobytes())
True
.. versionchanged:: 3.3
Memoryview objects are now hashable.
Memoryview objects with formats 'B', 'b' or 'c' are now hashable.
.. note::
Hashing of memoryviews with formats other than 'B', 'b' or 'c' is
possible in version 3.3.0, but will raise an error in 3.3.1 in order
to be compatible with the new memoryview equality definition.
:class:`memoryview` has several methods: