diff options
author | Andrew McNamara <andrewm@object-craft.com.au> | 2005-01-11 02:22:47 (GMT) |
---|---|---|
committer | Andrew McNamara <andrewm@object-craft.com.au> | 2005-01-11 02:22:47 (GMT) |
commit | 7130ff5eb9ad0edf5cf0c8811ceea155f11194eb (patch) | |
tree | 0011a18839a3c3066af8ba6cef545c530e885a52 | |
parent | 8c94b42f31515ca6b552cb427aea0cd446098dd9 (diff) | |
download | cpython-7130ff5eb9ad0edf5cf0c8811ceea155f11194eb.zip cpython-7130ff5eb9ad0edf5cf0c8811ceea155f11194eb.tar.gz cpython-7130ff5eb9ad0edf5cf0c8811ceea155f11194eb.tar.bz2 |
Replace python-coded validation of csv dialect with a call to the C
dialect type (which has a better idea of what is and isn't valid).
-rw-r--r-- | Lib/csv.py | 47 | ||||
-rw-r--r-- | Lib/test/test_csv.py | 4 |
2 files changed, 7 insertions, 44 deletions
@@ -8,6 +8,7 @@ from _csv import Error, __version__, writer, reader, register_dialect, \ unregister_dialect, get_dialect, list_dialects, \ QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE, \ __doc__ +from _csv import Dialect as _Dialect try: from cStringIO import StringIO @@ -41,48 +42,14 @@ class Dialect: def __init__(self): if self.__class__ != Dialect: self._valid = True - errors = self._validate() - if errors != []: - raise Error, "Dialect did not validate: %s" % ", ".join(errors) + self._validate() def _validate(self): - errors = [] - if not self._valid: - errors.append("can't directly instantiate Dialect class") - - if self.delimiter is None: - errors.append("delimiter character not set") - elif (not isinstance(self.delimiter, str) or - len(self.delimiter) > 1): - errors.append("delimiter must be one-character string") - - if self.quotechar is None: - if self.quoting != QUOTE_NONE: - errors.append("quotechar not set") - elif (not isinstance(self.quotechar, str) or - len(self.quotechar) > 1): - errors.append("quotechar must be one-character string") - - if self.lineterminator is None: - errors.append("lineterminator not set") - elif not isinstance(self.lineterminator, str): - errors.append("lineterminator must be a string") - - if self.doublequote not in (True, False) and self.quoting != QUOTE_NONE: - errors.append("doublequote parameter must be True or False") - - if self.skipinitialspace not in (True, False): - errors.append("skipinitialspace parameter must be True or False") - - if self.quoting is None: - errors.append("quoting parameter not set") - - if self.quoting is QUOTE_NONE: - if (not isinstance(self.escapechar, (unicode, str)) or - len(self.escapechar) > 1): - errors.append("escapechar must be a one-character string or unicode object") - - return errors + try: + _Dialect(self) + except TypeError, e: + # We do this for compatibility with py2.3 + raise Error(str(e)) class excel(Dialect): """Describe the usual properties of Excel-generated CSV files.""" diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 34177cc..ff45b61 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -727,10 +727,6 @@ class TestDialectValidity(unittest.TestCase): mydialect.quoting = None self.assertRaises(csv.Error, mydialect) - mydialect.quoting = csv.QUOTE_NONE - mydialect.escapechar = None - self.assertRaises(csv.Error, mydialect) - mydialect.doublequote = True mydialect.quoting = csv.QUOTE_ALL mydialect.quotechar = '"' |