Merge pull request #3451 from waroad/enumerate_add_reduce

add reduce in enumerate
This commit is contained in:
Jeong YunWon
2021-11-21 09:42:34 +09:00
committed by GitHub
2 changed files with 9 additions and 3 deletions

View File

@@ -94,8 +94,6 @@ class EnumerateTestCase(unittest.TestCase, PickleTest):
self.assertEqual(list(self.enum(self.seq)), self.res)
self.enum.__doc__
# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_pickle(self):
self.check_pickle(self.enum(self.seq), self.res)

View File

@@ -4,7 +4,8 @@ use crate::{
function::{IntoPyObject, OptionalArg},
protocol::{PyIter, PyIterReturn},
types::{Constructor, IterNext, IterNextIterable},
ItemProtocol, PyClassImpl, PyContext, PyObjectRef, PyResult, PyValue, VirtualMachine,
ItemProtocol, PyClassImpl, PyContext, PyObjectRef, PyRef, PyResult, PyValue, TypeProtocol,
VirtualMachine,
};
use num_bigint::BigInt;
use num_traits::Zero;
@@ -52,6 +53,13 @@ impl PyEnumerate {
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
#[pymethod(magic)]
fn reduce(zelf: PyRef<Self>) -> (PyTypeRef, (PyIter, BigInt)) {
(
zelf.clone_class(),
(zelf.iterator.clone(), zelf.counter.read().clone()),
)
}
}
impl IterNextIterable for PyEnumerate {}