Skip to content
Snippets Groups Projects
Commit d8c8af4f authored by Mikhail Karnevskiy's avatar Mikhail Karnevskiy
Browse files

Add parser group: required arguments. Show warning if parameter is an empty list.

parent 0f5c731e
No related branches found
No related tags found
1 merge request!29Required parameter
......@@ -48,6 +48,8 @@ def make_initial_parser():
parser.add_argument('--report-to', type=str,
help='Filename (and optionally path) for output report')
parser.add_argument_group('required arguments')
return parser
parser = make_initial_parser()
......@@ -243,32 +245,43 @@ elif len(sys.argv) >= 3:
helpstr = ("Default: %(default)s" if not p.comment
else "{}. Default: %(default)s".format(p.comment.replace("#", " ").strip()))
required = (p.comment is not None and "required" in p.comment) and not overwrite_reqs
if p.type == list or p.name == cvar:
if p.type is list and len(p.value):
ltype = type(p.value[0])
elif p.type is not list:
ltype = p.type
required = (p.comment is not None
and "required" in p.comment
and not overwrite_reqs
and p.name != cvar)
pars_group = parser._action_groups[1]
if required:
pars_group = parser._action_groups[2]
default = p.value if (not required) else None
if p.type == list:
# Warning if list is empty
if len(p.value)==0:
warnings.warn("List {} is empty. Parameter type can not be defined.".format(p.name),
RuntimeWarning)
ltype = type(p.value[0])
range_allowed = "RANGE ALLOWED" in p.comment.upper() if p.comment else False
parser.add_argument("--{}".format(consolize_name(p.name)),
pars_group.add_argument("--{}".format(consolize_name(p.name)),
nargs='+',
type=ltype if not range_allowed else str,
default=p.value if (not required) and p.name != cvar else None,
default=default,
help=helpstr,
required=required and p.name != cvar,
required=required,
action=make_intelli_list(ltype) if range_allowed else None)
elif p.type == bool:
parser.add_argument("--{}".format(consolize_name(p.name)),
pars_group.add_argument("--{}".format(consolize_name(p.name)),
action="store_true",
default=p.value if not required else None,
default=default,
help=helpstr,
required=required)
else:
parser.add_argument("--{}".format(consolize_name(p.name)),
pars_group.add_argument("--{}".format(consolize_name(p.name)),
type=p.type,
default=p.value if not required else None,
default=default,
help=helpstr,
required=required)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment