]> granicus.if.org Git - python/commitdiff
Fix issue #4374: Pickle tests fail w/o _pickle extension.
authorAlexandre Vassalotti <alexandre@peadrop.com>
Sat, 27 Dec 2008 09:30:39 +0000 (09:30 +0000)
committerAlexandre Vassalotti <alexandre@peadrop.com>
Sat, 27 Dec 2008 09:30:39 +0000 (09:30 +0000)
Add an initialization check to mimic the interface of _pickle.

Lib/pickle.py

index 37c3d5262fca2723146af0d5f0dfb80a740ffb8a..201dc9914bc72ac47d3e31269d13850c50433e53 100644 (file)
@@ -222,6 +222,11 @@ class _Pickler:
 
     def dump(self, obj):
         """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:
             self.write(PROTO + bytes([self.proto]))
         self.save(obj)
@@ -789,6 +794,11 @@ class _Unpickler:
 
         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.stack = []
         self.append = self.stack.append