[pypy-commit] pypy default: make quoting error message more informative and cpython-compatible
mattip
pypy.commits at gmail.com
Fri Sep 8 10:30:01 EDT 2017
Author: Matti Picus <matti.picus at gmail.com>
Branch:
Changeset: r92355:c4c44cc4a4de
Date: 2017-09-08 15:51 +0300
http://bitbucket.org/pypy/pypy/changeset/c4c44cc4a4de/
Log: make quoting error message more informative and cpython-compatible
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
@@ -29,10 +29,15 @@
return default
return space.is_true(w_src)
-def _get_int(space, w_src, default):
+def _get_int(space, w_src, default, attrname):
if w_src is None:
return default
- return space.int_w(w_src)
+ try:
+ return space.int_w(w_src)
+ except OperationError as e:
+ if e.match(space, space.w_TypeError):
+ raise oefmt(space.w_TypeError, '"%s" must be a string', attrname)
+ raise
def _get_str(space, w_src, default, attrname):
if w_src is None:
@@ -100,7 +105,7 @@
dialect.escapechar = _get_char(space, w_escapechar, '\0', 'escapechar')
dialect.lineterminator = _get_str(space, w_lineterminator, '\r\n', 'lineterminator')
dialect.quotechar = _get_char(space, w_quotechar, '"', 'quotechar')
- tmp_quoting = _get_int(space, w_quoting, QUOTE_MINIMAL)
+ tmp_quoting = _get_int(space, w_quoting, QUOTE_MINIMAL, 'quoting')
dialect.skipinitialspace = _get_bool(space, w_skipinitialspace, False)
dialect.strict = _get_bool(space, w_strict, False)
diff --git a/pypy/module/_csv/test/test_dialect.py b/pypy/module/_csv/test/test_dialect.py
--- a/pypy/module/_csv/test/test_dialect.py
+++ b/pypy/module/_csv/test/test_dialect.py
@@ -65,7 +65,8 @@
name = attempt[0]
for value in attempt[1:]:
kwargs = {name: value}
- raises(TypeError, _csv.register_dialect, 'foo1', **kwargs)
+ exc_info = raises(TypeError, _csv.register_dialect, 'foo1', **kwargs)
+ assert name in exc_info.value.args[0]
exc_info = raises(TypeError, _csv.register_dialect, 'foo1', lineterminator=4)
assert exc_info.value.args[0] == '"lineterminator" must be a string'
More information about the pypy-commit
mailing list