17 from robot.utils import is_string, is_dict_like, split_from_equals
20 from .argumentvalidator
import ArgumentValidator
25 def __init__(self, argspec, resolve_named=True,
26 resolve_variables_until=None, dict_to_kwargs=False):
33 def resolve(self, arguments, variables=None):
35 positional, named = self.
_variable_replacer_variable_replacer.replace(positional, named, variables)
36 positional, named = self.
_dict_to_kwargs_dict_to_kwargs.handle(positional, named)
38 dryrun=variables
is None)
39 return positional, named
48 def resolve(self, arguments, variables=None):
54 elif self.
_is_named_is_named(arg, named, variables):
59 positional.append(arg)
60 return positional, named
62 def _is_named(self, arg, previous_named, variables=None):
68 name = variables.replace_scalar(name)
72 return bool(previous_named
or
74 name
in spec.positional_or_named
or
75 name
in spec.named_only)
78 raise DataError(
"%s '%s' got positional argument after named arguments."
84 def resolve(self, arguments, variables=None):
92 self.
_enabled_enabled = enabled
and bool(argspec.var_named)
96 named = positional.pop().items()
97 return positional, named
100 if named
or len(positional) != self.
_maxargs_maxargs + 1:
110 def replace(self, positional, named, variables=None):
113 positional = variables.replace_list(positional, self.
_resolve_until_resolve_until)
114 named = list(self.
_replace_named_replace_named(named, variables.replace_scalar))
117 named = [var
if isinstance(var, tuple)
else (var, var)
for var
in named]
118 return positional, named
124 raise DataError(
'Argument names must be strings.')
128 if not isinstance(item, tuple):
129 return replace_scalar(item).items()
131 return [(replace_scalar(name), replace_scalar(value))]
def __init__(self, argspec, resolve_named=True, resolve_variables_until=None, dict_to_kwargs=False)
def resolve(self, arguments, variables=None)
def handle(self, positional, named)
def _extra_arg_has_kwargs(self, positional, named)
def __init__(self, argspec, enabled=False)
def _is_named(self, arg, previous_named, variables=None)
def __init__(self, argspec)
:type argspec: :py:class:robot.running.arguments.ArgumentSpec
def resolve(self, arguments, variables=None)
def _raise_positional_after_named(self)
def resolve(self, arguments, variables=None)
def _replace_named(self, named, replace_scalar)
def replace(self, positional, named, variables=None)
def __init__(self, resolve_until=None)
def _get_replaced_named(self, item, replace_scalar)
def split_from_equals(string)
def is_dict_variable(string)