16 from contextlib
import contextmanager
19 from robot.utils import DotDict, is_string, split_from_equals
21 from .resolvable
import Resolvable
22 from .search
import is_assign, is_list_variable, is_dict_variable
30 def set(self, variables, overwrite=False):
31 for name, value
in self.
_get_items_get_items(variables):
32 self.
_store_store.add(name, value, overwrite, decorated=
False)
37 var.report_invalid_syntax(var.error)
41 var.report_invalid_syntax)
42 except DataError
as err:
43 var.report_invalid_syntax(err)
45 yield var.name[2:-1], value
50 raise DataError(
"Invalid variable name '%s'." % name)
51 VariableTableValue = {
'$': ScalarVariableTableValue,
52 '@': ListVariableTableValue,
53 '&': DictVariableTableValue}[name[0]]
59 def __init__(self, values, error_reporter=None):
73 _avoid_recursion = property
77 raise DataError(
'Recursive variable definition.')
85 raise NotImplementedError
98 elif values
and values[0].startswith(
'SEPARATOR='):
99 separator = values[0][10:]
101 return separator, values
104 separator, values = values
107 return variables.replace_scalar(values[0])
108 if separator
is None:
110 separator = variables.replace_string(separator)
111 values = variables.replace_list(values)
112 return separator.join(str(item)
for item
in values)
115 return (separator
is None and len(values) == 1
and
122 return variables.replace_list(values)
138 "Invalid dictionary variable item '%s'. "
139 "Items must use 'name=value' syntax or be dictionary "
140 "variables themselves." % item
147 variables.replace_scalar))
148 except TypeError
as err:
149 raise DataError(
'Creating dictionary failed: %s' % err)
153 if isinstance(item, tuple):
155 yield replace_scalar(key), replace_scalar(values)
157 for key, values
in replace_scalar(item).items():
def _yield_formatted(self, values)
def _yield_replaced(self, values, replace_scalar)
def _replace_variables(self, values, variables)
def _format_values(self, values)
def _replace_variables(self, values, variables)
def _is_single_value(self, separator, values)
def _replace_variables(self, values, variables)
def _format_values(self, values)
def set(self, variables, overwrite=False)
def _get_items(self, variables)
def __init__(self, store)
def _replace_variables(self, value, variables)
def resolve(self, variables)
def __init__(self, values, error_reporter=None)
def _format_values(self, values)
def report_error(self, error)
def _avoid_recursion(self)
def split_from_equals(string)
def is_list_variable(string)
def is_dict_variable(string)
def is_assign(string, identifiers='$@&', allow_assign_mark=False)
def VariableTableValue(value, name, error_reporter=None)