from argparse import ArgumentParser class GooeyParser(object): def __init__(self, **kwargs): self.__dict__['parser'] = ArgumentParser(**kwargs) self.widgets = {} @property def _mutually_exclusive_groups(self): return self.parser._mutually_exclusive_groups @property def _actions(self): return self.parser._actions @property def description(self): return self.parser.description def add_argument(self, *args, **kwargs): widget = kwargs.pop('widget', None) self.parser.add_argument(*args, **kwargs) self.widgets[self.parser._actions[-1].dest] = widget def add_mutually_exclusive_group(self, **kwargs): return self.parser.add_mutually_exclusive_group(**kwargs) def add_argument_group(self, *args, **kwargs): return self.parser.add_argument_group(*args, **kwargs) def parse_args(self, args=None, namespace=None): return self.parser.parse_args(args, namespace) def __getattr__(self, item): return getattr(self.parser, item) def __setattr__(self, key, value): return setattr(self.parser, key, value)