@@ -30,7 +30,7 @@ mod decl {
3030 active : PyRwLock < Option < PyIter > > ,
3131 }
3232
33- #[ pyclass( with( IterNext ) , flags( BASETYPE ) ) ]
33+ #[ pyclass( with( IterNext ) , flags( BASETYPE , HAS_DICT ) ) ]
3434 impl PyItertoolsChain {
3535 #[ pyslot]
3636 fn slot_new ( cls : PyTypeRef , args : FuncArgs , vm : & VirtualMachine ) -> PyResult {
@@ -69,7 +69,23 @@ mod decl {
6969 match source {
7070 Some ( source) => match active {
7171 Some ( active) => {
72- Ok ( vm. new_tuple ( ( cls, vm. ctx . empty_tuple . clone ( ) , ( source, active) ) ) )
72+ Ok ( vm. new_tuple ( ( cls, vm. ctx . empty_tuple . clone ( ) , ( ( source, active) ) ) ) )
73+ }
74+ None => Ok ( vm. new_tuple ( ( cls, vm. ctx . empty_tuple . clone ( ) , ( source, ) ) ) ) ,
75+ } ,
76+ None => Ok ( vm. new_tuple ( ( cls, vm. ctx . empty_tuple . clone ( ) ) ) ) ,
77+ }
78+ }
79+
80+ #[ pymethod( magic) ]
81+ fn reduce_ex ( zelf : PyRef < Self > , _proto : usize , vm : & VirtualMachine ) -> PyResult < PyTupleRef > {
82+ let source = zelf. source . read ( ) . clone ( ) ;
83+ let active = zelf. active . read ( ) . clone ( ) ;
84+ let cls = zelf. class ( ) . to_owned ( ) ;
85+ match source {
86+ Some ( source) => match active {
87+ Some ( active) => {
88+ Ok ( vm. new_tuple ( ( cls, vm. ctx . empty_tuple . clone ( ) , ( ( source, active) ) ) ) )
7389 }
7490 None => Ok ( vm. new_tuple ( ( cls, vm. ctx . empty_tuple . clone ( ) , ( source, ) ) ) ) ,
7591 } ,
0 commit comments