20 from .isvar
import validate_var
21 from .notfound
import variable_not_found
22 from .tablesetter
import VariableTableValueBase
32 for name, value
in list(self.
datadata.items()):
43 except DataError
as err:
47 value.report_error(err)
49 "Variable '${%s}' not found." % name)
50 return self.
datadata[name]
54 return isinstance(value, VariableTableValueBase)
67 def add(self, name, value, overwrite=True, decorated=True):
69 name, value = self.
_undecorate_undecorate(name, value)
70 if overwrite
or name
not in self.
datadata:
71 self.
datadata[name] = value
83 return name[2:-1], value
86 raise VariableError(
"Cannot set variable '%s': Expected %s-like value, "
87 "got %s." % (name, expected,
type_name(value)))
90 if name
in self.
datadata:
91 self.
datadata.pop(name)
94 return len(self.
datadata)
97 return iter(self.
datadata)
100 return name
in self.
datadata
104 variables = (self.
_decorate_decorate(name, self[name])
for name
in self)
106 variables = self.
datadata
111 name =
'&{%s}' % name
113 name =
'@{%s}' % name
115 name =
'${%s}' % name
Used when no keyword is found or there is more than one match.
Custom dictionary implementation automatically normalizing keys.
def __getitem__(self, name)
def __contains__(self, name)
def resolve_delayed(self)
def _undecorate(self, name, value)
def _resolve_delayed(self, name, value)
def _raise_cannot_set_type(self, name, value, expected)
def __init__(self, variables)
def _is_resolvable(self, value)
def _decorate(self, name, value)
def add(self, name, value, overwrite=True, decorated=True)
def as_dict(self, decoration=True)
def validate_var(string, identifiers='$@&')
def variable_not_found(name, candidates, msg=None, deco_braces=True)
Raise DataError for missing variable name.