18 from .typeconverters
import TypeConverter
24 def __init__(self, argspec, converters, dry_run=False, languages=None):
34 names = self.
_argspec_argspec.positional
35 converted = [self.
_convert_convert(name, value)
36 for name, value
in zip(names, positional)]
37 if self.
_argspec_argspec.var_positional:
38 converted.extend(self.
_convert_convert(self.
_argspec_argspec.var_positional, value)
39 for value
in positional[len(names):])
43 names = set(self.
_argspec_argspec.positional) | set(self.
_argspec_argspec.named_only)
44 var_named = self.
_argspec_argspec.var_named
45 return [(name, self.
_convert_convert(name
if name
in names
else var_named, value))
46 for name, value
in named]
50 if (spec.types
is None
53 conversion_error =
None
58 if value
is None and name
in spec.defaults
and spec.defaults[name]
is None:
60 if name
in spec.types:
61 converter = TypeConverter.converter_for(spec.types[name], self.
_converters_converters,
65 return converter.convert(name, value)
66 except ValueError
as err:
67 conversion_error = err
68 if name
in spec.defaults:
69 converter = TypeConverter.converter_for(
type(spec.defaults[name]),
73 return converter.convert(name, value, explicit_type=
False,
74 strict=bool(conversion_error))
75 except ValueError
as err:
76 conversion_error = conversion_error
or err
78 raise conversion_error
def _convert_named(self, named)
def _convert(self, name, value)
def _convert_positional(self, positional)
def __init__(self, argspec, converters, dry_run=False, languages=None)
:type argspec: :py:class:robot.running.arguments.ArgumentSpec
def convert(self, positional, named)
def contains_variable(string, identifiers='$@&')