Author: Antonio Cuni <[email protected]>
Branch: py3k
Changeset: r57742:eb67e48a3a84
Date: 2012-10-02 18:19 +0200
http://bitbucket.org/pypy/pypy/changeset/eb67e48a3a84/

Log:    bytes->unicode conversion for all of _csv

diff --git a/pypy/module/_csv/app_csv.py b/pypy/module/_csv/app_csv.py
--- a/pypy/module/_csv/app_csv.py
+++ b/pypy/module/_csv/app_csv.py
@@ -8,7 +8,7 @@
 
 def register_dialect(name, dialect=None, **kwargs):
     """Create a mapping from a string name to a dialect class."""
-    if not isinstance(name, basestring):
+    if not isinstance(name, str):
         raise TypeError("dialect name must be a string or unicode")
 
     dialect = _csv.Dialect(dialect, **kwargs)
diff --git a/pypy/module/_csv/interp_csv.py b/pypy/module/_csv/interp_csv.py
--- a/pypy/module/_csv/interp_csv.py
+++ b/pypy/module/_csv/interp_csv.py
@@ -37,18 +37,18 @@
 def _get_str(space, w_src, default):
     if w_src is None:
         return default
-    return space.str_w(w_src)
+    return space.unicode_w(w_src)
 
 def _get_char(space, w_src, default, name):
     if w_src is None:
         return default
     if space.is_w(w_src, space.w_None):
-        return '\0'
-    src = space.str_w(w_src)
+        return u'\0'
+    src = space.unicode_w(w_src)
     if len(src) == 1:
         return src[0]
     if len(src) == 0:
-        return '\0'
+        return u'\0'
     raise operationerrfmt(space.w_TypeError,
                           '"%s" must be a 1-character string', name)
 
@@ -56,7 +56,7 @@
                    w_escapechar, w_lineterminator, w_quotechar, w_quoting,
                    w_skipinitialspace, w_strict):
     if w_dialect is not None:
-        if space.isinstance_w(w_dialect, space.w_basestring):
+        if space.isinstance_w(w_dialect, space.w_unicode):
             w_module = space.getbuiltinmodule('_csv')
             w_dialect = space.call_method(w_module, 'get_dialect', w_dialect)
 
@@ -90,11 +90,11 @@
             w_strict = _fetch(space, w_dialect, 'strict')
 
     dialect = W_Dialect()
-    dialect.delimiter = _get_char(space, w_delimiter, ',', 'delimiter')
+    dialect.delimiter = _get_char(space, w_delimiter, u',', 'delimiter')
     dialect.doublequote = _get_bool(space, w_doublequote, True)
-    dialect.escapechar = _get_char(space, w_escapechar, '\0', 'escapechar')
-    dialect.lineterminator = _get_str(space, w_lineterminator, '\r\n')
-    dialect.quotechar = _get_char(space, w_quotechar, '"', 'quotechar')
+    dialect.escapechar = _get_char(space, w_escapechar, u'\0', 'escapechar')
+    dialect.lineterminator = _get_str(space, w_lineterminator, u'\r\n')
+    dialect.quotechar = _get_char(space, w_quotechar, u'"', 'quotechar')
     tmp_quoting = _get_int(space, w_quoting, QUOTE_MINIMAL)
     dialect.skipinitialspace = _get_bool(space, w_skipinitialspace, False)
     dialect.strict = _get_bool(space, w_strict, False)
@@ -104,13 +104,13 @@
         raise OperationError(space.w_TypeError,
                              space.wrap('bad "quoting" value'))
 
-    if dialect.delimiter == '\0':
+    if dialect.delimiter == u'\0':
         raise OperationError(space.w_TypeError,
                              space.wrap('delimiter must be set'))
 
     if space.is_w(w_quotechar, space.w_None) and w_quoting is None:
         tmp_quoting = QUOTE_NONE
-    if tmp_quoting != QUOTE_NONE and dialect.quotechar == '\0':
+    if tmp_quoting != QUOTE_NONE and dialect.quotechar == u'\0':
         raise OperationError(space.w_TypeError,
                         space.wrap('quotechar must be set if quoting enabled'))
     dialect.quoting = tmp_quoting
@@ -145,12 +145,12 @@
 
 
 def _get_escapechar(space, dialect):
-    if dialect.escapechar == '\0':
+    if dialect.escapechar == u'\0':
         return space.w_None
     return space.wrap(dialect.escapechar)
 
 def _get_quotechar(space, dialect):
-    if dialect.quotechar == '\0':
+    if dialect.quotechar == u'\0':
         return space.w_None
     return space.wrap(dialect.quotechar)
 
diff --git a/pypy/module/_csv/interp_writer.py 
b/pypy/module/_csv/interp_writer.py
--- a/pypy/module/_csv/interp_writer.py
+++ b/pypy/module/_csv/interp_writer.py
@@ -1,4 +1,4 @@
-from pypy.rlib.rstring import StringBuilder
+from pypy.rlib.rstring import UnicodeBuilder
 from pypy.interpreter.baseobjspace import Wrappable
 from pypy.interpreter.error import OperationError
 from pypy.interpreter.gateway import NoneNotWrapped
@@ -34,16 +34,16 @@
         space = self.space
         fields_w = space.listview(w_fields)
         dialect = self.dialect
-        rec = StringBuilder(80)
+        rec = UnicodeBuilder(80)
         #
         for field_index in range(len(fields_w)):
             w_field = fields_w[field_index]
             if space.is_w(w_field, space.w_None):
                 field = ""
             elif space.isinstance_w(w_field, space.w_float):
-                field = space.str_w(space.repr(w_field))
+                field = space.unicode_w(space.repr(w_field))
             else:
-                field = space.str_w(space.str(w_field))
+                field = space.unicode_w(space.str(w_field))
             #
             if dialect.quoting == QUOTE_NONNUMERIC:
                 try:
@@ -97,7 +97,7 @@
                             else:
                                 want_escape = True
                     if want_escape:
-                        if dialect.escapechar == '\0':
+                        if dialect.escapechar == u'\0':
                             raise self.error("need to escape, "
                                              "but no escapechar set")
                         rec.append(dialect.escapechar)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to