| 1234567891011121314151617181920212223242526272829303132 |
- """ Misc utils
- Hacked together by / Copyright 2020 Ross Wightman
- """
- import argparse
- import ast
- import re
- def natural_key(string_):
- """See http://www.codinghorror.com/blog/archives/001018.html"""
- return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', string_.lower())]
- def add_bool_arg(parser, name, default=False, help=''):
- dest_name = name.replace('-', '_')
- group = parser.add_mutually_exclusive_group(required=False)
- group.add_argument('--' + name, dest=dest_name, action='store_true', help=help)
- group.add_argument('--no-' + name, dest=dest_name, action='store_false', help=help)
- parser.set_defaults(**{dest_name: default})
- class ParseKwargs(argparse.Action):
- def __call__(self, parser, namespace, values, option_string=None):
- kw = {}
- for value in values:
- key, value = value.split('=')
- try:
- kw[key] = ast.literal_eval(value)
- except ValueError:
- kw[key] = str(value) # fallback to string (avoid need to escape on command line)
- setattr(namespace, self.dest, kw)
|