File tree Expand file tree Collapse file tree 1 file changed +15
-11
lines changed
Expand file tree Collapse file tree 1 file changed +15
-11
lines changed Original file line number Diff line number Diff line change @@ -89,7 +89,7 @@ def create_html_response(
8989
9090
9191def create_csv_rows (data : Iterable [Dict ]) -> Generator [str , None , None ]:
92- """Create Template response ."""
92+ """Creates an iterator that returns lines of csv from an iterable of dicts ."""
9393
9494 class DummyWriter :
9595 """Dummy writer that implements write for use with csv.writer."""
@@ -98,17 +98,21 @@ def write(self, line: str):
9898 """Return line."""
9999 return line
100100
101- """Creates an iterator that returns lines of csv from an iterable of dicts."""
102- initial = True
103- writer = None
101+ # Get the first row and construct the column names
102+ first = next (data ) # type: ignore
103+ fieldnames = first .keys ()
104+ writer = csv .DictWriter (DummyWriter (), fieldnames = fieldnames )
105+
106+ # Write header
107+ row = dict (zip (fieldnames , fieldnames ))
108+ yield writer .writerow (row )
109+
110+ # Write first row
111+ yield writer .writerow (first )
112+
113+ # Write all remaining rows
104114 for row in data :
105- if initial :
106- fieldnames = row .keys ()
107- writer = csv .DictWriter (DummyWriter (), fieldnames = fieldnames )
108- yield writer .writeheader ()
109- initial = False
110- if writer :
111- yield writer .writerow (row )
115+ yield writer .writerow (row )
112116
113117
114118@dataclass
You can’t perform that action at this time.
0 commit comments