Commit 3cfcab95 authored by Alexandre Vassalotti's avatar Alexandre Vassalotti

Fix issue #4374: Pickle tests fail w/o _pickle extension.

Add an initialization check to mimic the interface of _pickle.
parent 44531cb2
...@@ -222,6 +222,11 @@ class _Pickler: ...@@ -222,6 +222,11 @@ class _Pickler:
def dump(self, obj): def dump(self, obj):
"""Write a pickled representation of obj to the open file.""" """Write a pickled representation of obj to the open file."""
# Check whether Pickler was initialized correctly. This is
# only needed to mimic the behavior of _pickle.Pickler.dump().
if not hasattr(self, "write"):
raise PicklingError("Pickler.__init__() was not called by "
"%s.__init__()" % (self.__class__.__name__,))
if self.proto >= 2: if self.proto >= 2:
self.write(PROTO + bytes([self.proto])) self.write(PROTO + bytes([self.proto]))
self.save(obj) self.save(obj)
...@@ -789,6 +794,11 @@ class _Unpickler: ...@@ -789,6 +794,11 @@ class _Unpickler:
Return the reconstituted object hierarchy specified in the file. Return the reconstituted object hierarchy specified in the file.
""" """
# Check whether Unpickler was initialized correctly. This is
# only needed to mimic the behavior of _pickle.Unpickler.dump().
if not hasattr(self, "read"):
raise UnpicklingError("Unpickler.__init__() was not called by "
"%s.__init__()" % (self.__class__.__name__,))
self.mark = object() # any new unique object self.mark = object() # any new unique object
self.stack = [] self.stack = []
self.append = self.stack.append self.append = self.stack.append
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment