Skip to content

Commit 46fa9f9

Browse files
committed
add __delitem__() funtion
1 parent fabcfa6 commit 46fa9f9

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

extra_tests/snippets/builtin_memoryview.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,17 @@ def test_resizable():
6969
b.append(7)
7070

7171
test_resizable()
72+
73+
def test_delitem():
74+
a = b'abc'
75+
b = memoryview(a)
76+
assert_raises(TypeError, lambda : b.__delitem__())
77+
assert_raises(TypeError, lambda : b.__delitem__(0))
78+
assert_raises(TypeError, lambda : b.__delitem__(10))
79+
a = bytearray(b'abc')
80+
b = memoryview(a)
81+
assert_raises(TypeError, lambda : b.__delitem__())
82+
assert_raises(TypeError, lambda : b.__delitem__(1))
83+
assert_raises(TypeError, lambda : b.__delitem__(12))
84+
85+
test_delitem()

vm/src/builtins/memory.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,14 @@ impl PyMemoryView {
362362
self.pack_single(pos, value, vm)
363363
}
364364

365+
#[pymethod(magic)]
366+
fn delitem(&self, _needle: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> {
367+
if self.desc.readonly {
368+
return Err(vm.new_type_error("cannot modify read-only memory".to_owned()));
369+
}
370+
Err(vm.new_type_error("cannot delete memory".to_owned()))
371+
}
372+
365373
#[pymethod(magic)]
366374
fn setitem(
367375
zelf: PyRef<Self>,

0 commit comments

Comments
 (0)