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:
Hirokazu Yamamoto 2008-11-04 00:31:31 +00:00
parent c1de4ccad7
commit 1543a22d86
2 changed files with 21 additions and 8 deletions

View file

@ -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