mirror of
https://github.com/python/cpython.git
synced 2025-10-10 00:43:41 +00:00
Blocked revisions 67002 via svnmerge
........ r67002 | hirokazu.yamamoto | 2008-10-23 09:37:33 +0900 | 1 line Issue #4183: Some tests didn't run with pickle.HIGHEST_PROTOCOL. ........
This commit is contained in:
parent
c1de4ccad7
commit
1543a22d86
2 changed files with 21 additions and 8 deletions
|
@ -345,6 +345,9 @@ class _Pickler:
|
|||
else:
|
||||
self.write(PERSID + str(pid).encode("ascii") + b'\n')
|
||||
|
||||
def _isiter(self, obj):
|
||||
return hasattr(obj, '__next__') and hasattr(obj, '__iter__')
|
||||
|
||||
def save_reduce(self, func, args, state=None,
|
||||
listitems=None, dictitems=None, obj=None):
|
||||
# This API is called by some subclasses
|
||||
|
@ -357,6 +360,16 @@ class _Pickler:
|
|||
if not hasattr(func, '__call__'):
|
||||
raise PicklingError("func from save_reduce() should be callable")
|
||||
|
||||
# Assert that listitems is an iterator
|
||||
if listitems is not None and not self._isiter(listitems):
|
||||
raise PicklingError("listitems from save_reduce() should be an "
|
||||
"iterator")
|
||||
|
||||
# Assert that dictitems is an iterator
|
||||
if dictitems is not None and not self._isiter(dictitems):
|
||||
raise PicklingError("dictitems from save_reduce() should be an "
|
||||
"iterator")
|
||||
|
||||
save = self.save
|
||||
write = self.write
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue