[pypy-commit] pypy py3k: chr() now returns unicode

amauryfa noreply at buildbot.pypy.org
Thu Oct 13 01:53:01 CEST 2011


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: py3k
Changeset: r48009:b42bce22fe28
Date: 2011-10-13 01:37 +0200
http://bitbucket.org/pypy/pypy/changeset/b42bce22fe28/

Log:	chr() now returns unicode

diff --git a/pypy/module/__builtin__/__init__.py b/pypy/module/__builtin__/__init__.py
--- a/pypy/module/__builtin__/__init__.py
+++ b/pypy/module/__builtin__/__init__.py
@@ -49,7 +49,6 @@
         # interp-level function definitions
         'abs'           : 'operation.abs',
         'chr'           : 'operation.chr',
-        'unichr'        : 'operation.unichr',
         'len'           : 'operation.len',
         'ord'           : 'operation.ord',
         'pow'           : 'operation.pow',
diff --git a/pypy/module/__builtin__/operation.py b/pypy/module/__builtin__/operation.py
--- a/pypy/module/__builtin__/operation.py
+++ b/pypy/module/__builtin__/operation.py
@@ -15,19 +15,9 @@
     "abs(number) -> number\n\nReturn the absolute value of the argument."
     return space.abs(w_val)
 
-def chr(space, w_ascii):
-    "Return a string of one character with the given ascii code."
-    try:
-        char = __builtin__.chr(space.int_w(w_ascii))
-    except ValueError:  # chr(out-of-range)
-        raise OperationError(space.w_ValueError,
-                             space.wrap("character code not in range(256)"))
-    return space.wrap(char)
-
 @unwrap_spec(code=int)
-def unichr(space, code):
+def chr(space, code):
     "Return a Unicode string of one character with the given ordinal."
-    # XXX range checking!
     try:
         c = UNICHR(code)
     except ValueError:
diff --git a/pypy/module/__builtin__/test/test_builtin.py b/pypy/module/__builtin__/test/test_builtin.py
--- a/pypy/module/__builtin__/test/test_builtin.py
+++ b/pypy/module/__builtin__/test/test_builtin.py
@@ -37,11 +37,6 @@
         raises(ImportError, __import__, 'spamspam')
         raises(TypeError, __import__, 1, 2, 3, 4)
 
-    def test_chr(self):
-        assert chr(65) == 'A'
-        raises(ValueError, chr, -1)
-        raises(TypeError, chr, 'a')
-
     def test_bin(self):
         assert bin(0) == "0b0"
         assert bin(-1) == "-0b1"
@@ -49,18 +44,18 @@
         assert bin(-2L) == "-0b10"
         raises(TypeError, bin, 0.)
 
-    def test_unichr(self):
+    def test_chr(self):
         import sys
-        assert unichr(65) == u'A'
-        assert type(unicode(65)) is unicode
-        assert unichr(0x9876) == u'\u9876'
+        assert chr(65) == 'A'
+        assert type(str(65)) is str
+        assert chr(0x9876) == '\u9876'
         if sys.maxunicode > 0xFFFF:
-            assert unichr(sys.maxunicode) == u'\U0010FFFF'
-            assert unichr(0x10000) == u'\U00010000'
+            assert chr(sys.maxunicode) == '\U0010FFFF'
+            assert chr(0x10000) == '\U00010000'
         else:
-            assert unichr(sys.maxunicode) == u'\uFFFF'
-        raises(ValueError, unichr, -1)
-        raises(ValueError, unichr, sys.maxunicode+1)
+            assert chr(sys.maxunicode) == '\uFFFF'
+        raises(ValueError, chr, -1)
+        raises(ValueError, chr, sys.maxunicode+1)
 
     def test_intern(self):
         raises(TypeError, intern)


More information about the pypy-commit mailing list