handle_call(): use arg_filter() and remove duplicate code

This commit is contained in:
Mike Bonnet 2010-03-09 18:09:05 -05:00
parent 59bde48e43
commit 98ae624480

View file

@ -64,17 +64,23 @@ def _(args):
"""Stub function for translation"""
return args
def arg_filter(str):
ARGMAP = {'None': None,
'True': True,
'False': False}
def arg_filter(arg):
try:
return int(str)
return int(arg)
except ValueError:
pass
try:
return float(str)
return float(arg)
except ValueError:
pass
#handle lists?
return str
if arg in ARGMAP:
return ARGMAP[arg]
#handle lists/dicts?
return arg
def get_options():
"""process options from command line and config file"""
@ -848,24 +854,12 @@ def handle_call(options, session, args):
non_kw = []
kw = {}
def _convarg(val):
valmap = {'None': None,
'True': True,
'False': False}
if val.isdigit():
return int(val)
elif valmap.has_key(val):
return valmap[val]
else:
return val
for arg in args[1:]:
if arg.find('=') != -1:
key, value = arg.split('=', 1)
kw[key] = _convarg(value)
kw[key] = arg_filter(value)
else:
non_kw.append(_convarg(arg))
non_kw.append(arg_filter(arg))
pprint.pprint(getattr(session, name).__call__(*non_kw, **kw))
def anon_handle_mock_config(options, session, args):