- def handle_arguments(self, inqueue, outqueue, params):
- """Normalize and validate input parameters (:class:`Argument` values).
- """
- for argument in self.arguments:
- names = [argument.name] + argument.aliases
- settings = [(name,v) for name,v in params.items() if name in names]
- if len(settings) == 0:
- if argument.optional == True or argument.count == 0:
- settings = [(argument.name, argument.default)]
- else:
- raise Failure('Required argument %s not set.'
- % argument.name)
- if len(settings) > 1:
- raise Failure('Multiple settings for %s:\n %s'
- % (argument.name,
- '\n '.join(['%s: %s' % (name,value)
- for name,value in sorted(settings)])))
- name,value = settings[0]
- if name != argument.name:
- params.remove(name)
- params[argument.name] = value
- if argument.callback != None:
- value = argument.callback(self, argument, value)
- params[argument.name] = value
- argument.validate(value)
- return params