Kaydet (Commit) dbf56c2e authored tarafından Stefan Krah's avatar Stefan Krah

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

üst 49dc1d40
...@@ -2376,8 +2376,8 @@ copying. ...@@ -2376,8 +2376,8 @@ copying.
>>> data >>> data
bytearray(b'z1spam') bytearray(b'z1spam')
Memoryviews of hashable (read-only) types are also hashable. The hash Memoryviews of hashable (read-only) types with formats 'B', 'b' or 'c'
is defined as ``hash(m) == hash(m.tobytes())``:: are also hashable. The hash is defined as ``hash(m) == hash(m.tobytes())``::
>>> v = memoryview(b'abcefg') >>> v = memoryview(b'abcefg')
>>> hash(v) == hash(b'abcefg') >>> hash(v) == hash(b'abcefg')
...@@ -2387,21 +2387,13 @@ copying. ...@@ -2387,21 +2387,13 @@ copying.
>>> hash(v[::-2]) == hash(b'abcefg'[::-2]) >>> hash(v[::-2]) == hash(b'abcefg'[::-2])
True 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 .. 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: :class:`memoryview` has several methods:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment