import argparse default_server = 'www-net-devel.scc.kit.edu' default_api_version = '3.0' class ArgumentParser(argparse.ArgumentParser): """Argument parser with default common arguments for NetDB-api cli tools. Includes default values.""" def __init__(self, formatter_class=argparse.ArgumentDefaultsHelpFormatter, **kwargs): super(ArgumentParser, self).__init__(formatter_class=formatter_class, **kwargs) self.add_argument('--token', '-t', help='user API token', required=True) self.add_argument('--server', '-s', default=default_server, help='webapi server') self.add_argument('--api-version', default=default_api_version, help='webapi version') def parse_args(self, args=None, namespace=None): args = super(ArgumentParser, self).parse_args(args, namespace) return args def dict_by_value_of_list(array, value): """Mapping function to convert list of dicts to an dict with value as key for each dict. (1 to 1 Mapping) Returns an generator object.""" return ((item[value], item) for item in array) def dict_of_lists_by_value_of_list(array, value): """Mapping function to convert list of dicts to an dict with values as key for each lists. (1 to n Mapping) Returns an generator object.""" res = {} for item in array: if not item[value] in res: res[item[value]] = [] res[item[value]].append(item) for key, value in res.items(): yield key, value