File tree Expand file tree Collapse file tree 1 file changed +17
-9
lines changed Expand file tree Collapse file tree 1 file changed +17
-9
lines changed Original file line number Diff line number Diff line change @@ -139,22 +139,30 @@ def format_table(cmd, installs):
139139
140140def _csv_filter_and_expand (installs ):
141141 for i in installs :
142- i = {k : v for k , v in i .items () if k not in CSV_EXCLUDE }
143- to_expand = {k : i .pop (k , ()) for k in CSV_EXPAND }
144- yield i
145- for k2 , vlist in to_expand .items ():
146- for vv in vlist :
147- yield {f"{ k2 } .{ k } " : v for k , v in vv .items ()}
142+ filtered = {}
143+ to_expand = {k : [] for k in CSV_EXPAND }
144+ for k , v in i .items ():
145+ if k in CSV_EXCLUDE :
146+ continue
147+ elif k in to_expand :
148+ for vv in v :
149+ expanded = {f"{ k } .{ k2 } " : vvv for k2 , vvv in vv .items ()}
150+ to_expand [k ].append (expanded )
151+ else :
152+ filtered [k ] = v
153+
154+ yield filtered
155+ for k in CSV_EXPAND :
156+ for expanded in to_expand [k ]:
157+ yield filtered | expanded
148158
149159
150160def format_csv (cmd , installs ):
151161 import csv
152162 installs = list (_csv_filter_and_expand (installs ))
153163 if not installs :
154164 return
155- s = set ()
156- columns = [c for i in installs for c in i
157- if c not in s and (s .add (c ) or True )]
165+ columns = list (dict .fromkeys (col for i in installs for col in i ))
158166 writer = csv .DictWriter (sys .stdout , columns )
159167 writer .writeheader ()
160168 writer .writerows (installs )
You can’t perform that action at this time.
0 commit comments