def parse_args():
    boolean = (lambda x: bool(['False', 'True'].index(x)))
    parser = argparse.ArgumentParser()
    parser.add_argument('--indir', nargs='+', type=pathlib.Path, required=True)
    parser.add_argument('--outdir', type=pathlib.Path, required=True)
    parser.add_argument('--subdir', type=boolean, default=True)
    parser.add_argument('--xaxis', type=str, required=True)
    parser.add_argument('--yaxis', type=str, required=True)
    parser.add_argument('--tasks', nargs='+', default=['.*'])
    parser.add_argument('--methods', nargs='+', default=['.*'])
    parser.add_argument('--baselines', nargs='+', default=DEFAULT_BASELINES)
    parser.add_argument('--prefix', type=boolean, default=False)
    parser.add_argument('--bins', type=float, default=(- 1))
    parser.add_argument('--aggregate', type=str, default='std1')
    parser.add_argument('--size', nargs=2, type=float, default=[2.5, 2.3])
    parser.add_argument('--dpi', type=int, default=80)
    parser.add_argument('--cols', type=int, default=6)
    parser.add_argument('--xlim', nargs=2, type=float, default=None)
    parser.add_argument('--ylim', nargs=2, type=float, default=None)
    parser.add_argument('--ylimticks', type=boolean, default=True)
    parser.add_argument('--xlabel', type=str, default=None)
    parser.add_argument('--ylabel', type=str, default=None)
    parser.add_argument('--xticks', type=int, default=6)
    parser.add_argument('--yticks', type=int, default=5)
    parser.add_argument('--labels', nargs='+', default=None)
    parser.add_argument('--palette', nargs='+', default=['contrast'])
    parser.add_argument('--colors', nargs='+', default={})
    parser.add_argument('--maxval', type=float, default=0)
    parser.add_argument('--add', nargs='+', type=str, default=['gamer_median', 'gamer_mean', 'record_mean', 'clipped_record_mean', 'num_seeds'])
    args = parser.parse_args()
    if args.subdir:
        args.outdir /= args.indir[0].stem
    args.indir = [d.expanduser() for d in args.indir]
    args.outdir = args.outdir.expanduser()
    if args.labels:
        assert ((len(args.labels) % 2) == 0)
        args.labels = {k: v for (k, v) in zip(args.labels[:(- 1)], args.labels[1:])}
    if args.colors:
        assert ((len(args.colors) % 2) == 0)
        args.colors = {k: v for (k, v) in zip(args.colors[:(- 1)], args.colors[1:])}
    args.tasks = [re.compile(p) for p in args.tasks]
    args.methods = [re.compile(p) for p in args.methods]
    args.baselines = [re.compile(p) for p in args.baselines]
    if ('return' not in args.yaxis):
        args.baselines = []
    if (args.prefix is None):
        args.prefix = (len(args.indir) > 1)
    if ((len(args.palette) == 1) and (args.palette[0] in PALETTES)):
        args.palette = (10 * PALETTES[args.palette[0]])
    if ((len(args.add) == 1) and (args.add[0] == 'none')):
        args.add = []
    return args
def parse_args():
    boolean = (lambda x: bool(['False', 'True'].index(x)))
    parser = argparse.ArgumentParser()
    parser.add_argument('--indir', nargs='+', type=pathlib.Path, required=True)
    parser.add_argument('--outdir', type=pathlib.Path, required=True)
    parser.add_argument('--subdir', type=boolean, default=True)
    parser.add_argument('--xaxis', type=str, required=True)
    parser.add_argument('--yaxis', type=str, required=True)
    parser.add_argument('--tasks', nargs='+', default=['.*'])
    parser.add_argument('--methods', nargs='+', default=['.*'])
    parser.add_argument('--baselines', nargs='+', default=DEFAULT_BASELINES)
    parser.add_argument('--prefix', type=boolean, default=False)
    parser.add_argument('--bins', type=float, default=(- 1))
    parser.add_argument('--aggregate', type=str, default='std1')
    parser.add_argument('--size', nargs=2, type=float, default=[2.5, 2.3])
    parser.add_argument('--dpi', type=int, default=80)
    parser.add_argument('--cols', type=int, default=6)
    parser.add_argument('--xlim', nargs=2, type=float, default=None)
    parser.add_argument('--ylim', nargs=2, type=float, default=None)
    parser.add_argument('--ylimticks', type=boolean, default=True)
    parser.add_argument('--xlabel', type=str, default=None)
    parser.add_argument('--ylabel', type=str, default=None)
    parser.add_argument('--xticks', type=int, default=6)
    parser.add_argument('--yticks', type=int, default=5)
    parser.add_argument('--labels', nargs='+', default=None)
    parser.add_argument('--palette', nargs='+', default=['contrast'])
    parser.add_argument('--colors', nargs='+', default={})
    parser.add_argument('--maxval', type=float, default=0)
    parser.add_argument('--add', nargs='+', type=str, default=['gamer_median', 'gamer_mean', 'record_mean', 'clipped_record_mean', 'num_seeds'])
    args = parser.parse_args()
    if args.subdir:
        args.outdir /= args.indir[0].stem
    args.indir = [d.expanduser() for d in args.indir]
    args.outdir = args.outdir.expanduser()
    if args.labels:
        assert ((len(args.labels) % 2) == 0)
        args.labels = {k: v for (k, v) in zip(args.labels[:(- 1)], args.labels[1:])}
    if args.colors:
        assert ((len(args.colors) % 2) == 0)
        args.colors = {k: v for (k, v) in zip(args.colors[:(- 1)], args.colors[1:])}
    args.tasks = [re.compile(p) for p in args.tasks]
    args.methods = [re.compile(p) for p in args.methods]
    args.baselines = [re.compile(p) for p in args.baselines]
    if ('return' not in args.yaxis):
        args.baselines = []
    if (args.prefix is None):
        args.prefix = (len(args.indir) > 1)
    if ((len(args.palette) == 1) and (args.palette[0] in PALETTES)):
        args.palette = (10 * PALETTES[args.palette[0]])
    if ((len(args.add) == 1) and (args.add[0] == 'none')):
        args.add = []
    return args