diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py index 8fcd12bbfa..70fff5d0be 100644 --- a/Lib/test/test_array.py +++ b/Lib/test/test_array.py @@ -30,8 +30,6 @@ def __init__(self, typecode, newarg=None): class MiscTest(unittest.TestCase): - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_array_is_sequence(self): self.assertIsInstance(array.array("B"), collections.abc.MutableSequence) self.assertIsInstance(array.array("B"), collections.abc.Reversible) diff --git a/stdlib/src/array.rs b/stdlib/src/array.rs index 26f5cd39f4..cba0eb2fda 100644 --- a/stdlib/src/array.rs +++ b/stdlib/src/array.rs @@ -1,4 +1,32 @@ -pub(crate) use array::make_module; +use rustpython_vm::{PyObjectRef, VirtualMachine}; + +pub(crate) fn make_module(vm: &VirtualMachine) -> PyObjectRef { + let module = array::make_module(vm); + + let array = module + .get_attr("array", vm) + .expect("Expect array has array type."); + + let collections_abc = vm + .import("collections.abc", None, 0) + .expect("Expect collections exist."); + let abc = collections_abc + .get_attr("abc", vm) + .expect("Expect collections has abc submodule."); + let mutable_sequence = abc + .get_attr("MutableSequence", vm) + .expect("Expect collections.abc has MutableSequence type."); + + vm.invoke( + &mutable_sequence + .get_attr("register", vm) + .expect("Expect collections.abc.MutableSequence has register method."), + (array,), + ) + .expect("Expect collections.abc.MutableSequence.register(array.array) not fail."); + + module +} #[pymodule(name = "array")] mod array {