works when there are default arguments

This commit is contained in:
Romain Bignon 2010-04-16 17:13:25 +02:00
commit be642f00e9

View file

@ -82,15 +82,15 @@ class ConsoleApplication(BaseApplication):
func = getattr(self, matching_commands[0]) func = getattr(self, matching_commands[0])
_args, varargs, varkw, defaults = getargspec(func) _args, varargs, varkw, defaults = getargspec(func)
nb_args = len(_args) - 1 nb_max_args = nb_min_args = len(_args) - 1
if defaults: if defaults:
nb_args -= len(defaults) nb_min_args -= len(defaults)
if len(args) < nb_args or len(args) > nb_args and not varargs: if len(args) < nb_min_args or len(args) > nb_max_args and not varargs:
if varargs: if varargs or default:
sys.stderr.write("Command '%s' takes at least %d arguments.\n" % (command, nb_args)) sys.stderr.write("Command '%s' takes at least %d arguments.\n" % (command, nb_min_args))
else: else:
sys.stderr.write("Command '%s' takes %d arguments.\n" % (command, nb_args)) sys.stderr.write("Command '%s' takes %d arguments.\n" % (command, nb_min_args))
return return
return func(*args) return func(*args)
else: else: