[pypy-commit] pypy py3.3-fixes2: bz2: disallow pickling for compressor/decompresson (cpython compat)
numerodix
noreply at buildbot.pypy.org
Sat Aug 16 23:08:42 CEST 2014
Author: Martin Matusiak <numerodix at gmail.com>
Branch: py3.3-fixes2
Changeset: r72831:a11bfe6cc0b1
Date: 2014-08-15 23:50 +0200
http://bitbucket.org/pypy/pypy/changeset/a11bfe6cc0b1/
Log: bz2: disallow pickling for compressor/decompresson (cpython compat)
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
@@ -268,6 +268,10 @@
BZ2_bzCompressEnd(self.bzs)
lltype.free(self.bzs, flavor='raw')
+ def __getstate__(self):
+ raise OperationError(self.space.w_TypeError,
+ self.space.wrap("cannot serialize '_bz2.BZ2Compressor' object"))
+
@unwrap_spec(data='bufferstr')
def compress(self, data):
"""compress(data) -> string
@@ -333,6 +337,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 +377,10 @@
BZ2_bzDecompressEnd(self.bzs)
lltype.free(self.bzs, flavor='raw')
+ def __getstate__(self):
+ raise OperationError(self.space.w_TypeError,
+ self.space.wrap("cannot serialize '_bz2.BZ2Decompressor' object"))
+
def eof_w(self, space):
if self.running:
return space.w_False
@@ -429,6 +438,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