**kwds arg was missing from __init__ for Dict{Reader,Writer} classes.
will backport.
This commit is contained in:
parent
60e868abd2
commit
3f7a94824e
|
@ -93,11 +93,11 @@ register_dialect("excel-tab", excel_tab)
|
||||||
|
|
||||||
class DictReader:
|
class DictReader:
|
||||||
def __init__(self, f, fieldnames, restkey=None, restval=None,
|
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.fieldnames = fieldnames # list of keys for the dict
|
||||||
self.restkey = restkey # key to catch long rows
|
self.restkey = restkey # key to catch long rows
|
||||||
self.restval = restval # default value for short 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):
|
def __iter__(self):
|
||||||
return self
|
return self
|
||||||
|
@ -122,7 +122,7 @@ class DictReader:
|
||||||
|
|
||||||
class DictWriter:
|
class DictWriter:
|
||||||
def __init__(self, f, fieldnames, restval="", extrasaction="raise",
|
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.fieldnames = fieldnames # list of keys for the dict
|
||||||
self.restval = restval # for writing short dicts
|
self.restval = restval # for writing short dicts
|
||||||
if extrasaction.lower() not in ("raise", "ignore"):
|
if extrasaction.lower() not in ("raise", "ignore"):
|
||||||
|
@ -130,7 +130,7 @@ class DictWriter:
|
||||||
("extrasaction (%s) must be 'raise' or 'ignore'" %
|
("extrasaction (%s) must be 'raise' or 'ignore'" %
|
||||||
extrasaction)
|
extrasaction)
|
||||||
self.extrasaction = extrasaction
|
self.extrasaction = extrasaction
|
||||||
self.writer = writer(f, dialect, *args)
|
self.writer = writer(f, dialect, *args, **kwds)
|
||||||
|
|
||||||
def _dict_to_list(self, rowdict):
|
def _dict_to_list(self, rowdict):
|
||||||
if self.extrasaction == "raise":
|
if self.extrasaction == "raise":
|
||||||
|
|
|
@ -447,6 +447,13 @@ class TestDictFields(unittest.TestCase):
|
||||||
self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc',
|
self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc',
|
||||||
"4": '4', "5": '5', "6": '6'})
|
"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):
|
class TestArrayWrites(unittest.TestCase):
|
||||||
def test_int_write(self):
|
def test_int_write(self):
|
||||||
import array
|
import array
|
||||||
|
|
|
@ -33,6 +33,9 @@ Extension modules
|
||||||
Library
|
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
|
- The email package handles some RFC 2231 parameters with missing
|
||||||
CHARSET fields better. It also includes a patch to parameter
|
CHARSET fields better. It also includes a patch to parameter
|
||||||
parsing when semicolons appear inside quotes.
|
parsing when semicolons appear inside quotes.
|
||||||
|
|
Loading…
Reference in New Issue