index = int(name[len(arg.name):])
args[arg.name][index] = value
for arg in command.arguments:
- if arg.count != 1 and arg.name in args:
+ count = arg.count
+ if hasattr(arg, '_display_count'): # support HACK in props_from_argument()
+ count = arg._display_count
+ if count != 1 and arg.name in args:
keys = sorted(args[arg.name].keys())
- assert keys == range(arg.count), keys
+ assert keys == range(count), keys
args[arg.name] = [args[arg.name][i]
- for i in range(arg.count)]
+ for i in range(count)]
self.log.debug('executing %s with %s' % (command.name, args))
self.inqueue.put(CommandMessage(command, args))
results = []
type = argument.type
if type in ['driver']: # intentionally not handled (yet)
return None
- if argument.count == -1:
- raise NotImplementedError(argument) # TODO: maybe just set count to 1?
+ count = argument.count
+ if count == -1:
+ count = 3 # HACK: should allow unlimited entries (somehow...)
+ argument._display_count = count # suport HACK in execute_command()
kwargs = {
#'label':argument.name,
'default':argument.default,
kwargs['choices'] = choices
else:
raise NotImplementedError(argument.type)
- if argument.count == 1:
+ if count == 1:
labels = [argument.name]
else:
- labels = ['%s %d' % (argument.name, i) for i in range(argument.count)]
+ labels = ['%s %d' % (argument.name, i) for i in range(count)]
return [(label, _class(label=label, **kwargs)) for label in labels]