[pypy-svn] r42004 - in pypy/dist/pypy/objspace: cpy cpy/test std

fijal at codespeak.net fijal at codespeak.net
Thu Apr 12 19:50:21 CEST 2007


Author: fijal
Date: Thu Apr 12 19:50:20 2007
New Revision: 42004

Modified:
   pypy/dist/pypy/objspace/cpy/objspace.py
   pypy/dist/pypy/objspace/cpy/test/test_objspace.py
   pypy/dist/pypy/objspace/std/objspace.py
Log:
Change newunicode semantics to use list of unichars


Modified: pypy/dist/pypy/objspace/cpy/objspace.py
==============================================================================
--- pypy/dist/pypy/objspace/cpy/objspace.py	(original)
+++ pypy/dist/pypy/objspace/cpy/objspace.py	Thu Apr 12 19:50:20 2007
@@ -236,7 +236,7 @@
 
     def newunicode(self, codes):
         # XXX inefficient
-        lst = [PyUnicode_FromOrdinal(code) for code in codes]
+        lst = [PyUnicode_FromOrdinal(ord(code)) for code in codes]
         w_lst = self.newlist(lst)
         w_emptyunicode = PyUnicode_FromUnicode(None, 0)
         return self.call_method(w_emptyunicode, 'join', w_lst)

Modified: pypy/dist/pypy/objspace/cpy/test/test_objspace.py
==============================================================================
--- pypy/dist/pypy/objspace/cpy/test/test_objspace.py	(original)
+++ pypy/dist/pypy/objspace/cpy/test/test_objspace.py	Thu Apr 12 19:50:20 2007
@@ -56,7 +56,7 @@
 
 def test_newunicode():
     space = CPyObjSpace()
-    w = space.newunicode([65, 66])
+    w = space.newunicode([unichr(65), unichr(66)])
     assert space.is_w(space.type(w), space.w_unicode)
     for i in range(2):
         code = space.int_w(space.ord(space.getitem(w, space.wrap(i))))
@@ -68,9 +68,9 @@
     assert space.int_w(space.ord(w)) == 65
     w = space.wrap('\x00')
     assert space.int_w(space.ord(w)) == 0
-    w = space.newunicode([65])
+    w = space.newunicode([unichr(65)])
     assert space.int_w(space.ord(w)) == 65
-    w = space.newunicode([0])
+    w = space.newunicode([unichr(0)])
     assert space.int_w(space.ord(w)) == 0
 
 def test_id():

Modified: pypy/dist/pypy/objspace/std/objspace.py
==============================================================================
--- pypy/dist/pypy/objspace/std/objspace.py	(original)
+++ pypy/dist/pypy/objspace/std/objspace.py	Thu Apr 12 19:50:20 2007
@@ -531,11 +531,6 @@
         return self.wrap(''.join(chars))
 
     def newunicode(self, chars):
-        try:
-            chars = [unichr(c) for c in chars]
-        except ValueError, e:  # unichr(out-of-range)
-            msg = "character code not in range(%s)" % hex(sys.maxunicode+1)
-            raise OperationError(self.w_ValueError, self.wrap(msg))
         return W_UnicodeObject(chars)
 
     def newseqiter(self, w_obj):



More information about the Pypy-commit mailing list