def query_cli(datadefs, argv=None): if argv is None: argv = sys.argv parser = argparse.ArgumentParser(description='Query datasets') query_group = parser.add_argument_group( title='query', description="Query parameters (ORed)") query_group.add_argument( '--name', required=False, type=str, help='"Nice" dataset name (ex: Zjets_M50)') query_group.add_argument( '--dataset', required=False, type=str, help='DBS dataset name (ex: ' '/DYJetsToLL_M-50_TuneZ2Star_8TeV-madgraph-tarball/*') output_group = parser.add_argument_group( title='output', description="Output parameters") output_group.add_argument( '--columns', nargs='+', help='Output columns', default=['name', 'datasetpath'], choices=['name', 'datasetpath', 'pu', 'x_sec', 'lumi_mask', 'firstRun', 'lastRun']) output_group.add_argument( '--sort', default='name', help='Column to sort by') output_group.add_argument( '--noborder', action='store_false', default=True, help='Show border') args = parser.parse_args(argv[1:]) if not args.name and not args.dataset: print "Must specify either --name or --dataset. Did you forget to quote a '*'?" sys.exit(1) table = PrettyTable(args.columns) for col in args.columns: table.set_field_align(col, 'l') for key in sorted(datadefs.keys()): value = datadefs[key] matched = False if args.name and fnmatch.fnmatch(key, args.name): matched = True if args.dataset and fnmatch.fnmatch(value['datasetpath'], args.dataset): matched = True if matched: row = [] for column in args.columns: if column == 'name': row.append(key) else: row.append(value.get(column, '-')) table.add_row(row) table.printt(sortby=args.sort, border=(args.noborder))
def query_cli(datadefs, argv=None): if argv is None: argv = sys.argv parser = argparse.ArgumentParser(description='Query datasets') query_group = parser.add_argument_group( title='query', description="Query parameters (ORed)") query_group.add_argument( '--name', required=False, type=str, help='"Nice" dataset name (ex: Zjets_M50)') query_group.add_argument( '--dataset', required=False, type=str, help='DBS dataset name (ex: ' '/DYJetsToLL_M-50_TuneZ2Star_8TeV-madgraph-tarball/*') output_group = parser.add_argument_group( title='output', description="Output parameters") output_group.add_argument( '--columns', nargs='+', help='Output columns', default=['name', 'datasetpath'], choices=['name', 'datasetpath', 'pu', 'xsec', 'lumi_mask', 'firstRun', 'lastRun']) output_group.add_argument( '--sort', default='name', help='Column to sort by') output_group.add_argument( '--noborder', action='store_false', default=True, help='Show border') args = parser.parse_args(argv[1:]) if not args.name and not args.dataset: print "Must specify either --name or --dataset. Did you forget to quote a '*'?" sys.exit(1) table = PrettyTable(args.columns) for col in args.columns: table.set_field_align(col, 'l') for key in sorted(datadefs.keys()): value = datadefs[key] matched = False if args.name and fnmatch.fnmatch(key, args.name): matched = True if args.dataset and fnmatch.fnmatch(value['datasetpath'], args.dataset): matched = True if matched: row = [] for column in args.columns: if column == 'name': row.append(key) else: row.append(value.get(column, '-')) table.add_row(row) table.printt(sortby=args.sort, border=(args.noborder))