having sth like this:
>>> import argparse
>>> ap = argparse.ArgumentParser()
>>> ap.add_argument('-e', '--env', action='append', nargs=2, metavar=('NAME', 'VALUE'), dest='extra_env', help='set some env var to given value')
_AppendAction(option_strings=['-e', '--env'], dest='extra_env', nargs=2, const=None, default=None, type=None, choices=None, help='set some env var to given value', metavar=('NAME', 'VALUE'))
it kind of works:
>>> ap.parse_args(['-e', 'SOMEENVVAR', 'SOMEVAL', '--env', 'OTHERENVVAR', 'OTHERVAL'])
Namespace(extra_env=[['SOMEENVVAR', 'SOMEVAL'], ['OTHERENVVAR', 'OTHERVAL']])
but i was wondering how to instantly transform this into a dict? now i have to do this in some postprocessing:
>>> args = ap.parse_args(['-e', 'SOMEENVVAR', 'SOMEVAL', '--env', 'OTHERENVVAR', 'OTHERVAL'])
>>> dict(args.extra_env)
{'SOMEENVVAR': 'SOMEVAL', 'OTHERENVVAR': 'OTHERVAL'}
wanted to use the type
argument for that, but it seems that the combination of action=append
and nargs=2
seems to blow its mind (and mine as well)…