diff options
Diffstat (limited to 'python/analytics/utils.py')
| -rw-r--r-- | python/analytics/utils.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/python/analytics/utils.py b/python/analytics/utils.py index fd7779e1..2656147a 100644 --- a/python/analytics/utils.py +++ b/python/analytics/utils.py @@ -95,11 +95,19 @@ def roll_date(d, tenor, nd_array=False): def build_table(rows, format_strings, row_format): - r = [] - for row, format_string in zip(rows, format_strings): - row = [f.format(r) if f else r for r, f in zip(row, format_string)] - r.append(row_format.format(*row)) - return r + + def apply_format(row, format_string): + for r, f in zip(row, format_string): + if f is None: + yield r + else: + if callable(f): + yield f(r) + elif isinstance(f, str): + yield f.format(r) + + return [row_format.format(*apply_format(row, format_string)) + for row, format_string in zip(rows, format_strings)] def memoize(f=None, *, hasher=lambda args: (hash(args),)): |
