27 def validate(self, positional, named, dryrun=False):
28 if dryrun
and any(
is_list_var(arg)
for arg
in positional):
30 named = set(name
for name, value
in named)
39 if not spec.minargs <= count <= spec.maxargs:
43 if not spec.supports_named:
45 return sum(1
for n
in named
if n
in spec.positional)
49 if spec.minargs == spec.maxargs:
50 expected =
'%d argument%s' % (spec.minargs, minend)
51 elif not spec.varargs:
52 expected =
'%d to %d arguments' % (spec.minargs, spec.maxargs)
54 expected =
'at least %d argument%s' % (spec.minargs, minend)
55 if spec.kwargs
or spec.kwonlyargs:
56 expected = expected.replace(
'argument',
'non-named argument')
57 raise DataError(
"%s '%s' expected %s, got %d."
58 % (spec.type, spec.name, expected, count))
61 if named
and spec.supports_named:
62 for name
in spec.positional[:len(positional)]:
64 raise DataError(
"%s '%s' got multiple values for argument "
65 "'%s'." % (spec.type, spec.name, name))
68 for name
in spec.positional[len(positional):spec.minargs]:
70 raise DataError(
"%s '%s' missing value for argument '%s'."
71 % (spec.type, spec.name, name))
74 defined = set(named) | set(spec.defaults)
75 missing = [arg
for arg
in spec.kwonlyargs
if arg
not in defined]
77 raise DataError(
"%s '%s' missing named-only argument%s %s."
83 extra = set(named) - set(spec.positional) - set(spec.kwonlyargs)
85 raise DataError(
"%s '%s' got unexpected named argument%s %s."
Used when variable does not exist.
def _validate_positional_limits(self, positional, named, spec)
def _validate_no_multiple_values(self, positional, named, spec)
def _raise_wrong_count(self, count, spec)
def _validate_no_extra_named(self, named, spec)
def validate(self, positional, named, dryrun=False)
def _validate_no_named_only_missing(self, named, spec)
def _named_positionals(self, named, spec)
def _validate_no_mandatory_missing(self, positional, named, spec)
def __init__(self, argspec)
:type argspec: :py:class:robot.running.arguments.ArgumentSpec
def seq2str(sequence, quote="'", sep=', ', lastsep=' and ')
Returns sequence in format ‘'item 1’, 'item 2' and 'item 3'`.