def select_configured_column(config: Config, df: DF, column: str) -> DF: """Apply configured selection options to a column""" if column in df and not config.getl([column, 'select-all']): selections = config.getl([column, 'select'], []) if selections: df = df.loc[df[column].isin(selections)] return df
def is_selected(config: Config, column, name) -> bool: """Test `name` against the configured selection criteria for `column`.""" if config.getl([column, 'select-all']): return True if name in config.getl([column, 'select'], []): return True return False
def postprocess_selections(config: Config, key: str, info: Mapping) -> None: """Resolve select/ignore command options.""" split_size(config, key) choice, select = key.split('.') assert select == 'select' selections = config.get(key) if not config.getl([choice, 'ignore-all'], False): if defaults := config.getl([choice, 'default']): for i in config.getl([choice, 'ignore']): if i in defaults: defaults.remove(i) selections += defaults
def split_size(config: Config, key: str) -> None: """Split a name:size configuration value. When a program supports a size threshold for selection or summary, this can be specificed for a particular item with a suffix on the configuration, e.g. `--section=.text:16K`. Given a configuration key `col.select` referring to such a list of arguments, this function strips any sizes from those arguments and stores them as a name:size dictionary in `col.limit`. """ src = key.split('.') dst = src[:-1] + ['limit'] splits = [s.split(':') for s in config.getl(src, [])] config.putl(src, [x[0] for x in splits]) config.putl(dst, { x[0]: memdf.util.config.parse_size(x[1]) for x in splits if len(x) > 1 })
def get_limit(config: Config, column: str, name: str) -> int: return config.getl([column, 'limit', name], config.get('report.limit', 0))