Skip to content

Commit e91ac80

Browse files
committed
add reduce for chain
1 parent 1cb7f4d commit e91ac80

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

vm/src/stdlib/itertools.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,23 @@ mod decl {
6060
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
6161
PyGenericAlias::new(cls, args, vm)
6262
}
63+
64+
#[pymethod(magic)]
65+
fn reduce(zelf: PyRef<Self>, vm: &VirtualMachine) -> PyResult<PyTupleRef> {
66+
let source = zelf.source.read().clone();
67+
let active = zelf.active.read().clone();
68+
match source {
69+
Some(source) => {
70+
match active {
71+
Some(active) => {
72+
Ok(vm.new_tuple((zelf.class().clone(), vm.ctx.empty_tuple.clone(), (source, active))))
73+
},
74+
None => Ok(vm.new_tuple((zelf.class().clone(), vm.ctx.empty_tuple.clone(), (source, ))))
75+
}
76+
},
77+
None => Ok(vm.new_tuple((zelf.class().clone(), vm.ctx.empty_tuple.clone())))
78+
}
79+
}
6380
}
6481
impl IterNextIterable for PyItertoolsChain {}
6582
impl IterNext for PyItertoolsChain {

0 commit comments

Comments
 (0)