Source code for kodiak.args_dict_builder

from __future__ import absolute_import

from collections import OrderedDict

from kodiak.config import options


[docs]class ArgsDictBuilder(object): def __init__(self, parser=None, transform=None, new_col_combiner=None): if parser is None: parser = options['parser'] if transform is None: transform = options['match_transform'] if new_col_combiner is None: new_col_combiner = options['new_col_combiner'] self.parser = parser # TODO: need to be consistent with this: instance or method, decide self.transform = transform.transform self.combiner = new_col_combiner
[docs] def build(self, new_col): template, group_args = self.parser.parse(new_col) def transform_groups(match_group): return [self.transform(match) for match in match_group] match_args = [transform_groups(group_arg) for group_arg in group_args] match_args = list(self.combiner(*match_args)) # Respect key order to preserve user imposed order on columns args_dict = OrderedDict() for arg in match_args: match_labels = [match.label or match.value for match in arg] name = template.format(*match_labels) args_dict[name] = arg return args_dict