aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/utils.py')
-rw-r--r--python/analytics/utils.py18
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),)):