Author: Armin Rigo <[email protected]>
Branch: py3.5
Changeset: r90284:12c942ae2993
Date: 2017-02-22 09:44 +0100
http://bitbucket.org/pypy/pypy/changeset/12c942ae2993/
Log: hg merge default
diff --git a/pypy/interpreter/main.py b/pypy/interpreter/main.py
--- a/pypy/interpreter/main.py
+++ b/pypy/interpreter/main.py
@@ -18,8 +18,8 @@
def compilecode(space, source, filename, cmd='exec'):
w_code = space.builtin.call(
- 'compile', space.newbytes(source), space.wrap_fsdecoded(filename),
- space.wrap(cmd), space.newint(0), space.newint(0))
+ 'compile', space.newbytes(source), space.newfilename(filename),
+ space.newtext(cmd), space.newint(0), space.newint(0))
pycode = space.interp_w(eval.Code, w_code)
return pycode
@@ -87,10 +87,11 @@
argv.extend(args)
space.setitem(space.sys.w_dict, space.newtext('argv'), space.wrap(argv))
w_import = space.builtin.get('__import__')
- runpy = space.call_function(w_import, space.wrap('runpy'))
- w_run_module = space.getitem(runpy.w_dict, space.wrap('run_module'))
- return space.call_function(w_run_module, space.wrap(module_name),
space.w_None,
- space.wrap('__main__'), space.w_True)
+ runpy = space.call_function(w_import, space.newtext('runpy'))
+ w_run_module = space.getitem(runpy.w_dict, space.newtext('run_module'))
+ return space.call_function(w_run_module, space.newtext(module_name),
+ space.w_None, space.newtext('__main__'),
+ space.w_True)
def run_toplevel(space, f, verbose=False):
diff --git a/pypy/interpreter/unicodehelper.py
b/pypy/interpreter/unicodehelper.py
--- a/pypy/interpreter/unicodehelper.py
+++ b/pypy/interpreter/unicodehelper.py
@@ -37,23 +37,6 @@
space.newtext(msg)]))
return raise_unicode_exception_encode
-class RUnicodeEncodeError(Exception):
- def __init__(self, encoding, object, start, end, reason):
- assert isinstance(object, unicode)
- self.encoding = encoding
- self.object = object
- self.start = start
- self.end = end
- self.reason = reason
-
[email protected]()
-def rpy_encode_error_handler():
- # A RPython version of the "strict" error handler.
- def raise_unicode_exception_encode(errors, encoding, msg, u,
- startingpos, endingpos):
- raise RUnicodeEncodeError(encoding, u, startingpos, endingpos, msg)
- return raise_unicode_exception_encode
-
# ____________________________________________________________
def fsdecode(space, w_string):
diff --git a/pypy/objspace/std/unicodeobject.py
b/pypy/objspace/std/unicodeobject.py
--- a/pypy/objspace/std/unicodeobject.py
+++ b/pypy/objspace/std/unicodeobject.py
@@ -96,12 +96,9 @@
if ignore_sg:
identifier = unicode_encode_utf8sp(u, len(u))
else:
- eh = unicodehelper.rpy_encode_error_handler()
- try:
- identifier = unicode_encode_utf_8(u, len(u), None,
- errorhandler=eh)
- except unicodehelper.RUnicodeEncodeError as ue:
- raise wrap_encode_error(space, ue)
+ eh = unicodehelper.encode_error_handler(space)
+ identifier = unicode_encode_utf_8(u, len(u), None,
+ errorhandler=eh)
return identifier
def text_w(self, space):
@@ -576,19 +573,16 @@
def encode_object(space, w_object, encoding, errors):
if errors is None or errors == 'strict':
- try:
- if encoding is None or encoding == 'utf-8':
- u = space.unicode_w(w_object)
- eh = unicodehelper.encode_error_handler(space)
- return space.newbytes(unicode_encode_utf_8(
- u, len(u), errors, errorhandler=eh))
- elif encoding == 'ascii':
- u = space.unicode_w(w_object)
- eh = unicodehelper.encode_error_handler(space)
- return space.newbytes(unicode_encode_ascii(
- u, len(u), errors, errorhandler=eh))
- except unicodehelper.RUnicodeEncodeError as ue:
- raise wrap_encode_error(space, ue)
+ if encoding is None or encoding == 'utf-8':
+ u = space.unicode_w(w_object)
+ eh = unicodehelper.encode_error_handler(space)
+ return space.newbytes(unicode_encode_utf_8(
+ u, len(u), errors, errorhandler=eh))
+ elif encoding == 'ascii':
+ u = space.unicode_w(w_object)
+ eh = unicodehelper.encode_error_handler(space)
+ return space.newbytes(unicode_encode_ascii(
+ u, len(u), errors, errorhandler=eh))
from pypy.module._codecs.interp_codecs import encode_text
w_retval = encode_text(space, w_object, encoding, errors)
@@ -599,16 +593,6 @@
return w_retval
-def wrap_encode_error(space, ue):
- raise OperationError(space.w_UnicodeEncodeError,
- space.newtuple([
- space.newtext(ue.encoding),
- space.newunicode(ue.object),
- space.newint(ue.start),
- space.newint(ue.end),
- space.newtext(ue.reason)]))
-
-
def decode_object(space, w_obj, encoding, errors):
if encoding is None:
encoding = getdefaultencoding(space)
diff --git a/rpython/rlib/runicode.py b/rpython/rlib/runicode.py
--- a/rpython/rlib/runicode.py
+++ b/rpython/rlib/runicode.py
@@ -150,6 +150,9 @@
(ordch1 == 0xf0 and ordch2 < 0x90) or
(ordch1 == 0xf4 and ordch2 > 0x8f))
+# NOTE: this is a slightly fixed algorithm when compared with
+# CPython2's. It is closer to CPython3's. See comments in
+# test_invalid_cb_for_3bytes_seq().
def str_decode_utf_8_impl(s, size, errors, final, errorhandler,
allow_surrogates):
if size == 0:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit