From 77354cf5ef9644121a28041216591762628d8b65 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Fri, 21 Mar 2008 20:01:51 +0000 Subject: Issue #2432: give DictReader the dialect and line_num attributes advertised in the docs. --- Lib/csv.py | 3 +++ Lib/test/test_csv.py | 22 ++++++++++++---------- Misc/NEWS | 3 +++ 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Lib/csv.py b/Lib/csv.py index 8c6b740..41026e0 100644 --- a/Lib/csv.py +++ b/Lib/csv.py @@ -75,6 +75,8 @@ class DictReader: self.restkey = restkey # key to catch long rows self.restval = restval # default value for short rows self.reader = reader(f, dialect, *args, **kwds) + self.dialect = dialect + self.line_num = 0 def __iter__(self): return self @@ -84,6 +86,7 @@ class DictReader: if self.fieldnames is None: self.fieldnames = row row = self.reader.next() + self.line_num = self.reader.line_num # unlike the basic reader, we prefer not to return blanks, # because we will typically wind up with a dict full of None diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 4954383..8a89f4c 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -269,16 +269,18 @@ class Test_Csv(unittest.TestCase): csv.field_size_limit(limit) def test_read_linenum(self): - r = csv.reader(['line,1', 'line,2', 'line,3']) - self.assertEqual(r.line_num, 0) - r.next() - self.assertEqual(r.line_num, 1) - r.next() - self.assertEqual(r.line_num, 2) - r.next() - self.assertEqual(r.line_num, 3) - self.assertRaises(StopIteration, r.next) - self.assertEqual(r.line_num, 3) + for r in (csv.reader(['line,1', 'line,2', 'line,3']), + csv.DictReader(['line,1', 'line,2', 'line,3'], + fieldnames=['a', 'b', 'c'])): + self.assertEqual(r.line_num, 0) + r.next() + self.assertEqual(r.line_num, 1) + r.next() + self.assertEqual(r.line_num, 2) + r.next() + self.assertEqual(r.line_num, 3) + self.assertRaises(StopIteration, r.next) + self.assertEqual(r.line_num, 3) class TestDialectRegistry(unittest.TestCase): def test_registry_badargs(self): diff --git a/Misc/NEWS b/Misc/NEWS index 69b3c29..7040936 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -51,6 +51,9 @@ Core and builtins Library ------- +- Issue #2432: give DictReader the dialect and line_num attributes + advertised in the docs. + - Issue #2136: urllib2's auth handler now allows single-quoted realms in the WWW-Authenticate header. -- cgit v0.12