import sys __version__ = '0.1.3' def parse_args(argv=None): """ Returns a tuple of (args, kwargs) from a given list of command line arguments. Defaults to using `sys.argv`. """ argv = argv if argv else sys.argv args = [] for arg in argv: if arg.startswith('-'): break args.append(arg.replace('-', '_')) kwargs = {} values = [] for arg in argv[len(args):]: if not arg.startswith('-'): values.append(arg) else: if len(values): kwargs[key] = values values = [] key = arg[:2].lstrip('-') + arg[2:].replace('-', '_') if arg.startswith('--'): if '=' in arg: key, value = key.split('=') values.append(value) kwargs[key] = values else: kwargs[key] = True elif arg.startswith('-'): for k in key: kwargs[k] = True key = arg[-1] if len(values): kwargs[key] = values for k, v in kwargs.items(): if isinstance(v, list) and len(v) == 1: kwargs[k] = v[0] return (args, kwargs)