def reconstruct_group_schema(parser, args,
                             ignore=('optional arguments', 'positional arguments')):
    """ Convert flat argparse set to nested schema

    Args:
        parser (argparse.parser): schema tree where strings become args
        args (dict): key/value pairs supplied in flat format
        ignore (tuple): list of group titles to ignore

    Returns:
        dict: nested schema populated from args
    """
    return {group.title: {a.dest: getattr(args, a.dest, None)
                          for a in group._group_actions}
            for group in parser._action_groups
                if group.title not in ignore}