[pypy-svn] r77421 - in pypy/branch/fast-forward/pypy/module/_codecs: . test

afa at codespeak.net afa at codespeak.net
Tue Sep 28 00:18:07 CEST 2010


Author: afa
Date: Tue Sep 28 00:18:06 2010
New Revision: 77421

Modified:
   pypy/branch/fast-forward/pypy/module/_codecs/__init__.py
   pypy/branch/fast-forward/pypy/module/_codecs/interp_codecs.py
   pypy/branch/fast-forward/pypy/module/_codecs/test/test_codecs.py
Log:
Export utf_32 functions in the _codecs module


Modified: pypy/branch/fast-forward/pypy/module/_codecs/__init__.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/_codecs/__init__.py	(original)
+++ pypy/branch/fast-forward/pypy/module/_codecs/__init__.py	Tue Sep 28 00:18:06 2010
@@ -65,6 +65,13 @@
          'utf_16_le_decode' : 'interp_codecs.utf_16_le_decode',
          'utf_16_le_encode' : 'interp_codecs.utf_16_le_encode',
          'utf_16_ex_decode' : 'interp_codecs.utf_16_ex_decode',
+         'utf_32_decode'    : 'interp_codecs.utf_32_decode',
+         'utf_32_encode'    : 'interp_codecs.utf_32_encode',
+         'utf_32_be_decode' : 'interp_codecs.utf_32_be_decode',
+         'utf_32_be_encode' : 'interp_codecs.utf_32_be_encode',
+         'utf_32_le_decode' : 'interp_codecs.utf_32_le_decode',
+         'utf_32_le_encode' : 'interp_codecs.utf_32_le_encode',
+         'utf_32_ex_decode' : 'interp_codecs.utf_32_ex_decode',
          'charbuffer_encode': 'interp_codecs.buffer_encode',
          'readbuffer_encode': 'interp_codecs.buffer_encode',
          'charmap_decode'   : 'interp_codecs.charmap_decode',

Modified: pypy/branch/fast-forward/pypy/module/_codecs/interp_codecs.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/_codecs/interp_codecs.py	(original)
+++ pypy/branch/fast-forward/pypy/module/_codecs/interp_codecs.py	Tue Sep 28 00:18:06 2010
@@ -410,6 +410,9 @@
          "utf_16_encode",
          "utf_16_be_encode",
          "utf_16_le_encode",
+         "utf_32_encode",
+         "utf_32_be_encode",
+         "utf_32_le_encode",
          "unicode_escape_encode",
          "raw_unicode_escape_encode",
          "unicode_internal_encode",
@@ -424,6 +427,9 @@
          "utf_16_decode",
          "utf_16_be_decode",
          "utf_16_le_decode",
+         "utf_32_decode",
+         "utf_32_be_decode",
+         "utf_32_le_decode",
          "raw_unicode_escape_decode",
          ]:
     make_decoder_wrapper(decoders)
@@ -450,6 +456,24 @@
                            space.wrap(byteorder)])
 utf_16_ex_decode.unwrap_spec = [ObjSpace, str, str, int, W_Root]
 
+def utf_32_ex_decode(space, data, errors='strict', byteorder=0, w_final=False):
+    final = space.is_true(w_final)
+    state = space.fromcache(CodecState)
+    if byteorder == 0:
+        byteorder = 'native'
+    elif byteorder == -1:
+        byteorder = 'little'
+    else:
+        byteorder = 'big'
+    consumed = len(data)
+    if final:
+        consumed = 0
+    res, consumed, byteorder = runicode.str_decode_utf_32_helper(
+        data, len(data), errors, final, state.decode_error_handler, byteorder)
+    return space.newtuple([space.wrap(res), space.wrap(consumed),
+                           space.wrap(byteorder)])
+utf_32_ex_decode.unwrap_spec = [ObjSpace, str, str, int, W_Root]
+
 # ____________________________________________________________
 # Charmap
 

Modified: pypy/branch/fast-forward/pypy/module/_codecs/test/test_codecs.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/_codecs/test/test_codecs.py	(original)
+++ pypy/branch/fast-forward/pypy/module/_codecs/test/test_codecs.py	Tue Sep 28 00:18:06 2010
@@ -14,6 +14,7 @@
     def test_bigU_codecs(self):
         u = u'\U00010001\U00020002\U00030003\U00040004\U00050005'
         for encoding in ('utf-8', 'utf-16', 'utf-16-le', 'utf-16-be',
+                         'utf-32', 'utf-32-le', 'utf-32-be',
                          'raw_unicode_escape',
                          'unicode_escape', 'unicode_internal'):
             assert unicode(u.encode(encoding),encoding) == u



More information about the Pypy-commit mailing list