[pypy-commit] pypy py3k: raw_unicode_escape_decode accepts unicode

pjenvey noreply at buildbot.pypy.org
Fri Jan 18 22:32:14 CET 2013


Author: Philip Jenvey <pjenvey at underboss.org>
Branch: py3k
Changeset: r60186:4739822aa049
Date: 2013-01-18 13:29 -0800
http://bitbucket.org/pypy/pypy/changeset/4739822aa049/

Log:	raw_unicode_escape_decode accepts unicode

diff --git a/pypy/module/_codecs/interp_codecs.py b/pypy/module/_codecs/interp_codecs.py
--- a/pypy/module/_codecs/interp_codecs.py
+++ b/pypy/module/_codecs/interp_codecs.py
@@ -513,7 +513,6 @@
          "utf_32_decode",
          "utf_32_be_decode",
          "utf_32_le_decode",
-         "raw_unicode_escape_decode",
          ]:
     make_decoder_wrapper(decoders)
 
@@ -767,6 +766,21 @@
     return space.newtuple([space.wrap(result), space.wrap(consumed)])
 
 # ____________________________________________________________
+# Raw Unicode escape (accepts bytes or str)
+
+ at unwrap_spec(string='bufferstr_or_u', errors='str_or_None',
+             w_final=WrappedDefault(False))
+def raw_unicode_escape_decode(space, string, errors="strict", w_final=None):
+    if errors is None:
+        errors = 'strict'
+    final = space.is_true(w_final)
+    state = space.fromcache(CodecState)
+    result, consumed = runicode.str_decode_raw_unicode_escape(
+        string, len(string), errors,
+        final, state.decode_error_handler)
+    return space.newtuple([space.wrap(result), space.wrap(consumed)])
+
+# ____________________________________________________________
 # Unicode-internal
 
 @unwrap_spec(errors='str_or_None')
diff --git a/pypy/module/_codecs/test/test_codecs.py b/pypy/module/_codecs/test/test_codecs.py
--- a/pypy/module/_codecs/test/test_codecs.py
+++ b/pypy/module/_codecs/test/test_codecs.py
@@ -268,8 +268,10 @@
         assert bytes.decode("unicode_internal") == "a"
 
     def test_raw_unicode_escape(self):
+        import _codecs
         assert str(b"\u0663", "raw-unicode-escape") == "\u0663"
         assert "\u0663".encode("raw-unicode-escape") == b"\u0663"
+        assert _codecs.raw_unicode_escape_decode(r"\u1234") == ("\u1234", 6)
 
     def test_escape_decode(self):
         import _codecs


More information about the pypy-commit mailing list