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