Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_memoryview.py @ 79691:05c8928362ee
Merge __next__ method link fixes with 3.3.
| author | Ezio Melotti <ezio.melotti@gmail.com> |
|---|---|
| date | Fri, 12 Oct 2012 13:46:37 +0300 |
| parents | ccaf827bbf4c |
| children | 0dc604d58949 |
| rev | line source |
|---|---|
|
43793
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
1 """Unit tests for the memoryview |
|
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
2 |
|
78650
ccaf827bbf4c
Fix out-of-date comment in test_memoryview.
Stefan Krah <skrah@bytereef.org>
parents:
77213
diff
changeset
|
3 Some tests are in test_bytes. Many tests that require _testbuffer.ndarray |
|
ccaf827bbf4c
Fix out-of-date comment in test_memoryview.
Stefan Krah <skrah@bytereef.org>
parents:
77213
diff
changeset
|
4 are in test_buffer. |
|
43793
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
5 """ |
|
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
6 |
|
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
7 import unittest |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
43793
diff
changeset
|
8 import test.support |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
9 import sys |
|
48928
696f5d8419f2
#3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48782
diff
changeset
|
10 import gc |
|
696f5d8419f2
#3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48782
diff
changeset
|
11 import weakref |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
12 import array |
|
67676
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
13 import io |
|
43793
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
14 |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
15 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
16 class AbstractMemoryTests: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
17 source_bytes = b"abcdef" |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
18 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
19 @property |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
20 def _source(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
21 return self.source_bytes |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
22 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
23 @property |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
24 def _types(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
25 return filter(None, [self.ro_type, self.rw_type]) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
26 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
27 def check_getitem_with_type(self, tp): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
28 b = tp(self._source) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
29 oldrefcount = sys.getrefcount(b) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
30 m = self._view(b) |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
31 self.assertEqual(m[0], ord(b"a")) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
32 self.assertIsInstance(m[0], int) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
33 self.assertEqual(m[5], ord(b"f")) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
34 self.assertEqual(m[-1], ord(b"f")) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
35 self.assertEqual(m[-6], ord(b"a")) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
36 # Bounds checking |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
37 self.assertRaises(IndexError, lambda: m[6]) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
38 self.assertRaises(IndexError, lambda: m[-7]) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
39 self.assertRaises(IndexError, lambda: m[sys.maxsize]) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
40 self.assertRaises(IndexError, lambda: m[-sys.maxsize]) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
41 # Type checking |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
42 self.assertRaises(TypeError, lambda: m[None]) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
43 self.assertRaises(TypeError, lambda: m[0.0]) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
44 self.assertRaises(TypeError, lambda: m["a"]) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
45 m = None |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
46 self.assertEqual(sys.getrefcount(b), oldrefcount) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
47 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
48 def test_getitem(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
49 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
50 self.check_getitem_with_type(tp) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
51 |
|
54828
b4d0c020e357
Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents:
50490
diff
changeset
|
52 def test_iter(self): |
|
b4d0c020e357
Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents:
50490
diff
changeset
|
53 for tp in self._types: |
|
b4d0c020e357
Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents:
50490
diff
changeset
|
54 b = tp(self._source) |
|
b4d0c020e357
Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents:
50490
diff
changeset
|
55 m = self._view(b) |
|
b4d0c020e357
Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents:
50490
diff
changeset
|
56 self.assertEqual(list(m), [m[i] for i in range(len(m))]) |
|
b4d0c020e357
Issue 6329: Fix iteration for memoryviews.
Raymond Hettinger <python@rcn.com>
parents:
50490
diff
changeset
|
57 |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
58 def test_setitem_readonly(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
59 if not self.ro_type: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
60 return |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
61 b = self.ro_type(self._source) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
62 oldrefcount = sys.getrefcount(b) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
63 m = self._view(b) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
64 def setitem(value): |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
65 m[0] = value |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
66 self.assertRaises(TypeError, setitem, b"a") |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
67 self.assertRaises(TypeError, setitem, 65) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
68 self.assertRaises(TypeError, setitem, memoryview(b"a")) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
69 m = None |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
70 self.assertEqual(sys.getrefcount(b), oldrefcount) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
71 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
72 def test_setitem_writable(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
73 if not self.rw_type: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
74 return |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
75 tp = self.rw_type |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
76 b = self.rw_type(self._source) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
77 oldrefcount = sys.getrefcount(b) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
78 m = self._view(b) |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
79 m[0] = ord(b'1') |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
80 self._check_contents(tp, b, b"1bcdef") |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
81 m[0:1] = tp(b"0") |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
82 self._check_contents(tp, b, b"0bcdef") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
83 m[1:3] = tp(b"12") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
84 self._check_contents(tp, b, b"012def") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
85 m[1:1] = tp(b"") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
86 self._check_contents(tp, b, b"012def") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
87 m[:] = tp(b"abcdef") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
88 self._check_contents(tp, b, b"abcdef") |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
89 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
90 # Overlapping copies of a view into itself |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
91 m[0:3] = m[2:5] |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
92 self._check_contents(tp, b, b"cdedef") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
93 m[:] = tp(b"abcdef") |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
94 m[2:5] = m[0:3] |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
95 self._check_contents(tp, b, b"ababcf") |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
96 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
97 def setitem(key, value): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
98 m[key] = tp(value) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
99 # Bounds checking |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
100 self.assertRaises(IndexError, setitem, 6, b"a") |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
101 self.assertRaises(IndexError, setitem, -7, b"a") |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
102 self.assertRaises(IndexError, setitem, sys.maxsize, b"a") |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
103 self.assertRaises(IndexError, setitem, -sys.maxsize, b"a") |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
104 # Wrong index/slice types |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
105 self.assertRaises(TypeError, setitem, 0.0, b"a") |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
106 self.assertRaises(TypeError, setitem, (0,), b"a") |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
107 self.assertRaises(TypeError, setitem, (slice(0,1,1), 0), b"a") |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
108 self.assertRaises(TypeError, setitem, (0, slice(0,1,1)), b"a") |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
109 self.assertRaises(TypeError, setitem, (0,), b"a") |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
110 self.assertRaises(TypeError, setitem, "a", b"a") |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
111 # Not implemented: multidimensional slices |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
112 slices = (slice(0,1,1), slice(0,1,2)) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
113 self.assertRaises(NotImplementedError, setitem, slices, b"a") |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
114 # Trying to resize the memory object |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
115 exc = ValueError if m.format == 'c' else TypeError |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
116 self.assertRaises(exc, setitem, 0, b"") |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
117 self.assertRaises(exc, setitem, 0, b"ab") |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
118 self.assertRaises(ValueError, setitem, slice(1,1), b"a") |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
119 self.assertRaises(ValueError, setitem, slice(0,2), b"a") |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
120 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
121 m = None |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
122 self.assertEqual(sys.getrefcount(b), oldrefcount) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
123 |
|
64362
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
124 def test_delitem(self): |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
125 for tp in self._types: |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
126 b = tp(self._source) |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
127 m = self._view(b) |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
128 with self.assertRaises(TypeError): |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
129 del m[1] |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
130 with self.assertRaises(TypeError): |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
131 del m[1:4] |
|
4547b1491169
Merged revisions 84408-84409 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
132 |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
133 def test_tobytes(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
134 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
135 m = self._view(tp(self._source)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
136 b = m.tobytes() |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
137 # This calls self.getitem_type() on each separate byte of b"abcdef" |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
138 expected = b"".join( |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
139 self.getitem_type(bytes([c])) for c in b"abcdef") |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
140 self.assertEqual(b, expected) |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
141 self.assertIsInstance(b, bytes) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
142 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
143 def test_tolist(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
144 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
145 m = self._view(tp(self._source)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
146 l = m.tolist() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
147 self.assertEqual(l, list(b"abcdef")) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
148 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
149 def test_compare(self): |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
150 # memoryviews can compare for equality with other objects |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
151 # having the buffer interface. |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
152 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
153 m = self._view(tp(self._source)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
154 for tp_comp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
155 self.assertTrue(m == tp_comp(b"abcdef")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
156 self.assertFalse(m != tp_comp(b"abcdef")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
157 self.assertFalse(m == tp_comp(b"abcde")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
158 self.assertTrue(m != tp_comp(b"abcde")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
159 self.assertFalse(m == tp_comp(b"abcde1")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
160 self.assertTrue(m != tp_comp(b"abcde1")) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
161 self.assertTrue(m == m) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
162 self.assertTrue(m == m[:]) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
163 self.assertTrue(m[0:6] == m[:]) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
164 self.assertFalse(m[0:5] == m) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
165 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
166 # Comparison with objects which don't support the buffer API |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
167 self.assertFalse(m == "abcdef") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
168 self.assertTrue(m != "abcdef") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
169 self.assertFalse("abcdef" == m) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
170 self.assertTrue("abcdef" != m) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
171 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
172 # Unordered comparisons |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
173 for c in (m, b"abcdef"): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
174 self.assertRaises(TypeError, lambda: m < c) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
175 self.assertRaises(TypeError, lambda: c <= m) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
176 self.assertRaises(TypeError, lambda: m >= c) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
177 self.assertRaises(TypeError, lambda: c > m) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
178 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
179 def check_attributes_with_type(self, tp): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
180 m = self._view(tp(self._source)) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
181 self.assertEqual(m.format, self.format) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
182 self.assertEqual(m.itemsize, self.itemsize) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
183 self.assertEqual(m.ndim, 1) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
184 self.assertEqual(m.shape, (6,)) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
185 self.assertEqual(len(m), 6) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
186 self.assertEqual(m.strides, (self.itemsize,)) |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
187 self.assertEqual(m.suboffsets, ()) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
188 return m |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
189 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
190 def test_attributes_readonly(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
191 if not self.ro_type: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
192 return |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
193 m = self.check_attributes_with_type(self.ro_type) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
194 self.assertEqual(m.readonly, True) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
195 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
196 def test_attributes_writable(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
197 if not self.rw_type: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
198 return |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
199 m = self.check_attributes_with_type(self.rw_type) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
200 self.assertEqual(m.readonly, False) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
201 |
|
48928
696f5d8419f2
#3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48782
diff
changeset
|
202 def test_getbuffer(self): |
|
696f5d8419f2
#3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48782
diff
changeset
|
203 # Test PyObject_GetBuffer() on a memoryview object. |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
204 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
205 b = tp(self._source) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
206 oldrefcount = sys.getrefcount(b) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
207 m = self._view(b) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
208 oldviewrefcount = sys.getrefcount(m) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
209 s = str(m, "utf-8") |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
210 self._check_contents(tp, b, s.encode("utf-8")) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
211 self.assertEqual(sys.getrefcount(m), oldviewrefcount) |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
212 m = None |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
213 self.assertEqual(sys.getrefcount(b), oldrefcount) |
|
48928
696f5d8419f2
#3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48782
diff
changeset
|
214 |
|
696f5d8419f2
#3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48782
diff
changeset
|
215 def test_gc(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
216 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
217 if not isinstance(tp, type): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
218 # If tp is a factory rather than a plain type, skip |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
219 continue |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
220 |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
221 class MyView(): |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
222 def __init__(self, base): |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
223 self.m = memoryview(base) |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
224 class MySource(tp): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
225 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
226 class MyObject: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
227 pass |
|
48928
696f5d8419f2
#3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48782
diff
changeset
|
228 |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
229 # Create a reference cycle through a memoryview object. |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
230 # This exercises mbuf_clear(). |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
231 b = MySource(tp(b'abc')) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
232 m = self._view(b) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
233 o = MyObject() |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
234 b.m = m |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
235 b.o = o |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
236 wr = weakref.ref(o) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
237 b = m = o = None |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
238 # The cycle must be broken |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
239 gc.collect() |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54828
diff
changeset
|
240 self.assertTrue(wr() is None, wr()) |
|
48928
696f5d8419f2
#3712: The memoryview object had a reference leak and didn't support cyclic garbage collection.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48782
diff
changeset
|
241 |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
242 # This exercises memory_clear(). |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
243 m = MyView(tp(b'abc')) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
244 o = MyObject() |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
245 m.x = m |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
246 m.o = o |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
247 wr = weakref.ref(o) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
248 m = o = None |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
249 # The cycle must be broken |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
250 gc.collect() |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
251 self.assertTrue(wr() is None, wr()) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
252 |
|
64584
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
253 def _check_released(self, m, tp): |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66310
diff
changeset
|
254 check = self.assertRaisesRegex(ValueError, "released") |
|
64584
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
255 with check: bytes(m) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
256 with check: m.tobytes() |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
257 with check: m.tolist() |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
258 with check: m[0] |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
259 with check: m[0] = b'x' |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
260 with check: len(m) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
261 with check: m.format |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
262 with check: m.itemsize |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
263 with check: m.ndim |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
264 with check: m.readonly |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
265 with check: m.shape |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
266 with check: m.strides |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
267 with check: |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
268 with m: |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
269 pass |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
270 # str() and repr() still function |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
271 self.assertIn("released memory", str(m)) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
272 self.assertIn("released memory", repr(m)) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
273 self.assertEqual(m, m) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
274 self.assertNotEqual(m, memoryview(tp(self._source))) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
275 self.assertNotEqual(m, tp(self._source)) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
276 |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
277 def test_contextmanager(self): |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
278 for tp in self._types: |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
279 b = tp(self._source) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
280 m = self._view(b) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
281 with m as cm: |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
282 self.assertIs(cm, m) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
283 self._check_released(m, tp) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
284 m = self._view(b) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
285 # Can release explicitly inside the context manager |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
286 with m: |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
287 m.release() |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
288 |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
289 def test_release(self): |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
290 for tp in self._types: |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
291 b = tp(self._source) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
292 m = self._view(b) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
293 m.release() |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
294 self._check_released(m, tp) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
295 # Can be called a second time (it's a no-op) |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
296 m.release() |
|
ba54096b7a42
Issue #9757: memoryview objects get a release() method to release the
Antoine Pitrou <solipsis@pitrou.net>
parents:
64360
diff
changeset
|
297 self._check_released(m, tp) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
298 |
|
67676
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
299 def test_writable_readonly(self): |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
300 # Issue #10451: memoryview incorrectly exposes a readonly |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
301 # buffer as writable causing a segfault if using mmap |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
302 tp = self.ro_type |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
303 if tp is None: |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
304 return |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
305 b = tp(self._source) |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
306 m = self._view(b) |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
307 i = io.BytesIO(b'ZZZZ') |
|
2fde5abfb5f1
Merged revisions 88097 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
308 self.assertRaises(TypeError, i.readinto, m) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
309 |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
310 def test_getbuf_fail(self): |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
311 self.assertRaises(TypeError, self._view, {}) |
|
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
312 |
|
73669
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
313 def test_hash(self): |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
314 # Memoryviews of readonly (hashable) types are hashable, and they |
|
75254
3f9b3b6f7ff0
- Issue #10181: New memoryview implementation fixes multiple ownership
Stefan Krah <skrah@bytereef.org>
parents:
73669
diff
changeset
|
315 # hash as hash(obj.tobytes()). |
|
73669
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
316 tp = self.ro_type |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
317 if tp is None: |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
318 self.skipTest("no read-only type to test") |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
319 b = tp(self._source) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
320 m = self._view(b) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
321 self.assertEqual(hash(m), hash(b"abcdef")) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
322 # Releasing the memoryview keeps the stored hash value (as with weakrefs) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
323 m.release() |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
324 self.assertEqual(hash(m), hash(b"abcdef")) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
325 # Hashing a memoryview for the first time after it is released |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
326 # results in an error (as with weakrefs). |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
327 m = self._view(b) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
328 m.release() |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
329 self.assertRaises(ValueError, hash, m) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
330 |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
331 def test_hash_writable(self): |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
332 # Memoryviews of writable types are unhashable |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
333 tp = self.rw_type |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
334 if tp is None: |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
335 self.skipTest("no writable type to test") |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
336 b = tp(self._source) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
337 m = self._view(b) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
338 self.assertRaises(ValueError, hash, m) |
|
215690b782f8
Issue #13411: memoryview objects are now hashable when the underlying object is hashable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
339 |
|
77213
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
340 def test_weakref(self): |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
341 # Check memoryviews are weakrefable |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
342 for tp in self._types: |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
343 b = tp(self._source) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
344 m = self._view(b) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
345 L = [] |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
346 def callback(wr, b=b): |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
347 L.append(b) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
348 wr = weakref.ref(m, callback) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
349 self.assertIs(wr(), m) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
350 del m |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
351 test.support.gc_collect() |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
352 self.assertIs(wr(), None) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
353 self.assertIs(L[0], b) |
|
bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
Richard Oudkerk <shibturn@gmail.com>
parents:
75254
diff
changeset
|
354 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
355 # Variations on source objects for the buffer: bytes-like objects, then arrays |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
356 # with itemsize > 1. |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
357 # NOTE: support for multi-dimensional objects is unimplemented. |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
358 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
359 class BaseBytesMemoryTests(AbstractMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
360 ro_type = bytes |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
361 rw_type = bytearray |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
362 getitem_type = bytes |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
363 itemsize = 1 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
364 format = 'B' |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
365 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
366 class BaseArrayMemoryTests(AbstractMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
367 ro_type = None |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
368 rw_type = lambda self, b: array.array('i', list(b)) |
|
64355
fa8b57f987c5
Issue #8990: array.fromstring() and array.tostring() get renamed to
Antoine Pitrou <solipsis@pitrou.net>
parents:
58473
diff
changeset
|
369 getitem_type = lambda self, b: array.array('i', list(b)).tobytes() |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
370 itemsize = array.array('i').itemsize |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
371 format = 'i' |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
372 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
373 def test_getbuffer(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
374 # XXX Test should be adapted for non-byte buffers |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
375 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
376 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
377 def test_tolist(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
378 # XXX NotImplementedError: tolist() only supports byte views |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
379 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
380 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
381 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
382 # Variations on indirection levels: memoryview, slice of memoryview, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
383 # slice of slice of memoryview. |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
384 # This is important to test allocation subtleties. |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
385 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
386 class BaseMemoryviewTests: |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
387 def _view(self, obj): |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
388 return memoryview(obj) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
389 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
390 def _check_contents(self, tp, obj, contents): |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
391 self.assertEqual(obj, tp(contents)) |
|
43793
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
392 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
393 class BaseMemorySliceTests: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
394 source_bytes = b"XabcdefY" |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
395 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
396 def _view(self, obj): |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
397 m = memoryview(obj) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
398 return m[1:7] |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
399 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
400 def _check_contents(self, tp, obj, contents): |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
401 self.assertEqual(obj[1:7], tp(contents)) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
402 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
403 def test_refs(self): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
404 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
405 m = memoryview(tp(self._source)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
406 oldrefcount = sys.getrefcount(m) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
407 m[1:2] |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
408 self.assertEqual(sys.getrefcount(m), oldrefcount) |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
409 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
410 class BaseMemorySliceSliceTests: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
411 source_bytes = b"XabcdefY" |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
412 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
413 def _view(self, obj): |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
414 m = memoryview(obj) |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
415 return m[:7][1:] |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
416 |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
417 def _check_contents(self, tp, obj, contents): |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
418 self.assertEqual(obj[1:7], tp(contents)) |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
419 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
420 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
421 # Concrete test classes |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
422 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
423 class BytesMemoryviewTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
424 BaseMemoryviewTests, BaseBytesMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
425 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
426 def test_constructor(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
427 for tp in self._types: |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
428 ob = tp(self._source) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54828
diff
changeset
|
429 self.assertTrue(memoryview(ob)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54828
diff
changeset
|
430 self.assertTrue(memoryview(object=ob)) |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
431 self.assertRaises(TypeError, memoryview) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
432 self.assertRaises(TypeError, memoryview, ob, ob) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
433 self.assertRaises(TypeError, memoryview, argument=ob) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
434 self.assertRaises(TypeError, memoryview, ob, argument=True) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
435 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
436 class ArrayMemoryviewTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
437 BaseMemoryviewTests, BaseArrayMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
438 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
439 def test_array_assign(self): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
440 # Issue #4569: segfault when mutating a memoryview with itemsize != 1 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
441 a = array.array('i', range(10)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
442 m = memoryview(a) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
443 new_a = array.array('i', range(9, -1, -1)) |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
444 m[:] = new_a |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
64362
diff
changeset
|
445 self.assertEqual(a, new_a) |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
446 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
447 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
448 class BytesMemorySliceTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
449 BaseMemorySliceTests, BaseBytesMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
450 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
451 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
452 class ArrayMemorySliceTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
453 BaseMemorySliceTests, BaseArrayMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
454 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
455 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
456 class BytesMemorySliceSliceTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
457 BaseMemorySliceSliceTests, BaseBytesMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
458 pass |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
459 |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
460 class ArrayMemorySliceSliceTest(unittest.TestCase, |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
461 BaseMemorySliceSliceTests, BaseArrayMemoryTests): |
|
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
462 pass |
|
48782
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
463 |
|
501256c54c84
Issue #2394: implement more of the memoryview API.
Antoine Pitrou <solipsis@pitrou.net>
parents:
47201
diff
changeset
|
464 |
|
43793
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
465 def test_main(): |
|
50490
26045ed0c26e
Merged revisions 68200 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
50083
diff
changeset
|
466 test.support.run_unittest(__name__) |
|
43793
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
467 |
|
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
468 if __name__ == "__main__": |
|
2d8d6855a602
Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
469 test_main() |
