Author: Philip Jenvey <pjen...@underboss.org> Branch: py3k Changeset: r64643:83978aef9853 Date: 2013-05-28 14:42 -0700 http://bitbucket.org/pypy/pypy/changeset/83978aef9853/
Log: merge default diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst --- a/pypy/doc/whatsnew-head.rst +++ b/pypy/doc/whatsnew-head.rst @@ -40,3 +40,9 @@ .. branch: on-abort-resops Added list of resops to the pypyjit on_abort hook. + +.. branch: logging-perf +Speeds up the stdlib logging module + +.. branch: operrfmt-NT +Adds a couple convenient format specifiers to operationerrfmt diff --git a/pypy/interpreter/error.py b/pypy/interpreter/error.py --- a/pypy/interpreter/error.py +++ b/pypy/interpreter/error.py @@ -355,7 +355,7 @@ _fmtcache = {} _fmtcache2 = {} -_FMTS = tuple('8dsNT') +_FMTS = tuple('8NRTds') def decompose_valuefmt(valuefmt): """Returns a tuple of string parts extracted from valuefmt, @@ -409,6 +409,8 @@ elif fmt == '8': result, _ = str_decode_utf_8(value, len(value), 'strict') + elif fmt == 'R': + result = space.unicode_w(space.repr(value)) elif fmt in 'NT': if fmt == 'T': value = space.type(value) @@ -448,6 +450,7 @@ %8 - The result of arg.decode('utf-8', 'strict') %N - The result of w_arg.getname(space) + %R - The result of space.str_w(space.repr(w_arg)) %T - The result of space.type(w_arg).getname(space) """ diff --git a/pypy/interpreter/test/test_error.py b/pypy/interpreter/test/test_error.py --- a/pypy/interpreter/test/test_error.py +++ b/pypy/interpreter/test/test_error.py @@ -65,8 +65,14 @@ space.wrap('foo'), 'foo') assert operr._compute_value(space) == "'?' object has no attribute 'foo'" -def test_operationerrfmt_empty(): - py.test.raises(AssertionError, operationerrfmt, "w_type", "foobar") +def test_operationerrfmt_R(space): + operr = operationerrfmt(space.w_ValueError, "illegal newline value: %R", + space.wrap('foo')) + assert operr._compute_value(space) == "illegal newline value: 'foo'" + operr = operationerrfmt(space.w_ValueError, "illegal newline value: %R", + space.wrap("'PyLadies'")) + expected = "illegal newline value: \"'PyLadies'\"" + assert operr._compute_value(space) == expected def test_operationerrfmt_unicode(space): operr = operationerrfmt("w_type", "abc %s", u"àèìòù") diff --git a/pypy/module/_io/interp_io.py b/pypy/module/_io/interp_io.py --- a/pypy/module/_io/interp_io.py +++ b/pypy/module/_io/interp_io.py @@ -49,9 +49,7 @@ if not (space.isinstance_w(w_file, space.w_unicode) or space.isinstance_w(w_file, space.w_str) or space.isinstance_w(w_file, space.w_int)): - raise operationerrfmt(space.w_TypeError, - "invalid file: %s", space.str_w(space.repr(w_file)) - ) + raise operationerrfmt(space.w_TypeError, "invalid file: %R", w_file) reading = writing = appending = updating = text = binary = universal = False diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py --- a/pypy/objspace/std/objspace.py +++ b/pypy/objspace/std/objspace.py @@ -387,8 +387,8 @@ instance.user_setup(self, w_subtype) else: raise operationerrfmt(self.w_TypeError, - "%s.__new__(%s): only for the type %s", - w_type.name, w_subtype.getname(self), w_type.name) + "%N.__new__(%N): only for the type %N", + w_type, w_subtype, w_type) return instance allocate_instance._annspecialcase_ = "specialize:arg(1)" _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit