Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r46147:e1a78e27a180 Date: 2011-07-31 18:44 +0200 http://bitbucket.org/pypy/pypy/changeset/e1a78e27a180/
Log: Support custom errors. diff --git a/pypy/module/_multibytecodec/interp_incremental.py b/pypy/module/_multibytecodec/interp_incremental.py --- a/pypy/module/_multibytecodec/interp_incremental.py +++ b/pypy/module/_multibytecodec/interp_incremental.py @@ -4,7 +4,7 @@ MultibyteCodec, wrap_unicodedecodeerror, wrap_runtimeerror) from pypy.interpreter.baseobjspace import Wrappable from pypy.interpreter.gateway import interp2app, unwrap_spec -from pypy.interpreter.typedef import TypeDef +from pypy.interpreter.typedef import TypeDef, GetSetProperty from pypy.module._codecs.interp_codecs import CodecState @@ -57,6 +57,12 @@ self.pending = object[pos:] return space.wrap(output) + def fget_errors(self, space): + return space.wrap(self.errors) + + def fset_errors(self, space, w_errors): + self.errors = space.str_w(w_errors) + @unwrap_spec(errors="str_or_None") def mbidecoder_new(space, w_subtype, errors=None): @@ -70,6 +76,8 @@ __new__ = interp2app(mbidecoder_new), decode = interp2app(MultibyteIncrementalDecoder.decode_w), reset = interp2app(MultibyteIncrementalDecoder.reset_w), + errors = GetSetProperty(MultibyteIncrementalDecoder.fget_errors, + MultibyteIncrementalDecoder.fset_errors), ) diff --git a/pypy/module/_multibytecodec/test/test_app_incremental.py b/pypy/module/_multibytecodec/test/test_app_incremental.py --- a/pypy/module/_multibytecodec/test/test_app_incremental.py +++ b/pypy/module/_multibytecodec/test/test_app_incremental.py @@ -63,3 +63,14 @@ d.reset() r = d.decode("ab") assert r == u'ab' + + def test_decode_hz_error(self): + d = self.IncrementalHzDecoder() + raises(UnicodeDecodeError, d.decode, "~{abc", True) + d = self.IncrementalHzDecoder("ignore") + r = d.decode("~{abc", True) + assert r == u'\u5f95' + d = self.IncrementalHzDecoder() + d.errors = "replace" + r = d.decode("~{abc", True) + assert r == u'\u5f95\ufffd' _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit