summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/csv.py3
-rw-r--r--Lib/test/test_csv.py22
-rw-r--r--Misc/NEWS3
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.