aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/csv.py
diff options
context:
space:
mode:
authorSam Ezeh <sam.z.ezeh@gmail.com>2022-08-25 11:13:24 +0100
committerGitHub <noreply@github.com>2022-08-25 05:13:24 -0500
commitcd492d43a2980faf0ef4a3f99c665023a506414c (patch)
treec5758ce600d818dfdad9b1cbacb5b62aa3adc7a1 /Lib/csv.py
parentc09fa7542c6d9b724e423b14c6fb5f4338eabd12 (diff)
downloadcpython-cd492d43a2980faf0ef4a3f99c665023a506414c.tar.gz
cpython-cd492d43a2980faf0ef4a3f99c665023a506414c.zip
gh-76728: Coerce DictReader and DictWriter fieldnames argument to a list (GH-32225)
Diffstat (limited to 'Lib/csv.py')
-rw-r--r--Lib/csv.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/Lib/csv.py b/Lib/csv.py
index bfc850ee96d..0de5656a4ee 100644
--- a/Lib/csv.py
+++ b/Lib/csv.py
@@ -81,6 +81,8 @@ register_dialect("unix", unix_dialect)
class DictReader:
def __init__(self, f, fieldnames=None, restkey=None, restval=None,
dialect="excel", *args, **kwds):
+ if fieldnames is not None and iter(fieldnames) is fieldnames:
+ fieldnames = list(fieldnames)
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
@@ -133,6 +135,8 @@ class DictReader:
class DictWriter:
def __init__(self, f, fieldnames, restval="", extrasaction="raise",
dialect="excel", *args, **kwds):
+ if fieldnames is not None and iter(fieldnames) is fieldnames:
+ fieldnames = list(fieldnames)
self.fieldnames = fieldnames # list of keys for the dict
self.restval = restval # for writing short dicts
if extrasaction.lower() not in ("raise", "ignore"):