diff --git a/tests/snippets/bytes.py b/tests/snippets/bytes.py index a0cc348db..1fcbae3ab 100644 --- a/tests/snippets/bytes.py +++ b/tests/snippets/bytes.py @@ -588,3 +588,12 @@ assert ( b"they're bill's friends from the UK".title() == b"They'Re Bill'S Friends From The Uk" ) + + +# repeat by multiply +a = b'abcd' +assert a * 0 == b'' +assert a * -1 == b'' +assert a * 1 == b'abcd' +assert a * 3 == b'abcdabcdabcd' +assert 3 * a == b'abcdabcdabcd' diff --git a/vm/src/obj/objbytes.rs b/vm/src/obj/objbytes.rs index 9cb44f4f8..102c70d4f 100644 --- a/vm/src/obj/objbytes.rs +++ b/vm/src/obj/objbytes.rs @@ -403,6 +403,16 @@ impl PyBytesRef { fn title(self, vm: &VirtualMachine) -> PyResult { Ok(vm.ctx.new_bytes(self.inner.title())) } + + #[pymethod(name = "__mul__")] + fn repeat(self, n: PyIntRef, vm: &VirtualMachine) -> PyResult { + Ok(vm.ctx.new_bytes(self.inner.repeat(n, vm)?)) + } + + #[pymethod(name = "__rmul__")] + fn rmul(self, n: PyIntRef, vm: &VirtualMachine) -> PyResult { + self.repeat(n, vm) + } } #[pyclass]