diff options
author | Skip Montanaro <skip@pobox.com> | 2003-09-06 19:52:12 (GMT) |
---|---|---|
committer | Skip Montanaro <skip@pobox.com> | 2003-09-06 19:52:12 (GMT) |
commit | 3f7a94824e502d4a66acb930fbfeb559392dd3d1 (patch) | |
tree | e09e10c449453d0e625ce60d607685e9e3b1acff | |
parent | 60e868abd28f2e8aeaae24cd771f993796869b56 (diff) | |
download | cpython-3f7a94824e502d4a66acb930fbfeb559392dd3d1.zip cpython-3f7a94824e502d4a66acb930fbfeb559392dd3d1.tar.gz cpython-3f7a94824e502d4a66acb930fbfeb559392dd3d1.tar.bz2 |
**kwds arg was missing from __init__ for Dict{Reader,Writer} classes.
will backport.
-rw-r--r-- | Lib/csv.py | 8 | ||||
-rw-r--r-- | Lib/test/test_csv.py | 7 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 14 insertions, 4 deletions
@@ -93,11 +93,11 @@ register_dialect("excel-tab", excel_tab) class DictReader: def __init__(self, f, fieldnames, restkey=None, restval=None, - dialect="excel", *args): + dialect="excel", *args, **kwds): self.fieldnames = fieldnames # list of keys for the dict self.restkey = restkey # key to catch long rows self.restval = restval # default value for short rows - self.reader = reader(f, dialect, *args) + self.reader = reader(f, dialect, *args, **kwds) def __iter__(self): return self @@ -122,7 +122,7 @@ class DictReader: class DictWriter: def __init__(self, f, fieldnames, restval="", extrasaction="raise", - dialect="excel", *args): + dialect="excel", *args, **kwds): self.fieldnames = fieldnames # list of keys for the dict self.restval = restval # for writing short dicts if extrasaction.lower() not in ("raise", "ignore"): @@ -130,7 +130,7 @@ class DictWriter: ("extrasaction (%s) must be 'raise' or 'ignore'" % extrasaction) self.extrasaction = extrasaction - self.writer = writer(f, dialect, *args) + self.writer = writer(f, dialect, *args, **kwds) def _dict_to_list(self, rowdict): if self.extrasaction == "raise": diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index ba7cc09..d85c5b6 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -447,6 +447,13 @@ class TestDictFields(unittest.TestCase): self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc', "4": '4', "5": '5', "6": '6'}) + def test_read_semi_sep(self): + reader = csv.DictReader(["1;2;abc;4;5;6\r\n"], + fieldnames="1 2 3 4 5 6".split(), + delimiter=';') + self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc', + "4": '4', "5": '5', "6": '6'}) + class TestArrayWrites(unittest.TestCase): def test_int_write(self): import array @@ -33,6 +33,9 @@ Extension modules Library ------- +- The csv module's DictReader and DictWriter classes now accept keyword + arguments. This was an omission in the initial implementation. + - The email package handles some RFC 2231 parameters with missing CHARSET fields better. It also includes a patch to parameter parsing when semicolons appear inside quotes. |