27 def validate(self, positional, named, dryrun=False):
28 named = set(name
for name, value
in named)
40 for name
in spec.positional[:len(positional)]:
41 if name
in named
and name
not in spec.positional_only:
42 self.
_raise_error_raise_error(
"got multiple values for argument '%s'" % name)
46 self.
_argspec_argspec.name, message))
49 if not spec.var_named:
51 if name
in spec.positional_only:
52 self.
_raise_error_raise_error(
"does not accept argument '%s' as named "
57 if not spec.minargs <= count <= spec.maxargs:
61 return sum(1
for n
in named
if n
in spec.positional_or_named)
65 if spec.minargs == spec.maxargs:
66 expected =
'%d argument%s' % (spec.minargs, minend)
67 elif not spec.var_positional:
68 expected =
'%d to %d arguments' % (spec.minargs, spec.maxargs)
70 expected =
'at least %d argument%s' % (spec.minargs, minend)
71 if spec.var_named
or spec.named_only:
72 expected = expected.replace(
'argument',
'non-named argument')
73 self.
_raise_error_raise_error(
"expected %s, got %d" % (expected, count))
76 for name
in spec.positional[len(positional):]:
77 if name
not in spec.defaults
and name
not in named:
78 self.
_raise_error_raise_error(
"missing value for argument '%s'" % name)
81 defined = set(named) | set(spec.defaults)
82 missing = [arg
for arg
in spec.named_only
if arg
not in defined]
84 self.
_raise_error_raise_error(
"missing named-only argument%s %s"
88 if not spec.var_named:
89 extra = set(named) - set(spec.positional_or_named) - set(spec.named_only)
91 self.
_raise_error_raise_error(
"got unexpected named argument%s %s"
def _validate_no_named_only_missing(self, named, spec)
def _validate_positional_limits(self, positional, named, spec)
def _validate_no_multiple_values(self, positional, named, spec)
def validate(self, positional, named, dryrun=False)
def _raise_error(self, message)
def __init__(self, argspec)
:type argspec: :py:class:robot.running.arguments.ArgumentSpec
def _named_positionals(self, named, spec)
def _raise_wrong_count(self, count, spec)
def _validate_no_extra_named(self, named, spec)
def _validate_no_positional_only_as_named(self, named, spec)
def _validate_no_mandatory_missing(self, positional, named, spec)
def seq2str(sequence, quote="'", sep=', ', lastsep=' and ')
Returns sequence in format ‘'item 1’, 'item 2' and 'item 3'`.
def is_list_variable(string)
def is_dict_variable(string)