From 84c1cdf31f8f888ee9c0beb201d35ad9d293c341 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Tue, 8 Jun 2021 15:41:32 +0100 Subject: Maintain header order in merge_csv Previously, if the --header property was not specified then merge_csv would use a header constructed by sorting all the fields in the input files. That required that any use of merge_csv which did not already have headers in the required order would have to explicitly specify the headers. That made it harder to use merge_csv as a generic tool as each invocation needed to be aware of what headers were exported in the output. This change causes merge_csv to simply use the headers in the order in which they are encountered in the input files. That removes the need to specify the --header option when generating the index files. Bug: 179354495 Test: m out/soong/hiddenapi/hiddenapi-index.csv out/soong/hiddenapi/hiddenapi-unsupported.csv - make sure that they are not changed by this change. Change-Id: I420b7d07aea85af6372cd7580a8be5e2cc82a513 --- scripts/hiddenapi/merge_csv.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'scripts/hiddenapi/merge_csv.py') diff --git a/scripts/hiddenapi/merge_csv.py b/scripts/hiddenapi/merge_csv.py index b047aab71..a65326c51 100755 --- a/scripts/hiddenapi/merge_csv.py +++ b/scripts/hiddenapi/merge_csv.py @@ -55,14 +55,15 @@ else: if entry.endswith('.uau'): csv_readers.append(dict_reader(io.TextIOWrapper(zip.open(entry, 'r')))) -headers = set() if args.header: fieldnames = args.header.split(',') else: + headers = {} # Build union of all columns from source files: for reader in csv_readers: - headers = headers.union(reader.fieldnames) - fieldnames = sorted(headers) + for fieldname in reader.fieldnames: + headers[fieldname] = "" + fieldnames = list(headers.keys()) # By default chain the csv readers together so that the resulting output is # the concatenation of the rows from each of them: -- cgit v1.2.3-59-g8ed1b