Source code for kodiak.config

from __future__ import absolute_import

from itertools import product

from kodiak.args_parser import ArgsParser
from kodiak.transforms import default_transform


[docs]def base_config(parser=None, match_transform=None, new_col_combiner=None, unpack=None, drop=None, col_pair_combiner=None): """Default config used by `gencol` and `mutcol` Args: parser: Kodiak by default uses `ArgsParser` to parse `newcols` match_transform: data passed to the `colbuilder` could be transformed first, by default we use the `default_transform` pipeline, you could replace it with an array of `Transforms` objects. new_col_combiner: params present in the `newcols` template provide arguments to the `colbuilder` you can combine arguments in different groups in different ways, ie: "foo_{a,b}_{c,d}" has two groups: ['a','b'] and ['c', 'd'] by default we use `zip` but you could replace it with a function with equal signature. unpack (bool): True by default. The arguments passed to the `colbuilder` is of type `Match` in certain occasions you can pass strings drop (bool): False by default. Set to True if you want to drop the column `col` in `gencol` after the new columns are created col_pair_combiner: Once you have the arguments from the newcol template string they're combined with the data extracted from the `col`. This option controls the way this two elements are combined. Currently we use `product` from `itertools`, any replacement must fulfill the same signature. Returns: dict with base config options """ base_cfg = dict( unpack=True, drop=False, match_transform=default_transform, new_col_combiner=zip, col_pair_combiner=product, parser=ArgsParser()) if parser is not None: base_cfg['parser'] = parser if match_transform is not None: base_cfg['match_transform'] = match_transform if new_col_combiner is not None: base_cfg['new_col_combiner'] = new_col_combiner if unpack is not None: base_cfg['unpack'] = unpack if col_pair_combiner is not None: base_cfg['col_pair_combiner'] = col_pair_combiner return base_cfg
# alias introduced to ease custom configuration on gencol and mutcol # # ex: df.gencol("event_{.day,.month,.year}", "event", config=cfg(unpack=False)) cfg = base_config options = base_config()
[docs]def restore_default_config(*keys): """Restore original configuration on all or specific properties If no key is present the whole configuration will be restored, if keys are present only them will be restored Args: keys: a list of strings that correspond to options Returns: Nothing Raises: KeyError if key is not a valid option """ global options base_cfg = base_config() if len(keys) == 0: options = base_config() return for key in keys: options[key] = base_cfg[key]