From 312d85bcde3f79bb157d07944c6bd67d5da057a2 Mon Sep 17 00:00:00 2001 From: Hyun Park Date: Sat, 21 May 2022 15:25:56 +0900 Subject: [PATCH 1/3] add filter.__reduce__ --- Lib/test/test_builtin.py | 2 -- vm/src/builtins/filter.rs | 7 ++++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 8f5b8f0e171..cac2105b6aa 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -658,8 +658,6 @@ def badfunc(): self.assertEqual(list(filter(lambda x: x>=3, (1, 2, 3, 4))), [3, 4]) self.assertRaises(TypeError, list, filter(42, (1, 2))) - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_filter_pickle(self): for proto in range(pickle.HIGHEST_PROTOCOL + 1): f1 = filter(filter_char, "abcdeabcde") diff --git a/vm/src/builtins/filter.rs b/vm/src/builtins/filter.rs index 1455aec8c03..8c1d5f6898a 100644 --- a/vm/src/builtins/filter.rs +++ b/vm/src/builtins/filter.rs @@ -37,7 +37,12 @@ impl Constructor for PyFilter { } #[pyimpl(with(IterNext, Constructor), flags(BASETYPE))] -impl PyFilter {} +impl PyFilter { + #[pymethod(magic)] + fn reduce(&self, vm: &VirtualMachine) -> (PyTypeRef, (PyObjectRef, PyIter)) { + (vm.ctx.types.filter_type.clone(), (self.predicate.clone(), self.iterator.clone())) + } +} impl IterNextIterable for PyFilter {} impl IterNext for PyFilter { From a1b6e7e79388fb75ccdd54d91398c9275da2cb0b Mon Sep 17 00:00:00 2001 From: Hyun Park Date: Sat, 21 May 2022 15:44:35 +0900 Subject: [PATCH 2/3] formatting filter.rs --- vm/src/builtins/filter.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vm/src/builtins/filter.rs b/vm/src/builtins/filter.rs index 8c1d5f6898a..39bf70e57e4 100644 --- a/vm/src/builtins/filter.rs +++ b/vm/src/builtins/filter.rs @@ -40,7 +40,10 @@ impl Constructor for PyFilter { impl PyFilter { #[pymethod(magic)] fn reduce(&self, vm: &VirtualMachine) -> (PyTypeRef, (PyObjectRef, PyIter)) { - (vm.ctx.types.filter_type.clone(), (self.predicate.clone(), self.iterator.clone())) + ( + vm.ctx.types.filter_type.clone(), + (self.predicate.clone(), self.iterator.clone()), + ) } } From 8ca25e57b9789ba3b0af6e75ceb5927ef85bcbb1 Mon Sep 17 00:00:00 2001 From: Hyun Park Date: Sat, 21 May 2022 16:20:08 +0900 Subject: [PATCH 3/3] Update test_itertools.py --- Lib/test/test_itertools.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index 652ffdde10a..7fa961f8557 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -856,8 +856,6 @@ def keyfunc(obj): keyfunc.skip = 1 self.assertRaises(ExpectedError, gulp, [None, None], keyfunc) - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_filter(self): self.assertEqual(list(filter(isEven, range(6))), [0,2,4]) self.assertEqual(list(filter(None, [0,1,0,2,0])), [1,2])