summaryrefslogtreecommitdiffstats
path: root/ipalib/public.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-09-10 23:18:29 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-09-10 23:18:29 +0000
commitc17c5efb4e30c78bb53022e86f74b718dd49e758 (patch)
tree3fc4e08320711ba701f56feb885bffd524d2455a /ipalib/public.py
parent7c40226500daa4a27f4430ef7f94ec4520ab72e5 (diff)
downloadfreeipa.git-c17c5efb4e30c78bb53022e86f74b718dd49e758.tar.gz
freeipa.git-c17c5efb4e30c78bb53022e86f74b718dd49e758.tar.xz
freeipa.git-c17c5efb4e30c78bb53022e86f74b718dd49e758.zip
287: Renamed Command.args_to_kw() to Command.group_args(), which now returns a tuple instead of dict; updated unit tests
Diffstat (limited to 'ipalib/public.py')
-rw-r--r--ipalib/public.py48
1 files changed, 26 insertions, 22 deletions
diff --git a/ipalib/public.py b/ipalib/public.py
index 4c0255ef..84d321be 100644
--- a/ipalib/public.py
+++ b/ipalib/public.py
@@ -350,34 +350,38 @@ class Command(plugable.Plugin):
for option in sorted(self.options(), key=get_key):
yield option
- def args_to_kw(self, *args):
- Args = tuple(self.args())
- if len(Args) == 0 and len(args) > 0:
- raise errors.ArgumentError(self, 'takes no arguments')
- if len(args) > len(Args) and not Args[-1].multivalue:
- if len(Args) == 1:
- error = 'takes at most 1 argument'
- else:
- error = 'takes at most %d arguments' % len(Args)
- raise errors.ArgumentError(self, error)
- MinArgs = sum(int(A.required) for A in Args)
- if len(args) < MinArgs:
- if MinArgs == 1:
+ def group_args(self, *values):
+ args = tuple(self.args())
+ if len(args) == 0:
+ if len(values) > 0:
+ raise errors.ArgumentError(self, 'takes no arguments')
+ else:
+ return tuple()
+ if len(values) > len(args) and not args[-1].multivalue:
+ if len(args) == 1:
+ error = 'takes at most 1 argument'
+ else:
+ error = 'takes at most %d arguments' % len(args)
+ raise errors.ArgumentError(self, error)
+ min_args = sum(int(a.required) for a in args)
+ if len(values) < min_args:
+ if min_args == 1:
error = 'takes at least 1 argument'
else:
- error = 'takes at least %d arguments' % MinArgs
+ error = 'takes at least %d arguments' % min_args
raise errors.ArgumentError(self, error)
- return dict(self.__args_to_kw_iter(args))
+ return tuple(self.__group_args_iter(values, args))
- def __args_to_kw_iter(self, args):
- for (i, Arg) in enumerate(self.args()):
- if len(args) > i:
- if Arg.multivalue:
- yield (Arg.name, args[i:])
+ def __group_args_iter(self, values, args):
+ for (i, arg) in enumerate(args):
+ if len(values) > i:
+ if arg.multivalue:
+ yield values[i:]
else:
- yield (Arg.name, args[i])
+ yield values[i]
else:
- assert not Arg.required
+ assert not arg.required
+ yield None
class Object(plugable.Plugin):