def parse_conf(item, **kwargs): kw = Objectify(kwargs, defaults={}, conf={}) # TODO: fix so .items() returns a DotDict instance # parsed = {k: get_value(item, v) for k, v in kw.conf.items()} sentinel = {'subkey', 'value', 'terminal'} not_dict = not hasattr(kw.conf, 'keys') if not_dict or (len(kw.conf) == 1 and sentinel.intersection(kw.conf)): objectified = get_value(item, **kwargs) else: no_conf = remove_keys(kwargs, 'conf') parsed = {k: get_value(item, kw.conf[k], **no_conf) for k in kw.conf} result = merge([kw.defaults, parsed]) objectified = Objectify(result) if kw.objectify else result return objectified
def parse_conf(item, **kwargs): kw = Objectify(kwargs, defaults={}, conf={}) # TODO: fix so .items() returns a DotDict instance # parsed = {k: get_value(item, v) for k, v in kw.conf.items()} sentinel = {'subkey', 'value', 'terminal'} not_dict = not hasattr(kw.conf, 'keys') if not_dict or (len(kw.conf) == 1 and sentinel.intersection(kw.conf)): objectified = get_value(item, **kwargs) else: no_conf = remove_keys(kwargs, 'conf') parsed = {k: get_value(item, kw.conf[k], **no_conf) for k in kw.conf} result = merge([kw.defaults, parsed]) objectified = Objectify(result) if kw.objectify else result return objectified
def get_broadcast_funcs(**kwargs): kw = Objectify(kwargs, conf={}) pieces = kw.conf[kw.extract] if kw.extract else kw.conf no_conf = remove_keys(kwargs, 'conf') noop = partial(cast, _type='none') if kw.listize: listed = listize(pieces) piece_defs = map(DotDict, listed) if kw.pdictize else listed parser = partial(parse_conf, **no_conf) pfuncs = [partial(parser, conf=conf) for conf in piece_defs] get_pieces = lambda item: broadcast(item, *pfuncs) elif kw.ptype != 'none': conf = DotDict(pieces) if kw.pdictize and pieces else pieces get_pieces = partial(parse_conf, conf=conf, **no_conf) else: get_pieces = noop ffunc = noop if kw.ftype == 'none' else partial(get_field, **kwargs) return (ffunc, get_pieces)
def get_broadcast_funcs(**kwargs): kw = Objectify(kwargs, conf={}) pieces = kw.conf[kw.extract] if kw.extract else kw.conf no_conf = remove_keys(kwargs, 'conf') noop = partial(cast, _type='none') if kw.listize: listed = listize(pieces) piece_defs = map(DotDict, listed) if kw.pdictize else listed parser = partial(parse_conf, **no_conf) pfuncs = [partial(parser, conf=conf) for conf in piece_defs] get_pieces = lambda item: broadcast(item, *pfuncs) elif kw.ptype != 'none': conf = DotDict(pieces) if kw.pdictize and pieces else pieces get_pieces = partial(parse_conf, conf=conf, **no_conf) else: get_pieces = noop ffunc = noop if kw.ftype == 'none' else partial(get_field, **kwargs) return (ffunc, get_pieces)
def reducer(item, rule): new_dict = {rule.newval: item.get(rule.field)} if rule.newval else {} old_dict = item if rule.copy else remove_keys(item, rule.field) return DotDict(merge([old_dict, new_dict]))
def reducer(item, rule): new_dict = {rule.newval: item.get(rule.field)} if rule.newval else {} old_dict = item if rule.copy else remove_keys(item, rule.field) return DotDict(merge([old_dict, new_dict]))