Skip to content

Commit 8dbc3a8

Browse files
committed
itertools.py zip_longest fix __reduce__ (account for empty / none iterators)
1 parent 0f8148a commit 8dbc3a8

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

graalpython/lib-graalpython/itertools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ def __new__(subtype, iter1, *args, fillvalue=None):
779779

780780
@__graalpython__.builtin_method
781781
def __reduce__(self):
782-
return type(self), tuple(self.iterators), self.fillvalue
782+
return type(self), tuple([(it if it else tuple()) for it in self.iterators]), self.fillvalue
783783

784784

785785
@__graalpython__.builtin_method

graalpython/lib-graalpython/object.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ def reduce_newobj(obj):
9090
try:
9191
getstate = obj.__getstate__
9292
except AttributeError:
93-
if getattr(type(obj), '__itemsize__', None):
93+
itemsize = getattr(type(obj), '__itemsize__', 0)
94+
if itemsize != 0:
9495
raise TypeError("cannot pickle '{}' object".format(type(obj).__name__))
9596

9697
state = getattr(obj, "__dict__", None)

0 commit comments

Comments
 (0)