[pypy-commit] pypy py3.3: merge py3.3-fixes2

pjenvey noreply at buildbot.pypy.org
Sat Aug 16 23:08:45 CEST 2014


Author: Philip Jenvey <pjenvey at underboss.org>
Branch: py3.3
Changeset: r72834:ca985b528468
Date: 2014-08-16 14:06 -0700
http://bitbucket.org/pypy/pypy/changeset/ca985b528468/

Log:	merge py3.3-fixes2

diff --git a/pypy/module/bz2/interp_bz2.py b/pypy/module/bz2/interp_bz2.py
--- a/pypy/module/bz2/interp_bz2.py
+++ b/pypy/module/bz2/interp_bz2.py
@@ -2,7 +2,7 @@
 from rpython.rtyper.tool import rffi_platform as platform
 from rpython.rtyper.lltypesystem import rffi
 from rpython.rtyper.lltypesystem import lltype
-from pypy.interpreter.error import OperationError
+from pypy.interpreter.error import OperationError, oefmt
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter.typedef import TypeDef, interp_attrproperty_bytes
 from pypy.interpreter.typedef import GetSetProperty
@@ -268,6 +268,9 @@
         BZ2_bzCompressEnd(self.bzs)
         lltype.free(self.bzs, flavor='raw')
 
+    def __getstate__(self):
+        raise oefmt(self.space.w_TypeError, "cannot serialize '%T' object", self)
+
     @unwrap_spec(data='bufferstr')
     def compress(self, data):
         """compress(data) -> string
@@ -333,6 +336,7 @@
 W_BZ2Compressor.typedef = TypeDef("_bz2.BZ2Compressor",
     __doc__ = W_BZ2Compressor.__doc__,
     __new__ = interp2app(descr_compressor__new__),
+    __getstate__ = interp2app(W_BZ2Compressor.__getstate__),
     compress = interp2app(W_BZ2Compressor.compress),
     flush = interp2app(W_BZ2Compressor.flush),
 )
@@ -372,6 +376,9 @@
         BZ2_bzDecompressEnd(self.bzs)
         lltype.free(self.bzs, flavor='raw')
 
+    def __getstate__(self):
+        raise oefmt(self.space.w_TypeError, "cannot serialize '%T' object", self)
+
     def eof_w(self, space):
         if self.running:
             return space.w_False
@@ -429,6 +436,7 @@
 W_BZ2Decompressor.typedef = TypeDef("_bz2.BZ2Decompressor",
     __doc__ = W_BZ2Decompressor.__doc__,
     __new__ = interp2app(descr_decompressor__new__),
+    __getstate__ = interp2app(W_BZ2Decompressor.__getstate__),
     unused_data = interp_attrproperty_bytes("unused_data", W_BZ2Decompressor),
     eof = GetSetProperty(W_BZ2Decompressor.eof_w),
     decompress = interp2app(W_BZ2Decompressor.decompress),
diff --git a/pypy/module/bz2/test/test_bz2_compdecomp.py b/pypy/module/bz2/test/test_bz2_compdecomp.py
--- a/pypy/module/bz2/test/test_bz2_compdecomp.py
+++ b/pypy/module/bz2/test/test_bz2_compdecomp.py
@@ -108,6 +108,13 @@
         data += bz2c.flush()
         assert self.decompress(data) == self.TEXT
 
+    def test_compressor_pickle_error(self):
+        from bz2 import BZ2Compressor
+        import pickle
+
+        exc = raises(TypeError, pickle.dumps, BZ2Compressor())
+        assert exc.value.args[0] == "cannot serialize '_bz2.BZ2Compressor' object"
+
 
 class AppTestBZ2Decompressor(CheckAllocation):
     spaceconfig = dict(usemodules=('bz2', 'rctime'))
@@ -186,6 +193,13 @@
         assert decompressed_data == b''
         raises(IOError, bz2d.decompress, self.BUGGY_DATA)
 
+    def test_decompressor_pickle_error(self):
+        from bz2 import BZ2Decompressor
+        import pickle
+
+        exc = raises(TypeError, pickle.dumps, BZ2Decompressor())
+        assert exc.value.args[0] == "cannot serialize '_bz2.BZ2Decompressor' object"
+
 
 class AppTestBZ2ModuleFunctions(CheckAllocation):
     spaceconfig = dict(usemodules=('bz2', 'rctime'))


More information about the pypy-commit mailing list