File tree Expand file tree Collapse file tree 1 file changed +14
-3
lines changed
Expand file tree Collapse file tree 1 file changed +14
-3
lines changed Original file line number Diff line number Diff line change 11import csv
22import io
33import itertools
4+ import logging
45import typing as t
56from collections .abc import Iterable , Sequence
67
78
9+ LOGGER = logging .getLogger (__name__ )
10+
11+
812def read (data : str , * , dialect : str = "excel" , ** kwargs ) -> Iterable [list [str ]]:
913 with io .StringIO (data ) as f :
1014 reader = csv .reader (f , dialect , ** kwargs )
@@ -35,9 +39,16 @@ def write_stream(
3539 Reference:
3640 https://stackoverflow.com/questions/32608265/streaming-a-generated-csv-with-flask
3741 """
38- iter_rows = iter (rows )
39- first_row = next (iter_rows )
40- rows_ = itertools .chain ((first_row ,), iter_rows )
42+ try :
43+ iter_rows = iter (rows )
44+ first_row = next (iter_rows )
45+ rows_ = itertools .chain ((first_row ,), iter_rows )
46+ except StopIteration :
47+ LOGGER .warning ("no rows available to be written as a stream" )
48+ writer = csv .writer (DummyWriter (), dialect , ** kwargs )
49+ yield writer .writerow (cols )
50+ return
51+
4152 if isinstance (first_row , dict ):
4253 writer = csv .DictWriter (DummyWriter (), cols , dialect = dialect , ** kwargs )
4354 yield writer .writeheader ()
You can’t perform that action at this time.
0 commit comments