diff options
Diffstat (limited to 'cros_utils')
-rw-r--r-- | cros_utils/tabulator.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/cros_utils/tabulator.py b/cros_utils/tabulator.py index 5029ceee..3d5f2aed 100644 --- a/cros_utils/tabulator.py +++ b/cros_utils/tabulator.py @@ -64,6 +64,7 @@ table: from __future__ import division from __future__ import print_function +import collections import getpass import math import sys @@ -112,21 +113,22 @@ class TableGenerator(object): SORT_BY_KEYS_DESC = 1 SORT_BY_VALUES = 2 SORT_BY_VALUES_DESC = 3 + NO_SORT = 4 MISSING_VALUE = 'x' - def __init__(self, d, l, sort=SORT_BY_KEYS, key_name='keys'): + def __init__(self, d, l, sort=NO_SORT, key_name='keys'): self._runs = d self._labels = l self._sort = sort self._key_name = key_name def _AggregateKeys(self): - keys = set([]) + keys = collections.OrderedDict() for run_list in self._runs: for run in run_list: - keys = keys.union(run.keys()) - return keys + keys.update(dict.fromkeys(run.keys())) + return list(keys.keys()) def _GetHighestValue(self, key): values = [] @@ -159,6 +161,8 @@ class TableGenerator(object): elif self._sort == self.SORT_BY_VALUES_DESC: # pylint: disable=unnecessary-lambda return sorted(keys, key=lambda x: self._GetHighestValue(x), reverse=True) + elif self._sort == self.NO_SORT: + return keys else: assert 0, 'Unimplemented sort %s' % self._sort |